@sonordev/site-kit 6.1.1 → 6.1.3

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 (235) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/{AnalyticsProvider-5G5AFHZN.js → AnalyticsProvider-QK6XBDEJ.js} +10 -10
  3. package/dist/{AnalyticsProvider-5G5AFHZN.js.map → AnalyticsProvider-QK6XBDEJ.js.map} +1 -1
  4. package/dist/{AnalyticsProvider-33L4E6LO.mjs → AnalyticsProvider-TIJWTISP.mjs} +6 -6
  5. package/dist/{AnalyticsProvider-33L4E6LO.mjs.map → AnalyticsProvider-TIJWTISP.mjs.map} +1 -1
  6. package/dist/{ArticleViewTracker-U2KFUSZF.js → ArticleViewTracker-ALE672ZR.js} +6 -6
  7. package/dist/{ArticleViewTracker-U2KFUSZF.js.map → ArticleViewTracker-ALE672ZR.js.map} +1 -1
  8. package/dist/{ArticleViewTracker-VZRMPK4S.mjs → ArticleViewTracker-I66RBWDK.mjs} +5 -5
  9. package/dist/{ArticleViewTracker-VZRMPK4S.mjs.map → ArticleViewTracker-I66RBWDK.mjs.map} +1 -1
  10. package/dist/ChatWidget-566CQUN6.js +26 -0
  11. package/dist/{ChatWidget-RUCQMCMN.js.map → ChatWidget-566CQUN6.js.map} +1 -1
  12. package/dist/ChatWidget-LNOY4TUZ.mjs +17 -0
  13. package/dist/{ChatWidget-LH3QZYKR.mjs.map → ChatWidget-LNOY4TUZ.mjs.map} +1 -1
  14. package/dist/EngageWidget-DF47YUHQ.js +21 -0
  15. package/dist/{EngageWidget-X2CBW7DV.js.map → EngageWidget-DF47YUHQ.js.map} +1 -1
  16. package/dist/EngageWidget-IGF7SC3R.mjs +12 -0
  17. package/dist/{EngageWidget-34BQXU7K.mjs.map → EngageWidget-IGF7SC3R.mjs.map} +1 -1
  18. package/dist/{FileField-REUU36RJ.mjs → FileField-AG63W2BC.mjs} +5 -5
  19. package/dist/{FileField-REUU36RJ.mjs.map → FileField-AG63W2BC.mjs.map} +1 -1
  20. package/dist/{FileField-2MMV53BG.js → FileField-IK6E5IOC.js} +6 -6
  21. package/dist/{FileField-2MMV53BG.js.map → FileField-IK6E5IOC.js.map} +1 -1
  22. package/dist/{FormSpotlight-Y27TPQ4G.js → FormSpotlight-6MUDJWW5.js} +9 -9
  23. package/dist/{FormSpotlight-Y27TPQ4G.js.map → FormSpotlight-6MUDJWW5.js.map} +1 -1
  24. package/dist/{FormSpotlight-ZV3IS66K.mjs → FormSpotlight-H7V4GBXG.mjs} +3 -3
  25. package/dist/{FormSpotlight-ZV3IS66K.mjs.map → FormSpotlight-H7V4GBXG.mjs.map} +1 -1
  26. package/dist/{FormStage-6NUGCDJR.mjs → FormStage-ACETL7SD.mjs} +3 -3
  27. package/dist/{FormStage-6NUGCDJR.mjs.map → FormStage-ACETL7SD.mjs.map} +1 -1
  28. package/dist/{FormStage-K7Z6IEPM.js → FormStage-ZXZRZ2LS.js} +9 -9
  29. package/dist/{FormStage-K7Z6IEPM.js.map → FormStage-ZXZRZ2LS.js.map} +1 -1
  30. package/dist/ManagedForm-4U54NPW2.js +25 -0
  31. package/dist/{ManagedForm-O67ILXN7.js.map → ManagedForm-4U54NPW2.js.map} +1 -1
  32. package/dist/ManagedForm-MOBWSG4D.mjs +16 -0
  33. package/dist/{ManagedForm-EUDKMS5G.mjs.map → ManagedForm-MOBWSG4D.mjs.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-QBJODAIA.js → ManagedNewsletterForm-5LBGBE2F.js} +8 -8
  35. package/dist/{ManagedNewsletterForm-QBJODAIA.js.map → ManagedNewsletterForm-5LBGBE2F.js.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-IGWTZW7X.mjs → ManagedNewsletterForm-OV3OEMUP.mjs} +7 -7
  37. package/dist/{ManagedNewsletterForm-IGWTZW7X.mjs.map → ManagedNewsletterForm-OV3OEMUP.mjs.map} +1 -1
  38. package/dist/{SignalCore-KQDRH44V.js → SignalCore-QCVR7TZV.js} +11 -11
  39. package/dist/{SignalCore-KQDRH44V.js.map → SignalCore-QCVR7TZV.js.map} +1 -1
  40. package/dist/{SignalCore-UR4KVU5X.mjs → SignalCore-XM2MHEGR.mjs} +5 -5
  41. package/dist/{SignalCore-UR4KVU5X.mjs.map → SignalCore-XM2MHEGR.mjs.map} +1 -1
  42. package/dist/SitemapSync-74EVNOFQ.mjs +9 -0
  43. package/dist/{SitemapSync-QYV3X5LH.mjs.map → SitemapSync-74EVNOFQ.mjs.map} +1 -1
  44. package/dist/SitemapSync-BQFZAE3X.js +18 -0
  45. package/dist/{SitemapSync-DQALPBTR.js.map → SitemapSync-BQFZAE3X.js.map} +1 -1
  46. package/dist/analytics/index.js +9 -9
  47. package/dist/analytics/index.mjs +4 -4
  48. package/dist/articles/index.js +1 -1
  49. package/dist/articles/index.mjs +1 -1
  50. package/dist/articles/server-ui.js +1 -1
  51. package/dist/articles/server-ui.mjs +1 -1
  52. package/dist/brand/extract-brand-profile.d.ts +2 -7
  53. package/dist/brand/extract-brand-profile.d.ts.map +1 -1
  54. package/dist/{chunk-WWJQGMMN.js → chunk-2SLA2LOD.js} +12 -12
  55. package/dist/{chunk-WWJQGMMN.js.map → chunk-2SLA2LOD.js.map} +1 -1
  56. package/dist/{chunk-7PCXI25T.mjs → chunk-3MLVI5DH.mjs} +3 -3
  57. package/dist/{chunk-7PCXI25T.mjs.map → chunk-3MLVI5DH.mjs.map} +1 -1
  58. package/dist/{chunk-U3SQBAUQ.mjs → chunk-3RISRHOK.mjs} +8 -8
  59. package/dist/{chunk-U3SQBAUQ.mjs.map → chunk-3RISRHOK.mjs.map} +1 -1
  60. package/dist/chunk-5FBALULE.mjs +6 -0
  61. package/dist/{chunk-HQWPCX3N.mjs.map → chunk-5FBALULE.mjs.map} +1 -1
  62. package/dist/{chunk-22KPMJIQ.mjs → chunk-5IQOPL7T.mjs} +3 -3
  63. package/dist/{chunk-22KPMJIQ.mjs.map → chunk-5IQOPL7T.mjs.map} +1 -1
  64. package/dist/{chunk-D6VMDDQR.js → chunk-5OUOVPXC.js} +8 -8
  65. package/dist/{chunk-D6VMDDQR.js.map → chunk-5OUOVPXC.js.map} +1 -1
  66. package/dist/{chunk-YZMI7QQ2.mjs → chunk-6FIIA6ME.mjs} +4 -4
  67. package/dist/{chunk-YZMI7QQ2.mjs.map → chunk-6FIIA6ME.mjs.map} +1 -1
  68. package/dist/{chunk-JOYMIGR2.mjs → chunk-7K6L33BX.mjs} +22 -22
  69. package/dist/{chunk-7IM7VG4E.js → chunk-7VRK3DWU.js} +6 -6
  70. package/dist/{chunk-7IM7VG4E.js.map → chunk-7VRK3DWU.js.map} +1 -1
  71. package/dist/{chunk-Y4A4G5XJ.js → chunk-AGEE4CGH.js} +5 -5
  72. package/dist/{chunk-Y4A4G5XJ.js.map → chunk-AGEE4CGH.js.map} +1 -1
  73. package/dist/{chunk-JS75ORH7.js → chunk-ATPQ6264.js} +24 -24
  74. package/dist/{chunk-IPGIFBRN.js → chunk-BGBP4UN4.js} +4 -4
  75. package/dist/{chunk-IPGIFBRN.js.map → chunk-BGBP4UN4.js.map} +1 -1
  76. package/dist/{chunk-6ZMEJSNX.mjs → chunk-CI7T4ZRP.mjs} +4 -4
  77. package/dist/{chunk-6ZMEJSNX.mjs.map → chunk-CI7T4ZRP.mjs.map} +1 -1
  78. package/dist/{chunk-BRED7YSL.js → chunk-CTAYH725.js} +11 -11
  79. package/dist/{chunk-BRED7YSL.js.map → chunk-CTAYH725.js.map} +1 -1
  80. package/dist/{chunk-DGWFHL35.mjs → chunk-D5KKVWZK.mjs} +3 -3
  81. package/dist/{chunk-DGWFHL35.mjs.map → chunk-D5KKVWZK.mjs.map} +1 -1
  82. package/dist/{chunk-U577PJLH.mjs → chunk-DVZ4BMXX.mjs} +7 -7
  83. package/dist/{chunk-U577PJLH.mjs.map → chunk-DVZ4BMXX.mjs.map} +1 -1
  84. package/dist/{chunk-OP42HO3Z.mjs → chunk-ESPOINPT.mjs} +3 -3
  85. package/dist/{chunk-OP42HO3Z.mjs.map → chunk-ESPOINPT.mjs.map} +1 -1
  86. package/dist/{chunk-VPZUQXZV.mjs → chunk-EVETX2XF.mjs} +4 -4
  87. package/dist/{chunk-VPZUQXZV.mjs.map → chunk-EVETX2XF.mjs.map} +1 -1
  88. package/dist/{chunk-6K3YRSYN.js → chunk-EVKP4SOM.js} +10 -10
  89. package/dist/{chunk-6K3YRSYN.js.map → chunk-EVKP4SOM.js.map} +1 -1
  90. package/dist/{chunk-R2BHRDPZ.mjs → chunk-EXVHO3CZ.mjs} +3 -3
  91. package/dist/{chunk-R2BHRDPZ.mjs.map → chunk-EXVHO3CZ.mjs.map} +1 -1
  92. package/dist/{chunk-YCA4KCRF.mjs → chunk-GYKFHQSZ.mjs} +3 -3
  93. package/dist/{chunk-YCA4KCRF.mjs.map → chunk-GYKFHQSZ.mjs.map} +1 -1
  94. package/dist/{chunk-U2DWXE2A.mjs → chunk-I4PUQYBI.mjs} +3 -3
  95. package/dist/{chunk-U2DWXE2A.mjs.map → chunk-I4PUQYBI.mjs.map} +1 -1
  96. package/dist/{chunk-46GMNQWN.js → chunk-I7KIVKVW.js} +3 -3
  97. package/dist/{chunk-46GMNQWN.js.map → chunk-I7KIVKVW.js.map} +1 -1
  98. package/dist/{chunk-GZLMMX76.mjs → chunk-IUNFAKOS.mjs} +3 -3
  99. package/dist/{chunk-GZLMMX76.mjs.map → chunk-IUNFAKOS.mjs.map} +1 -1
  100. package/dist/{chunk-VNJTU6LG.js → chunk-IWHAJBYL.js} +15 -15
  101. package/dist/{chunk-VNJTU6LG.js.map → chunk-IWHAJBYL.js.map} +1 -1
  102. package/dist/{chunk-EF7QCYLF.js → chunk-IZRVSIOK.js} +4 -4
  103. package/dist/{chunk-EF7QCYLF.js.map → chunk-IZRVSIOK.js.map} +1 -1
  104. package/dist/{chunk-NJSD5QY6.js → chunk-JAA42HR7.js} +7 -7
  105. package/dist/{chunk-NJSD5QY6.js.map → chunk-JAA42HR7.js.map} +1 -1
  106. package/dist/{chunk-HH5EMIXK.js → chunk-JSM4AYSZ.js} +14 -14
  107. package/dist/{chunk-HH5EMIXK.js.map → chunk-JSM4AYSZ.js.map} +1 -1
  108. package/dist/{chunk-NK7ZWPAO.js → chunk-KDLN2MR5.js} +18 -18
  109. package/dist/{chunk-NK7ZWPAO.js.map → chunk-KDLN2MR5.js.map} +1 -1
  110. package/dist/{chunk-ME5636V6.js → chunk-KEEZX6Q4.js} +3 -3
  111. package/dist/{chunk-ME5636V6.js.map → chunk-KEEZX6Q4.js.map} +1 -1
  112. package/dist/{chunk-AG7MWWGP.mjs → chunk-LXBPTKYT.mjs} +4 -4
  113. package/dist/{chunk-AG7MWWGP.mjs.map → chunk-LXBPTKYT.mjs.map} +1 -1
  114. package/dist/chunk-M2N7NY3V.js +103 -0
  115. package/dist/chunk-M2N7NY3V.js.map +1 -0
  116. package/dist/{chunk-OTCJRVFJ.js → chunk-MQEVQ5YB.js} +3 -3
  117. package/dist/{chunk-OTCJRVFJ.js.map → chunk-MQEVQ5YB.js.map} +1 -1
  118. package/dist/{chunk-S24WZNFP.js → chunk-MTHMOXZF.js} +6 -6
  119. package/dist/{chunk-S24WZNFP.js.map → chunk-MTHMOXZF.js.map} +1 -1
  120. package/dist/{chunk-3E7ZXPOB.mjs → chunk-NRT7MOEO.mjs} +4 -4
  121. package/dist/{chunk-3E7ZXPOB.mjs.map → chunk-NRT7MOEO.mjs.map} +1 -1
  122. package/dist/chunk-NYXENHD2.mjs +96 -0
  123. package/dist/chunk-NYXENHD2.mjs.map +1 -0
  124. package/dist/chunk-OI3FCJSP.js +8 -0
  125. package/dist/{chunk-QWUDHOUE.js.map → chunk-OI3FCJSP.js.map} +1 -1
  126. package/dist/{chunk-MWX6QO7A.mjs → chunk-OUP6UL74.mjs} +3 -3
  127. package/dist/{chunk-MWX6QO7A.mjs.map → chunk-OUP6UL74.mjs.map} +1 -1
  128. package/dist/{chunk-VNSV5SY7.mjs → chunk-OWEJXMKY.mjs} +3 -3
  129. package/dist/{chunk-VNSV5SY7.mjs.map → chunk-OWEJXMKY.mjs.map} +1 -1
  130. package/dist/{chunk-QYRJ4IQD.js → chunk-OZTVJSFX.js} +98 -47
  131. package/dist/chunk-OZTVJSFX.js.map +1 -0
  132. package/dist/{chunk-MJTHYT3D.js → chunk-P4J3WG6C.js} +4 -4
  133. package/dist/{chunk-MJTHYT3D.js.map → chunk-P4J3WG6C.js.map} +1 -1
  134. package/dist/{chunk-3SHAY7PK.mjs → chunk-PTQHPWEK.mjs} +88 -37
  135. package/dist/chunk-PTQHPWEK.mjs.map +1 -0
  136. package/dist/{chunk-7DMAVD7W.mjs → chunk-QSN2QST7.mjs} +3 -3
  137. package/dist/{chunk-7DMAVD7W.mjs.map → chunk-QSN2QST7.mjs.map} +1 -1
  138. package/dist/{chunk-MSSFRRXJ.mjs → chunk-RGXYE2ZI.mjs} +4 -4
  139. package/dist/{chunk-MSSFRRXJ.mjs.map → chunk-RGXYE2ZI.mjs.map} +1 -1
  140. package/dist/{chunk-NNZDWY3L.mjs → chunk-RH4XEXTK.mjs} +3 -3
  141. package/dist/{chunk-OUZQL5PV.js → chunk-RQG7I6O4.js} +4 -4
  142. package/dist/{chunk-OUZQL5PV.js.map → chunk-RQG7I6O4.js.map} +1 -1
  143. package/dist/{chunk-OB7K6EFK.js → chunk-S6CMQTVZ.js} +5 -5
  144. package/dist/{chunk-OB7K6EFK.js.map → chunk-S6CMQTVZ.js.map} +1 -1
  145. package/dist/{chunk-5YA6SI4Z.mjs → chunk-TIFVAASU.mjs} +2 -2
  146. package/dist/{chunk-JZCG25XK.js → chunk-VDGCZVUF.js} +14 -14
  147. package/dist/{chunk-JZCG25XK.js.map → chunk-VDGCZVUF.js.map} +1 -1
  148. package/dist/{chunk-3H3DTYFQ.js → chunk-XCOMBHLF.js} +8 -8
  149. package/dist/{chunk-3H3DTYFQ.js.map → chunk-XCOMBHLF.js.map} +1 -1
  150. package/dist/{chunk-I7AZC5ZQ.js → chunk-XXSSUCJB.js} +2 -2
  151. package/dist/{chunk-WVNUOUQI.mjs → chunk-YEHC7VMW.mjs} +3 -3
  152. package/dist/{chunk-WVNUOUQI.mjs.map → chunk-YEHC7VMW.mjs.map} +1 -1
  153. package/dist/{chunk-CJ5YPYAE.mjs → chunk-YK7SEUFJ.mjs} +4 -4
  154. package/dist/{chunk-CJ5YPYAE.mjs.map → chunk-YK7SEUFJ.mjs.map} +1 -1
  155. package/dist/{chunk-NN2YE5WT.js → chunk-ZUQSVCMD.js} +3 -3
  156. package/dist/cli/index.js +211 -211
  157. package/dist/cli/index.mjs +151 -151
  158. package/dist/client/index.js +4 -4
  159. package/dist/client/index.mjs +3 -3
  160. package/dist/commerce/index.js +57 -57
  161. package/dist/commerce/index.mjs +5 -5
  162. package/dist/cta-bar/CtaBar.d.ts +15 -4
  163. package/dist/cta-bar/CtaBar.d.ts.map +1 -1
  164. package/dist/cta-bar/index.js +6 -12
  165. package/dist/cta-bar/index.js.map +1 -1
  166. package/dist/cta-bar/index.mjs +6 -12
  167. package/dist/cta-bar/index.mjs.map +1 -1
  168. package/dist/engage/ChatWidget.d.ts.map +1 -1
  169. package/dist/engage/EchoUiActions.d.ts +5 -2
  170. package/dist/engage/EchoUiActions.d.ts.map +1 -1
  171. package/dist/engage/brand-color.d.ts +37 -0
  172. package/dist/engage/brand-color.d.ts.map +1 -0
  173. package/dist/engage/index.js +11 -10
  174. package/dist/engage/index.js.map +1 -1
  175. package/dist/engage/index.mjs +8 -7
  176. package/dist/engage/index.mjs.map +1 -1
  177. package/dist/fleet/index.js +8 -8
  178. package/dist/fleet/index.mjs +4 -4
  179. package/dist/forms/index.js +16 -16
  180. package/dist/forms/index.mjs +9 -9
  181. package/dist/forms/server.js +10 -10
  182. package/dist/forms/server.mjs +8 -8
  183. package/dist/forms/static.js +7 -7
  184. package/dist/forms/static.mjs +6 -6
  185. package/dist/images/index.js +11 -11
  186. package/dist/images/index.mjs +4 -4
  187. package/dist/index.js +63 -63
  188. package/dist/index.mjs +9 -9
  189. package/dist/layout/client.js +8 -8
  190. package/dist/layout/client.mjs +7 -7
  191. package/dist/layout/index.js +10 -10
  192. package/dist/layout/index.mjs +8 -8
  193. package/dist/{lib-6HOOMENJ.js → lib-6GWWPDJR.js} +7 -7
  194. package/dist/lib-BD4KKQBI.mjs +4 -0
  195. package/dist/{lib-R7IQ4ZHE.mjs → lib-N5PD6JNJ.mjs} +2 -2
  196. package/dist/{lib-BGAWCSUH.js → lib-WFB5RLEQ.js} +8 -8
  197. package/dist/maps/index.js +5 -5
  198. package/dist/maps/index.mjs +3 -3
  199. package/dist/search/index.js +4 -4
  200. package/dist/search/index.mjs +3 -3
  201. package/dist/seo/client.js +5 -5
  202. package/dist/seo/client.mjs +4 -4
  203. package/dist/seo/index.js +5 -5
  204. package/dist/seo/index.mjs +4 -4
  205. package/dist/seo/register-sitemap-cli.js +12 -93
  206. package/dist/seo/register-sitemap-cli.mjs +2 -83
  207. package/dist/server/index.js +3 -3
  208. package/dist/server/index.mjs +2 -2
  209. package/dist/shared/color.d.ts +39 -0
  210. package/dist/shared/color.d.ts.map +1 -0
  211. package/dist/shared/version.d.ts +1 -1
  212. package/dist/signal/index.js +11 -11
  213. package/dist/signal/index.mjs +2 -2
  214. package/dist/sync/index.js +17 -17
  215. package/dist/sync/index.mjs +4 -4
  216. package/dist/{web-vitals.attribution-7LKLZ5GR.mjs → web-vitals.attribution-CHXXWO72.mjs} +3 -3
  217. package/dist/web-vitals.attribution-CHXXWO72.mjs.map +1 -0
  218. package/dist/{web-vitals.attribution-ONVYQNRB.js → web-vitals.attribution-SQVZNHN3.js} +3 -3
  219. package/dist/web-vitals.attribution-SQVZNHN3.js.map +1 -0
  220. package/package.json +1 -1
  221. package/dist/ChatWidget-LH3QZYKR.mjs +0 -16
  222. package/dist/ChatWidget-RUCQMCMN.js +0 -25
  223. package/dist/EngageWidget-34BQXU7K.mjs +0 -12
  224. package/dist/EngageWidget-X2CBW7DV.js +0 -21
  225. package/dist/ManagedForm-EUDKMS5G.mjs +0 -16
  226. package/dist/ManagedForm-O67ILXN7.js +0 -25
  227. package/dist/SitemapSync-DQALPBTR.js +0 -18
  228. package/dist/SitemapSync-QYV3X5LH.mjs +0 -9
  229. package/dist/chunk-3SHAY7PK.mjs.map +0 -1
  230. package/dist/chunk-HQWPCX3N.mjs +0 -6
  231. package/dist/chunk-QWUDHOUE.js +0 -8
  232. package/dist/chunk-QYRJ4IQD.js.map +0 -1
  233. package/dist/lib-RSDMEKDQ.mjs +0 -4
  234. package/dist/web-vitals.attribution-7LKLZ5GR.mjs.map +0 -1
  235. package/dist/web-vitals.attribution-ONVYQNRB.js.map +0 -1
