@sonordev/site-kit 5.3.0 → 5.3.2

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 (257) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/AnalyticsProvider-2XK54UZW.mjs +11 -0
  3. package/dist/{AnalyticsProvider-XSPROVHM.mjs.map → AnalyticsProvider-2XK54UZW.mjs.map} +1 -1
  4. package/dist/AnalyticsProvider-PM7SOGOS.js +32 -0
  5. package/dist/{AnalyticsProvider-2YV4ZVZD.js.map → AnalyticsProvider-PM7SOGOS.js.map} +1 -1
  6. package/dist/{BlogViewTracker-BQBJTL5L.js → BlogViewTracker-3BIUF5TI.js} +6 -6
  7. package/dist/{BlogViewTracker-BQBJTL5L.js.map → BlogViewTracker-3BIUF5TI.js.map} +1 -1
  8. package/dist/{BlogViewTracker-FEAXIUEW.mjs → BlogViewTracker-KFUDRDQK.mjs} +5 -5
  9. package/dist/{BlogViewTracker-FEAXIUEW.mjs.map → BlogViewTracker-KFUDRDQK.mjs.map} +1 -1
  10. package/dist/ChatWidget-4PHZHGG5.mjs +11 -0
  11. package/dist/{ChatWidget-B2DI2OWH.mjs.map → ChatWidget-4PHZHGG5.mjs.map} +1 -1
  12. package/dist/ChatWidget-7BYSGNO2.js +20 -0
  13. package/dist/{ChatWidget-GPBFJ4A3.js.map → ChatWidget-7BYSGNO2.js.map} +1 -1
  14. package/dist/EngageWidget-D6M6QWEC.mjs +9 -0
  15. package/dist/{EngageWidget-KF4HU4YA.mjs.map → EngageWidget-D6M6QWEC.mjs.map} +1 -1
  16. package/dist/EngageWidget-Q4ITKTMJ.js +18 -0
  17. package/dist/{EngageWidget-JXJSFONK.js.map → EngageWidget-Q4ITKTMJ.js.map} +1 -1
  18. package/dist/{FileField-WI6SADBA.mjs → FileField-PQQDX4IR.mjs} +5 -5
  19. package/dist/{FileField-WI6SADBA.mjs.map → FileField-PQQDX4IR.mjs.map} +1 -1
  20. package/dist/{FileField-22BB34L3.js → FileField-YBBIJOCK.js} +6 -6
  21. package/dist/{FileField-22BB34L3.js.map → FileField-YBBIJOCK.js.map} +1 -1
  22. package/dist/{FormSpotlight-6FZV6JOA.mjs → FormSpotlight-7TIIWFTP.mjs} +4 -4
  23. package/dist/{FormSpotlight-6FZV6JOA.mjs.map → FormSpotlight-7TIIWFTP.mjs.map} +1 -1
  24. package/dist/{FormSpotlight-QCIN67NB.js → FormSpotlight-WUN24F3P.js} +18 -18
  25. package/dist/{FormSpotlight-QCIN67NB.js.map → FormSpotlight-WUN24F3P.js.map} +1 -1
  26. package/dist/{FormStage-SBQQZDW6.js → FormStage-CM7OVLUT.js} +15 -15
  27. package/dist/{FormStage-SBQQZDW6.js.map → FormStage-CM7OVLUT.js.map} +1 -1
  28. package/dist/{FormStage-P3IIHVCC.mjs → FormStage-TFN2GIBO.mjs} +4 -4
  29. package/dist/{FormStage-P3IIHVCC.mjs.map → FormStage-TFN2GIBO.mjs.map} +1 -1
  30. package/dist/ManagedForm-N63YGVNY.js +23 -0
  31. package/dist/{ManagedForm-6LII4DED.js.map → ManagedForm-N63YGVNY.js.map} +1 -1
  32. package/dist/ManagedForm-ZUXLHEQU.mjs +14 -0
  33. package/dist/{ManagedForm-O3JRRWZ6.mjs.map → ManagedForm-ZUXLHEQU.mjs.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-FFFF5UEX.mjs → ManagedNewsletterForm-4AVKTZ2A.mjs} +7 -7
  35. package/dist/{ManagedNewsletterForm-FFFF5UEX.mjs.map → ManagedNewsletterForm-4AVKTZ2A.mjs.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-Z7NYZPAN.js → ManagedNewsletterForm-PIVJTU5L.js} +8 -8
  37. package/dist/{ManagedNewsletterForm-Z7NYZPAN.js.map → ManagedNewsletterForm-PIVJTU5L.js.map} +1 -1
  38. package/dist/{SignalCore-WL5WKQEI.js → SignalCore-2M5TISM7.js} +11 -11
  39. package/dist/{SignalCore-WL5WKQEI.js.map → SignalCore-2M5TISM7.js.map} +1 -1
  40. package/dist/{SignalCore-IUOSVYUE.mjs → SignalCore-LT4NCPOR.mjs} +5 -5
  41. package/dist/{SignalCore-IUOSVYUE.mjs.map → SignalCore-LT4NCPOR.mjs.map} +1 -1
  42. package/dist/SitemapSync-7OBOJG2L.js +18 -0
  43. package/dist/{SitemapSync-LA67GKKS.js.map → SitemapSync-7OBOJG2L.js.map} +1 -1
  44. package/dist/SitemapSync-G3OLECFI.mjs +9 -0
  45. package/dist/{SitemapSync-2O5UM4GM.mjs.map → SitemapSync-G3OLECFI.mjs.map} +1 -1
  46. package/dist/SitemapSync.d.ts.map +1 -1
  47. package/dist/analytics/AnalyticsProvider.d.ts +11 -1
  48. package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
  49. package/dist/analytics/WebVitals.d.ts +7 -1
  50. package/dist/analytics/WebVitals.d.ts.map +1 -1
  51. package/dist/analytics/index.d.ts +1 -0
  52. package/dist/analytics/index.d.ts.map +1 -1
  53. package/dist/analytics/index.js +25 -12
  54. package/dist/analytics/index.mjs +6 -5
  55. package/dist/analytics/send-gate.d.ts +119 -0
  56. package/dist/analytics/send-gate.d.ts.map +1 -0
  57. package/dist/analytics/send-gate.test.d.ts +20 -0
  58. package/dist/analytics/send-gate.test.d.ts.map +1 -0
  59. package/dist/blog/index.js +20 -20
  60. package/dist/blog/index.mjs +3 -3
  61. package/dist/blog/server-ui.js +14 -14
  62. package/dist/blog/server-ui.mjs +2 -2
  63. package/dist/blog/types.d.ts +3 -0
  64. package/dist/blog/types.d.ts.map +1 -1
  65. package/dist/{chunk-EDZWNCSE.js → chunk-3EPMDPWI.js} +2 -2
  66. package/dist/{chunk-EDZWNCSE.js.map → chunk-3EPMDPWI.js.map} +1 -1
  67. package/dist/{chunk-BAFGZQWP.mjs → chunk-42F5EK24.mjs} +4 -4
  68. package/dist/{chunk-BAFGZQWP.mjs.map → chunk-42F5EK24.mjs.map} +1 -1
  69. package/dist/{chunk-3DQXXYCS.js → chunk-4DE2KJ7R.js} +10 -10
  70. package/dist/{chunk-3DQXXYCS.js.map → chunk-4DE2KJ7R.js.map} +1 -1
  71. package/dist/{chunk-LFBMFACZ.js → chunk-5BZDHZCN.js} +4 -4
  72. package/dist/{chunk-LFBMFACZ.js.map → chunk-5BZDHZCN.js.map} +1 -1
  73. package/dist/{chunk-YDIINUWD.mjs → chunk-67CHHDBL.mjs} +3 -3
  74. package/dist/{chunk-YDIINUWD.mjs.map → chunk-67CHHDBL.mjs.map} +1 -1
  75. package/dist/{chunk-RMLRZOVE.js → chunk-6AZTRTCG.js} +15 -15
  76. package/dist/{chunk-RMLRZOVE.js.map → chunk-6AZTRTCG.js.map} +1 -1
  77. package/dist/{chunk-X4H2RAIQ.mjs → chunk-6QABCGM6.mjs} +3 -3
  78. package/dist/{chunk-X4H2RAIQ.mjs.map → chunk-6QABCGM6.mjs.map} +1 -1
  79. package/dist/{chunk-MOVMDHGE.mjs → chunk-6VG65AIA.mjs} +3 -3
  80. package/dist/{chunk-MOVMDHGE.mjs.map → chunk-6VG65AIA.mjs.map} +1 -1
  81. package/dist/{chunk-5I7UEXJL.js → chunk-757HXAYX.js} +3 -3
  82. package/dist/{chunk-5I7UEXJL.js.map → chunk-757HXAYX.js.map} +1 -1
  83. package/dist/{chunk-ULGTZ2VU.js → chunk-A3NNUKFA.js} +3 -3
  84. package/dist/{chunk-ULGTZ2VU.js.map → chunk-A3NNUKFA.js.map} +1 -1
  85. package/dist/{chunk-D2D3YKWT.mjs → chunk-AVM4OZHR.mjs} +3 -3
  86. package/dist/{chunk-D2D3YKWT.mjs.map → chunk-AVM4OZHR.mjs.map} +1 -1
  87. package/dist/{chunk-K447AIIB.mjs → chunk-AXAIUCSF.mjs} +9 -8
  88. package/dist/chunk-AXAIUCSF.mjs.map +1 -0
  89. package/dist/{chunk-HHX72A2B.mjs → chunk-CQUA2AUA.mjs} +3 -3
  90. package/dist/{chunk-HHX72A2B.mjs.map → chunk-CQUA2AUA.mjs.map} +1 -1
  91. package/dist/chunk-D37M7MIH.js +8 -0
  92. package/dist/{chunk-BIZT7AYK.js.map → chunk-D37M7MIH.js.map} +1 -1
  93. package/dist/{chunk-7MQR4KDL.mjs → chunk-DVH3JHZ3.mjs} +4 -4
  94. package/dist/{chunk-7MQR4KDL.mjs.map → chunk-DVH3JHZ3.mjs.map} +1 -1
  95. package/dist/{chunk-K6YQ73IX.js → chunk-DYKFC7WY.js} +8 -8
  96. package/dist/{chunk-K6YQ73IX.js.map → chunk-DYKFC7WY.js.map} +1 -1
  97. package/dist/{chunk-O2KN2SC7.mjs → chunk-DZDWBQKA.mjs} +3 -3
  98. package/dist/{chunk-O2KN2SC7.mjs.map → chunk-DZDWBQKA.mjs.map} +1 -1
  99. package/dist/{chunk-OQBDJRVP.js → chunk-E33HJMRP.js} +6 -6
  100. package/dist/{chunk-OQBDJRVP.js.map → chunk-E33HJMRP.js.map} +1 -1
  101. package/dist/{chunk-VTEIXKBA.js → chunk-FDVE56JS.js} +3 -3
  102. package/dist/{chunk-VTEIXKBA.js.map → chunk-FDVE56JS.js.map} +1 -1
  103. package/dist/{chunk-7NMI7M56.js → chunk-FFJVQWKO.js} +4 -4
  104. package/dist/{chunk-7NMI7M56.js.map → chunk-FFJVQWKO.js.map} +1 -1
  105. package/dist/{chunk-2OZ2SMZH.js → chunk-G3YUSRCL.js} +4 -4
  106. package/dist/{chunk-2OZ2SMZH.js.map → chunk-G3YUSRCL.js.map} +1 -1
  107. package/dist/{chunk-JJ6AI6LW.js → chunk-GFNXWS3I.js} +5 -5
  108. package/dist/{chunk-JJ6AI6LW.js.map → chunk-GFNXWS3I.js.map} +1 -1
  109. package/dist/{chunk-X6SAM7CR.js → chunk-GPNBBUEN.js} +3 -3
  110. package/dist/{chunk-X6SAM7CR.js.map → chunk-GPNBBUEN.js.map} +1 -1
  111. package/dist/{chunk-LB7LHVWI.mjs → chunk-H7274TKR.mjs} +9 -3
  112. package/dist/chunk-H7274TKR.mjs.map +1 -0
  113. package/dist/{chunk-DXFZA34N.mjs → chunk-HDQTZAGE.mjs} +3 -3
  114. package/dist/{chunk-DXFZA34N.mjs.map → chunk-HDQTZAGE.mjs.map} +1 -1
  115. package/dist/{chunk-GCY6VPBG.mjs → chunk-HVFXFPUJ.mjs} +3 -3
  116. package/dist/{chunk-GCY6VPBG.mjs.map → chunk-HVFXFPUJ.mjs.map} +1 -1
  117. package/dist/{chunk-2ACKOMAL.js → chunk-IPV2TUAT.js} +9 -3
  118. package/dist/chunk-IPV2TUAT.js.map +1 -0
  119. package/dist/{chunk-7OCQ4646.mjs → chunk-JSLYNYTB.mjs} +3 -3
  120. package/dist/{chunk-7OCQ4646.mjs.map → chunk-JSLYNYTB.mjs.map} +1 -1
  121. package/dist/{chunk-FDLFXHUU.mjs → chunk-JTO3K5B7.mjs} +4 -4
  122. package/dist/{chunk-FDLFXHUU.mjs.map → chunk-JTO3K5B7.mjs.map} +1 -1
  123. package/dist/{chunk-KMNIW4K4.js → chunk-K37JPEQW.js} +15 -15
  124. package/dist/{chunk-KMNIW4K4.js.map → chunk-K37JPEQW.js.map} +1 -1
  125. package/dist/{chunk-KHHMU4UH.mjs → chunk-KOP3DPIR.mjs} +4 -4
  126. package/dist/{chunk-KHHMU4UH.mjs.map → chunk-KOP3DPIR.mjs.map} +1 -1
  127. package/dist/{chunk-PXAALKTP.js → chunk-KP5BFPGT.js} +5 -3
  128. package/dist/chunk-KP5BFPGT.js.map +1 -0
  129. package/dist/{chunk-XYZZJZGS.js → chunk-KPFPSOYS.js} +12 -12
  130. package/dist/{chunk-XYZZJZGS.js.map → chunk-KPFPSOYS.js.map} +1 -1
  131. package/dist/{chunk-4YJFC6FC.js → chunk-M7FWXEXC.js} +126 -188
  132. package/dist/chunk-M7FWXEXC.js.map +1 -0
  133. package/dist/{chunk-GF7CQMBL.js → chunk-MANX6422.js} +7 -7
  134. package/dist/{chunk-GF7CQMBL.js.map → chunk-MANX6422.js.map} +1 -1
  135. package/dist/{chunk-XRONA2QL.mjs → chunk-N3C323NY.mjs} +8 -3
  136. package/dist/chunk-N3C323NY.mjs.map +1 -0
  137. package/dist/{chunk-YUOVAWCL.mjs → chunk-NSLYY62T.mjs} +4 -4
  138. package/dist/{chunk-YUOVAWCL.mjs.map → chunk-NSLYY62T.mjs.map} +1 -1
  139. package/dist/chunk-NVSWTDWU.mjs +25 -0
  140. package/dist/chunk-NVSWTDWU.mjs.map +1 -0
  141. package/dist/{chunk-KC2FCI5V.mjs → chunk-OC6PU7U2.mjs} +3 -3
  142. package/dist/{chunk-KC2FCI5V.mjs.map → chunk-OC6PU7U2.mjs.map} +1 -1
  143. package/dist/{chunk-WZ6QNL2D.js → chunk-OIJ435IZ.js} +23 -23
  144. package/dist/{chunk-WZ6QNL2D.js.map → chunk-OIJ435IZ.js.map} +1 -1
  145. package/dist/chunk-OL2QBWAU.js +29 -0
  146. package/dist/chunk-OL2QBWAU.js.map +1 -0
  147. package/dist/chunk-OUERH2T4.mjs +6 -0
  148. package/dist/{chunk-3PTKHSF7.mjs.map → chunk-OUERH2T4.mjs.map} +1 -1
  149. package/dist/{chunk-NQLE3V3T.js → chunk-PEEQMI7U.js} +12 -11
  150. package/dist/chunk-PEEQMI7U.js.map +1 -0
  151. package/dist/{chunk-RE54UKET.js → chunk-PZXKFHPO.js} +14 -14
  152. package/dist/{chunk-RE54UKET.js.map → chunk-PZXKFHPO.js.map} +1 -1
  153. package/dist/{chunk-W7QMCG2A.mjs → chunk-QZ54OCWD.mjs} +8 -8
  154. package/dist/{chunk-W7QMCG2A.mjs.map → chunk-QZ54OCWD.mjs.map} +1 -1
  155. package/dist/{chunk-B7FHRTBA.js → chunk-R3LYTIVN.js} +10 -5
  156. package/dist/chunk-R3LYTIVN.js.map +1 -0
  157. package/dist/{chunk-5YKMHPJL.mjs → chunk-R5F2JQVX.mjs} +5 -3
  158. package/dist/chunk-R5F2JQVX.mjs.map +1 -0
  159. package/dist/{chunk-26JXNW7B.mjs → chunk-RO55G3OA.mjs} +2 -2
  160. package/dist/{chunk-26JXNW7B.mjs.map → chunk-RO55G3OA.mjs.map} +1 -1
  161. package/dist/{chunk-LCRWCOPI.mjs → chunk-TS3N3LGZ.mjs} +5 -5
  162. package/dist/{chunk-LCRWCOPI.mjs.map → chunk-TS3N3LGZ.mjs.map} +1 -1
  163. package/dist/{chunk-6ABEAO2K.js → chunk-W23TMUKB.js} +9 -9
  164. package/dist/{chunk-6ABEAO2K.js.map → chunk-W23TMUKB.js.map} +1 -1
  165. package/dist/{chunk-PEIWCJXS.js → chunk-XQZTOWS3.js} +14 -14
  166. package/dist/{chunk-PEIWCJXS.js.map → chunk-XQZTOWS3.js.map} +1 -1
  167. package/dist/{chunk-ITV76G3L.mjs → chunk-XW5KNCWJ.mjs} +3 -3
  168. package/dist/{chunk-ITV76G3L.mjs.map → chunk-XW5KNCWJ.mjs.map} +1 -1
  169. package/dist/{chunk-KIGIAA6Q.mjs → chunk-Y7SRO7MJ.mjs} +127 -189
  170. package/dist/chunk-Y7SRO7MJ.mjs.map +1 -0
  171. package/dist/{chunk-XZI6KUB3.js → chunk-Z7K5AMCE.js} +4 -4
  172. package/dist/{chunk-XZI6KUB3.js.map → chunk-Z7K5AMCE.js.map} +1 -1
  173. package/dist/{chunk-F4DZH4E5.mjs → chunk-ZKR5AJV5.mjs} +4 -4
  174. package/dist/{chunk-F4DZH4E5.mjs.map → chunk-ZKR5AJV5.mjs.map} +1 -1
  175. package/dist/{chunk-6RYCAW5B.mjs → chunk-ZOJ3TLO5.mjs} +3 -3
  176. package/dist/{chunk-6RYCAW5B.mjs.map → chunk-ZOJ3TLO5.mjs.map} +1 -1
  177. package/dist/cli/index.js +3 -3
  178. package/dist/cli/index.mjs +1 -1
  179. package/dist/client/index.js +4 -4
  180. package/dist/client/index.mjs +3 -3
  181. package/dist/commerce/index.js +58 -57
  182. package/dist/commerce/index.mjs +7 -6
  183. package/dist/config/index.js +2 -2
  184. package/dist/config/index.mjs +1 -1
  185. package/dist/engage/index.js +10 -10
  186. package/dist/engage/index.mjs +7 -7
  187. package/dist/fleet/index.js +8 -8
  188. package/dist/fleet/index.mjs +4 -4
  189. package/dist/forms/FormField.d.ts +2 -1
  190. package/dist/forms/FormField.d.ts.map +1 -1
  191. package/dist/forms/index.js +18 -18
  192. package/dist/forms/index.mjs +10 -10
  193. package/dist/forms/server.js +11 -11
  194. package/dist/forms/server.mjs +9 -9
  195. package/dist/forms/static.js +8 -8
  196. package/dist/forms/static.mjs +7 -7
  197. package/dist/forms/styles.css +21 -0
  198. package/dist/images/index.js +11 -11
  199. package/dist/images/index.mjs +4 -4
  200. package/dist/index.js +65 -64
  201. package/dist/index.js.map +1 -1
  202. package/dist/index.mjs +11 -10
  203. package/dist/index.mjs.map +1 -1
  204. package/dist/layout/SiteKitClientProviders.d.ts.map +1 -1
  205. package/dist/layout/client.d.ts.map +1 -1
  206. package/dist/layout/client.js +8 -8
  207. package/dist/layout/client.mjs +7 -7
  208. package/dist/layout/index.js +10 -10
  209. package/dist/layout/index.mjs +8 -8
  210. package/dist/layout/types.d.ts +16 -0
  211. package/dist/layout/types.d.ts.map +1 -1
  212. package/dist/maps/index.js +5 -5
  213. package/dist/maps/index.mjs +3 -3
  214. package/dist/proxy/index.js +3 -3
  215. package/dist/proxy/index.mjs +2 -2
  216. package/dist/proxy/securityHeaders.d.ts +21 -6
  217. package/dist/proxy/securityHeaders.d.ts.map +1 -1
  218. package/dist/search/index.js +4 -4
  219. package/dist/search/index.mjs +3 -3
  220. package/dist/seo/client.js +6 -5
  221. package/dist/seo/client.mjs +5 -4
  222. package/dist/seo/index.js +6 -5
  223. package/dist/seo/index.js.map +1 -1
  224. package/dist/seo/index.mjs +5 -4
  225. package/dist/seo/index.mjs.map +1 -1
  226. package/dist/server/index.js +3 -3
  227. package/dist/server/index.mjs +2 -2
  228. package/dist/shared/frame.d.ts +71 -0
  229. package/dist/shared/frame.d.ts.map +1 -0
  230. package/dist/shared/version.d.ts +1 -1
  231. package/dist/signal/index.js +11 -11
  232. package/dist/signal/index.mjs +2 -2
  233. package/dist/sync/index.js +16 -16
  234. package/dist/sync/index.mjs +4 -4
  235. package/package.json +1 -1
  236. package/dist/AnalyticsProvider-2YV4ZVZD.js +0 -31
  237. package/dist/AnalyticsProvider-XSPROVHM.mjs +0 -10
  238. package/dist/ChatWidget-B2DI2OWH.mjs +0 -11
  239. package/dist/ChatWidget-GPBFJ4A3.js +0 -20
  240. package/dist/EngageWidget-JXJSFONK.js +0 -18
  241. package/dist/EngageWidget-KF4HU4YA.mjs +0 -9
  242. package/dist/ManagedForm-6LII4DED.js +0 -23
  243. package/dist/ManagedForm-O3JRRWZ6.mjs +0 -14
  244. package/dist/SitemapSync-2O5UM4GM.mjs +0 -8
  245. package/dist/SitemapSync-LA67GKKS.js +0 -17
  246. package/dist/chunk-2ACKOMAL.js.map +0 -1
  247. package/dist/chunk-3PTKHSF7.mjs +0 -6
  248. package/dist/chunk-4YJFC6FC.js.map +0 -1
  249. package/dist/chunk-5YKMHPJL.mjs.map +0 -1
  250. package/dist/chunk-B7FHRTBA.js.map +0 -1
  251. package/dist/chunk-BIZT7AYK.js +0 -8
  252. package/dist/chunk-K447AIIB.mjs.map +0 -1
  253. package/dist/chunk-KIGIAA6Q.mjs.map +0 -1
  254. package/dist/chunk-LB7LHVWI.mjs.map +0 -1
  255. package/dist/chunk-NQLE3V3T.js.map +0 -1
  256. package/dist/chunk-PXAALKTP.js.map +0 -1
  257. package/dist/chunk-XRONA2QL.mjs.map +0 -1
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunk5I7UEXJL_js = require('../chunk-5I7UEXJL.js');
3
+ var chunk757HXAYX_js = require('../chunk-757HXAYX.js');
4
4
  require('../chunk-HGNSJXWT.js');
