@sonordev/site-kit 6.0.1 → 6.1.0

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-PO6SSJG2.mjs} +6 -6
  4. package/dist/{AnalyticsProvider-YU6QANW5.mjs.map → AnalyticsProvider-PO6SSJG2.mjs.map} +1 -1
  5. package/dist/{AnalyticsProvider-4RLYTVWO.js → AnalyticsProvider-V6G45QG7.js} +10 -10
  6. package/dist/{AnalyticsProvider-4RLYTVWO.js.map → AnalyticsProvider-V6G45QG7.js.map} +1 -1
  7. package/dist/{ArticleViewTracker-LI44SA4T.mjs → ArticleViewTracker-CML36HJZ.mjs} +5 -5
  8. package/dist/{ArticleViewTracker-LI44SA4T.mjs.map → ArticleViewTracker-CML36HJZ.mjs.map} +1 -1
  9. package/dist/{ArticleViewTracker-OQB2VT73.js → ArticleViewTracker-FE2YWHX4.js} +6 -6
  10. package/dist/{ArticleViewTracker-OQB2VT73.js.map → ArticleViewTracker-FE2YWHX4.js.map} +1 -1
  11. package/dist/ChatWidget-GVNDKGUU.mjs +16 -0
  12. package/dist/{ChatWidget-56SW5ITH.mjs.map → ChatWidget-GVNDKGUU.mjs.map} +1 -1
  13. package/dist/ChatWidget-YL34KOZM.js +25 -0
  14. package/dist/{ChatWidget-HR3OC3WA.js.map → ChatWidget-YL34KOZM.js.map} +1 -1
  15. package/dist/EngageWidget-465O5XUV.mjs +12 -0
  16. package/dist/{EngageWidget-L4X35N2B.mjs.map → EngageWidget-465O5XUV.mjs.map} +1 -1
  17. package/dist/EngageWidget-IQRKRYPG.js +21 -0
  18. package/dist/{EngageWidget-HXGI3ZKG.js.map → EngageWidget-IQRKRYPG.js.map} +1 -1
  19. package/dist/{FileField-N2P6E2PN.js → FileField-F3PFKMIF.js} +6 -6
  20. package/dist/{FileField-N2P6E2PN.js.map → FileField-F3PFKMIF.js.map} +1 -1
  21. package/dist/{FileField-GSTLU42O.mjs → FileField-FWKSBFRX.mjs} +5 -5
  22. package/dist/{FileField-GSTLU42O.mjs.map → FileField-FWKSBFRX.mjs.map} +1 -1
  23. package/dist/{FormSpotlight-QLXOS5LN.js → FormSpotlight-DJQ3P3EX.js} +9 -9
  24. package/dist/{FormSpotlight-QLXOS5LN.js.map → FormSpotlight-DJQ3P3EX.js.map} +1 -1
  25. package/dist/{FormSpotlight-UFATQTN3.mjs → FormSpotlight-K4LP2DMP.mjs} +3 -3
  26. package/dist/{FormSpotlight-UFATQTN3.mjs.map → FormSpotlight-K4LP2DMP.mjs.map} +1 -1
  27. package/dist/{FormStage-4HYDMCYU.js → FormStage-QMGZ3MOT.js} +9 -9
  28. package/dist/{FormStage-4HYDMCYU.js.map → FormStage-QMGZ3MOT.js.map} +1 -1
  29. package/dist/{FormStage-SYOKD5TJ.mjs → FormStage-YKVTHPKV.mjs} +3 -3
  30. package/dist/{FormStage-SYOKD5TJ.mjs.map → FormStage-YKVTHPKV.mjs.map} +1 -1
  31. package/dist/ManagedForm-MLPETHSQ.js +25 -0
  32. package/dist/{ManagedForm-TUSGW5EH.js.map → ManagedForm-MLPETHSQ.js.map} +1 -1
  33. package/dist/ManagedForm-P3L34ALG.mjs +16 -0
  34. package/dist/{ManagedForm-3TDSIRCM.mjs.map → ManagedForm-P3L34ALG.mjs.map} +1 -1
  35. package/dist/{ManagedNewsletterForm-CNGCBA2N.mjs → ManagedNewsletterForm-C5YQH7MP.mjs} +7 -7
  36. package/dist/{ManagedNewsletterForm-CNGCBA2N.mjs.map → ManagedNewsletterForm-C5YQH7MP.mjs.map} +1 -1
  37. package/dist/{ManagedNewsletterForm-XJEPVJRM.js → ManagedNewsletterForm-R4LLZBRQ.js} +8 -8
  38. package/dist/{ManagedNewsletterForm-XJEPVJRM.js.map → ManagedNewsletterForm-R4LLZBRQ.js.map} +1 -1
  39. package/dist/{SignalCore-ARRVP6F7.mjs → SignalCore-BNYNS6P7.mjs} +5 -5
  40. package/dist/{SignalCore-ARRVP6F7.mjs.map → SignalCore-BNYNS6P7.mjs.map} +1 -1
  41. package/dist/{SignalCore-AXK6RCR4.js → SignalCore-CLELIKFI.js} +11 -11
  42. package/dist/{SignalCore-AXK6RCR4.js.map → SignalCore-CLELIKFI.js.map} +1 -1
  43. package/dist/SitemapSync-P7XWL6VV.js +18 -0
  44. package/dist/{SitemapSync-GAGREAX6.js.map → SitemapSync-P7XWL6VV.js.map} +1 -1
  45. package/dist/SitemapSync-SIKJCK7N.mjs +9 -0
  46. package/dist/{SitemapSync-42VKJUOU.mjs.map → SitemapSync-SIKJCK7N.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-UILVPI2R.js → chunk-36NE4PSS.js} +3 -3
  54. package/dist/{chunk-UILVPI2R.js.map → chunk-36NE4PSS.js.map} +1 -1
  55. package/dist/{chunk-L63DFM4R.mjs → chunk-3DXJHMQM.mjs} +3 -3
  56. package/dist/{chunk-L63DFM4R.mjs.map → chunk-3DXJHMQM.mjs.map} +1 -1
  57. package/dist/{chunk-NYNL6UQV.mjs → chunk-4EJI4IOX.mjs} +63 -50
  58. package/dist/chunk-4EJI4IOX.mjs.map +1 -0
  59. package/dist/{chunk-6URNNS3V.mjs → chunk-6OSHL7H5.mjs} +4 -4
  60. package/dist/{chunk-6URNNS3V.mjs.map → chunk-6OSHL7H5.mjs.map} +1 -1
  61. package/dist/chunk-ACKFL6WA.mjs +6 -0
  62. package/dist/{chunk-7MAHP735.mjs.map → chunk-ACKFL6WA.mjs.map} +1 -1
  63. package/dist/{chunk-4NBJDP6Y.js → chunk-AQUWWATH.js} +4 -4
  64. package/dist/{chunk-4NBJDP6Y.js.map → chunk-AQUWWATH.js.map} +1 -1
  65. package/dist/{chunk-QXPGIOU7.mjs → chunk-BDSNEB3O.mjs} +3 -3
  66. package/dist/{chunk-QXPGIOU7.mjs.map → chunk-BDSNEB3O.mjs.map} +1 -1
  67. package/dist/{chunk-ZRWIMNQF.js → chunk-BGOPF6J2.js} +3 -3
  68. package/dist/{chunk-ZRWIMNQF.js.map → chunk-BGOPF6J2.js.map} +1 -1
  69. package/dist/chunk-BZR6RUIN.mjs +128 -0
  70. package/dist/chunk-BZR6RUIN.mjs.map +1 -0
  71. package/dist/{chunk-XLFTZV34.mjs → chunk-CJX2MC62.mjs} +3 -3
  72. package/dist/{chunk-XLFTZV34.mjs.map → chunk-CJX2MC62.mjs.map} +1 -1
  73. package/dist/{chunk-AQMQOH7V.js → chunk-DQXEYUTD.js} +3 -3
  74. package/dist/{chunk-AQMQOH7V.js.map → chunk-DQXEYUTD.js.map} +1 -1
  75. package/dist/{chunk-PKZMNDZJ.js → chunk-DXBSBWSS.js} +5 -5
  76. package/dist/{chunk-PKZMNDZJ.js.map → chunk-DXBSBWSS.js.map} +1 -1
  77. package/dist/{chunk-NVWUXCUQ.mjs → chunk-ESAPT5JT.mjs} +3 -3
  78. package/dist/{chunk-NVWUXCUQ.mjs.map → chunk-ESAPT5JT.mjs.map} +1 -1
  79. package/dist/{chunk-QP56JXMH.mjs → chunk-F6BYWNHU.mjs} +3 -3
  80. package/dist/{chunk-QP56JXMH.mjs.map → chunk-F6BYWNHU.mjs.map} +1 -1
  81. package/dist/{chunk-NNQG25M2.mjs → chunk-FQAZBJJO.mjs} +3 -3
  82. package/dist/{chunk-NNQG25M2.mjs.map → chunk-FQAZBJJO.mjs.map} +1 -1
  83. package/dist/{chunk-RX4TVHSN.mjs → chunk-H5FCJBAN.mjs} +3 -3
  84. package/dist/{chunk-RX4TVHSN.mjs.map → chunk-H5FCJBAN.mjs.map} +1 -1
  85. package/dist/{chunk-6ZOMIPU5.js → chunk-I4RU3RCS.js} +8 -8
  86. package/dist/{chunk-6ZOMIPU5.js.map → chunk-I4RU3RCS.js.map} +1 -1
  87. package/dist/{chunk-GCZHKHEH.js → chunk-IDJY2JWU.js} +5 -5
  88. package/dist/{chunk-GCZHKHEH.js.map → chunk-IDJY2JWU.js.map} +1 -1
  89. package/dist/{chunk-6YEPFH3Q.js → chunk-ITVQV7DK.js} +10 -10
  90. package/dist/{chunk-6YEPFH3Q.js.map → chunk-ITVQV7DK.js.map} +1 -1
  91. package/dist/chunk-IWSN4DGG.js +132 -0
  92. package/dist/chunk-IWSN4DGG.js.map +1 -0
  93. package/dist/{chunk-P2HOVWJW.js → chunk-K4LLYQFZ.js} +14 -14
  94. package/dist/{chunk-P2HOVWJW.js.map → chunk-K4LLYQFZ.js.map} +1 -1
  95. package/dist/{chunk-XWKY46NU.js → chunk-KDNB6BYH.js} +11 -11
  96. package/dist/{chunk-XWKY46NU.js.map → chunk-KDNB6BYH.js.map} +1 -1
  97. package/dist/{chunk-U6F6AN23.mjs → chunk-KKTSAT7I.mjs} +4 -4
  98. package/dist/{chunk-U6F6AN23.mjs.map → chunk-KKTSAT7I.mjs.map} +1 -1
  99. package/dist/{chunk-BMH2D2EP.mjs → chunk-L3GAEBJU.mjs} +3 -3
  100. package/dist/{chunk-BMH2D2EP.mjs.map → chunk-L3GAEBJU.mjs.map} +1 -1
  101. package/dist/{chunk-TC3JSQUS.js → chunk-LF44SJPP.js} +4 -4
  102. package/dist/{chunk-TC3JSQUS.js.map → chunk-LF44SJPP.js.map} +1 -1
  103. package/dist/{chunk-QD4BNYMM.js → chunk-MZK5APTV.js} +18 -18
  104. package/dist/{chunk-QD4BNYMM.js.map → chunk-MZK5APTV.js.map} +1 -1
  105. package/dist/chunk-NBOBOYMT.js +52 -0
  106. package/dist/chunk-NBOBOYMT.js.map +1 -0
  107. package/dist/{chunk-ZYJYBE5G.js → chunk-NDVKIDMN.js} +4 -4
  108. package/dist/{chunk-ZYJYBE5G.js.map → chunk-NDVKIDMN.js.map} +1 -1
  109. package/dist/{chunk-IDOHDP7D.mjs → chunk-NMKUYGKK.mjs} +4 -4
  110. package/dist/{chunk-IDOHDP7D.mjs.map → chunk-NMKUYGKK.mjs.map} +1 -1
  111. package/dist/chunk-OBKS3CPP.mjs +50 -0
  112. package/dist/chunk-OBKS3CPP.mjs.map +1 -0
  113. package/dist/{chunk-WLCPBZOS.mjs → chunk-OF4V7CSP.mjs} +3 -3
  114. package/dist/{chunk-WLCPBZOS.mjs.map → chunk-OF4V7CSP.mjs.map} +1 -1
  115. package/dist/{chunk-LCYODFNY.mjs → chunk-OQWAJBYA.mjs} +3 -3
  116. package/dist/{chunk-LCYODFNY.mjs.map → chunk-OQWAJBYA.mjs.map} +1 -1
  117. package/dist/chunk-OXA4ZSX2.js +8 -0
  118. package/dist/{chunk-F3EAAAZ3.js.map → chunk-OXA4ZSX2.js.map} +1 -1
  119. package/dist/{chunk-QJ3SMLND.mjs → chunk-QC6VQ2IW.mjs} +3 -3
  120. package/dist/{chunk-QJ3SMLND.mjs.map → chunk-QC6VQ2IW.mjs.map} +1 -1
  121. package/dist/{chunk-UCBBZXJI.js → chunk-QF3XTEXV.js} +4 -4
  122. package/dist/{chunk-UCBBZXJI.js.map → chunk-QF3XTEXV.js.map} +1 -1
  123. package/dist/{chunk-SU42KCQD.mjs → chunk-RGCUND5Q.mjs} +4 -4
  124. package/dist/{chunk-SU42KCQD.mjs.map → chunk-RGCUND5Q.mjs.map} +1 -1
  125. package/dist/{chunk-BWSYPQ5E.js → chunk-RVFOUPK4.js} +6 -6
  126. package/dist/{chunk-BWSYPQ5E.js.map → chunk-RVFOUPK4.js.map} +1 -1
  127. package/dist/{chunk-ULSFOC3J.js → chunk-SDGS2R5O.js} +12 -12
  128. package/dist/{chunk-ULSFOC3J.js.map → chunk-SDGS2R5O.js.map} +1 -1
  129. package/dist/{chunk-BIU234TJ.mjs → chunk-TA3TQTDA.mjs} +8 -8
  130. package/dist/{chunk-BIU234TJ.mjs.map → chunk-TA3TQTDA.mjs.map} +1 -1
  131. package/dist/{chunk-R6UE6MC5.js → chunk-TMNFPVK5.js} +7 -7
  132. package/dist/{chunk-R6UE6MC5.js.map → chunk-TMNFPVK5.js.map} +1 -1
  133. package/dist/{chunk-4VCR6TXK.js → chunk-VK74LC4H.js} +5 -5
  134. package/dist/{chunk-4VCR6TXK.js.map → chunk-VK74LC4H.js.map} +1 -1
  135. package/dist/{chunk-GJCQVVO3.mjs → chunk-XGELGOF6.mjs} +7 -7
  136. package/dist/{chunk-GJCQVVO3.mjs.map → chunk-XGELGOF6.mjs.map} +1 -1
  137. package/dist/{chunk-LZPICBND.js → chunk-XKJLJLQ4.js} +74 -61
  138. package/dist/chunk-XKJLJLQ4.js.map +1 -0
  139. package/dist/{chunk-YTJKVWHY.mjs → chunk-XOYQKFKI.mjs} +4 -4
  140. package/dist/{chunk-YTJKVWHY.mjs.map → chunk-XOYQKFKI.mjs.map} +1 -1
  141. package/dist/{chunk-NVOYCK2S.js → chunk-Y53BIB7A.js} +14 -14
  142. package/dist/{chunk-NVOYCK2S.js.map → chunk-Y53BIB7A.js.map} +1 -1
  143. package/dist/{chunk-GKPVGVHY.mjs → chunk-YKNXBWPZ.mjs} +3 -3
  144. package/dist/{chunk-GKPVGVHY.mjs.map → chunk-YKNXBWPZ.mjs.map} +1 -1
  145. package/dist/{chunk-KUHMHKG5.mjs → chunk-YP5WAFTI.mjs} +4 -4
  146. package/dist/{chunk-KUHMHKG5.mjs.map → chunk-YP5WAFTI.mjs.map} +1 -1
  147. package/dist/{chunk-FKFVN3GT.js → chunk-YS7Y2PQG.js} +8 -8
  148. package/dist/{chunk-FKFVN3GT.js.map → chunk-YS7Y2PQG.js.map} +1 -1
  149. package/dist/{chunk-5ABTBPPK.js → chunk-ZQJGCQHC.js} +15 -15
  150. package/dist/{chunk-5ABTBPPK.js.map → chunk-ZQJGCQHC.js.map} +1 -1
  151. package/dist/{chunk-LFASEDBO.mjs → chunk-ZQSJK65K.mjs} +3 -3
  152. package/dist/{chunk-LFASEDBO.mjs.map → chunk-ZQSJK65K.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 +71 -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 +230 -0
  172. package/dist/cta-bar/index.js.map +1 -0
  173. package/dist/cta-bar/index.mjs +224 -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 +6 -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-YP5WAFTI.mjs';
5
+ import { sonorFetch } from './chunk-RGCUND5Q.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,8 @@ 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)}`;
304
- }
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)";
305
303
  function isLightColor(hex) {
306
304
  const num = parseInt(hex.replace("#", ""), 16);
307
305
  const r = num >> 16;
@@ -1059,11 +1057,13 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1059
1057
  if (availability && availability.agentsOnline > 0) return { dot: "#22c55e", text: "Online" };
1060
1058
  return { dot: "var(--sk-text-tertiary, #9ca3af)", text: "We'll respond soon" };
1061
1059
  })();