@@ -3,8 +3,9 @@
3
3
 
4
4
  var chunkESP5RMB7_js = require('./chunk-ESP5RMB7.js');
5
5
  var chunkNBOBOYMT_js = require('./chunk-NBOBOYMT.js');
6
- var chunkWWJQGMMN_js = require('./chunk-WWJQGMMN.js');
7
- var chunkVNJTU6LG_js = require('./chunk-VNJTU6LG.js');
6
+ var chunk2SLA2LOD_js = require('./chunk-2SLA2LOD.js');
7
+ var chunkM2N7NY3V_js = require('./chunk-M2N7NY3V.js');
8
+ var chunkIWHAJBYL_js = require('./chunk-IWHAJBYL.js');
8
9
  var react = require('react');
9
10
  var ReactMarkdown = require('react-markdown');
10
11
  var jsxRuntime = require('react/jsx-runtime');
@@ -13,6 +14,58 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
14
 
14
15
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
15
16
 
17
+ // src/engage/brand-color.ts
18
+ var TEXT_CONTRAST = 4.5;
19
+ var RESTING_TINT = 0.082;
20
+ var UNREADABLE_BRAND_SHARE = 40;
21
+ var WHITE = { r: 255, g: 255, b: 255 };
22
+ var BLACK = { r: 0, g: 0, b: 0 };
23
+ function mix(a, b, share) {
24
+ return {
25
+ r: a.r * share + b.r * (1 - share),
26
+ g: a.g * share + b.g * (1 - share),
27
+ b: a.b * share + b.b * (1 - share)
28
+ };
29
+ }
30
+ function round({ r, g, b }) {
31
+ const c = (v) => Math.round(Math.min(255, Math.max(0, v)));
32
+ return { r: c(r), g: c(g), b: c(b) };
33
+ }
34
+ function toHex(rgb) {
35
+ const { r, g, b } = round(rgb);
36
+ return `#${[r, g, b].map((c) => c.toString(16).padStart(2, "0")).join("")}`;
37
+ }
38
+ function isLightColor(color) {
39
+ const rgb = chunkM2N7NY3V_js.parseColor(color);
40
+ if (!rgb) return false;
41
+ return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3 > 160;
42
+ }
43
+ function onBrandColor(brand) {
44
+ return isLightColor(brand) ? "#1a1a1a" : "white";
45
+ }
46
+ function rgbTriplet(color, fallback = "37, 99, 235") {
47
+ const rgb = chunkM2N7NY3V_js.parseColor(color);
48
+ if (!rgb) return fallback;
49
+ const { r, g, b } = round(rgb);
50
+ return `${r}, ${g}, ${b}`;
51
+ }
52
+ function brandTextColor(brand, panelTint) {
53
+ const tint = panelTint && chunkM2N7NY3V_js.parseColor(panelTint) || WHITE;
54
+ const pole = chunkM2N7NY3V_js.relativeLuminance(tint) < chunkM2N7NY3V_js.DARK_LUMINANCE ? WHITE : BLACK;
55
+ const rgb = chunkM2N7NY3V_js.parseColor(brand);
56
+ if (!rgb) return `color-mix(in srgb, ${brand} ${UNREADABLE_BRAND_SHARE}%, ${toHex(pole)})`;
57
+ const surface = chunkM2N7NY3V_js.relativeLuminance(mix(rgb, tint, RESTING_TINT));
58
+ const reads = (c) => chunkM2N7NY3V_js.contrastRatio(chunkM2N7NY3V_js.relativeLuminance(c), surface) >= TEXT_CONTRAST;
59
+ if (reads(rgb)) return brand;
60
+ let lo = 0;
61
+ let hi = 1;
62
+ for (let i = 0; i < 12; i++) {
63
+ const share = (lo + hi) / 2;
64
+ if (reads(round(mix(rgb, pole, share)))) lo = share;
65
+ else hi = share;
66
+ }
67
+ return toHex(mix(rgb, pole, lo));
68
+ }
16
69
  function alpha(rgb, a) {
17
70
  return `rgba(var(--sk-primary-rgb, ${rgb}), ${a})`;
18
71
  }
