@sonordev/site-kit 6.1.0 → 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.
- package/agent-manifest.json +2 -2
- package/dist/{AnalyticsProvider-V6G45QG7.js → AnalyticsProvider-QK6XBDEJ.js} +10 -10
- package/dist/{AnalyticsProvider-V6G45QG7.js.map → AnalyticsProvider-QK6XBDEJ.js.map} +1 -1
- package/dist/{AnalyticsProvider-PO6SSJG2.mjs → AnalyticsProvider-TIJWTISP.mjs} +6 -6
- package/dist/{AnalyticsProvider-PO6SSJG2.mjs.map → AnalyticsProvider-TIJWTISP.mjs.map} +1 -1
- package/dist/{ArticleViewTracker-FE2YWHX4.js → ArticleViewTracker-ALE672ZR.js} +6 -6
- package/dist/{ArticleViewTracker-FE2YWHX4.js.map → ArticleViewTracker-ALE672ZR.js.map} +1 -1
- package/dist/{ArticleViewTracker-CML36HJZ.mjs → ArticleViewTracker-I66RBWDK.mjs} +5 -5
- package/dist/{ArticleViewTracker-CML36HJZ.mjs.map → ArticleViewTracker-I66RBWDK.mjs.map} +1 -1
- package/dist/ChatWidget-566CQUN6.js +26 -0
- package/dist/{ChatWidget-YL34KOZM.js.map → ChatWidget-566CQUN6.js.map} +1 -1
- package/dist/ChatWidget-LNOY4TUZ.mjs +17 -0
- package/dist/{ChatWidget-GVNDKGUU.mjs.map → ChatWidget-LNOY4TUZ.mjs.map} +1 -1
- package/dist/EngageWidget-DF47YUHQ.js +21 -0
- package/dist/{EngageWidget-IQRKRYPG.js.map → EngageWidget-DF47YUHQ.js.map} +1 -1
- package/dist/EngageWidget-IGF7SC3R.mjs +12 -0
- package/dist/{EngageWidget-465O5XUV.mjs.map → EngageWidget-IGF7SC3R.mjs.map} +1 -1
- package/dist/{FileField-FWKSBFRX.mjs → FileField-AG63W2BC.mjs} +5 -5
- package/dist/{FileField-FWKSBFRX.mjs.map → FileField-AG63W2BC.mjs.map} +1 -1
- package/dist/{FileField-F3PFKMIF.js → FileField-IK6E5IOC.js} +6 -6
- package/dist/{FileField-F3PFKMIF.js.map → FileField-IK6E5IOC.js.map} +1 -1
- package/dist/{FormSpotlight-DJQ3P3EX.js → FormSpotlight-6MUDJWW5.js} +9 -9
- package/dist/{FormSpotlight-DJQ3P3EX.js.map → FormSpotlight-6MUDJWW5.js.map} +1 -1
- package/dist/{FormSpotlight-K4LP2DMP.mjs → FormSpotlight-H7V4GBXG.mjs} +3 -3
- package/dist/{FormSpotlight-K4LP2DMP.mjs.map → FormSpotlight-H7V4GBXG.mjs.map} +1 -1
- package/dist/{FormStage-YKVTHPKV.mjs → FormStage-ACETL7SD.mjs} +3 -3
- package/dist/{FormStage-YKVTHPKV.mjs.map → FormStage-ACETL7SD.mjs.map} +1 -1
- package/dist/{FormStage-QMGZ3MOT.js → FormStage-ZXZRZ2LS.js} +9 -9
- package/dist/{FormStage-QMGZ3MOT.js.map → FormStage-ZXZRZ2LS.js.map} +1 -1
- package/dist/ManagedForm-4U54NPW2.js +25 -0
- package/dist/{ManagedForm-MLPETHSQ.js.map → ManagedForm-4U54NPW2.js.map} +1 -1
- package/dist/ManagedForm-MOBWSG4D.mjs +16 -0
- package/dist/{ManagedForm-P3L34ALG.mjs.map → ManagedForm-MOBWSG4D.mjs.map} +1 -1
- package/dist/{ManagedNewsletterForm-R4LLZBRQ.js → ManagedNewsletterForm-5LBGBE2F.js} +8 -8
- package/dist/{ManagedNewsletterForm-R4LLZBRQ.js.map → ManagedNewsletterForm-5LBGBE2F.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-C5YQH7MP.mjs → ManagedNewsletterForm-OV3OEMUP.mjs} +7 -7
- package/dist/{ManagedNewsletterForm-C5YQH7MP.mjs.map → ManagedNewsletterForm-OV3OEMUP.mjs.map} +1 -1
- package/dist/{SignalCore-CLELIKFI.js → SignalCore-QCVR7TZV.js} +11 -11
- package/dist/{SignalCore-CLELIKFI.js.map → SignalCore-QCVR7TZV.js.map} +1 -1
- package/dist/{SignalCore-BNYNS6P7.mjs → SignalCore-XM2MHEGR.mjs} +5 -5
- package/dist/{SignalCore-BNYNS6P7.mjs.map → SignalCore-XM2MHEGR.mjs.map} +1 -1
- package/dist/SitemapSync-74EVNOFQ.mjs +9 -0
- package/dist/{SitemapSync-SIKJCK7N.mjs.map → SitemapSync-74EVNOFQ.mjs.map} +1 -1
- package/dist/SitemapSync-BQFZAE3X.js +18 -0
- package/dist/{SitemapSync-P7XWL6VV.js.map → SitemapSync-BQFZAE3X.js.map} +1 -1
- package/dist/analytics/index.js +9 -9
- package/dist/analytics/index.mjs +4 -4
- package/dist/articles/index.js +1 -1
- package/dist/articles/index.mjs +1 -1
- package/dist/articles/server-ui.js +1 -1
- package/dist/articles/server-ui.mjs +1 -1
- package/dist/brand/extract-brand-profile.d.ts +2 -7
- package/dist/brand/extract-brand-profile.d.ts.map +1 -1
- package/dist/{chunk-SDGS2R5O.js → chunk-2SLA2LOD.js} +12 -12
- package/dist/{chunk-SDGS2R5O.js.map → chunk-2SLA2LOD.js.map} +1 -1
- package/dist/{chunk-QC6VQ2IW.mjs → chunk-3MLVI5DH.mjs} +3 -3
- package/dist/{chunk-QC6VQ2IW.mjs.map → chunk-3MLVI5DH.mjs.map} +1 -1
- package/dist/{chunk-TA3TQTDA.mjs → chunk-3RISRHOK.mjs} +8 -8
- package/dist/{chunk-TA3TQTDA.mjs.map → chunk-3RISRHOK.mjs.map} +1 -1
- package/dist/chunk-5FBALULE.mjs +6 -0
- package/dist/{chunk-ACKFL6WA.mjs.map → chunk-5FBALULE.mjs.map} +1 -1
- package/dist/{chunk-ESAPT5JT.mjs → chunk-5IQOPL7T.mjs} +3 -3
- package/dist/{chunk-ESAPT5JT.mjs.map → chunk-5IQOPL7T.mjs.map} +1 -1
- package/dist/{chunk-YS7Y2PQG.js → chunk-5OUOVPXC.js} +8 -8
- package/dist/{chunk-YS7Y2PQG.js.map → chunk-5OUOVPXC.js.map} +1 -1
- package/dist/{chunk-YP5WAFTI.mjs → chunk-6FIIA6ME.mjs} +4 -4
- package/dist/{chunk-YP5WAFTI.mjs.map → chunk-6FIIA6ME.mjs.map} +1 -1
- package/dist/{chunk-JOYMIGR2.mjs → chunk-7K6L33BX.mjs} +22 -22
- package/dist/{chunk-RVFOUPK4.js → chunk-7VRK3DWU.js} +6 -6
- package/dist/{chunk-RVFOUPK4.js.map → chunk-7VRK3DWU.js.map} +1 -1
- package/dist/{chunk-IDJY2JWU.js → chunk-AGEE4CGH.js} +5 -5
- package/dist/{chunk-IDJY2JWU.js.map → chunk-AGEE4CGH.js.map} +1 -1
- package/dist/{chunk-JS75ORH7.js → chunk-ATPQ6264.js} +24 -24
- package/dist/{chunk-LF44SJPP.js → chunk-BGBP4UN4.js} +4 -4
- package/dist/{chunk-LF44SJPP.js.map → chunk-BGBP4UN4.js.map} +1 -1
- package/dist/{chunk-RGCUND5Q.mjs → chunk-CI7T4ZRP.mjs} +4 -4
- package/dist/{chunk-RGCUND5Q.mjs.map → chunk-CI7T4ZRP.mjs.map} +1 -1
- package/dist/{chunk-KDNB6BYH.js → chunk-CTAYH725.js} +11 -11
- package/dist/{chunk-KDNB6BYH.js.map → chunk-CTAYH725.js.map} +1 -1
- package/dist/{chunk-YKNXBWPZ.mjs → chunk-D5KKVWZK.mjs} +3 -3
- package/dist/{chunk-YKNXBWPZ.mjs.map → chunk-D5KKVWZK.mjs.map} +1 -1
- package/dist/{chunk-XGELGOF6.mjs → chunk-DVZ4BMXX.mjs} +7 -7
- package/dist/{chunk-XGELGOF6.mjs.map → chunk-DVZ4BMXX.mjs.map} +1 -1
- package/dist/{chunk-FQAZBJJO.mjs → chunk-ESPOINPT.mjs} +3 -3
- package/dist/{chunk-FQAZBJJO.mjs.map → chunk-ESPOINPT.mjs.map} +1 -1
- package/dist/{chunk-XOYQKFKI.mjs → chunk-EVETX2XF.mjs} +4 -4
- package/dist/{chunk-XOYQKFKI.mjs.map → chunk-EVETX2XF.mjs.map} +1 -1
- package/dist/{chunk-ITVQV7DK.js → chunk-EVKP4SOM.js} +10 -10
- package/dist/{chunk-ITVQV7DK.js.map → chunk-EVKP4SOM.js.map} +1 -1
- package/dist/{chunk-CJX2MC62.mjs → chunk-EXVHO3CZ.mjs} +3 -3
- package/dist/{chunk-CJX2MC62.mjs.map → chunk-EXVHO3CZ.mjs.map} +1 -1
- package/dist/{chunk-3DXJHMQM.mjs → chunk-GYKFHQSZ.mjs} +3 -3
- package/dist/{chunk-3DXJHMQM.mjs.map → chunk-GYKFHQSZ.mjs.map} +1 -1
- package/dist/{chunk-H5FCJBAN.mjs → chunk-I4PUQYBI.mjs} +3 -3
- package/dist/{chunk-H5FCJBAN.mjs.map → chunk-I4PUQYBI.mjs.map} +1 -1
- package/dist/{chunk-DQXEYUTD.js → chunk-I7KIVKVW.js} +3 -3
- package/dist/{chunk-DQXEYUTD.js.map → chunk-I7KIVKVW.js.map} +1 -1
- package/dist/{chunk-L3GAEBJU.mjs → chunk-IUNFAKOS.mjs} +3 -3
- package/dist/{chunk-L3GAEBJU.mjs.map → chunk-IUNFAKOS.mjs.map} +1 -1
- package/dist/{chunk-ZQJGCQHC.js → chunk-IWHAJBYL.js} +15 -15
- package/dist/{chunk-ZQJGCQHC.js.map → chunk-IWHAJBYL.js.map} +1 -1
- package/dist/{chunk-AQUWWATH.js → chunk-IZRVSIOK.js} +4 -4
- package/dist/{chunk-AQUWWATH.js.map → chunk-IZRVSIOK.js.map} +1 -1
- package/dist/{chunk-TMNFPVK5.js → chunk-JAA42HR7.js} +7 -7
- package/dist/{chunk-TMNFPVK5.js.map → chunk-JAA42HR7.js.map} +1 -1
- package/dist/{chunk-Y53BIB7A.js → chunk-JSM4AYSZ.js} +14 -14
- package/dist/{chunk-Y53BIB7A.js.map → chunk-JSM4AYSZ.js.map} +1 -1
- package/dist/{chunk-MZK5APTV.js → chunk-KDLN2MR5.js} +18 -18
- package/dist/{chunk-MZK5APTV.js.map → chunk-KDLN2MR5.js.map} +1 -1
- package/dist/{chunk-BGOPF6J2.js → chunk-KEEZX6Q4.js} +3 -3
- package/dist/{chunk-BGOPF6J2.js.map → chunk-KEEZX6Q4.js.map} +1 -1
- package/dist/{chunk-6OSHL7H5.mjs → chunk-LXBPTKYT.mjs} +4 -4
- package/dist/{chunk-6OSHL7H5.mjs.map → chunk-LXBPTKYT.mjs.map} +1 -1
- package/dist/chunk-M2N7NY3V.js +103 -0
- package/dist/chunk-M2N7NY3V.js.map +1 -0
- package/dist/{chunk-36NE4PSS.js → chunk-MQEVQ5YB.js} +3 -3
- package/dist/{chunk-36NE4PSS.js.map → chunk-MQEVQ5YB.js.map} +1 -1
- package/dist/{chunk-DXBSBWSS.js → chunk-MTHMOXZF.js} +6 -6
- package/dist/{chunk-DXBSBWSS.js.map → chunk-MTHMOXZF.js.map} +1 -1
- package/dist/{chunk-BDSNEB3O.mjs → chunk-NRT7MOEO.mjs} +4 -4
- package/dist/{chunk-BDSNEB3O.mjs.map → chunk-NRT7MOEO.mjs.map} +1 -1
- package/dist/chunk-NYXENHD2.mjs +96 -0
- package/dist/chunk-NYXENHD2.mjs.map +1 -0
- package/dist/chunk-OI3FCJSP.js +8 -0
- package/dist/{chunk-OXA4ZSX2.js.map → chunk-OI3FCJSP.js.map} +1 -1
- package/dist/{chunk-F6BYWNHU.mjs → chunk-OUP6UL74.mjs} +3 -3
- package/dist/{chunk-F6BYWNHU.mjs.map → chunk-OUP6UL74.mjs.map} +1 -1
- package/dist/{chunk-OQWAJBYA.mjs → chunk-OWEJXMKY.mjs} +3 -3
- package/dist/{chunk-OQWAJBYA.mjs.map → chunk-OWEJXMKY.mjs.map} +1 -1
- package/dist/{chunk-XKJLJLQ4.js → chunk-OZTVJSFX.js} +107 -49
- package/dist/chunk-OZTVJSFX.js.map +1 -0
- package/dist/{chunk-QF3XTEXV.js → chunk-P4J3WG6C.js} +4 -4
- package/dist/{chunk-QF3XTEXV.js.map → chunk-P4J3WG6C.js.map} +1 -1
- package/dist/{chunk-4EJI4IOX.mjs → chunk-PTQHPWEK.mjs} +97 -39
- package/dist/chunk-PTQHPWEK.mjs.map +1 -0
- package/dist/{chunk-OF4V7CSP.mjs → chunk-QSN2QST7.mjs} +3 -3
- package/dist/{chunk-OF4V7CSP.mjs.map → chunk-QSN2QST7.mjs.map} +1 -1
- package/dist/{chunk-NMKUYGKK.mjs → chunk-RGXYE2ZI.mjs} +4 -4
- package/dist/{chunk-NMKUYGKK.mjs.map → chunk-RGXYE2ZI.mjs.map} +1 -1
- package/dist/{chunk-NNZDWY3L.mjs → chunk-RH4XEXTK.mjs} +3 -3
- package/dist/{chunk-NDVKIDMN.js → chunk-RQG7I6O4.js} +4 -4
- package/dist/{chunk-NDVKIDMN.js.map → chunk-RQG7I6O4.js.map} +1 -1
- package/dist/{chunk-VK74LC4H.js → chunk-S6CMQTVZ.js} +5 -5
- package/dist/{chunk-VK74LC4H.js.map → chunk-S6CMQTVZ.js.map} +1 -1
- package/dist/{chunk-5YA6SI4Z.mjs → chunk-TIFVAASU.mjs} +2 -2
- package/dist/{chunk-K4LLYQFZ.js → chunk-VDGCZVUF.js} +14 -14
- package/dist/{chunk-K4LLYQFZ.js.map → chunk-VDGCZVUF.js.map} +1 -1
- package/dist/{chunk-I4RU3RCS.js → chunk-XCOMBHLF.js} +8 -8
- package/dist/{chunk-I4RU3RCS.js.map → chunk-XCOMBHLF.js.map} +1 -1
- package/dist/{chunk-I7AZC5ZQ.js → chunk-XXSSUCJB.js} +2 -2
- package/dist/{chunk-ZQSJK65K.mjs → chunk-YEHC7VMW.mjs} +3 -3
- package/dist/{chunk-ZQSJK65K.mjs.map → chunk-YEHC7VMW.mjs.map} +1 -1
- package/dist/{chunk-KKTSAT7I.mjs → chunk-YK7SEUFJ.mjs} +4 -4
- package/dist/{chunk-KKTSAT7I.mjs.map → chunk-YK7SEUFJ.mjs.map} +1 -1
- package/dist/{chunk-NN2YE5WT.js → chunk-ZUQSVCMD.js} +3 -3
- package/dist/cli/index.js +211 -211
- package/dist/cli/index.mjs +151 -151
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/commerce/index.js +57 -57
- package/dist/commerce/index.mjs +5 -5
- package/dist/cta-bar/CtaBar.d.ts +21 -7
- package/dist/cta-bar/CtaBar.d.ts.map +1 -1
- package/dist/cta-bar/index.js +9 -12
- package/dist/cta-bar/index.js.map +1 -1
- package/dist/cta-bar/index.mjs +9 -12
- package/dist/cta-bar/index.mjs.map +1 -1
- package/dist/cta-bar/styles.d.ts.map +1 -1
- package/dist/engage/ChatWidget.d.ts.map +1 -1
- package/dist/engage/EchoUiActions.d.ts +5 -2
- package/dist/engage/EchoUiActions.d.ts.map +1 -1
- package/dist/engage/brand-color.d.ts +37 -0
- package/dist/engage/brand-color.d.ts.map +1 -0
- package/dist/engage/index.js +11 -10
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +8 -7
- package/dist/engage/index.mjs.map +1 -1
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/index.js +16 -16
- package/dist/forms/index.mjs +9 -9
- package/dist/forms/server.js +10 -10
- package/dist/forms/server.mjs +8 -8
- package/dist/forms/static.js +7 -7
- package/dist/forms/static.mjs +6 -6
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +63 -63
- package/dist/index.mjs +9 -9
- package/dist/layout/client.js +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +10 -10
- package/dist/layout/index.mjs +8 -8
- package/dist/{lib-6HOOMENJ.js → lib-6GWWPDJR.js} +7 -7
- package/dist/lib-BD4KKQBI.mjs +4 -0
- package/dist/{lib-R7IQ4ZHE.mjs → lib-N5PD6JNJ.mjs} +2 -2
- package/dist/{lib-BGAWCSUH.js → lib-WFB5RLEQ.js} +8 -8
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/client.js +5 -5
- package/dist/seo/client.mjs +4 -4
- package/dist/seo/index.js +5 -5
- package/dist/seo/index.mjs +4 -4
- package/dist/seo/register-sitemap-cli.js +12 -93
- package/dist/seo/register-sitemap-cli.mjs +2 -83
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/shared/color.d.ts +39 -0
- package/dist/shared/color.d.ts.map +1 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sync/index.js +17 -17
- package/dist/sync/index.mjs +4 -4
- package/dist/{web-vitals.attribution-7LKLZ5GR.mjs → web-vitals.attribution-CHXXWO72.mjs} +3 -3
- package/dist/web-vitals.attribution-CHXXWO72.mjs.map +1 -0
- package/dist/{web-vitals.attribution-ONVYQNRB.js → web-vitals.attribution-SQVZNHN3.js} +3 -3
- package/dist/web-vitals.attribution-SQVZNHN3.js.map +1 -0
- package/package.json +1 -1
- package/skills/site-kit/SKILL.md +3 -2
- package/dist/ChatWidget-GVNDKGUU.mjs +0 -16
- package/dist/ChatWidget-YL34KOZM.js +0 -25
- package/dist/EngageWidget-465O5XUV.mjs +0 -12
- package/dist/EngageWidget-IQRKRYPG.js +0 -21
- package/dist/ManagedForm-MLPETHSQ.js +0 -25
- package/dist/ManagedForm-P3L34ALG.mjs +0 -16
- package/dist/SitemapSync-P7XWL6VV.js +0 -18
- package/dist/SitemapSync-SIKJCK7N.mjs +0 -9
- package/dist/chunk-4EJI4IOX.mjs.map +0 -1
- package/dist/chunk-ACKFL6WA.mjs +0 -6
- package/dist/chunk-OXA4ZSX2.js +0 -8
- package/dist/chunk-XKJLJLQ4.js.map +0 -1
- package/dist/lib-RSDMEKDQ.mjs +0 -4
- package/dist/web-vitals.attribution-7LKLZ5GR.mjs.map +0 -1
- package/dist/web-vitals.attribution-ONVYQNRB.js.map +0 -1
|
@@ -1,12 +1,65 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { chatLauncherStyles } from './chunk-4U5NCKQY.mjs';
|
|
3
3
|
import { GlassStyles } from './chunk-OBKS3CPP.mjs';
|
|
4
|
-
import { useForm } from './chunk-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { useForm } from './chunk-6FIIA6ME.mjs';
|
|
5
|
+
import { parseColor, relativeLuminance, DARK_LUMINANCE, contrastRatio } from './chunk-NYXENHD2.mjs';
|
|
6
|
+
import { sonorFetch } from './chunk-CI7T4ZRP.mjs';
|
|
7
|
+
import { useState, useRef, useEffect, useLayoutEffect, useCallback } from 'react';
|
|
7
8
|
import ReactMarkdown from 'react-markdown';
|
|
8
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
10
|
|
|
11
|
+
// src/engage/brand-color.ts
|
|
12
|
+
var TEXT_CONTRAST = 4.5;
|
|
13
|
+
var RESTING_TINT = 0.082;
|
|
14
|
+
var UNREADABLE_BRAND_SHARE = 40;
|
|
15
|
+
var WHITE = { r: 255, g: 255, b: 255 };
|
|
16
|
+
var BLACK = { r: 0, g: 0, b: 0 };
|
|
17
|
+
function mix(a, b, share) {
|
|
18
|
+
return {
|
|
19
|
+
r: a.r * share + b.r * (1 - share),
|
|
20
|
+
g: a.g * share + b.g * (1 - share),
|
|
21
|
+
b: a.b * share + b.b * (1 - share)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function round({ r, g, b }) {
|
|
25
|
+
const c = (v) => Math.round(Math.min(255, Math.max(0, v)));
|
|
26
|
+
return { r: c(r), g: c(g), b: c(b) };
|
|
27
|
+
}
|
|
28
|
+
function toHex(rgb) {
|
|
29
|
+
const { r, g, b } = round(rgb);
|
|
30
|
+
return `#${[r, g, b].map((c) => c.toString(16).padStart(2, "0")).join("")}`;
|
|
31
|
+
}
|
|
32
|
+
function isLightColor(color) {
|
|
33
|
+
const rgb = parseColor(color);
|
|
34
|
+
if (!rgb) return false;
|
|
35
|
+
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3 > 160;
|
|
36
|
+
}
|
|
37
|
+
function onBrandColor(brand) {
|
|
38
|
+
return isLightColor(brand) ? "#1a1a1a" : "white";
|
|
39
|
+
}
|
|
40
|
+
function rgbTriplet(color, fallback = "37, 99, 235") {
|
|
41
|
+
const rgb = parseColor(color);
|
|
42
|
+
if (!rgb) return fallback;
|
|
43
|
+
const { r, g, b } = round(rgb);
|
|
44
|
+
return `${r}, ${g}, ${b}`;
|
|
45
|
+
}
|
|
46
|
+
function brandTextColor(brand, panelTint) {
|
|
47
|
+
const tint = panelTint && parseColor(panelTint) || WHITE;
|
|
48
|
+
const pole = relativeLuminance(tint) < DARK_LUMINANCE ? WHITE : BLACK;
|
|
49
|
+
const rgb = parseColor(brand);
|
|
50
|
+
if (!rgb) return `color-mix(in srgb, ${brand} ${UNREADABLE_BRAND_SHARE}%, ${toHex(pole)})`;
|
|
51
|
+
const surface = relativeLuminance(mix(rgb, tint, RESTING_TINT));
|
|
52
|
+
const reads = (c) => contrastRatio(relativeLuminance(c), surface) >= TEXT_CONTRAST;
|
|
53
|
+
if (reads(rgb)) return brand;
|
|
54
|
+
let lo = 0;
|
|
55
|
+
let hi = 1;
|
|
56
|
+
for (let i = 0; i < 12; i++) {
|
|
57
|
+
const share = (lo + hi) / 2;
|
|
58
|
+
if (reads(round(mix(rgb, pole, share)))) lo = share;
|
|
59
|
+
else hi = share;
|
|
60
|
+
}
|
|
61
|
+
return toHex(mix(rgb, pole, lo));
|
|
62
|
+
}
|
|
10
63
|
function alpha(rgb, a) {
|
|
11
64
|
return `rgba(var(--sk-primary-rgb, ${rgb}), ${a})`;
|
|
12
65
|
}
|
|
@@ -192,7 +245,7 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
|
|
|
192
245
|
borderRadius: 8,
|
|
193
246
|
border: "none",
|
|
194
247
|
backgroundColor: primaryColor,
|
|
195
|
-
color:
|
|
248
|
+
color: onBrandColor(primaryColor),
|
|
196
249
|
fontSize: 13.5,
|
|
197
250
|
fontWeight: 600,
|
|
198
251
|
cursor: isSubmitting ? "default" : "pointer",
|
|
@@ -205,7 +258,7 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
|
|
|
205
258
|
}
|
|
206
259
|
);
|
|
207
260
|
}
|
|
208
|
-
function SuggestActionChip({ action, message, primaryColor, primaryRgb, onSuggest }) {
|
|
261
|
+
function SuggestActionChip({ action, message, primaryColor, primaryRgb, brandText, onSuggest }) {
|
|
209
262
|
return /* @__PURE__ */ jsx(
|
|
210
263
|
"button",
|
|
211
264
|
{
|
|
@@ -216,7 +269,7 @@ function SuggestActionChip({ action, message, primaryColor, primaryRgb, onSugges
|
|
|
216
269
|
borderRadius: 16,
|
|
217
270
|
border: `1px solid ${primaryColor}`,
|
|
218
271
|
backgroundColor: alpha(primaryRgb, 0.063),
|
|
219
|
-
color:
|
|
272
|
+
color: brandText,
|
|
220
273
|
fontSize: 13,
|
|
221
274
|
cursor: "pointer"
|
|
222
275
|
},
|
|
@@ -224,7 +277,7 @@ function SuggestActionChip({ action, message, primaryColor, primaryRgb, onSugges
|
|
|
224
277
|
}
|
|
225
278
|
);
|
|
226
279
|
}
|
|
227
|
-
function EchoUiActions({ actions, primaryColor, primaryRgb, onSuggest }) {
|
|
280
|
+
function EchoUiActions({ actions, primaryColor, primaryRgb, brandText, onSuggest }) {
|
|
228
281
|
if (!actions?.length) return null;
|
|
229
282
|
const chips = actions.filter((a) => a?.type === "suggest_action");
|
|
230
283
|
const forms = actions.filter((a) => a?.type === "show_form");
|
|
@@ -256,6 +309,7 @@ function EchoUiActions({ actions, primaryColor, primaryRgb, onSuggest }) {
|
|
|
256
309
|
message: label,
|
|
257
310
|
primaryColor,
|
|
258
311
|
primaryRgb,
|
|
312
|
+
brandText,
|
|
259
313
|
onSuggest
|
|
260
314
|
},
|
|
261
315
|
`chip-${i}`
|
|
@@ -300,21 +354,18 @@ function userRequestedHandoff(text) {
|
|
|
300
354
|
}
|
|
301
355
|
var BUBBLE_BG = "color-mix(in srgb, var(--sk-bg, #ffffff) 94%, transparent)";
|
|
302
356
|
var HAIRLINE = "1px solid color-mix(in srgb, var(--sk-text-primary, #111827) 9%, transparent)";
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
const b = num & 255;
|
|
308
|
-
return (r * 299 + g * 587 + b * 114) / 1e3 > 160;
|
|
357
|
+
var ECHO_STYLE_HREF = "sk-echo";
|
|
358
|
+
var ECHO_CSS = `
|
|
359
|
+
@media print {
|
|
360
|
+
[data-sk-echo-launcher], [data-sk-echo-panel] { display: none !important; }
|
|
309
361
|
}
|
|
362
|
+
@media (prefers-reduced-motion: reduce) {
|
|
363
|
+
[data-sk-echo-panel] { animation: none !important; }
|
|
364
|
+
}
|
|
365
|
+
`;
|
|
310
366
|
function staticPrimaryColor(apiFallback, hardDefault) {
|
|
311
367
|
return apiFallback || hardDefault;
|
|
312
368
|
}
|
|
313
|
-
function hexToRgbString(hex, fallback = "37, 99, 235") {
|
|
314
|
-
const match = hex.replace("#", "").match(/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);
|
|
315
|
-
if (!match) return fallback;
|
|
316
|
-
return `${parseInt(match[1], 16)}, ${parseInt(match[2], 16)}, ${parseInt(match[3], 16)}`;
|
|
317
|
-
}
|
|
318
369
|
function hexAlpha(rgbVar, alpha2, fallbackRgb = "37, 99, 235") {
|
|
319
370
|
return `rgba(var(${rgbVar}, ${fallbackRgb}), ${alpha2})`;
|
|
320
371
|
}
|
|
@@ -367,11 +418,19 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
367
418
|
const primaryFallback = staticPrimaryColor(widgetConfig?.brand_primary || config?.buttonColor, "#2563eb");
|
|
368
419
|
const [primaryFromCssVar, setPrimaryFromCssVar] = useState(null);
|
|
369
420
|
const primaryColor = primaryFromCssVar ?? primaryFallback;
|
|
370
|
-
const primaryRgb =
|
|
421
|
+
const primaryRgb = rgbTriplet(primaryColor);
|
|
371
422
|
useEffect(() => {
|
|
372
423
|
const cssValue = getComputedStyle(document.documentElement).getPropertyValue("--sk-primary").trim();
|
|
373
424
|
setPrimaryFromCssVar(cssValue || null);
|
|
374
425
|
}, []);
|
|
426
|
+
const onBrand = onBrandColor(primaryColor);
|
|
427
|
+
const panelRef = useRef(null);
|
|
428
|
+
const [panelTint, setPanelTint] = useState(null);
|
|
429
|
+
useLayoutEffect(() => {
|
|
430
|
+
if (!isOpen || !panelRef.current) return;
|
|
431
|
+
setPanelTint(getComputedStyle(panelRef.current).getPropertyValue("--sk-glass-t").trim() || null);
|
|
432
|
+
}, [isOpen]);
|
|
433
|
+
const brandText = brandTextColor(primaryColor, panelTint);
|
|
375
434
|
const businessName = propAssistantName || widgetConfig?.project_name || widgetConfig?.business_info?.name || "Chat with us";
|
|
376
435
|
const logoUrl = propAssistantAvatar || widgetConfig?.logo_url || null;
|
|
377
436
|
const welcomeEnabled = widgetConfig?.welcome_screen_enabled !== false;
|
|
@@ -1057,7 +1116,6 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1057
1116
|
if (availability && availability.agentsOnline > 0) return { dot: "#22c55e", text: "Online" };
|
|
1058
1117
|
return { dot: "var(--sk-text-tertiary, #9ca3af)", text: "We'll respond soon" };
|
|
1059
1118
|
})();
|
|
1060
|
-
const launcherIcon = isLightColor(primaryColor) ? "#1a1a1a" : "white";
|
|
1061
1119
|
const ChatButton = /* @__PURE__ */ jsx(
|
|
1062
1120
|
"button",
|
|
1063
1121
|
{
|
|
@@ -1086,10 +1144,10 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1086
1144
|
onMouseLeave: (e) => {
|
|
1087
1145
|
e.currentTarget.style.transform = "scale(1)";
|
|
1088
1146
|
},
|
|
1089
|
-
children: isOpen ? /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke:
|
|
1147
|
+
children: isOpen ? /* @__PURE__ */ jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: onBrand, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1090
1148
|
/* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
1091
1149
|
/* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
1092
|
-
] }) : /* @__PURE__ */ jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke:
|
|
1150
|
+
] }) : /* @__PURE__ */ jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: onBrand, 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" }) })
|
|
1093
1151
|
}
|
|
1094
1152
|
);
|
|
1095
1153
|
const Header = /* @__PURE__ */ jsxs(
|
|
@@ -1113,7 +1171,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1113
1171
|
height: 40,
|
|
1114
1172
|
borderRadius: "50%",
|
|
1115
1173
|
backgroundColor: primaryColor,
|
|
1116
|
-
color:
|
|
1174
|
+
color: onBrand,
|
|
1117
1175
|
boxShadow: "inset 0 1px 0 color-mix(in srgb, #ffffff 30%, transparent), 0 2px 6px rgba(0, 0, 0, 0.12)",
|
|
1118
1176
|
display: "flex",
|
|
1119
1177
|
alignItems: "center",
|
|
@@ -1150,7 +1208,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1150
1208
|
borderRadius: 12,
|
|
1151
1209
|
border: `1px solid ${hexAlpha("--sk-primary-rgb", 0.2, primaryRgb)}`,
|
|
1152
1210
|
backgroundColor: hexAlpha("--sk-primary-rgb", 0.031, primaryRgb),
|
|
1153
|
-
color:
|
|
1211
|
+
color: brandText,
|
|
1154
1212
|
fontSize: 14,
|
|
1155
1213
|
cursor: "pointer",
|
|
1156
1214
|
textAlign: "left",
|
|
@@ -1179,7 +1237,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1179
1237
|
borderRadius: 12,
|
|
1180
1238
|
border: "none",
|
|
1181
1239
|
backgroundColor: primaryColor,
|
|
1182
|
-
color:
|
|
1240
|
+
color: onBrand,
|
|
1183
1241
|
fontSize: 14,
|
|
1184
1242
|
fontWeight: 600,
|
|
1185
1243
|
cursor: "pointer",
|
|
@@ -1191,11 +1249,11 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1191
1249
|
widgetConfig?.business_info?.phone && /* @__PURE__ */ jsxs("div", { style: { textAlign: "center", fontSize: 13, color: "var(--sk-text-secondary, #6b7280)" }, children: [
|
|
1192
1250
|
"Or call us at",
|
|
1193
1251
|
" ",
|
|
1194
|
-
/* @__PURE__ */ jsx("a", { href: `tel:${widgetConfig.business_info.phone}`, style: { color:
|
|
1252
|
+
/* @__PURE__ */ jsx("a", { href: `tel:${widgetConfig.business_info.phone}`, style: { color: brandText, textDecoration: "none", fontWeight: 500 }, children: widgetConfig.business_info.phone })
|
|
1195
1253
|
] })
|
|
1196
1254
|
] });
|
|
1197
1255
|
const OfflineFormView = /* @__PURE__ */ jsx("div", { style: { padding: 20, flex: 1, overflowY: "auto" }, children: offlineSubmitted ? /* @__PURE__ */ jsxs("div", { style: { textAlign: "center", padding: 20 }, children: [
|
|
1198
|
-
/* @__PURE__ */ 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__ */ jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke:
|
|
1256
|
+
/* @__PURE__ */ 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__ */ jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: brandText, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
|
|
1199
1257
|
/* @__PURE__ */ jsx("h3", { style: { margin: "0 0 8px", fontSize: 18, fontWeight: 600, color: "var(--sk-text-primary, #111827)" }, children: "Message Sent!" }),
|
|
1200
1258
|
/* @__PURE__ */ jsx("p", { style: { margin: 0, color: "var(--sk-text-secondary, #6b7280)", fontSize: 14 }, children: offlineSubheading })
|
|
1201
1259
|
] }) : /* @__PURE__ */ jsxs("form", { onSubmit: handleOfflineSubmit, children: [
|
|
@@ -1242,7 +1300,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1242
1300
|
borderRadius: 8,
|
|
1243
1301
|
border: "none",
|
|
1244
1302
|
backgroundColor: primaryColor,
|
|
1245
|
-
color:
|
|
1303
|
+
color: onBrand,
|
|
1246
1304
|
fontSize: 14,
|
|
1247
1305
|
fontWeight: 600,
|
|
1248
1306
|
cursor: isLoading ? "wait" : "pointer",
|
|
@@ -1290,7 +1348,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1290
1348
|
alignItems: "center",
|
|
1291
1349
|
justifyContent: "center"
|
|
1292
1350
|
},
|
|
1293
|
-
children: /* @__PURE__ */ jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke:
|
|
1351
|
+
children: /* @__PURE__ */ jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: onBrand, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1294
1352
|
/* @__PURE__ */ jsx("path", { d: "M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" }),
|
|
1295
1353
|
/* @__PURE__ */ jsx("circle", { cx: "8.5", cy: "7", r: "4" }),
|
|
1296
1354
|
/* @__PURE__ */ jsx("line", { x1: "20", y1: "8", x2: "20", y2: "14" }),
|
|
@@ -1339,7 +1397,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1339
1397
|
// Bubbles on glass stay near-opaque: the glass behind them
|
|
1340
1398
|
// is for depth, never for the text to read against.
|
|
1341
1399
|
backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "color-mix(in srgb, var(--sk-text-primary, #111827) 7%, transparent)" : BUBBLE_BG,
|
|
1342
|
-
color: message.role === "user" ?
|
|
1400
|
+
color: message.role === "user" ? onBrand : message.role === "system" ? "var(--sk-text-secondary, #6b7280)" : "var(--sk-text-primary, #111827)",
|
|
1343
1401
|
border: message.role === "user" || message.role === "system" ? "none" : HAIRLINE,
|
|
1344
1402
|
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)",
|
|
1345
1403
|
fontSize: message.role === "system" ? 13 : 14,
|
|
@@ -1375,7 +1433,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1375
1433
|
padding: "8px 14px",
|
|
1376
1434
|
borderRadius: 8,
|
|
1377
1435
|
backgroundColor: hexAlpha("--sk-primary-rgb", 0.082, primaryRgb),
|
|
1378
|
-
color:
|
|
1436
|
+
color: brandText,
|
|
1379
1437
|
fontWeight: 600,
|
|
1380
1438
|
fontSize: 13,
|
|
1381
1439
|
textDecoration: "none",
|
|
@@ -1421,7 +1479,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1421
1479
|
borderRadius: 16,
|
|
1422
1480
|
border: `1px solid ${primaryColor}`,
|
|
1423
1481
|
backgroundColor: hexAlpha("--sk-primary-rgb", 0.063, primaryRgb),
|
|
1424
|
-
color:
|
|
1482
|
+
color: brandText,
|
|
1425
1483
|
fontSize: 13,
|
|
1426
1484
|
cursor: "pointer"
|
|
1427
1485
|
},
|
|
@@ -1435,6 +1493,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1435
1493
|
actions: message.uiActions,
|
|
1436
1494
|
primaryColor,
|
|
1437
1495
|
primaryRgb,
|
|
1496
|
+
brandText,
|
|
1438
1497
|
onSuggest: handleSuggestAction
|
|
1439
1498
|
}
|
|
1440
1499
|
) : null,
|
|
@@ -1458,7 +1517,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1458
1517
|
borderRadius: 6,
|
|
1459
1518
|
border: `1px solid ${primaryColor}`,
|
|
1460
1519
|
backgroundColor: "transparent",
|
|
1461
|
-
color:
|
|
1520
|
+
color: brandText,
|
|
1462
1521
|
fontSize: 13,
|
|
1463
1522
|
cursor: "pointer"
|
|
1464
1523
|
},
|
|
@@ -1540,7 +1599,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1540
1599
|
borderRadius: "50%",
|
|
1541
1600
|
border: "none",
|
|
1542
1601
|
backgroundColor: (inputValue.trim() || pendingFiles.length) && !isLoading ? primaryColor : "var(--sk-border, #e5e7eb)",
|
|
1543
|
-
color: (inputValue.trim() || pendingFiles.length) && !isLoading
|
|
1602
|
+
color: (inputValue.trim() || pendingFiles.length) && !isLoading ? onBrand : "white",
|
|
1544
1603
|
cursor: inputValue.trim() && !isLoading ? "pointer" : "not-allowed",
|
|
1545
1604
|
display: "flex",
|
|
1546
1605
|
alignItems: "center",
|
|
@@ -1556,6 +1615,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1556
1615
|
const ChatPopup = isOpen && /* @__PURE__ */ jsxs(
|
|
1557
1616
|
"div",
|
|
1558
1617
|
{
|
|
1618
|
+
ref: panelRef,
|
|
1559
1619
|
"data-sk-echo-panel": true,
|
|
1560
1620
|
className: "sk-glass sk-glass--panel",
|
|
1561
1621
|
style: {
|
|
@@ -1586,9 +1646,6 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1586
1646
|
from { opacity: 0; transform: translateY(12px) scale(0.94); }
|
|
1587
1647
|
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
1588
1648
|
}
|
|
1589
|
-
@media (prefers-reduced-motion: reduce) {
|
|
1590
|
-
[data-sk-echo-panel] { animation: none !important; }
|
|
1591
|
-
}
|
|
1592
1649
|
@keyframes chatDot {
|
|
1593
1650
|
0%, 80%, 100% { opacity: 0.3; }
|
|
1594
1651
|
40% { opacity: 1; }
|
|
@@ -1615,11 +1672,12 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1615
1672
|
);
|
|
1616
1673
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1617
1674
|
/* @__PURE__ */ jsx(GlassStyles, {}),
|
|
1675
|
+
/* @__PURE__ */ jsx("style", { href: ECHO_STYLE_HREF, precedence: "default", children: ECHO_CSS }),
|
|
1618
1676
|
ChatPopup,
|
|
1619
1677
|
ChatButton
|
|
1620
1678
|
] });
|
|
1621
1679
|
}
|
|
1622
1680
|
|
|
1623
1681
|
export { ChatWidget };
|
|
1624
|
-
//# sourceMappingURL=chunk-
|
|
1625
|
-
//# sourceMappingURL=chunk-
|
|
1682
|
+
//# sourceMappingURL=chunk-PTQHPWEK.mjs.map
|
|
1683
|
+
//# sourceMappingURL=chunk-PTQHPWEK.mjs.map
|