1060
+ const launcherIcon = isLightColor(primaryColor) ? "#1a1a1a" : "white";
1062
1061
  const ChatButton = /* @__PURE__ */ jsx(
1063
1062
  "button",
1064
1063
  {
1065
1064
  type: "button",
1066
1065
  "data-sk-echo-launcher": true,
1066
+ className: "sk-glass sk-glass--brand",
1067
1067
  onClick: handleToggle,
1068
1068
  "aria-label": isOpen ? "Close chat" : "Open chat",
1069
1069
  style: {
@@ -1072,37 +1072,34 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1072
1072
  width: "60px",
1073
1073
  height: "60px",
1074
1074
  borderRadius: "50%",
1075
- backgroundColor: primaryColor,
1076
- border: "none",
1075
+ ["--sk-glass-brand"]: primaryColor,
1077
1076
  display: "flex",
1078
1077
  alignItems: "center",
1079
1078
  justifyContent: "center",
1080
1079
  cursor: "pointer",
1081
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.25)",
1082
- transition: "transform 0.2s, box-shadow 0.2s",
1080
+ transition: "transform 0.2s, bottom 0.35s cubic-bezier(0.2, 0.8, 0.2, 1)",
1083
1081
  zIndex: placement.zIndex.launcher
1084
1082
  },
1085
1083
  onMouseEnter: (e) => {
1086
1084
  e.currentTarget.style.transform = "scale(1.05)";
1087
- e.currentTarget.style.boxShadow = "0 6px 16px rgba(0, 0, 0, 0.3)";
1088
1085
  },
1089
1086
  onMouseLeave: (e) => {
1090
1087
  e.currentTarget.style.transform = "scale(1)";
1091
- e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.25)";
1092
1088
  },
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: [
1089
+ 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
1090
  /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1095
1091
  /* @__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" }) })
1092
+ ] }) : /* @__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
1093
  }
1098
1094
  );
1099
1095
  const Header = /* @__PURE__ */ jsxs(
1100
1096
  "div",
1101
1097
  {
1102
1098
  style: {
1103
- padding: "16px 20px",
1104
- background: `linear-gradient(135deg, ${primaryColor}, ${adjustColor(primaryColor, -25)})`,
1105
- color: isLightColor(primaryColor) ? "#1a1a1a" : "white",
1099
+ padding: "16px 18px 14px",
1100
+ background: `linear-gradient(180deg, color-mix(in srgb, ${primaryColor} 16%, transparent), transparent)`,
1101
+ borderBottom: "1px solid color-mix(in srgb, var(--sk-text-primary, #111827) 8%, transparent)",
1102
+ color: "var(--sk-text-primary, #111827)",
1106
1103
  display: "flex",
1107
1104
  alignItems: "center",
1108
1105
  gap: 12
@@ -1115,7 +1112,9 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1115
1112
  width: 40,
1116
1113
  height: 40,
1117
1114
  borderRadius: "50%",
1118
- backgroundColor: "rgba(255,255,255,0.2)",
1115
+ backgroundColor: primaryColor,
1116
+ color: launcherIcon,
1117
+ boxShadow: "inset 0 1px 0 color-mix(in srgb, #ffffff 30%, transparent), 0 2px 6px rgba(0, 0, 0, 0.12)",
1119
1118
  display: "flex",
1120
1119
  alignItems: "center",
1121
1120
  justifyContent: "center",
@@ -1127,12 +1126,12 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1127
1126
  ),
1128
1127
  /* @__PURE__ */ jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
1129
1128
  /* @__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: [
1129
+ statusLabel && /* @__PURE__ */ jsxs("div", { style: { fontSize: 13, color: "var(--sk-text-secondary, #6b7280)", display: "flex", alignItems: "center", gap: 6, marginTop: 2 }, children: [
1131
1130
  statusLabel.dot && /* @__PURE__ */ jsx("span", { style: { width: 8, height: 8, borderRadius: "50%", backgroundColor: statusLabel.dot, flexShrink: 0 } }),
1132
1131
  statusLabel.text
1133
1132
  ] })
1134
1133
  ] }),
