@sonordev/site-kit 6.0.1 → 6.1.1

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 (231) hide show
  1. package/README.md +11 -0
  2. package/agent-manifest.json +8 -1
  3. package/dist/{AnalyticsProvider-YU6QANW5.mjs → AnalyticsProvider-33L4E6LO.mjs} +6 -6
  4. package/dist/{AnalyticsProvider-YU6QANW5.mjs.map → AnalyticsProvider-33L4E6LO.mjs.map} +1 -1
  5. package/dist/{AnalyticsProvider-4RLYTVWO.js → AnalyticsProvider-5G5AFHZN.js} +10 -10
  6. package/dist/{AnalyticsProvider-4RLYTVWO.js.map → AnalyticsProvider-5G5AFHZN.js.map} +1 -1
  7. package/dist/{ArticleViewTracker-OQB2VT73.js → ArticleViewTracker-U2KFUSZF.js} +6 -6
  8. package/dist/{ArticleViewTracker-OQB2VT73.js.map → ArticleViewTracker-U2KFUSZF.js.map} +1 -1
  9. package/dist/{ArticleViewTracker-LI44SA4T.mjs → ArticleViewTracker-VZRMPK4S.mjs} +5 -5
  10. package/dist/{ArticleViewTracker-LI44SA4T.mjs.map → ArticleViewTracker-VZRMPK4S.mjs.map} +1 -1
  11. package/dist/ChatWidget-LH3QZYKR.mjs +16 -0
  12. package/dist/{ChatWidget-56SW5ITH.mjs.map → ChatWidget-LH3QZYKR.mjs.map} +1 -1
  13. package/dist/ChatWidget-RUCQMCMN.js +25 -0
  14. package/dist/{ChatWidget-HR3OC3WA.js.map → ChatWidget-RUCQMCMN.js.map} +1 -1
  15. package/dist/EngageWidget-34BQXU7K.mjs +12 -0
  16. package/dist/{EngageWidget-L4X35N2B.mjs.map → EngageWidget-34BQXU7K.mjs.map} +1 -1
  17. package/dist/EngageWidget-X2CBW7DV.js +21 -0
  18. package/dist/{EngageWidget-HXGI3ZKG.js.map → EngageWidget-X2CBW7DV.js.map} +1 -1
  19. package/dist/{FileField-N2P6E2PN.js → FileField-2MMV53BG.js} +6 -6
  20. package/dist/{FileField-N2P6E2PN.js.map → FileField-2MMV53BG.js.map} +1 -1
  21. package/dist/{FileField-GSTLU42O.mjs → FileField-REUU36RJ.mjs} +5 -5
  22. package/dist/{FileField-GSTLU42O.mjs.map → FileField-REUU36RJ.mjs.map} +1 -1
  23. package/dist/{FormSpotlight-QLXOS5LN.js → FormSpotlight-Y27TPQ4G.js} +9 -9
  24. package/dist/{FormSpotlight-QLXOS5LN.js.map → FormSpotlight-Y27TPQ4G.js.map} +1 -1
  25. package/dist/{FormSpotlight-UFATQTN3.mjs → FormSpotlight-ZV3IS66K.mjs} +3 -3
  26. package/dist/{FormSpotlight-UFATQTN3.mjs.map → FormSpotlight-ZV3IS66K.mjs.map} +1 -1
  27. package/dist/{FormStage-SYOKD5TJ.mjs → FormStage-6NUGCDJR.mjs} +3 -3
  28. package/dist/{FormStage-SYOKD5TJ.mjs.map → FormStage-6NUGCDJR.mjs.map} +1 -1
  29. package/dist/{FormStage-4HYDMCYU.js → FormStage-K7Z6IEPM.js} +9 -9
  30. package/dist/{FormStage-4HYDMCYU.js.map → FormStage-K7Z6IEPM.js.map} +1 -1
  31. package/dist/ManagedForm-EUDKMS5G.mjs +16 -0
  32. package/dist/{ManagedForm-3TDSIRCM.mjs.map → ManagedForm-EUDKMS5G.mjs.map} +1 -1
  33. package/dist/ManagedForm-O67ILXN7.js +25 -0
  34. package/dist/{ManagedForm-TUSGW5EH.js.map → ManagedForm-O67ILXN7.js.map} +1 -1
  35. package/dist/{ManagedNewsletterForm-CNGCBA2N.mjs → ManagedNewsletterForm-IGWTZW7X.mjs} +7 -7
  36. package/dist/{ManagedNewsletterForm-CNGCBA2N.mjs.map → ManagedNewsletterForm-IGWTZW7X.mjs.map} +1 -1
  37. package/dist/{ManagedNewsletterForm-XJEPVJRM.js → ManagedNewsletterForm-QBJODAIA.js} +8 -8
  38. package/dist/{ManagedNewsletterForm-XJEPVJRM.js.map → ManagedNewsletterForm-QBJODAIA.js.map} +1 -1
  39. package/dist/{SignalCore-AXK6RCR4.js → SignalCore-KQDRH44V.js} +11 -11
  40. package/dist/{SignalCore-AXK6RCR4.js.map → SignalCore-KQDRH44V.js.map} +1 -1
  41. package/dist/{SignalCore-ARRVP6F7.mjs → SignalCore-UR4KVU5X.mjs} +5 -5
  42. package/dist/{SignalCore-ARRVP6F7.mjs.map → SignalCore-UR4KVU5X.mjs.map} +1 -1
  43. package/dist/SitemapSync-DQALPBTR.js +18 -0
  44. package/dist/{SitemapSync-GAGREAX6.js.map → SitemapSync-DQALPBTR.js.map} +1 -1
  45. package/dist/SitemapSync-QYV3X5LH.mjs +9 -0
  46. package/dist/{SitemapSync-42VKJUOU.mjs.map → SitemapSync-QYV3X5LH.mjs.map} +1 -1
  47. package/dist/analytics/index.js +9 -9
  48. package/dist/analytics/index.mjs +4 -4
  49. package/dist/articles/index.js +2 -2
  50. package/dist/articles/index.mjs +2 -2
  51. package/dist/articles/server-ui.js +1 -1
  52. package/dist/articles/server-ui.mjs +1 -1
  53. package/dist/{chunk-NVWUXCUQ.mjs → chunk-22KPMJIQ.mjs} +3 -3
  54. package/dist/{chunk-NVWUXCUQ.mjs.map → chunk-22KPMJIQ.mjs.map} +1 -1
  55. package/dist/{chunk-QXPGIOU7.mjs → chunk-3E7ZXPOB.mjs} +3 -3
  56. package/dist/{chunk-QXPGIOU7.mjs.map → chunk-3E7ZXPOB.mjs.map} +1 -1
  57. package/dist/{chunk-6ZOMIPU5.js → chunk-3H3DTYFQ.js} +8 -8
  58. package/dist/{chunk-6ZOMIPU5.js.map → chunk-3H3DTYFQ.js.map} +1 -1
  59. package/dist/{chunk-NYNL6UQV.mjs → chunk-3SHAY7PK.mjs} +69 -49
  60. package/dist/chunk-3SHAY7PK.mjs.map +1 -0
  61. package/dist/{chunk-AQMQOH7V.js → chunk-46GMNQWN.js} +3 -3
  62. package/dist/{chunk-AQMQOH7V.js.map → chunk-46GMNQWN.js.map} +1 -1
  63. package/dist/{chunk-6YEPFH3Q.js → chunk-6K3YRSYN.js} +10 -10
  64. package/dist/{chunk-6YEPFH3Q.js.map → chunk-6K3YRSYN.js.map} +1 -1
  65. package/dist/{chunk-SU42KCQD.mjs → chunk-6ZMEJSNX.mjs} +4 -4
  66. package/dist/{chunk-SU42KCQD.mjs.map → chunk-6ZMEJSNX.mjs.map} +1 -1
  67. package/dist/{chunk-WLCPBZOS.mjs → chunk-7DMAVD7W.mjs} +3 -3
  68. package/dist/{chunk-WLCPBZOS.mjs.map → chunk-7DMAVD7W.mjs.map} +1 -1
  69. package/dist/{chunk-BWSYPQ5E.js → chunk-7IM7VG4E.js} +6 -6
  70. package/dist/{chunk-BWSYPQ5E.js.map → chunk-7IM7VG4E.js.map} +1 -1
  71. package/dist/{chunk-QJ3SMLND.mjs → chunk-7PCXI25T.mjs} +3 -3
  72. package/dist/{chunk-QJ3SMLND.mjs.map → chunk-7PCXI25T.mjs.map} +1 -1
  73. package/dist/{chunk-6URNNS3V.mjs → chunk-AG7MWWGP.mjs} +4 -4
  74. package/dist/{chunk-6URNNS3V.mjs.map → chunk-AG7MWWGP.mjs.map} +1 -1
  75. package/dist/{chunk-XWKY46NU.js → chunk-BRED7YSL.js} +11 -11
  76. package/dist/{chunk-XWKY46NU.js.map → chunk-BRED7YSL.js.map} +1 -1
  77. package/dist/chunk-BZR6RUIN.mjs +128 -0
  78. package/dist/chunk-BZR6RUIN.mjs.map +1 -0
  79. package/dist/{chunk-U6F6AN23.mjs → chunk-CJ5YPYAE.mjs} +4 -4
  80. package/dist/{chunk-U6F6AN23.mjs.map → chunk-CJ5YPYAE.mjs.map} +1 -1
  81. package/dist/{chunk-FKFVN3GT.js → chunk-D6VMDDQR.js} +8 -8
  82. package/dist/{chunk-FKFVN3GT.js.map → chunk-D6VMDDQR.js.map} +1 -1
  83. package/dist/{chunk-GKPVGVHY.mjs → chunk-DGWFHL35.mjs} +3 -3
  84. package/dist/{chunk-GKPVGVHY.mjs.map → chunk-DGWFHL35.mjs.map} +1 -1
  85. package/dist/{chunk-4NBJDP6Y.js → chunk-EF7QCYLF.js} +4 -4
  86. package/dist/{chunk-4NBJDP6Y.js.map → chunk-EF7QCYLF.js.map} +1 -1
  87. package/dist/{chunk-BMH2D2EP.mjs → chunk-GZLMMX76.mjs} +3 -3
  88. package/dist/{chunk-BMH2D2EP.mjs.map → chunk-GZLMMX76.mjs.map} +1 -1
  89. package/dist/{chunk-NVOYCK2S.js → chunk-HH5EMIXK.js} +14 -14
  90. package/dist/{chunk-NVOYCK2S.js.map → chunk-HH5EMIXK.js.map} +1 -1
  91. package/dist/chunk-HQWPCX3N.mjs +6 -0
  92. package/dist/{chunk-7MAHP735.mjs.map → chunk-HQWPCX3N.mjs.map} +1 -1
  93. package/dist/{chunk-TC3JSQUS.js → chunk-IPGIFBRN.js} +4 -4
  94. package/dist/{chunk-TC3JSQUS.js.map → chunk-IPGIFBRN.js.map} +1 -1
  95. package/dist/chunk-IWSN4DGG.js +132 -0
  96. package/dist/chunk-IWSN4DGG.js.map +1 -0
  97. package/dist/{chunk-P2HOVWJW.js → chunk-JZCG25XK.js} +14 -14
  98. package/dist/{chunk-P2HOVWJW.js.map → chunk-JZCG25XK.js.map} +1 -1
  99. package/dist/{chunk-ZRWIMNQF.js → chunk-ME5636V6.js} +3 -3
  100. package/dist/{chunk-ZRWIMNQF.js.map → chunk-ME5636V6.js.map} +1 -1
  101. package/dist/{chunk-UCBBZXJI.js → chunk-MJTHYT3D.js} +4 -4
  102. package/dist/{chunk-UCBBZXJI.js.map → chunk-MJTHYT3D.js.map} +1 -1
  103. package/dist/{chunk-IDOHDP7D.mjs → chunk-MSSFRRXJ.mjs} +4 -4
  104. package/dist/{chunk-IDOHDP7D.mjs.map → chunk-MSSFRRXJ.mjs.map} +1 -1
  105. package/dist/{chunk-QP56JXMH.mjs → chunk-MWX6QO7A.mjs} +3 -3
  106. package/dist/{chunk-QP56JXMH.mjs.map → chunk-MWX6QO7A.mjs.map} +1 -1
  107. package/dist/chunk-NBOBOYMT.js +52 -0
  108. package/dist/chunk-NBOBOYMT.js.map +1 -0
  109. package/dist/{chunk-R6UE6MC5.js → chunk-NJSD5QY6.js} +7 -7
  110. package/dist/{chunk-R6UE6MC5.js.map → chunk-NJSD5QY6.js.map} +1 -1
  111. package/dist/{chunk-QD4BNYMM.js → chunk-NK7ZWPAO.js} +18 -18
  112. package/dist/{chunk-QD4BNYMM.js.map → chunk-NK7ZWPAO.js.map} +1 -1
  113. package/dist/{chunk-4VCR6TXK.js → chunk-OB7K6EFK.js} +5 -5
  114. package/dist/{chunk-4VCR6TXK.js.map → chunk-OB7K6EFK.js.map} +1 -1
  115. package/dist/chunk-OBKS3CPP.mjs +50 -0
  116. package/dist/chunk-OBKS3CPP.mjs.map +1 -0
  117. package/dist/{chunk-NNQG25M2.mjs → chunk-OP42HO3Z.mjs} +3 -3
  118. package/dist/{chunk-NNQG25M2.mjs.map → chunk-OP42HO3Z.mjs.map} +1 -1
  119. package/dist/{chunk-UILVPI2R.js → chunk-OTCJRVFJ.js} +3 -3
  120. package/dist/{chunk-UILVPI2R.js.map → chunk-OTCJRVFJ.js.map} +1 -1
  121. package/dist/{chunk-ZYJYBE5G.js → chunk-OUZQL5PV.js} +4 -4
  122. package/dist/{chunk-ZYJYBE5G.js.map → chunk-OUZQL5PV.js.map} +1 -1
  123. package/dist/chunk-QWUDHOUE.js +8 -0
  124. package/dist/{chunk-F3EAAAZ3.js.map → chunk-QWUDHOUE.js.map} +1 -1
  125. package/dist/{chunk-LZPICBND.js → chunk-QYRJ4IQD.js} +80 -60
  126. package/dist/chunk-QYRJ4IQD.js.map +1 -0
  127. package/dist/{chunk-XLFTZV34.mjs → chunk-R2BHRDPZ.mjs} +3 -3
  128. package/dist/{chunk-XLFTZV34.mjs.map → chunk-R2BHRDPZ.mjs.map} +1 -1
  129. package/dist/{chunk-PKZMNDZJ.js → chunk-S24WZNFP.js} +5 -5
  130. package/dist/{chunk-PKZMNDZJ.js.map → chunk-S24WZNFP.js.map} +1 -1
  131. package/dist/{chunk-RX4TVHSN.mjs → chunk-U2DWXE2A.mjs} +3 -3
  132. package/dist/{chunk-RX4TVHSN.mjs.map → chunk-U2DWXE2A.mjs.map} +1 -1
  133. package/dist/{chunk-BIU234TJ.mjs → chunk-U3SQBAUQ.mjs} +8 -8
  134. package/dist/{chunk-BIU234TJ.mjs.map → chunk-U3SQBAUQ.mjs.map} +1 -1
  135. package/dist/{chunk-GJCQVVO3.mjs → chunk-U577PJLH.mjs} +7 -7
  136. package/dist/{chunk-GJCQVVO3.mjs.map → chunk-U577PJLH.mjs.map} +1 -1
  137. package/dist/{chunk-5ABTBPPK.js → chunk-VNJTU6LG.js} +15 -15
  138. package/dist/{chunk-5ABTBPPK.js.map → chunk-VNJTU6LG.js.map} +1 -1
  139. package/dist/{chunk-LCYODFNY.mjs → chunk-VNSV5SY7.mjs} +3 -3
  140. package/dist/{chunk-LCYODFNY.mjs.map → chunk-VNSV5SY7.mjs.map} +1 -1
  141. package/dist/{chunk-YTJKVWHY.mjs → chunk-VPZUQXZV.mjs} +4 -4
  142. package/dist/{chunk-YTJKVWHY.mjs.map → chunk-VPZUQXZV.mjs.map} +1 -1
  143. package/dist/{chunk-LFASEDBO.mjs → chunk-WVNUOUQI.mjs} +3 -3
  144. package/dist/{chunk-LFASEDBO.mjs.map → chunk-WVNUOUQI.mjs.map} +1 -1
  145. package/dist/{chunk-ULSFOC3J.js → chunk-WWJQGMMN.js} +12 -12
  146. package/dist/{chunk-ULSFOC3J.js.map → chunk-WWJQGMMN.js.map} +1 -1
  147. package/dist/{chunk-GCZHKHEH.js → chunk-Y4A4G5XJ.js} +5 -5
  148. package/dist/{chunk-GCZHKHEH.js.map → chunk-Y4A4G5XJ.js.map} +1 -1
  149. package/dist/{chunk-L63DFM4R.mjs → chunk-YCA4KCRF.mjs} +3 -3
  150. package/dist/{chunk-L63DFM4R.mjs.map → chunk-YCA4KCRF.mjs.map} +1 -1
  151. package/dist/{chunk-KUHMHKG5.mjs → chunk-YZMI7QQ2.mjs} +4 -4
  152. package/dist/{chunk-KUHMHKG5.mjs.map → chunk-YZMI7QQ2.mjs.map} +1 -1
  153. package/dist/cli/index.js +3 -3
  154. package/dist/cli/index.mjs +1 -1
  155. package/dist/client/index.js +4 -4
  156. package/dist/client/index.mjs +3 -3
  157. package/dist/commerce/index.js +57 -57
  158. package/dist/commerce/index.mjs +5 -5
  159. package/dist/cta-bar/CtaBar.d.ts +74 -0
  160. package/dist/cta-bar/CtaBar.d.ts.map +1 -0
  161. package/dist/cta-bar/CtaBarBehavior.d.ts +46 -0
  162. package/dist/cta-bar/CtaBarBehavior.d.ts.map +1 -0
  163. package/dist/cta-bar/client.d.ts +46 -0
  164. package/dist/cta-bar/client.d.ts.map +1 -0
  165. package/dist/cta-bar/client.js +23 -0
  166. package/dist/cta-bar/client.js.map +1 -0
  167. package/dist/cta-bar/client.mjs +6 -0
  168. package/dist/cta-bar/client.mjs.map +1 -0
  169. package/dist/cta-bar/index.d.ts +12 -0
  170. package/dist/cta-bar/index.d.ts.map +1 -0
  171. package/dist/cta-bar/index.js +233 -0
  172. package/dist/cta-bar/index.js.map +1 -0
  173. package/dist/cta-bar/index.mjs +227 -0
  174. package/dist/cta-bar/index.mjs.map +1 -0
  175. package/dist/cta-bar/styles.d.ts +46 -0
  176. package/dist/cta-bar/styles.d.ts.map +1 -0
  177. package/dist/engage/ChatWidget.d.ts.map +1 -1
  178. package/dist/engage/EchoUiActions.d.ts.map +1 -1
  179. package/dist/engage/index.js +14 -13
  180. package/dist/engage/index.js.map +1 -1
  181. package/dist/engage/index.mjs +8 -7
  182. package/dist/engage/index.mjs.map +1 -1
  183. package/dist/fleet/index.js +8 -8
  184. package/dist/fleet/index.mjs +4 -4
  185. package/dist/forms/index.js +22 -22
  186. package/dist/forms/index.mjs +9 -9
  187. package/dist/forms/server.js +10 -10
  188. package/dist/forms/server.mjs +8 -8
  189. package/dist/forms/static.js +7 -7
  190. package/dist/forms/static.mjs +6 -6
  191. package/dist/images/index.js +11 -11
  192. package/dist/images/index.mjs +4 -4
  193. package/dist/index.js +63 -63
  194. package/dist/index.mjs +9 -9
  195. package/dist/layout/client.js +8 -8
  196. package/dist/layout/client.mjs +7 -7
  197. package/dist/layout/index.js +10 -10
  198. package/dist/layout/index.mjs +8 -8
  199. package/dist/maps/index.js +5 -5
  200. package/dist/maps/index.mjs +3 -3
  201. package/dist/search/index.js +4 -4
  202. package/dist/search/index.mjs +3 -3
  203. package/dist/seo/client.js +5 -5
  204. package/dist/seo/client.mjs +4 -4
  205. package/dist/seo/index.js +5 -5
  206. package/dist/seo/index.mjs +4 -4
  207. package/dist/server/index.js +3 -3
  208. package/dist/server/index.mjs +2 -2
  209. package/dist/shared/build-entries.d.ts +4 -1
  210. package/dist/shared/build-entries.d.ts.map +1 -1
  211. package/dist/shared/glass.d.ts +51 -0
  212. package/dist/shared/glass.d.ts.map +1 -0
  213. package/dist/shared/version.d.ts +1 -1
  214. package/dist/signal/index.js +11 -11
  215. package/dist/signal/index.mjs +2 -2
  216. package/dist/sync/index.js +17 -17
  217. package/dist/sync/index.mjs +4 -4
  218. package/package.json +6 -1
  219. package/skills/site-kit/SKILL.md +7 -0
  220. package/dist/ChatWidget-56SW5ITH.mjs +0 -15
  221. package/dist/ChatWidget-HR3OC3WA.js +0 -24
  222. package/dist/EngageWidget-HXGI3ZKG.js +0 -21
  223. package/dist/EngageWidget-L4X35N2B.mjs +0 -12
  224. package/dist/ManagedForm-3TDSIRCM.mjs +0 -16
  225. package/dist/ManagedForm-TUSGW5EH.js +0 -25
  226. package/dist/SitemapSync-42VKJUOU.mjs +0 -9
  227. package/dist/SitemapSync-GAGREAX6.js +0 -18
  228. package/dist/chunk-7MAHP735.mjs +0 -6
  229. package/dist/chunk-F3EAAAZ3.js +0 -8
  230. package/dist/chunk-LZPICBND.js.map +0 -1
  231. package/dist/chunk-NYNL6UQV.mjs.map +0 -1