5
- var chunk3DQXXYCS_js = require('../chunk-3DQXXYCS.js');
6
- require('../chunk-2OZ2SMZH.js');
7
- require('../chunk-2ACKOMAL.js');
5
+ var chunk4DE2KJ7R_js = require('../chunk-4DE2KJ7R.js');
6
+ require('../chunk-G3YUSRCL.js');
7
+ require('../chunk-IPV2TUAT.js');
8
8
  var chunkO5GHP7UO_js = require('../chunk-O5GHP7UO.js');
9
- require('../chunk-LFBMFACZ.js');
9
+ require('../chunk-5BZDHZCN.js');
10
10
  require('../chunk-KHPJ3CEL.js');
11
- require('../chunk-RMLRZOVE.js');
12
- require('../chunk-7NMI7M56.js');
13
- require('../chunk-BIZT7AYK.js');
11
+ require('../chunk-6AZTRTCG.js');
12
+ require('../chunk-FFJVQWKO.js');
13
+ require('../chunk-D37M7MIH.js');
14
14
  require('../chunk-SNAQBZPT.js');
15
15
  var jsxRuntime = require('react/jsx-runtime');
16
16
 
@@ -27,10 +27,10 @@ async function ServerForm({
27
27
  defaultValues
28
28
  }) {
29
29
  const config = initialConfig ?? await getFormConfig(formId, configOptions);
30
- const shell = /* @__PURE__ */ jsxRuntime.jsx(chunk3DQXXYCS_js.StaticForm, { config, className, nativeReturnTo: returnTo });
30
+ const shell = /* @__PURE__ */ jsxRuntime.jsx(chunk4DE2KJ7R_js.StaticForm, { config, className, nativeReturnTo: returnTo });
31
31
  if (!enhance) return shell;
32
32
  return /* @__PURE__ */ jsxRuntime.jsx(
33
- chunk5I7UEXJL_js.FormEnhancer,
33
+ chunk757HXAYX_js.FormEnhancer,
34
34
  {
35
35
  formId,
36
36
  initialConfig: config,
@@ -64,7 +64,7 @@ async function getFormConfig(formIdOrSlug, options = {}) {
64
64
 
65
65
  Object.defineProperty(exports, "StaticForm", {
66
66
  enumerable: true,
67
- get: function () { return chunk3DQXXYCS_js.StaticForm; }
67
+ get: function () { return chunk4DE2KJ7R_js.StaticForm; }
68
68
  });
69
69
  exports.ServerForm = ServerForm;
70
70
  exports.getFormConfig = getFormConfig;
@@ -1,15 +1,15 @@
1
- import { FormEnhancer } from '../chunk-O2KN2SC7.mjs';
1
+ import { FormEnhancer } from '../chunk-DZDWBQKA.mjs';
2
2
  import '../chunk-ZVBLXXNJ.mjs';
3
- import { StaticForm } from '../chunk-LCRWCOPI.mjs';
4
- export { StaticForm } from '../chunk-LCRWCOPI.mjs';
5
- import '../chunk-DXFZA34N.mjs';
6
- import '../chunk-LB7LHVWI.mjs';
3
+ import { StaticForm } from '../chunk-TS3N3LGZ.mjs';
4
+ export { StaticForm } from '../chunk-TS3N3LGZ.mjs';
5
+ import '../chunk-HDQTZAGE.mjs';
6
+ import '../chunk-H7274TKR.mjs';
7
7
  import { serverApiFetch } from '../chunk-6XNEGG5B.mjs';
8
- import '../chunk-ITV76G3L.mjs';
8
+ import '../chunk-XW5KNCWJ.mjs';
9
9
  import '../chunk-TMVKRQGJ.mjs';
10
- import '../chunk-F4DZH4E5.mjs';
11
- import '../chunk-HHX72A2B.mjs';
12
- import '../chunk-3PTKHSF7.mjs';
10
+ import '../chunk-ZKR5AJV5.mjs';
11
+ import '../chunk-CQUA2AUA.mjs';
12
+ import '../chunk-OUERH2T4.mjs';
13
13
  import '../chunk-BEXTDHO4.mjs';
14
14
  import { jsx } from 'react/jsx-runtime';
15
15
 
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var chunk3DQXXYCS_js = require('../chunk-3DQXXYCS.js');
4
- require('../chunk-2OZ2SMZH.js');
5
- require('../chunk-2ACKOMAL.js');
6
- require('../chunk-LFBMFACZ.js');
3
+ var chunk4DE2KJ7R_js = require('../chunk-4DE2KJ7R.js');
4
+ require('../chunk-G3YUSRCL.js');
5
+ require('../chunk-IPV2TUAT.js');
6
+ require('../chunk-5BZDHZCN.js');
7
7
  require('../chunk-KHPJ3CEL.js');
8
- require('../chunk-RMLRZOVE.js');
9
- require('../chunk-7NMI7M56.js');
10
- require('../chunk-BIZT7AYK.js');
8
+ require('../chunk-6AZTRTCG.js');
9
+ require('../chunk-FFJVQWKO.js');
10
+ require('../chunk-D37M7MIH.js');
11
11
  require('../chunk-SNAQBZPT.js');
12
12
 
13
13
 
14
14
 
15
15
  Object.defineProperty(exports, "StaticForm", {
16
16
  enumerable: true,
17
- get: function () { return chunk3DQXXYCS_js.StaticForm; }
17
+ get: function () { return chunk4DE2KJ7R_js.StaticForm; }
18
18
  });
19
19
  //# sourceMappingURL=static.js.map
20
20
  //# sourceMappingURL=static.js.map
@@ -1,11 +1,11 @@
1
- export { StaticForm } from '../chunk-LCRWCOPI.mjs';
2
- import '../chunk-DXFZA34N.mjs';
3
- import '../chunk-LB7LHVWI.mjs';
4
- import '../chunk-ITV76G3L.mjs';
1
+ export { StaticForm } from '../chunk-TS3N3LGZ.mjs';
2
+ import '../chunk-HDQTZAGE.mjs';
3
+ import '../chunk-H7274TKR.mjs';
4
+ import '../chunk-XW5KNCWJ.mjs';
5
5
  import '../chunk-TMVKRQGJ.mjs';
6
- import '../chunk-F4DZH4E5.mjs';
7
- import '../chunk-HHX72A2B.mjs';
8
- import '../chunk-3PTKHSF7.mjs';
6
+ import '../chunk-ZKR5AJV5.mjs';
7
+ import '../chunk-CQUA2AUA.mjs';
8
+ import '../chunk-OUERH2T4.mjs';
9
9
  import '../chunk-BEXTDHO4.mjs';
10
10
  //# sourceMappingURL=static.mjs.map
11
11
  //# sourceMappingURL=static.mjs.map
@@ -10,6 +10,7 @@
10
10
  * Or customize with CSS variables in your global styles:
11
11
  * :root {
12
12
  * --sk-input-bg: #ffffff;
13
+ * --sk-input-text: #your-field-text-color;
13
14
  * --sk-input-border: #your-border-color;
14
15
  * --sk-primary: #your-brand-color;
15
16
  * }
@@ -31,6 +32,13 @@
31
32
  :root {
32
33
  /* Input styling */
33
34
  --sk-input-bg: #ffffff;
35
+ /*
36
+ * --sk-input-text and --sk-placeholder-color are deliberately NOT declared
37
+ * here. Declaring a token in :root defeats its own fallback: once it has a
38
+ * value, var(--sk-input-text, var(--sk-text-primary)) can never reach the
39
+ * second argument, and a dark site that themed --sk-text-primary would be
40
+ * handed #111827 anyway. Leaving them undefined is what makes the chain work.
41
+ */
34
42
  --sk-input-border: #d1d5db;
35
43
  --sk-input-border-focus: #2563eb;
36
44
  --sk-input-border-error: #dc2626;
@@ -265,6 +273,13 @@
265
273
  padding: var(--sk-input-padding);
266
274
  font-size: var(--sk-font-size);
267
275
  font-family: inherit;
276
+ /*
277
+ * A form control does not inherit `color`, so this has to be stated. The
278
+ * value tracks --sk-input-text, the same token FormField writes inline, so
279
+ * the two paths cannot disagree; --sk-text-primary catches a site that themed
280
+ * its text and never thought about its fields.
281
+ */
282
+ color: var(--sk-input-text, var(--sk-text-primary));
268
283
  border: 1px solid var(--sk-input-border);
269
284
  border-radius: var(--sk-input-radius);
270
285
  background-color: var(--sk-input-bg);
@@ -272,6 +287,12 @@
272
287
  transition: border-color 0.15s ease;
273
288
  }
274
289
 
290
+ .sk-form__input::placeholder,
291
+ .sk-form__textarea::placeholder {
292
+ color: var(--sk-placeholder-color, var(--sk-text-tertiary));
293
+ opacity: 1;
294
+ }
295
+
275
296
  .sk-form__input:focus,
276
297
  .sk-form__textarea:focus,
277
298
  .sk-form__select:focus {
@@ -1,41 +1,41 @@
1
1
  'use strict';
2
2
 
3
- var chunkRE54UKET_js = require('../chunk-RE54UKET.js');
3
+ var chunkPZXKFHPO_js = require('../chunk-PZXKFHPO.js');
4
4
  var chunkGCPPXUAI_js = require('../chunk-GCPPXUAI.js');
5
- require('../chunk-RMLRZOVE.js');
6
- require('../chunk-7NMI7M56.js');
7
- require('../chunk-BIZT7AYK.js');
5
+ require('../chunk-6AZTRTCG.js');
6
+ require('../chunk-FFJVQWKO.js');
7
+ require('../chunk-D37M7MIH.js');
8
8
  require('../chunk-SNAQBZPT.js');
9
9
 
10
10
 
11
11
 
12
12
  Object.defineProperty(exports, "ManagedImage", {
13
13
  enumerable: true,
14
- get: function () { return chunkRE54UKET_js.ManagedImage; }
14
+ get: function () { return chunkPZXKFHPO_js.ManagedImage; }
15
15
  });
16
16
  Object.defineProperty(exports, "assignImageToSlot", {
17
17
  enumerable: true,
18
- get: function () { return chunkRE54UKET_js.assignImageToSlot; }
18
+ get: function () { return chunkPZXKFHPO_js.assignImageToSlot; }
19
19
  });
20
20
  Object.defineProperty(exports, "clearImageSlot", {
21
21
  enumerable: true,
22
- get: function () { return chunkRE54UKET_js.clearImageSlot; }
22
+ get: function () { return chunkPZXKFHPO_js.clearImageSlot; }
23
23
  });
24
24
  Object.defineProperty(exports, "fetchManagedImage", {
25
25
  enumerable: true,
26
- get: function () { return chunkRE54UKET_js.fetchManagedImage; }
26
+ get: function () { return chunkPZXKFHPO_js.fetchManagedImage; }
27
27
  });
28
28
  Object.defineProperty(exports, "fetchManagedImages", {
29
29
  enumerable: true,
30
- get: function () { return chunkRE54UKET_js.fetchManagedImages; }
30
+ get: function () { return chunkPZXKFHPO_js.fetchManagedImages; }
31
31
  });
32
32
  Object.defineProperty(exports, "listImageFiles", {
33
33
  enumerable: true,
34
- get: function () { return chunkRE54UKET_js.listImageFiles; }
34
+ get: function () { return chunkPZXKFHPO_js.listImageFiles; }
35
35
  });
36
36
  Object.defineProperty(exports, "uploadImage", {
37
37
  enumerable: true,
38
- get: function () { return chunkRE54UKET_js.uploadImage; }
38
+ get: function () { return chunkPZXKFHPO_js.uploadImage; }
39
39
  });
40
40
  Object.defineProperty(exports, "ManagedFavicon", {
41
41
  enumerable: true,
@@ -1,8 +1,8 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-X4H2RAIQ.mjs';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-6QABCGM6.mjs';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-CU6OGBKK.mjs';
3
- import '../chunk-F4DZH4E5.mjs';
4
- import '../chunk-HHX72A2B.mjs';
5
- import '../chunk-3PTKHSF7.mjs';
3
+ import '../chunk-ZKR5AJV5.mjs';
4
+ import '../chunk-CQUA2AUA.mjs';
5
+ import '../chunk-OUERH2T4.mjs';
6
6
  import '../chunk-BEXTDHO4.mjs';
7
7
  //# sourceMappingURL=index.mjs.map
8
8
  //# sourceMappingURL=index.mjs.map
package/dist/index.js CHANGED
@@ -3,23 +3,24 @@
3
3
  var chunkJA77WXRE_js = require('./chunk-JA77WXRE.js');
4
4
  var chunkCIM5W3UO_js = require('./chunk-CIM5W3UO.js');
5
5
  var chunk46BMNWE6_js = require('./chunk-46BMNWE6.js');
6
- var chunkRE54UKET_js = require('./chunk-RE54UKET.js');
6
+ var chunkPZXKFHPO_js = require('./chunk-PZXKFHPO.js');
7
7
  require('./chunk-GCPPXUAI.js');
8
8
  var chunkEHJANA5C_js = require('./chunk-EHJANA5C.js');
9
9
  var chunkGSRT66PA_js = require('./chunk-GSRT66PA.js');
10
- var chunkPEIWCJXS_js = require('./chunk-PEIWCJXS.js');
11
- var chunk6ABEAO2K_js = require('./chunk-6ABEAO2K.js');
10
+ var chunkXQZTOWS3_js = require('./chunk-XQZTOWS3.js');
11
+ var chunkW23TMUKB_js = require('./chunk-W23TMUKB.js');
12
12
  require('./chunk-JP5WGL75.js');
13
- var chunkK6YQ73IX_js = require('./chunk-K6YQ73IX.js');
14
- var chunkX6SAM7CR_js = require('./chunk-X6SAM7CR.js');
15
- require('./chunk-EDZWNCSE.js');
16
- require('./chunk-4YJFC6FC.js');
13
+ var chunkDYKFC7WY_js = require('./chunk-DYKFC7WY.js');
14
+ var chunkGPNBBUEN_js = require('./chunk-GPNBBUEN.js');
15
+ require('./chunk-3EPMDPWI.js');
16
+ require('./chunk-M7FWXEXC.js');
17
17
  require('./chunk-HMFFAUCD.js');
18
+ require('./chunk-OL2QBWAU.js');
18
19
  require('./chunk-RC4WWQXR.js');
19
20
  require('./chunk-VJMPIRSD.js');
20
- var chunkRMLRZOVE_js = require('./chunk-RMLRZOVE.js');
21
- require('./chunk-7NMI7M56.js');
22
- require('./chunk-BIZT7AYK.js');
21
+ var chunk6AZTRTCG_js = require('./chunk-6AZTRTCG.js');
22
+ require('./chunk-FFJVQWKO.js');
23
+ require('./chunk-D37M7MIH.js');
23
24
  require('./chunk-SNAQBZPT.js');
24
25
  var react = require('react');
25
26
  var jsxRuntime = require('react/jsx-runtime');
@@ -37,7 +38,7 @@ async function apiGet(endpoint) {
37
38
  return null;
38
39
  }
39
40
  try {
40
- const response = await chunkRMLRZOVE_js.sonorFetch(
41
+ const response = await chunk6AZTRTCG_js.sonorFetch(
41
42
  `${apiUrl}${endpoint}`,
42
43
  { method: "GET" },
43
44
  { apiKey, retries: 0 }
@@ -190,31 +191,31 @@ Object.defineProperty(exports, "handleManagedRedirects", {
190
191
  });
191
192
  Object.defineProperty(exports, "ManagedImage", {
192
193
  enumerable: true,
193
- get: function () { return chunkRE54UKET_js.ManagedImage; }
194
+ get: function () { return chunkPZXKFHPO_js.ManagedImage; }
194
195
  });
195
196
  Object.defineProperty(exports, "assignImageToSlot", {
196
197
  enumerable: true,
197
- get: function () { return chunkRE54UKET_js.assignImageToSlot; }
198
+ get: function () { return chunkPZXKFHPO_js.assignImageToSlot; }
198
199
  });
199
200
  Object.defineProperty(exports, "clearImageSlot", {
200
201
  enumerable: true,
201
- get: function () { return chunkRE54UKET_js.clearImageSlot; }
202
+ get: function () { return chunkPZXKFHPO_js.clearImageSlot; }
202
203
  });
203
204
  Object.defineProperty(exports, "fetchManagedImage", {
204
205
  enumerable: true,
205
- get: function () { return chunkRE54UKET_js.fetchManagedImage; }
206
+ get: function () { return chunkPZXKFHPO_js.fetchManagedImage; }
206
207
  });
207
208
  Object.defineProperty(exports, "fetchManagedImages", {
208
209
  enumerable: true,
209
- get: function () { return chunkRE54UKET_js.fetchManagedImages; }
210
+ get: function () { return chunkPZXKFHPO_js.fetchManagedImages; }
210
211
  });
211
212
  Object.defineProperty(exports, "listImageFiles", {
212
213
  enumerable: true,
213
- get: function () { return chunkRE54UKET_js.listImageFiles; }
214
+ get: function () { return chunkPZXKFHPO_js.listImageFiles; }
214
215
  });
215
216
  Object.defineProperty(exports, "uploadImage", {
216
217
  enumerable: true,
217
- get: function () { return chunkRE54UKET_js.uploadImage; }
218
+ get: function () { return chunkPZXKFHPO_js.uploadImage; }
218
219
  });
219
220
  Object.defineProperty(exports, "TestimonialSection", {
220
221
  enumerable: true,
@@ -230,187 +231,187 @@ Object.defineProperty(exports, "fetchReviews", {
230
231
  });
231
232
  Object.defineProperty(exports, "CalendarView", {
232
233
  enumerable: true,
233
- get: function () { return chunkPEIWCJXS_js.CalendarView; }
234
+ get: function () { return chunkXQZTOWS3_js.CalendarView; }
234
235
  });
235
236
  Object.defineProperty(exports, "CheckoutForm", {
236
237
  enumerable: true,
237
- get: function () { return chunkPEIWCJXS_js.CheckoutForm; }
238
+ get: function () { return chunkXQZTOWS3_js.CheckoutForm; }
238
239
  });
239
240
  Object.defineProperty(exports, "EventCalendar", {
240
241
  enumerable: true,
241
- get: function () { return chunkPEIWCJXS_js.EventCalendar; }
242
+ get: function () { return chunkXQZTOWS3_js.EventCalendar; }
242
243
  });
243
244
  Object.defineProperty(exports, "EventCheckout", {
244
245
  enumerable: true,
245
- get: function () { return chunkPEIWCJXS_js.EventCheckout; }
246
+ get: function () { return chunkXQZTOWS3_js.EventCheckout; }
246
247
  });
247
248
  Object.defineProperty(exports, "EventEmbed", {
248
249
  enumerable: true,
249
- get: function () { return chunkPEIWCJXS_js.EventEmbed; }
250
+ get: function () { return chunkXQZTOWS3_js.EventEmbed; }
250
251
  });
251
252
  Object.defineProperty(exports, "EventModal", {
252
253
  enumerable: true,
253
- get: function () { return chunkPEIWCJXS_js.EventModal; }
254
+ get: function () { return chunkXQZTOWS3_js.EventModal; }
254
255
  });
255
256
  Object.defineProperty(exports, "EventTile", {
256
257
  enumerable: true,
257
- get: function () { return chunkPEIWCJXS_js.EventTile; }
258
+ get: function () { return chunkXQZTOWS3_js.EventTile; }
258
259
  });
259
260
  Object.defineProperty(exports, "OfferingCard", {
260
261
  enumerable: true,
261
- get: function () { return chunkPEIWCJXS_js.OfferingCard; }
262
+ get: function () { return chunkXQZTOWS3_js.OfferingCard; }
262
263
  });
263
264
  Object.defineProperty(exports, "OfferingList", {
264
265
  enumerable: true,
265
- get: function () { return chunkPEIWCJXS_js.OfferingList; }
266
+ get: function () { return chunkXQZTOWS3_js.OfferingList; }
266
267
  });
267
268
  Object.defineProperty(exports, "ProductEmbed", {
268
269
  enumerable: true,
269
- get: function () { return chunkPEIWCJXS_js.ProductEmbed; }
270
+ get: function () { return chunkXQZTOWS3_js.ProductEmbed; }
270
271
  });
271
272
  Object.defineProperty(exports, "RegistrationForm", {
272
273
  enumerable: true,
273
- get: function () { return chunkPEIWCJXS_js.RegistrationForm; }
274
+ get: function () { return chunkXQZTOWS3_js.RegistrationForm; }
274
275
  });
275
276
  Object.defineProperty(exports, "UpcomingEvents", {
276
277
  enumerable: true,
277
- get: function () { return chunkPEIWCJXS_js.UpcomingEvents; }
278
+ get: function () { return chunkXQZTOWS3_js.UpcomingEvents; }
278
279
  });
279
280
  Object.defineProperty(exports, "createCheckoutSession", {
280
281
  enumerable: true,
281
- get: function () { return chunkPEIWCJXS_js.createCheckoutSession; }
282
+ get: function () { return chunkXQZTOWS3_js.createCheckoutSession; }
282
283
  });
283
284
  Object.defineProperty(exports, "fetchNextEvent", {
284
285
  enumerable: true,
285
- get: function () { return chunkPEIWCJXS_js.fetchNextEvent; }
286
+ get: function () { return chunkXQZTOWS3_js.fetchNextEvent; }
286
287
  });
287
288
  Object.defineProperty(exports, "fetchOffering", {
288
289
  enumerable: true,
289
- get: function () { return chunkPEIWCJXS_js.fetchOffering; }
290
+ get: function () { return chunkXQZTOWS3_js.fetchOffering; }
290
291
  });
291
292
  Object.defineProperty(exports, "fetchOfferings", {
292
293
  enumerable: true,
293
- get: function () { return chunkPEIWCJXS_js.fetchOfferings; }
294
+ get: function () { return chunkXQZTOWS3_js.fetchOfferings; }
294
295
  });
295
296
  Object.defineProperty(exports, "fetchProducts", {
296
297
  enumerable: true,
297
- get: function () { return chunkPEIWCJXS_js.fetchProducts; }
298
+ get: function () { return chunkXQZTOWS3_js.fetchProducts; }
298
299
  });
299
300
  Object.defineProperty(exports, "fetchServices", {
300
301
  enumerable: true,
301
- get: function () { return chunkPEIWCJXS_js.fetchServices; }
302
+ get: function () { return chunkXQZTOWS3_js.fetchServices; }
302
303
  });
303
304
  Object.defineProperty(exports, "fetchUpcomingEvents", {
304
305
  enumerable: true,
305
- get: function () { return chunkPEIWCJXS_js.fetchUpcomingEvents; }
306
+ get: function () { return chunkXQZTOWS3_js.fetchUpcomingEvents; }
306
307
  });
307
308
  Object.defineProperty(exports, "formatDate", {
308
309
  enumerable: true,
309
- get: function () { return chunkPEIWCJXS_js.formatDate; }
310
+ get: function () { return chunkXQZTOWS3_js.formatDate; }
310
311
  });
311
312
  Object.defineProperty(exports, "formatDateTime", {
312
313
  enumerable: true,
313
- get: function () { return chunkPEIWCJXS_js.formatDateTime; }
314
+ get: function () { return chunkXQZTOWS3_js.formatDateTime; }
314
315
  });
315
316
  Object.defineProperty(exports, "formatPrice", {
316
317
  enumerable: true,
317
- get: function () { return chunkPEIWCJXS_js.formatPrice; }
318
+ get: function () { return chunkXQZTOWS3_js.formatPrice; }
318
319
  });
319
320
  Object.defineProperty(exports, "getOfferingUrl", {
320
321
  enumerable: true,
321
- get: function () { return chunkPEIWCJXS_js.getOfferingUrl; }
322
+ get: function () { return chunkXQZTOWS3_js.getOfferingUrl; }
322
323
  });
323
324
  Object.defineProperty(exports, "registerForEvent", {
324
325
  enumerable: true,
325
- get: function () { return chunkPEIWCJXS_js.registerForEvent; }
326
+ get: function () { return chunkXQZTOWS3_js.registerForEvent; }
326
327
  });
327
328
  Object.defineProperty(exports, "useEventModal", {
328
329
  enumerable: true,
329
- get: function () { return chunkPEIWCJXS_js.useEventModal; }
330
+ get: function () { return chunkXQZTOWS3_js.useEventModal; }
330
331
  });
331
332
  Object.defineProperty(exports, "BookingWidget", {
332
333
  enumerable: true,
333
- get: function () { return chunk6ABEAO2K_js.BookingWidget; }
334
+ get: function () { return chunkW23TMUKB_js.BookingWidget; }
334
335
  });
335
336
  Object.defineProperty(exports, "createBooking", {
336
337
  enumerable: true,
337
- get: function () { return chunk6ABEAO2K_js.createBooking; }
338
+ get: function () { return chunkW23TMUKB_js.createBooking; }
338
339
  });
339
340
  Object.defineProperty(exports, "createSlotHold", {
340
341
  enumerable: true,
341
- get: function () { return chunk6ABEAO2K_js.createSlotHold; }
342
+ get: function () { return chunkW23TMUKB_js.createSlotHold; }
342
343
  });
343
344
  Object.defineProperty(exports, "detectTimezone", {
344
345
  enumerable: true,
345
- get: function () { return chunk6ABEAO2K_js.detectTimezone; }
346
+ get: function () { return chunkW23TMUKB_js.detectTimezone; }
346
347
  });
347
348
  Object.defineProperty(exports, "fetchAvailability", {
348
349
  enumerable: true,
349
- get: function () { return chunk6ABEAO2K_js.fetchAvailability; }
350
+ get: function () { return chunkW23TMUKB_js.fetchAvailability; }
350
351
  });
351
352
  Object.defineProperty(exports, "fetchAvailableDates", {
352
353
  enumerable: true,
353
- get: function () { return chunk6ABEAO2K_js.fetchAvailableDates; }
354
+ get: function () { return chunkW23TMUKB_js.fetchAvailableDates; }
354
355
  });
355
356
  Object.defineProperty(exports, "fetchBookingTypeDetails", {
356
357
  enumerable: true,
357
- get: function () { return chunk6ABEAO2K_js.fetchBookingTypeDetails; }
358
+ get: function () { return chunkW23TMUKB_js.fetchBookingTypeDetails; }
358
359
  });
359
360
  Object.defineProperty(exports, "fetchBookingTypes", {
360
361
  enumerable: true,
361
- get: function () { return chunk6ABEAO2K_js.fetchBookingTypes; }
362
+ get: function () { return chunkW23TMUKB_js.fetchBookingTypes; }
362
363
  });
363
364
  Object.defineProperty(exports, "formatBookingDate", {
364
365
  enumerable: true,
365
- get: function () { return chunk6ABEAO2K_js.formatDate; }
366
+ get: function () { return chunkW23TMUKB_js.formatDate; }
366
367
  });
367
368
  Object.defineProperty(exports, "formatBookingTime", {
368
369
  enumerable: true,
369
- get: function () { return chunk6ABEAO2K_js.formatTime; }
370
+ get: function () { return chunkW23TMUKB_js.formatTime; }
370
371
  });
371
372
  Object.defineProperty(exports, "formatDuration", {
372
373
  enumerable: true,
373
- get: function () { return chunk6ABEAO2K_js.formatDuration; }
374
+ get: function () { return chunkW23TMUKB_js.formatDuration; }
374
375
  });
375
376
  Object.defineProperty(exports, "releaseSlotHold", {
376
377
  enumerable: true,
377
- get: function () { return chunk6ABEAO2K_js.releaseSlotHold; }
378
+ get: function () { return chunkW23TMUKB_js.releaseSlotHold; }
378
379
  });
379
380
  Object.defineProperty(exports, "ExperimentConversion", {
380
381
  enumerable: true,
381
- get: function () { return chunkK6YQ73IX_js.ExperimentConversion; }
382
+ get: function () { return chunkDYKFC7WY_js.ExperimentConversion; }
382
383
  });
383
384
  Object.defineProperty(exports, "SignalExperiment", {
384
385
  enumerable: true,
385
- get: function () { return chunkK6YQ73IX_js.SignalExperiment; }
386
+ get: function () { return chunkDYKFC7WY_js.SignalExperiment; }
386
387
  });
387
388
  Object.defineProperty(exports, "useExperimentVariant", {
388
389
  enumerable: true,
389
- get: function () { return chunkK6YQ73IX_js.useExperimentVariant; }
390
+ get: function () { return chunkDYKFC7WY_js.useExperimentVariant; }
390
391
  });
391
392
  Object.defineProperty(exports, "SignalBridge", {
392
393
  enumerable: true,
393
- get: function () { return chunkX6SAM7CR_js.SignalBridge; }
394
+ get: function () { return chunkGPNBBUEN_js.SignalBridge; }
394
395
  });
395
396
  Object.defineProperty(exports, "useSignal", {
396
397
  enumerable: true,
397
- get: function () { return chunkX6SAM7CR_js.useSignal; }
398
+ get: function () { return chunkGPNBBUEN_js.useSignal; }
398
399
  });
399
400
  Object.defineProperty(exports, "useSignalConfig", {
400
401
  enumerable: true,
401
- get: function () { return chunkX6SAM7CR_js.useSignalConfig; }
402
+ get: function () { return chunkGPNBBUEN_js.useSignalConfig; }
402
403
  });
403
404
  Object.defineProperty(exports, "useSignalEvent", {
404
405
  enumerable: true,
405
- get: function () { return chunkX6SAM7CR_js.useSignalEvent; }
406
+ get: function () { return chunkGPNBBUEN_js.useSignalEvent; }
406
407
  });
407
408
  Object.defineProperty(exports, "useSignalExperiment", {
408
409
  enumerable: true,
409
- get: function () { return chunkX6SAM7CR_js.useSignalExperiment; }
410
+ get: function () { return chunkGPNBBUEN_js.useSignalExperiment; }
410
411
  });
411
412
  Object.defineProperty(exports, "useSignalOutcome", {
412
413
  enumerable: true,
413
- get: function () { return chunkX6SAM7CR_js.useSignalOutcome; }
414
+ get: function () { return chunkGPNBBUEN_js.useSignalOutcome; }
414
415
  });
415
416
  exports.AffiliateCard = AffiliateCard;
416
417
  exports.AffiliatesWidget = AffiliatesWidget;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/affiliates/api.ts","../src/affiliates/useAffiliates.ts","../src/affiliates/AffiliatesWidget.tsx"],"names":["sonorFetch","useState","useEffect","getTrackingUrl","jsx"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/affiliates - Affiliates API\n * \n * API functions for fetching affiliate data for client sites.\n * All data goes through Portal API with API key auth - never Supabase directly.\n */\n\nimport { sonorFetch } from '../shared/sonorFetch'\nimport type { Affiliate, AffiliateWithOffers, FetchAffiliatesOptions } from './types'\n\n// ============================================\n// API Config Helpers\n// ============================================\n\nfunction getApiConfig() {\n const apiUrl = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : 'https://api.sonor.io'\n const apiKey = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_KEY__ || ''\n : ''\n return { apiUrl, apiKey }\n}\n\nasync function apiGet<T>(endpoint: string): Promise<T | null> {\n const { apiUrl, apiKey } = getApiConfig()\n \n if (!apiKey) {\n console.error('[Affiliates] No API key configured')\n return null\n }\n \n try {\n // Route through sonorFetch (the canonical transport) — NOT bare fetch — so a\n // stale build-time seed token is transparently refreshed and a 401 triggers\n // one refresh+retry. The credential goes via options.apiKey, never a header:\n // sonorFetch injects the freshest token as x-api-key; a hand-set header would\n // pin the stale seed and 401.\n const response = await sonorFetch(\n `${apiUrl}${endpoint}`,\n { method: 'GET' },\n { apiKey, retries: 0 },\n )\n\n if (!response.ok) {\n console.error(`[Affiliates] API error: ${response.statusText}`)\n return null\n }\n \n return await response.json()\n } catch (error) {\n console.error('[Affiliates] Network error:', error)\n return null\n }\n}\n\n// ============================================\n// Fetch Affiliates\n// ============================================\n\n/**\n * Fetch all active affiliates for the project\n * \n * @example\n * ```ts\n * const affiliates = await fetchAffiliates()\n * ```\n */\nexport async function fetchAffiliates(\n options: FetchAffiliatesOptions = {}\n): Promise<AffiliateWithOffers[]> {\n const result = await apiGet<{ affiliates: AffiliateWithOffers[] }>(\n '/api/public/affiliates'\n )\n \n return result?.affiliates || []\n}\n\n/**\n * Build a tracking URL for an affiliate offer\n * When clicked, this redirects through our tracking endpoint and then to the destination\n * \n * @example\n * ```ts\n * const trackingUrl = getTrackingUrl(affiliate.id, offer.id)\n * // Returns: https://api.sonor.io/a/{affiliateId}/{offerId}\n * ```\n */\nexport function getTrackingUrl(affiliateId: string, offerId: string): string {\n const { apiUrl } = getApiConfig()\n return `${apiUrl}/a/${affiliateId}/${offerId}`\n}\n","/**\n * @sonordev/site-kit/affiliates - useAffiliates Hook\n * \n * React hook for fetching and displaying affiliates on client sites.\n */\n\n'use client'\n\nimport { useState, useEffect } from 'react'\nimport type { AffiliateWithOffers } from './types'\nimport { fetchAffiliates, getTrackingUrl } from './api'\n\nexport interface UseAffiliatesResult {\n affiliates: AffiliateWithOffers[]\n isLoading: boolean\n error: string | null\n getTrackingUrl: (affiliateId: string, offerId: string) => string\n}\n\n/**\n * Hook to fetch affiliates for display on client sites\n * \n * @example\n * ```tsx\n * function AffiliatesSection() {\n * const { affiliates, isLoading } = useAffiliates()\n * \n * if (isLoading) return <div>Loading...</div>\n * \n * return (\n * <div className=\"grid grid-cols-3 gap-4\">\n * {affiliates.map(affiliate => (\n * <AffiliateCard key={affiliate.id} affiliate={affiliate} />\n * ))}\n * </div>\n * )\n * }\n * ```\n */\nexport function useAffiliates(): UseAffiliatesResult {\n const [affiliates, setAffiliates] = useState<AffiliateWithOffers[]>([])\n const [isLoading, setIsLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n\n useEffect(() => {\n async function load() {\n try {\n setIsLoading(true)\n setError(null)\n const data = await fetchAffiliates()\n setAffiliates(data)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load affiliates')\n } finally {\n setIsLoading(false)\n }\n }\n \n load()\n }, [])\n\n return {\n affiliates,\n isLoading,\n error,\n getTrackingUrl,\n }\n}\n","/**\n * @sonordev/site-kit/affiliates - AffiliatesWidget Component\n * \n * Unstyled, headless component for displaying affiliates.\n * Client sites can wrap this or use it directly with their own styling.\n */\n\n'use client'\n\nimport React from 'react'\nimport { useAffiliates } from './useAffiliates'\nimport type { AffiliateWithOffers, AffiliateOffer } from './types'\n\n// ============================================\n// Affiliate Card (Unstyled)\n// ============================================\n\nexport interface AffiliateCardProps {\n affiliate: AffiliateWithOffers\n className?: string\n /** Optional custom render for the logo */\n renderLogo?: (affiliate: AffiliateWithOffers) => React.ReactNode\n /** Show offers as links below the card */\n showOffers?: boolean\n}\n\n/**\n * Single affiliate card - unstyled, bring your own CSS\n * \n * @example\n * ```tsx\n * <AffiliateCard \n * affiliate={affiliate}\n * className=\"p-4 bg-white rounded-lg shadow\"\n * showOffers\n * />\n * ```\n */\nexport function AffiliateCard({\n affiliate,\n className = '',\n renderLogo,\n showOffers = false,\n}: AffiliateCardProps) {\n const { getTrackingUrl } = useAffiliates()\n \n const defaultLogo = (\n <div data-affiliate-logo className=\"affiliate-logo\">\n {affiliate.logo_url ? (\n <img \n src={affiliate.logo_url} \n alt={affiliate.name}\n loading=\"lazy\"\n />\n ) : (\n <span>{affiliate.name.charAt(0)}</span>\n )}\n </div>\n )\n\n return (\n <div className={className} data-affiliate-card data-affiliate-id={affiliate.id}>\n {/* Logo */}\n {renderLogo ? renderLogo(affiliate) : defaultLogo}\n \n {/* Name */}\n <div data-affiliate-name className=\"affiliate-name\">\n {affiliate.name}\n </div>\n \n {/* Website link */}\n {affiliate.website_url && (\n <a \n href={affiliate.website_url}\n target=\"_blank\"\n rel=\"noopener noreferrer sponsored\"\n data-affiliate-website\n className=\"affiliate-website\"\n >\n Visit Website\n </a>\n )}\n \n {/* Offers */}\n {showOffers && affiliate.offers && affiliate.offers.length > 0 && (\n <div data-affiliate-offers className=\"affiliate-offers\">\n {affiliate.offers.map(offer => (\n <a\n key={offer.id}\n href={getTrackingUrl(affiliate.id, offer.id)}\n target=\"_blank\"\n rel=\"noopener noreferrer sponsored\"\n data-affiliate-offer\n data-offer-id={offer.id}\n className=\"affiliate-offer\"\n >\n {offer.name}\n </a>\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// ============================================\n// Affiliates Grid (Unstyled)\n// ============================================\n\nexport interface AffiliatesWidgetProps {\n className?: string\n /** Custom loading component */\n loadingComponent?: React.ReactNode\n /** Custom empty state component */\n emptyComponent?: React.ReactNode\n /** Custom error component */\n errorComponent?: React.ReactNode\n /** Show offers on each card */\n showOffers?: boolean\n /** Custom render function for each affiliate */\n renderAffiliate?: (affiliate: AffiliateWithOffers) => React.ReactNode\n /** Maximum number to display */\n limit?: number\n}\n\n/**\n * Display a grid of affiliates - unstyled, bring your own CSS\n * \n * @example\n * ```tsx\n * // Basic usage\n * <AffiliatesWidget className=\"grid grid-cols-3 gap-4\" />\n * \n * // With custom rendering\n * <AffiliatesWidget\n * renderAffiliate={(affiliate) => (\n * <MyCustomCard key={affiliate.id} data={affiliate} />\n * )}\n * />\n * ```\n */\nexport function AffiliatesWidget({\n className = '',\n loadingComponent,\n emptyComponent,\n errorComponent,\n showOffers = false,\n renderAffiliate,\n limit,\n}: AffiliatesWidgetProps) {\n const { affiliates, isLoading, error, getTrackingUrl } = useAffiliates()\n \n if (isLoading) {\n return loadingComponent || <div data-affiliates-loading>Loading affiliates...</div>\n }\n \n if (error) {\n return errorComponent || <div data-affiliates-error>{error}</div>\n }\n \n const displayAffiliates = limit ? affiliates.slice(0, limit) : affiliates\n \n if (displayAffiliates.length === 0) {\n return emptyComponent || null\n }\n \n return (\n <div className={className} data-affiliates-widget>\n {displayAffiliates.map(affiliate => \n renderAffiliate \n ? renderAffiliate(affiliate)\n : <AffiliateCard \n key={affiliate.id} \n affiliate={affiliate} \n showOffers={showOffers}\n />\n )}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/affiliates/api.ts","../src/affiliates/useAffiliates.ts","../src/affiliates/AffiliatesWidget.tsx"],"names":["sonorFetch","useState","useEffect","getTrackingUrl","jsx"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/affiliates - Affiliates API\n * \n * API functions for fetching affiliate data for client sites.\n * All data goes through Portal API with API key auth - never Supabase directly.\n */\n\nimport { sonorFetch } from '../shared/sonorFetch'\nimport type { Affiliate, AffiliateWithOffers, FetchAffiliatesOptions } from './types'\n\n// ============================================\n// API Config Helpers\n// ============================================\n\nfunction getApiConfig() {\n const apiUrl = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : 'https://api.sonor.io'\n const apiKey = typeof window !== 'undefined' \n ? (window as any).__SITE_KIT_API_KEY__ || ''\n : ''\n return { apiUrl, apiKey }\n}\n\nasync function apiGet<T>(endpoint: string): Promise<T | null> {\n const { apiUrl, apiKey } = getApiConfig()\n \n if (!apiKey) {\n console.error('[Affiliates] No API key configured')\n return null\n }\n \n try {\n // Route through sonorFetch (the canonical transport) — NOT bare fetch — so a\n // stale build-time seed token is transparently refreshed and a 401 triggers\n // one refresh+retry. The credential goes via options.apiKey, never a header:\n // sonorFetch injects the freshest token as x-api-key; a hand-set header would\n // pin the stale seed and 401.\n const response = await sonorFetch(\n `${apiUrl}${endpoint}`,\n { method: 'GET' },\n { apiKey, retries: 0 },\n )\n\n if (!response.ok) {\n console.error(`[Affiliates] API error: ${response.statusText}`)\n return null\n }\n \n return await response.json()\n } catch (error) {\n console.error('[Affiliates] Network error:', error)\n return null\n }\n}\n\n// ============================================\n// Fetch Affiliates\n// ============================================\n\n/**\n * Fetch all active affiliates for the project\n * \n * @example\n * ```ts\n * const affiliates = await fetchAffiliates()\n * ```\n */\nexport async function fetchAffiliates(\n options: FetchAffiliatesOptions = {}\n): Promise<AffiliateWithOffers[]> {\n const result = await apiGet<{ affiliates: AffiliateWithOffers[] }>(\n '/api/public/affiliates'\n )\n \n return result?.affiliates || []\n}\n\n/**\n * Build a tracking URL for an affiliate offer\n * When clicked, this redirects through our tracking endpoint and then to the destination\n * \n * @example\n * ```ts\n * const trackingUrl = getTrackingUrl(affiliate.id, offer.id)\n * // Returns: https://api.sonor.io/a/{affiliateId}/{offerId}\n * ```\n */\nexport function getTrackingUrl(affiliateId: string, offerId: string): string {\n const { apiUrl } = getApiConfig()\n return `${apiUrl}/a/${affiliateId}/${offerId}`\n}\n","/**\n * @sonordev/site-kit/affiliates - useAffiliates Hook\n * \n * React hook for fetching and displaying affiliates on client sites.\n */\n\n'use client'\n\nimport { useState, useEffect } from 'react'\nimport type { AffiliateWithOffers } from './types'\nimport { fetchAffiliates, getTrackingUrl } from './api'\n\nexport interface UseAffiliatesResult {\n affiliates: AffiliateWithOffers[]\n isLoading: boolean\n error: string | null\n getTrackingUrl: (affiliateId: string, offerId: string) => string\n}\n\n/**\n * Hook to fetch affiliates for display on client sites\n * \n * @example\n * ```tsx\n * function AffiliatesSection() {\n * const { affiliates, isLoading } = useAffiliates()\n * \n * if (isLoading) return <div>Loading...</div>\n * \n * return (\n * <div className=\"grid grid-cols-3 gap-4\">\n * {affiliates.map(affiliate => (\n * <AffiliateCard key={affiliate.id} affiliate={affiliate} />\n * ))}\n * </div>\n * )\n * }\n * ```\n */\nexport function useAffiliates(): UseAffiliatesResult {\n const [affiliates, setAffiliates] = useState<AffiliateWithOffers[]>([])\n const [isLoading, setIsLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n\n useEffect(() => {\n async function load() {\n try {\n setIsLoading(true)\n setError(null)\n const data = await fetchAffiliates()\n setAffiliates(data)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load affiliates')\n } finally {\n setIsLoading(false)\n }\n }\n \n load()\n }, [])\n\n return {\n affiliates,\n isLoading,\n error,\n getTrackingUrl,\n }\n}\n","/**\n * @sonordev/site-kit/affiliates - AffiliatesWidget Component\n * \n * Unstyled, headless component for displaying affiliates.\n * Client sites can wrap this or use it directly with their own styling.\n */\n\n'use client'\n\nimport React from 'react'\nimport { useAffiliates } from './useAffiliates'\nimport type { AffiliateWithOffers, AffiliateOffer } from './types'\n\n// ============================================\n// Affiliate Card (Unstyled)\n// ============================================\n\nexport interface AffiliateCardProps {\n affiliate: AffiliateWithOffers\n className?: string\n /** Optional custom render for the logo */\n renderLogo?: (affiliate: AffiliateWithOffers) => React.ReactNode\n /** Show offers as links below the card */\n showOffers?: boolean\n}\n\n/**\n * Single affiliate card - unstyled, bring your own CSS\n * \n * @example\n * ```tsx\n * <AffiliateCard \n * affiliate={affiliate}\n * className=\"p-4 bg-white rounded-lg shadow\"\n * showOffers\n * />\n * ```\n */\nexport function AffiliateCard({\n affiliate,\n className = '',\n renderLogo,\n showOffers = false,\n}: AffiliateCardProps) {\n const { getTrackingUrl } = useAffiliates()\n \n const defaultLogo = (\n <div data-affiliate-logo className=\"affiliate-logo\">\n {affiliate.logo_url ? (\n <img \n src={affiliate.logo_url} \n alt={affiliate.name}\n loading=\"lazy\"\n />\n ) : (\n <span>{affiliate.name.charAt(0)}</span>\n )}\n </div>\n )\n\n return (\n <div className={className} data-affiliate-card data-affiliate-id={affiliate.id}>\n {/* Logo */}\n {renderLogo ? renderLogo(affiliate) : defaultLogo}\n \n {/* Name */}\n <div data-affiliate-name className=\"affiliate-name\">\n {affiliate.name}\n </div>\n \n {/* Website link */}\n {affiliate.website_url && (\n <a \n href={affiliate.website_url}\n target=\"_blank\"\n rel=\"noopener noreferrer sponsored\"\n data-affiliate-website\n className=\"affiliate-website\"\n >\n Visit Website\n </a>\n )}\n \n {/* Offers */}\n {showOffers && affiliate.offers && affiliate.offers.length > 0 && (\n <div data-affiliate-offers className=\"affiliate-offers\">\n {affiliate.offers.map(offer => (\n <a\n key={offer.id}\n href={getTrackingUrl(affiliate.id, offer.id)}\n target=\"_blank\"\n rel=\"noopener noreferrer sponsored\"\n data-affiliate-offer\n data-offer-id={offer.id}\n className=\"affiliate-offer\"\n >\n {offer.name}\n </a>\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// ============================================\n// Affiliates Grid (Unstyled)\n// ============================================\n\nexport interface AffiliatesWidgetProps {\n className?: string\n /** Custom loading component */\n loadingComponent?: React.ReactNode\n /** Custom empty state component */\n emptyComponent?: React.ReactNode\n /** Custom error component */\n errorComponent?: React.ReactNode\n /** Show offers on each card */\n showOffers?: boolean\n /** Custom render function for each affiliate */\n renderAffiliate?: (affiliate: AffiliateWithOffers) => React.ReactNode\n /** Maximum number to display */\n limit?: number\n}\n\n/**\n * Display a grid of affiliates - unstyled, bring your own CSS\n * \n * @example\n * ```tsx\n * // Basic usage\n * <AffiliatesWidget className=\"grid grid-cols-3 gap-4\" />\n * \n * // With custom rendering\n * <AffiliatesWidget\n * renderAffiliate={(affiliate) => (\n * <MyCustomCard key={affiliate.id} data={affiliate} />\n * )}\n * />\n * ```\n */\nexport function AffiliatesWidget({\n className = '',\n loadingComponent,\n emptyComponent,\n errorComponent,\n showOffers = false,\n renderAffiliate,\n limit,\n}: AffiliatesWidgetProps) {\n const { affiliates, isLoading, error, getTrackingUrl } = useAffiliates()\n \n if (isLoading) {\n return loadingComponent || <div data-affiliates-loading>Loading affiliates...</div>\n }\n \n if (error) {\n return errorComponent || <div data-affiliates-error>{error}</div>\n }\n \n const displayAffiliates = limit ? affiliates.slice(0, limit) : affiliates\n \n if (displayAffiliates.length === 0) {\n return emptyComponent || null\n }\n \n return (\n <div className={className} data-affiliates-widget>\n {displayAffiliates.map(affiliate => \n renderAffiliate \n ? renderAffiliate(affiliate)\n : <AffiliateCard \n key={affiliate.id} \n affiliate={affiliate} \n showOffers={showOffers}\n />\n )}\n </div>\n )\n}\n"]}