1135
- connectionStatus === "connecting" && !showWelcome && !showOfflineForm && /* @__PURE__ */ jsxs("div", { style: { fontSize: 11, opacity: 0.7, display: "flex", alignItems: "center", gap: 4 }, children: [
1134
+ connectionStatus === "connecting" && !showWelcome && !showOfflineForm && /* @__PURE__ */ jsxs("div", { style: { fontSize: 11, color: "var(--sk-text-secondary, #6b7280)", display: "flex", alignItems: "center", gap: 4 }, children: [
1136
1135
  /* @__PURE__ */ jsx("span", { style: { animation: "chatDot 1s infinite ease-in-out" }, children: "\u25CF" }),
1137
1136
  "Connecting"
1138
1137
  ] })
@@ -1213,7 +1212,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1213
1212
  value: offlineForm[field.name],
1214
1213
  onChange: (e) => setOfflineForm((prev) => ({ ...prev, [field.name]: e.target.value })),
1215
1214
  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" },
1215
+ style: { width: "100%", padding: "10px 12px", borderRadius: 8, border: "1px solid var(--sk-border, #e5e7eb)", fontSize: 16, outline: "none", boxSizing: "border-box" },
1217
1216
  onFocus: (e) => e.currentTarget.style.borderColor = primaryColor,
1218
1217
  onBlur: (e) => e.currentTarget.style.borderColor = "var(--sk-border, #e5e7eb)"
1219
1218
  }
@@ -1226,7 +1225,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1226
1225
  onChange: (e) => setOfflineForm((prev) => ({ ...prev, message: e.target.value })),
1227
1226
  required: true,
1228
1227
  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" },
1228
+ 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
1229
  onFocus: (e) => e.currentTarget.style.borderColor = primaryColor,
1231
1230
  onBlur: (e) => e.currentTarget.style.borderColor = "var(--sk-border, #e5e7eb)"
1232
1231
  }
@@ -1326,7 +1325,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1326
1325
  /* @__PURE__ */ jsxs(
1327
1326
  "div",
1328
1327
  {
1329
- style: { flex: 1, overflowY: "auto", padding: 16, display: "flex", flexDirection: "column", gap: 12, backgroundColor: "var(--sk-bg-elevated, #f9fafb)" },
1328
+ style: { flex: 1, overflowY: "auto", padding: 16, display: "flex", flexDirection: "column", gap: 12, backgroundColor: "transparent" },
1330
1329
  children: [
1331
1330
  messages.map((message) => {
1332
1331
  const isAssistant = message.role === "assistant" || message.role === "agent";
@@ -1336,17 +1335,19 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1336
1335
  style: {
1337
1336
  maxWidth: "80%",
1338
1337
  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)",
1338
+ borderRadius: message.role === "user" ? "18px 18px 6px 18px" : message.role === "system" ? "10px" : "18px 18px 18px 6px",
1339
+ // Bubbles on glass stay near-opaque: the glass behind them
1340
+ // is for depth, never for the text to read against.
1341
+ backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "color-mix(in srgb, var(--sk-text-primary, #111827) 7%, transparent)" : BUBBLE_BG,
1341
1342
  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)",
1343
+ border: message.role === "user" || message.role === "system" ? "none" : HAIRLINE,
1344
+ 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
1345
  fontSize: message.role === "system" ? 13 : 14,
1344
1346
  fontStyle: message.role === "system" ? "italic" : "normal",
1345
1347
  lineHeight: isAssistant ? 1.6 : 1.5,
1346
1348
  whiteSpace: isAssistant ? "normal" : "pre-wrap",
1347
1349
  wordBreak: "break-word",
1348
- textAlign: isAssistant ? "left" : void 0,
1349
- borderLeft: isAssistant ? `3px solid ${hexAlpha("--sk-primary-rgb", 0.2, primaryRgb)}` : void 0
1350
+ textAlign: isAssistant ? "left" : void 0
1350
1351
  },
1351
1352
  children: [
1352
1353
  message.agentName && message.role === "agent" && /* @__PURE__ */ jsx("div", { style: { fontSize: 12, opacity: 0.6, marginBottom: 4 }, children: message.agentName }),
@@ -1473,9 +1474,10 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1473
1474
  {
1474
1475
  style: {
1475
1476
  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)",
1477
+ borderRadius: "18px 18px 18px 6px",
1478
+ backgroundColor: BUBBLE_BG,
1479
+ border: HAIRLINE,
1480
+ boxShadow: "0 1px 2px rgba(0,0,0,0.06)",
1479
1481
  display: "flex",
1480
1482
  gap: 4,
1481
1483
  color: "var(--sk-text-tertiary, #9ca3af)"
@@ -1495,7 +1497,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1495
1497
  /* @__PURE__ */ jsx("span", { style: { fontSize: 13, color: "var(--sk-error, #dc2626)" }, children: "Failed to send" }),
1496
1498
  /* @__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
1499
  ] }),
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: [
1500
+ /* @__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
1501
  /* @__PURE__ */ jsx(
1500
1502
  "input",
1501
1503
  {
@@ -1511,15 +1513,20 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1511
1513
  disabled: isLoading,
1512
1514
  style: {
1513
1515
  flex: 1,
1514
- padding: "10px 14px",
1516
+ minWidth: 0,
1517
+ padding: "10px 16px",
1515
1518
  borderRadius: 24,
1516
- border: "1px solid var(--sk-border, #e5e7eb)",
1517
- fontSize: 14,
1519
+ border: HAIRLINE,
1520
+ backgroundColor: BUBBLE_BG,
1521
+ color: "var(--sk-text-primary, #111827)",
1522
+ // 16px: iOS Safari zooms the page into any focused field under 16px.
1523
+ fontSize: 16,
1518
1524
  outline: "none",
1525
+ boxShadow: "inset 0 1px 2px rgba(0,0,0,0.04)",
1519
1526
  transition: "border-color 0.2s"
1520
1527
  },
1521
1528
  onFocus: (e) => e.currentTarget.style.borderColor = primaryColor,
1522
- onBlur: (e) => e.currentTarget.style.borderColor = "var(--sk-border, #e5e7eb)"
1529
+ onBlur: (e) => e.currentTarget.style.borderColor = ""
1523
1530
  }
1524
1531
  ),
1525
1532
  /* @__PURE__ */ jsx(
@@ -1549,33 +1556,38 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1549
1556
  const ChatPopup = isOpen && /* @__PURE__ */ jsxs(
1550
1557
  "div",
1551
1558
  {
1559
+ "data-sk-echo-panel": true,
1560
+ className: "sk-glass sk-glass--panel",
1552
1561
  style: {
1553
1562
  position: "fixed",
1554
1563
  ...placement.popup,
1555
1564
  width: "380px",
1556
1565
  maxWidth: "calc(100vw - 40px)",
1557
1566
  height: "520px",
1558
- backgroundColor: "var(--sk-bg, #ffffff)",
1559
- borderRadius: "16px",
1560
- boxShadow: "0 8px 32px rgba(0, 0, 0, 0.2)",
1567
+ color: "var(--sk-text-primary, #111827)",
1568
+ borderRadius: "24px",
1561
1569
  display: "flex",
1562
1570
  flexDirection: "column",
1563
1571
  overflow: "hidden",
1564
1572
  zIndex: placement.zIndex.popup,
1565
- animation: "chatSlideUp 0.3s ease-out"
1573
+ transformOrigin: position === "bottom-left" ? "bottom left" : "bottom right",
1574
+ animation: "chatGlassIn 0.34s cubic-bezier(0.2, 0.9, 0.3, 1.05)"
1566
1575
  },
1567
1576
  children: [
1568
1577
  Header,
1569
1578
  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: [
1579
+ showPoweredBy && /* @__PURE__ */ jsxs("div", { style: { padding: "0 0 8px", textAlign: "center", fontSize: 11, color: "var(--sk-text-tertiary, #9ca3af)", backgroundColor: "transparent" }, children: [
1571
1580
  "Powered by",
1572
1581
  " ",
1573
1582
  /* @__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
1583
  ] }),
1575
1584
  /* @__PURE__ */ jsx("style", { children: `
1576
- @keyframes chatSlideUp {
1577
- from { opacity: 0; transform: translateY(20px); }
1578
- to { opacity: 1; transform: translateY(0); }
1585
+ @keyframes chatGlassIn {
1586
+ from { opacity: 0; transform: translateY(12px) scale(0.94); }
1587
+ to { opacity: 1; transform: translateY(0) scale(1); }
1588
+ }
1589
+ @media (prefers-reduced-motion: reduce) {
1590
+ [data-sk-echo-panel] { animation: none !important; }
1579
1591
  }
1580
1592
  @keyframes chatDot {
1581
1593
  0%, 80%, 100% { opacity: 0.3; }
@@ -1602,11 +1614,12 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1602
1614
  }
1603
1615
  );
1604
1616
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1617
+ /* @__PURE__ */ jsx(GlassStyles, {}),
1605
1618
  ChatPopup,
1606
1619
  ChatButton
1607
1620
  ] });
1608
1621
  }
1609
1622
 
1610
1623
  export { ChatWidget };
1611
- //# sourceMappingURL=chunk-NYNL6UQV.mjs.map
1612
- //# sourceMappingURL=chunk-NYNL6UQV.mjs.map
1624
+ //# sourceMappingURL=chunk-4EJI4IOX.mjs.map
1625
+ //# sourceMappingURL=chunk-4EJI4IOX.mjs.map