@@ -1,7 +1,8 @@
1
1
  'use client';
2
2
  import { chatLauncherStyles } from './chunk-4U5NCKQY.mjs';
3
- import { useForm } from './chunk-KUHMHKG5.mjs';
4
- import { sonorFetch } from './chunk-SU42KCQD.mjs';
3
+ import { GlassStyles } from './chunk-OBKS3CPP.mjs';
4
+ import { useForm } from './chunk-YZMI7QQ2.mjs';
5
+ import { sonorFetch } from './chunk-6ZMEJSNX.mjs';
5
6
  import { useState, useRef, useEffect, useCallback } from 'react';
6
7
  import ReactMarkdown from 'react-markdown';
7
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -60,7 +61,9 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
60
61
  borderColor: "var(--sk-border, #e5e7eb)",
61
62
  backgroundColor: "var(--sk-bg, #ffffff)",
62
63
  color: "var(--sk-text-primary, #111827)",
63
- fontSize: 13.5,
64
+ // 16px, not smaller: iOS Safari zooms the whole page into any focused
65
+ // field under 16px, which throws the visitor out of the chat window.
66
+ fontSize: 16,
64
67
  boxSizing: "border-box",
65
68
  outline: "none"
66
69
  };
@@ -295,13 +298,17 @@ function userRequestedHandoff(text) {
295
298
  ];