@@ -39,7 +92,7 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
39
92
  submit,
40
93
  isSubmitting,
41
94
  isComplete
42
- } = chunkWWJQGMMN_js.useForm(slug, { initialValues: prefill || {} });
95
+ } = chunk2SLA2LOD_js.useForm(slug, { initialValues: prefill || {} });
43
96
  const cardStyle = {
44
97
  marginTop: 8,
45
98
  padding: 12,
@@ -198,7 +251,7 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
198
251
  borderRadius: 8,
199
252
  border: "none",
200
253
  backgroundColor: primaryColor,
201
- color: "#fff",
254
+ color: onBrandColor(primaryColor),
202
255
  fontSize: 13.5,
203
256
  fontWeight: 600,
204
257
  cursor: isSubmitting ? "default" : "pointer",
@@ -211,7 +264,7 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
211
264
  }
212
265
  );
213
266
  }
214
- function SuggestActionChip({ action, message, primaryColor, primaryRgb, onSuggest }) {
267
+ function SuggestActionChip({ action, message, primaryColor, primaryRgb, brandText, onSuggest }) {
215
268
  return /* @__PURE__ */ jsxRuntime.jsx(
216
269
  "button",
217
270
  {
@@ -222,7 +275,7 @@ function SuggestActionChip({ action, message, primaryColor, primaryRgb, onSugges
222
275
  borderRadius: 16,
223
276
  border: `1px solid ${primaryColor}`,
224
277
  backgroundColor: alpha(primaryRgb, 0.063),
225
- color: primaryColor,
278
+ color: brandText,
226
279
  fontSize: 13,
227
280
  cursor: "pointer"
228
281
  },
@@ -230,7 +283,7 @@ function SuggestActionChip({ action, message, primaryColor, primaryRgb, onSugges
230
283
  }
231
284
  );
232
285
  }
233
- function EchoUiActions({ actions, primaryColor, primaryRgb, onSuggest }) {
286
+ function EchoUiActions({ actions, primaryColor, primaryRgb, brandText, onSuggest }) {
234
287
  if (!actions?.length) return null;
235
288
  const chips = actions.filter((a) => a?.type === "suggest_action");
236
289
  const forms = actions.filter((a) => a?.type === "show_form");
@@ -262,6 +315,7 @@ function EchoUiActions({ actions, primaryColor, primaryRgb, onSuggest }) {
262
315
  message: label,
263
316
  primaryColor,
264
317
  primaryRgb,
318
+ brandText,
265
319
  onSuggest
266
320
  },
267
321
  `chip-${i}`
@@ -315,21 +369,9 @@ var ECHO_CSS = `
315
369
  [data-sk-echo-panel] { animation: none !important; }
316
370
  }
317
371
  `;
318
- function isLightColor(hex) {
319
- const num = parseInt(hex.replace("#", ""), 16);
320
- const r = num >> 16;
321
- const g = num >> 8 & 255;
322
- const b = num & 255;
323
- return (r * 299 + g * 587 + b * 114) / 1e3 > 160;
324
- }
325
372
  function staticPrimaryColor(apiFallback, hardDefault) {
326
373
  return apiFallback || hardDefault;
327
374
  }
328
- function hexToRgbString(hex, fallback = "37, 99, 235") {
329
- const match = hex.replace("#", "").match(/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);
330
- if (!match) return fallback;
331
- return `${parseInt(match[1], 16)}, ${parseInt(match[2], 16)}, ${parseInt(match[3], 16)}`;
332
- }
333
375
  function hexAlpha(rgbVar, alpha2, fallbackRgb = "37, 99, 235") {
334
376
  return `rgba(var(${rgbVar}, ${fallbackRgb}), ${alpha2})`;
335
377
  }
@@ -382,11 +424,19 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
382
424
  const primaryFallback = staticPrimaryColor(widgetConfig?.brand_primary || config?.buttonColor, "#2563eb");
383
425
  const [primaryFromCssVar, setPrimaryFromCssVar] = react.useState(null);
384
426
  const primaryColor = primaryFromCssVar ?? primaryFallback;
385
- const primaryRgb = hexToRgbString(primaryColor);
427
+ const primaryRgb = rgbTriplet(primaryColor);
386
428
  react.useEffect(() => {
387
429
  const cssValue = getComputedStyle(document.documentElement).getPropertyValue("--sk-primary").trim();
388
430
  setPrimaryFromCssVar(cssValue || null);
389
431
  }, []);
432
+ const onBrand = onBrandColor(primaryColor);
433
+ const panelRef = react.useRef(null);
434
+ const [panelTint, setPanelTint] = react.useState(null);
435
+ react.useLayoutEffect(() => {
436
+ if (!isOpen || !panelRef.current) return;
437
+ setPanelTint(getComputedStyle(panelRef.current).getPropertyValue("--sk-glass-t").trim() || null);
438
+ }, [isOpen]);
439
+ const brandText = brandTextColor(primaryColor, panelTint);
390
440
  const businessName = propAssistantName || widgetConfig?.project_name || widgetConfig?.business_info?.name || "Chat with us";
391
441
  const logoUrl = propAssistantAvatar || widgetConfig?.logo_url || null;
392
442
  const welcomeEnabled = widgetConfig?.welcome_screen_enabled !== false;
@@ -402,7 +452,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
402
452
  const { apiKey } = getApiConfig();
403
453
  if (!apiKey) return;
404
454
  let cancelled = false;
405
- chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/api/public/seo/project-info`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((data) => {
455
+ chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/api/public/seo/project-info`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((data) => {
406
456
  if (cancelled || !data?.valid || !data?.project_id) return;
407
457
  setResolvedProjectId(data.project_id);
408
458
  }).catch(() => {
@@ -416,7 +466,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
416
466
  const apiKey = ensureApiKey();
417
467
  if (!apiKey) return;
418
468
  try {
419
- const response = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/config?projectId=${projectId}`, {}, { apiKey, retries: 0 });
469
+ const response = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/config?projectId=${projectId}`, {}, { apiKey, retries: 0 });
420
470
  if (response.ok) {
421
471
  const { data } = await response.json();
422
472
  setWidgetConfig(data ?? null);
@@ -432,7 +482,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
432
482
  const apiKey = ensureApiKey();
433
483
  if (!apiKey) return null;
434
484
  try {
435
- const response = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/availability?projectId=${projectId}`, {}, { apiKey, retries: 0 });
485
+ const response = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/availability?projectId=${projectId}`, {}, { apiKey, retries: 0 });
436
486
  if (response.ok) {
437
487
  const { data } = await response.json();
438
488
  setAvailability(data);
@@ -449,7 +499,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
449
499
  const apiKey = ensureApiKey();
450
500
  if (!apiKey) return null;
451
501
  try {
452
- const response = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/session`, {
502
+ const response = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/session`, {
453
503
  method: "POST",
454
504
  headers: { "Content-Type": "application/json" },
455
505
  body: JSON.stringify({
@@ -510,7 +560,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
510
560
  pageUrl: typeof window !== "undefined" ? window.location.href : void 0,
511
561
  ...siteContext ? { siteContext } : {}
512
562
  };
513
- const res = await chunkVNJTU6LG_js.sonorFetch(url, {
563
+ const res = await chunkIWHAJBYL_js.sonorFetch(url, {
514
564
  method: "POST",
515
565
  headers: {
516
566
  "Content-Type": "application/json"
@@ -621,7 +671,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
621
671
  if (currentSessionId) {
622
672
  const apiKey = ensureApiKey();
623
673
  if (apiKey) {
624
- chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((json) => {
674
+ chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((json) => {
625
675
  const data = json?.data ?? json;
626
676
  if (Array.isArray(data) && data.length) {
627
677
  setMessages((prev) => {
@@ -684,7 +734,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
684
734
  try {
685
735
  const apiKey = ensureApiKey();
686
736
  if (!apiKey) return;
687
- const response = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 });
737
+ const response = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 });
688
738
  if (response.ok) {
689
739
  const { data } = await response.json();
690
740
  setMessages((prev) => {
@@ -837,7 +887,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
837
887
  form.append("file", file);
838
888
  form.append("sessionId", sessionId);
839
889
  form.append("visitorId", visitorId);
840
- const res = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/upload`, {
890
+ const res = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/upload`, {
841
891
  method: "POST",
842
892
  body: form
843
893
  }, { apiKey, retries: 0 });
@@ -984,7 +1034,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
984
1034
  if (!apiKey) return;
985
1035
  setCheckingHandoff(true);
986
1036
  try {
987
- const res = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/handoff`, {
1037
+ const res = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/handoff`, {
988
1038
  method: "POST",
989
1039
  headers: { "Content-Type": "application/json" },
990
1040
  body: JSON.stringify({ sessionId })
@@ -1023,7 +1073,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1023
1073
  setIsLoading(true);
1024
1074
  setOfflineError(null);
1025
1075
  try {
1026
- const response = await chunkVNJTU6LG_js.sonorFetch(`${baseUrl}/engage/widget/offline-form`, {
1076
+ const response = await chunkIWHAJBYL_js.sonorFetch(`${baseUrl}/engage/widget/offline-form`, {
1027
1077
  method: "POST",
1028
1078
  headers: { "Content-Type": "application/json" },
1029
1079
  body: JSON.stringify({
@@ -1072,7 +1122,6 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1072
1122
  if (availability && availability.agentsOnline > 0) return { dot: "#22c55e", text: "Online" };
1073
1123
  return { dot: "var(--sk-text-tertiary, #9ca3af)", text: "We'll respond soon" };
1074
1124
  })();
1075
- const launcherIcon = isLightColor(primaryColor) ? "#1a1a1a" : "white";
1076
1125
  const ChatButton = /* @__PURE__ */ jsxRuntime.jsx(
1077
1126
  "button",
1078
1127
  {
@@ -1101,10 +1150,10 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1101
1150
  onMouseLeave: (e) => {
1102
1151
  e.currentTarget.style.transform = "scale(1)";
1103
1152
  },
1104
- children: isOpen ? /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: launcherIcon, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1153
+ children: isOpen ? /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: onBrand, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1105
1154
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1106
1155
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1107
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: launcherIcon, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }) })
1156
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: onBrand, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }) })
1108
1157
  }
1109
1158
  );
1110
1159
  const Header = /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1128,7 +1177,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1128
1177
  height: 40,
1129
1178
  borderRadius: "50%",
1130
1179
  backgroundColor: primaryColor,
1131
- color: launcherIcon,
1180
+ color: onBrand,
1132
1181
  boxShadow: "inset 0 1px 0 color-mix(in srgb, #ffffff 30%, transparent), 0 2px 6px rgba(0, 0, 0, 0.12)",
1133
1182
  display: "flex",
1134
1183
  alignItems: "center",
@@ -1165,7 +1214,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1165
1214
  borderRadius: 12,
1166
1215
  border: `1px solid ${hexAlpha("--sk-primary-rgb", 0.2, primaryRgb)}`,
1167
1216
  backgroundColor: hexAlpha("--sk-primary-rgb", 0.031, primaryRgb),
1168
- color: primaryColor,
1217
+ color: brandText,
1169
1218
  fontSize: 14,
1170
1219
  cursor: "pointer",
1171
1220
  textAlign: "left",
@@ -1194,7 +1243,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1194
1243
  borderRadius: 12,
1195
1244
  border: "none",
1196
1245
  backgroundColor: primaryColor,
1197
- color: isLightColor(primaryColor) ? "#1a1a1a" : "white",
1246
+ color: onBrand,
1198
1247
  fontSize: 14,
1199
1248
  fontWeight: 600,
1200
1249
  cursor: "pointer",
@@ -1206,11 +1255,11 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1206
1255
  widgetConfig?.business_info?.phone && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "center", fontSize: 13, color: "var(--sk-text-secondary, #6b7280)" }, children: [
1207
1256
  "Or call us at",
1208
1257
  " ",
1209
- /* @__PURE__ */ jsxRuntime.jsx("a", { href: `tel:${widgetConfig.business_info.phone}`, style: { color: primaryColor, textDecoration: "none", fontWeight: 500 }, children: widgetConfig.business_info.phone })
1258
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: `tel:${widgetConfig.business_info.phone}`, style: { color: brandText, textDecoration: "none", fontWeight: 500 }, children: widgetConfig.business_info.phone })
1210
1259
  ] })
1211
1260
  ] });
1212
1261
  const OfflineFormView = /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: 20, flex: 1, overflowY: "auto" }, children: offlineSubmitted ? /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "center", padding: 20 }, children: [
1213
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: 56, height: 56, borderRadius: "50%", backgroundColor: hexAlpha("--sk-primary-rgb", 0.082, primaryRgb), display: "flex", alignItems: "center", justifyContent: "center", margin: "0 auto 16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: primaryColor, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
1262
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: 56, height: 56, borderRadius: "50%", backgroundColor: hexAlpha("--sk-primary-rgb", 0.082, primaryRgb), display: "flex", alignItems: "center", justifyContent: "center", margin: "0 auto 16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: brandText, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
1214
1263
  /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { margin: "0 0 8px", fontSize: 18, fontWeight: 600, color: "var(--sk-text-primary, #111827)" }, children: "Message Sent!" }),
1215
1264
  /* @__PURE__ */ jsxRuntime.jsx("p", { style: { margin: 0, color: "var(--sk-text-secondary, #6b7280)", fontSize: 14 }, children: offlineSubheading })
1216
1265
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleOfflineSubmit, children: [
@@ -1257,7 +1306,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1257
1306
  borderRadius: 8,
1258
1307
  border: "none",
1259
1308
  backgroundColor: primaryColor,
1260
- color: isLightColor(primaryColor) ? "#1a1a1a" : "white",
1309
+ color: onBrand,
1261
1310
  fontSize: 14,
1262
1311
  fontWeight: 600,
1263
1312
  cursor: isLoading ? "wait" : "pointer",
@@ -1305,7 +1354,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1305
1354
  alignItems: "center",
1306
1355
  justifyContent: "center"
1307
1356
  },
1308
- children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: isLightColor(primaryColor) ? "#1a1a1a" : "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1357
+ children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: onBrand, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1309
1358
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" }),
1310
1359
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8.5", cy: "7", r: "4" }),
1311
1360
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "20", y1: "8", x2: "20", y2: "14" }),
@@ -1354,7 +1403,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1354
1403
  // Bubbles on glass stay near-opaque: the glass behind them
1355
1404
  // is for depth, never for the text to read against.
1356
1405
  backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "color-mix(in srgb, var(--sk-text-primary, #111827) 7%, transparent)" : BUBBLE_BG,
1357
- color: message.role === "user" ? isLightColor(primaryColor) ? "#1a1a1a" : "white" : message.role === "system" ? "var(--sk-text-secondary, #6b7280)" : "var(--sk-text-primary, #111827)",
1406
+ color: message.role === "user" ? onBrand : message.role === "system" ? "var(--sk-text-secondary, #6b7280)" : "var(--sk-text-primary, #111827)",
1358
1407
  border: message.role === "user" || message.role === "system" ? "none" : HAIRLINE,
1359
1408
  boxShadow: message.role === "system" ? "none" : message.role === "user" ? "inset 0 1px 0 color-mix(in srgb, #ffffff 22%, transparent), 0 1px 2px rgba(0,0,0,0.10)" : "0 1px 2px rgba(0,0,0,0.06)",
1360
1409
  fontSize: message.role === "system" ? 13 : 14,
@@ -1390,7 +1439,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1390
1439
  padding: "8px 14px",
1391
1440
  borderRadius: 8,
1392
1441
  backgroundColor: hexAlpha("--sk-primary-rgb", 0.082, primaryRgb),
1393
- color: primaryColor,
1442
+ color: brandText,
1394
1443
  fontWeight: 600,
1395
1444
  fontSize: 13,
1396
1445
  textDecoration: "none",
@@ -1436,7 +1485,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1436
1485
  borderRadius: 16,
1437
1486
  border: `1px solid ${primaryColor}`,
1438
1487
  backgroundColor: hexAlpha("--sk-primary-rgb", 0.063, primaryRgb),
1439
- color: primaryColor,
1488
+ color: brandText,
1440
1489
  fontSize: 13,
1441
1490
  cursor: "pointer"
1442
1491
  },
@@ -1450,6 +1499,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1450
1499
  actions: message.uiActions,
1451
1500
  primaryColor,
1452
1501
  primaryRgb,
1502
+ brandText,
1453
1503
  onSuggest: handleSuggestAction
1454
1504
  }
1455
1505
  ) : null,
@@ -1473,7 +1523,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1473
1523
  borderRadius: 6,
1474
1524
  border: `1px solid ${primaryColor}`,
1475
1525
  backgroundColor: "transparent",
1476
- color: primaryColor,
1526
+ color: brandText,
1477
1527
  fontSize: 13,
1478
1528
  cursor: "pointer"
1479
1529
  },
@@ -1555,7 +1605,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1555
1605
  borderRadius: "50%",
1556
1606
  border: "none",
1557
1607
  backgroundColor: (inputValue.trim() || pendingFiles.length) && !isLoading ? primaryColor : "var(--sk-border, #e5e7eb)",
1558
- color: (inputValue.trim() || pendingFiles.length) && !isLoading && isLightColor(primaryColor) ? "#1a1a1a" : "white",
1608
+ color: (inputValue.trim() || pendingFiles.length) && !isLoading ? onBrand : "white",
1559
1609
  cursor: inputValue.trim() && !isLoading ? "pointer" : "not-allowed",
1560
1610
  display: "flex",
1561
1611
  alignItems: "center",
@@ -1571,6 +1621,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1571
1621
  const ChatPopup = isOpen && /* @__PURE__ */ jsxRuntime.jsxs(
1572
1622
  "div",
1573
1623
  {
1624
+ ref: panelRef,
1574
1625
  "data-sk-echo-panel": true,
1575
1626
  className: "sk-glass sk-glass--panel",
1576
1627
  style: {
@@ -1634,5 +1685,5 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1634
1685
  }
1635
1686
 
1636
1687
  exports.ChatWidget = ChatWidget;
1637
- //# sourceMappingURL=chunk-QYRJ4IQD.js.map
1638
- //# sourceMappingURL=chunk-QYRJ4IQD.js.map
1688
+ //# sourceMappingURL=chunk-OZTVJSFX.js.map
1689
+ //# sourceMappingURL=chunk-OZTVJSFX.js.map