296
299
  return patterns.some((p) => p.test(lower));
297
300
  }
298
- function adjustColor(hex, amount) {
299
- const num = parseInt(hex.replace("#", ""), 16);
300
- const r = Math.min(255, Math.max(0, (num >> 16) + amount));
301
- const g = Math.min(255, Math.max(0, (num >> 8 & 255) + amount));
302
- const b = Math.min(255, Math.max(0, (num & 255) + amount));
303
- return `#${(1 << 24 | r << 16 | g << 8 | b).toString(16).slice(1)}`;
301
+ var BUBBLE_BG = "color-mix(in srgb, var(--sk-bg, #ffffff) 94%, transparent)";
302
+ var HAIRLINE = "1px solid color-mix(in srgb, var(--sk-text-primary, #111827) 9%, transparent)";
303
+ var ECHO_STYLE_HREF = "sk-echo";
304
+ var ECHO_CSS = `
305
+ @media print {
306
+ [data-sk-echo-launcher], [data-sk-echo-panel] { display: none !important; }
307
+ }
308
+ @media (prefers-reduced-motion: reduce) {
309
+ [data-sk-echo-panel] { animation: none !important; }
304
310
  }
311
+ `;
305
312
  function isLightColor(hex) {
306
313
  const num = parseInt(hex.replace("#", ""), 16);
307
314
  const r = num >> 16;
@@ -1059,11 +1066,13 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1059
1066
  if (availability && availability.agentsOnline > 0) return { dot: "#22c55e", text: "Online" };
1060
1067
  return { dot: "var(--sk-text-tertiary, #9ca3af)", text: "We'll respond soon" };
1061
1068
  })();
1069
+ const launcherIcon = isLightColor(primaryColor) ? "#1a1a1a" : "white";
1062
1070
  const ChatButton = /* @__PURE__ */ jsx(
1063
1071
  "button",
1064
1072
  {
1065
1073
  type: "button",
1066
1074
  "data-sk-echo-launcher": true,
1075
+ className: "sk-glass sk-glass--brand",
1067
1076
  onClick: handleToggle,
1068
1077
  "aria-label": isOpen ? "Close chat" : "Open chat",
1069
1078
  style: {
@@ -1072,37 +1081,34 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1072
1081
  width: "60px",
1073
1082
  height: "60px",
1074
1083
  borderRadius: "50%",
1075
- backgroundColor: primaryColor,
1076
- border: "none",
1084
+ ["--sk-glass-brand"]: primaryColor,
1077
1085
  display: "flex",
1078
1086
  alignItems: "center",
1079
1087
  justifyContent: "center",
1080
1088
  cursor: "pointer",
1081
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.25)",
1082
- transition: "transform 0.2s, box-shadow 0.2s",
1089
+ transition: "transform 0.2s, bottom 0.35s cubic-bezier(0.2, 0.8, 0.2, 1)",
1083
1090
  zIndex: placement.zIndex.launcher
1084
1091
  },
1085
1092
  onMouseEnter: (e) => {
1086
1093
  e.currentTarget.style.transform = "scale(1.05)";
1087
- e.currentTarget.style.boxShadow = "0 6px 16px rgba(0, 0, 0, 0.3)";
1088
1094
  },
1089
1095
  onMouseLeave: (e) => {
1090
1096
  e.currentTarget.style.transform = "scale(1)";
1091
- e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.25)";
1092
1097
  },
1093
- children: isOpen ? /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1098
+ children: isOpen ? /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: launcherIcon, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1094
1099
  /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1095
1100
  /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1096
- ] }) : /* @__PURE__ */ jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ 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" }) })
1101
+ ] }) : /* @__PURE__ */ jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: launcherIcon, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ 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" }) })
1097
1102
  }
1098
1103
  );
1099
1104
  const Header = /* @__PURE__ */ jsxs(
1100
1105
  "div",
1101
1106
  {
1102
1107
  style: {
1103
- padding: "16px 20px",
1104
- background: `linear-gradient(135deg, ${primaryColor}, ${adjustColor(primaryColor, -25)})`,
1105
- color: isLightColor(primaryColor) ? "#1a1a1a" : "white",
1108
+ padding: "16px 18px 14px",
1109
+ background: `linear-gradient(180deg, color-mix(in srgb, ${primaryColor} 16%, transparent), transparent)`,
1110
+ borderBottom: "1px solid color-mix(in srgb, var(--sk-text-primary, #111827) 8%, transparent)",
1111
+ color: "var(--sk-text-primary, #111827)",
1106
1112
  display: "flex",
1107
1113
  alignItems: "center",
1108
1114
  gap: 12
@@ -1115,7 +1121,9 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1115
1121
  width: 40,
1116
1122
  height: 40,
1117
1123
  borderRadius: "50%",
1118
- backgroundColor: "rgba(255,255,255,0.2)",
1124
+ backgroundColor: primaryColor,
1125
+ color: launcherIcon,
1126
+ boxShadow: "inset 0 1px 0 color-mix(in srgb, #ffffff 30%, transparent), 0 2px 6px rgba(0, 0, 0, 0.12)",
1119
1127
  display: "flex",
1120
1128
  alignItems: "center",
1121
1129
  justifyContent: "center",
@@ -1127,12 +1135,12 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1127
1135
  ),
1128
1136
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
1129
1137
  /* @__PURE__ */ jsx("div", { style: { fontWeight: 600, fontSize: 16, whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: showOfflineForm ? offlineHeading : businessName }),
1130
- statusLabel && /* @__PURE__ */ jsxs("div", { style: { fontSize: 13, opacity: 0.9, display: "flex", alignItems: "center", gap: 6, marginTop: 2 }, children: [
1138
+ statusLabel && /* @__PURE__ */ jsxs("div", { style: { fontSize: 13, color: "var(--sk-text-secondary, #6b7280)", display: "flex", alignItems: "center", gap: 6, marginTop: 2 }, children: [
1131
1139
  statusLabel.dot && /* @__PURE__ */ jsx("span", { style: { width: 8, height: 8, borderRadius: "50%", backgroundColor: statusLabel.dot, flexShrink: 0 } }),
1132
1140
  statusLabel.text
1133
1141
  ] })
1134
1142
  ] }),
1135
- connectionStatus === "connecting" && !showWelcome && !showOfflineForm && /* @__PURE__ */ jsxs("div", { style: { fontSize: 11, opacity: 0.7, display: "flex", alignItems: "center", gap: 4 }, children: [
1143
+ connectionStatus === "connecting" && !showWelcome && !showOfflineForm && /* @__PURE__ */ jsxs("div", { style: { fontSize: 11, color: "var(--sk-text-secondary, #6b7280)", display: "flex", alignItems: "center", gap: 4 }, children: [
1136
1144
  /* @__PURE__ */ jsx("span", { style: { animation: "chatDot 1s infinite ease-in-out" }, children: "\u25CF" }),
1137
1145
  "Connecting"
1138
1146
  ] })
@@ -1213,7 +1221,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1213
1221
  value: offlineForm[field.name],
1214
1222
  onChange: (e) => setOfflineForm((prev) => ({ ...prev, [field.name]: e.target.value })),
1215
1223
  required: field.required,
1216
- style: { width: "100%", padding: "10px 12px", borderRadius: 8, border: "1px solid var(--sk-border, #e5e7eb)", fontSize: 14, outline: "none", boxSizing: "border-box" },
1224
+ style: { width: "100%", padding: "10px 12px", borderRadius: 8, border: "1px solid var(--sk-border, #e5e7eb)", fontSize: 16, outline: "none", boxSizing: "border-box" },
1217
1225
  onFocus: (e) => e.currentTarget.style.borderColor = primaryColor,
1218
1226
  onBlur: (e) => e.currentTarget.style.borderColor = "var(--sk-border, #e5e7eb)"
1219
1227
  }
@@ -1226,7 +1234,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1226
1234
  onChange: (e) => setOfflineForm((prev) => ({ ...prev, message: e.target.value })),
1227
1235
  required: true,
1228
1236
  rows: 4,
1229
- style: { width: "100%", padding: "10px 12px", borderRadius: 8, border: "1px solid var(--sk-border, #e5e7eb)", fontSize: 14, outline: "none", resize: "vertical", boxSizing: "border-box" },
1237
+ style: { width: "100%", padding: "10px 12px", borderRadius: 8, border: "1px solid var(--sk-border, #e5e7eb)", fontSize: 16, outline: "none", resize: "vertical", boxSizing: "border-box" },
1230
1238
  onFocus: (e) => e.currentTarget.style.borderColor = primaryColor,
1231
1239
  onBlur: (e) => e.currentTarget.style.borderColor = "var(--sk-border, #e5e7eb)"
1232
1240
  }
@@ -1326,7 +1334,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1326
1334
  /* @__PURE__ */ jsxs(
1327
1335
  "div",
1328
1336
  {
1329
- style: { flex: 1, overflowY: "auto", padding: 16, display: "flex", flexDirection: "column", gap: 12, backgroundColor: "var(--sk-bg-elevated, #f9fafb)" },
1337
+ style: { flex: 1, overflowY: "auto", padding: 16, display: "flex", flexDirection: "column", gap: 12, backgroundColor: "transparent" },
1330
1338
  children: [
1331
1339
  messages.map((message) => {
1332
1340
  const isAssistant = message.role === "assistant" || message.role === "agent";
@@ -1336,17 +1344,19 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1336
1344
  style: {
1337
1345
  maxWidth: "80%",
1338
1346
  padding: message.role === "system" ? "8px 12px" : isAssistant ? "12px 16px" : "10px 14px",
1339
- borderRadius: message.role === "user" ? "16px 16px 4px 16px" : message.role === "system" ? "8px" : "16px 16px 16px 4px",
1340
- backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "var(--sk-border, #e5e7eb)" : "var(--sk-bg, #ffffff)",
1347
+ borderRadius: message.role === "user" ? "18px 18px 6px 18px" : message.role === "system" ? "10px" : "18px 18px 18px 6px",
1348
+ // Bubbles on glass stay near-opaque: the glass behind them
1349
+ // is for depth, never for the text to read against.
1350
+ backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "color-mix(in srgb, var(--sk-text-primary, #111827) 7%, transparent)" : BUBBLE_BG,
1341
1351
  color: message.role === "user" ? isLightColor(primaryColor) ? "#1a1a1a" : "white" : message.role === "system" ? "var(--sk-text-secondary, #6b7280)" : "var(--sk-text-primary, #111827)",
1342
- boxShadow: message.role === "system" ? "none" : "0 1px 2px rgba(0,0,0,0.08)",
1352
+ border: message.role === "user" || message.role === "system" ? "none" : HAIRLINE,
1353
+ 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)",
1343
1354
  fontSize: message.role === "system" ? 13 : 14,
1344
1355
  fontStyle: message.role === "system" ? "italic" : "normal",
1345
1356
  lineHeight: isAssistant ? 1.6 : 1.5,
1346
1357
  whiteSpace: isAssistant ? "normal" : "pre-wrap",
1347
1358
  wordBreak: "break-word",
1348
- textAlign: isAssistant ? "left" : void 0,
1349
- borderLeft: isAssistant ? `3px solid ${hexAlpha("--sk-primary-rgb", 0.2, primaryRgb)}` : void 0
1359
+ textAlign: isAssistant ? "left" : void 0
1350
1360
  },
1351
1361
  children: [
1352
1362
  message.agentName && message.role === "agent" && /* @__PURE__ */ jsx("div", { style: { fontSize: 12, opacity: 0.6, marginBottom: 4 }, children: message.agentName }),
@@ -1473,9 +1483,10 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1473
1483
  {
1474
1484
  style: {
1475
1485
  padding: "10px 14px",
1476
- borderRadius: "16px 16px 16px 4px",
1477
- backgroundColor: "var(--sk-bg, #ffffff)",
1478
- boxShadow: "0 1px 2px rgba(0,0,0,0.08)",
1486
+ borderRadius: "18px 18px 18px 6px",
1487
+ backgroundColor: BUBBLE_BG,
1488
+ border: HAIRLINE,
1489
+ boxShadow: "0 1px 2px rgba(0,0,0,0.06)",
1479
1490
  display: "flex",
1480
1491
  gap: 4,
1481
1492
  color: "var(--sk-text-tertiary, #9ca3af)"
@@ -1495,7 +1506,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1495
1506
  /* @__PURE__ */ jsx("span", { style: { fontSize: 13, color: "var(--sk-error, #dc2626)" }, children: "Failed to send" }),
1496
1507
  /* @__PURE__ */ jsx("button", { type: "button", onClick: retryFailedSend, style: { padding: "4px 10px", borderRadius: 6, border: "1px solid var(--sk-error, #dc2626)", background: "var(--sk-bg, #fff)", color: "var(--sk-error, #dc2626)", fontSize: 12, cursor: "pointer" }, children: "Retry" })
1497
1508
  ] }),
1498
- /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit, style: { padding: 12, borderTop: "1px solid var(--sk-border, #e5e7eb)", backgroundColor: "var(--sk-bg, #ffffff)" }, children: /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8 }, children: [
1509
+ /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit, style: { padding: "10px 12px 12px", backgroundColor: "transparent" }, children: /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, alignItems: "center" }, children: [
1499
1510
  /* @__PURE__ */ jsx(
1500
1511
  "input",
1501
1512
  {
@@ -1511,15 +1522,20 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1511
1522
  disabled: isLoading,
1512
1523
  style: {
1513
1524
  flex: 1,
1514
- padding: "10px 14px",
1525
+ minWidth: 0,
1526
+ padding: "10px 16px",
1515
1527
  borderRadius: 24,
1516
- border: "1px solid var(--sk-border, #e5e7eb)",
1517
- fontSize: 14,
1528
+ border: HAIRLINE,
1529
+ backgroundColor: BUBBLE_BG,
1530
+ color: "var(--sk-text-primary, #111827)",
1531
+ // 16px: iOS Safari zooms the page into any focused field under 16px.
1532
+ fontSize: 16,
1518
1533
  outline: "none",
1534
+ boxShadow: "inset 0 1px 2px rgba(0,0,0,0.04)",
1519
1535
  transition: "border-color 0.2s"
1520
1536
  },
1521
1537
  onFocus: (e) => e.currentTarget.style.borderColor = primaryColor,
1522
- onBlur: (e) => e.currentTarget.style.borderColor = "var(--sk-border, #e5e7eb)"
1538
+ onBlur: (e) => e.currentTarget.style.borderColor = ""
1523
1539
  }
1524
1540
  ),
1525
1541
  /* @__PURE__ */ jsx(
@@ -1549,33 +1565,35 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1549
1565
  const ChatPopup = isOpen && /* @__PURE__ */ jsxs(
1550
1566
  "div",
1551
1567
  {
1568
+ "data-sk-echo-panel": true,
1569
+ className: "sk-glass sk-glass--panel",
1552
1570
  style: {
1553
1571
  position: "fixed",
1554
1572
  ...placement.popup,
1555
1573
  width: "380px",
1556
1574
  maxWidth: "calc(100vw - 40px)",
1557
1575
  height: "520px",
1558
- backgroundColor: "var(--sk-bg, #ffffff)",
1559
- borderRadius: "16px",
1560
- boxShadow: "0 8px 32px rgba(0, 0, 0, 0.2)",
1576
+ color: "var(--sk-text-primary, #111827)",
1577
+ borderRadius: "24px",
1561
1578
  display: "flex",
1562
1579
  flexDirection: "column",
1563
1580
  overflow: "hidden",
1564
1581
  zIndex: placement.zIndex.popup,
1565
- animation: "chatSlideUp 0.3s ease-out"
1582
+ transformOrigin: position === "bottom-left" ? "bottom left" : "bottom right",
1583
+ animation: "chatGlassIn 0.34s cubic-bezier(0.2, 0.9, 0.3, 1.05)"
1566
1584
  },
1567
1585
  children: [
1568
1586
  Header,
1569
1587
  checkingAvailability || checkingHandoff ? CheckingScreen : showOfflineForm ? OfflineFormView : showWelcome && welcomeEnabled && messages.length === 0 ? WelcomeScreen : MessagesView,
1570
- showPoweredBy && /* @__PURE__ */ jsxs("div", { style: { padding: "6px 0", textAlign: "center", fontSize: 11, color: "var(--sk-text-tertiary, #9ca3af)", backgroundColor: "var(--sk-bg, #ffffff)", borderTop: "1px solid var(--sk-bg-elevated, #f3f4f6)" }, children: [
1588
+ showPoweredBy && /* @__PURE__ */ jsxs("div", { style: { padding: "0 0 8px", textAlign: "center", fontSize: 11, color: "var(--sk-text-tertiary, #9ca3af)", backgroundColor: "transparent" }, children: [
1571
1589
  "Powered by",
1572
1590
  " ",
1573
1591
  /* @__PURE__ */ jsx("a", { href: "https://sonor.io", target: "_blank", rel: "noopener noreferrer", style: { color: "var(--sk-text-secondary, #6b7280)", textDecoration: "none", fontWeight: 500 }, children: "Sonor" })
1574
1592
  ] }),
1575
1593
  /* @__PURE__ */ jsx("style", { children: `
1576
- @keyframes chatSlideUp {
1577
- from { opacity: 0; transform: translateY(20px); }
1578
- to { opacity: 1; transform: translateY(0); }
1594
+ @keyframes chatGlassIn {
1595
+ from { opacity: 0; transform: translateY(12px) scale(0.94); }
1596
+ to { opacity: 1; transform: translateY(0) scale(1); }
1579
1597
  }
1580
1598
  @keyframes chatDot {
1581
1599
  0%, 80%, 100% { opacity: 0.3; }
@@ -1602,11 +1620,13 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1602
1620
  }
1603
1621
  );
1604
1622
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1623
+ /* @__PURE__ */ jsx(GlassStyles, {}),
1624
+ /* @__PURE__ */ jsx("style", { href: ECHO_STYLE_HREF, precedence: "default", children: ECHO_CSS }),
1605
1625
  ChatPopup,
1606
1626
  ChatButton
1607
1627
  ] });
1608
1628
  }
1609
1629
 
1610
1630
  export { ChatWidget };
1611
- //# sourceMappingURL=chunk-NYNL6UQV.mjs.map
1612
- //# sourceMappingURL=chunk-NYNL6UQV.mjs.map
1631
+ //# sourceMappingURL=chunk-3SHAY7PK.mjs.map
1632
+ //# sourceMappingURL=chunk-3SHAY7PK.mjs.map