@xapp/stentor-chat-widget 1.96.0 → 1.98.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.
@@ -0,0 +1,12 @@
1
+ type WidgetTheme = any;
2
+ export declare function parseRgb(colorString: string): {
3
+ r: number;
4
+ g: number;
5
+ b: number;
6
+ a?: number;
7
+ } | null;
8
+ export declare function invertColorRgb(rgb: string, bw?: boolean): string;
9
+ export declare function invertColorHEX(hex: string, bw?: boolean): string;
10
+ export declare function invertColor(color: string, bw?: boolean): string;
11
+ export declare function buildDefaultChatTheme(primaryColor: string, secondaryColor?: string): WidgetTheme;
12
+ export {};
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseRgb = parseRgb;
4
+ exports.invertColorRgb = invertColorRgb;
5
+ exports.invertColorHEX = invertColorHEX;
6
+ exports.invertColor = invertColor;
7
+ exports.buildDefaultChatTheme = buildDefaultChatTheme;
8
+ function padZero(str, len = 2) { const zeros = new Array(len).join("0"); return (zeros + str).slice(-len); }
9
+ function parseRgb(colorString) {
10
+ const rgbaRegex = /^rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)$/;
11
+ const rgbRegex = /^rgb?\((\d+),\s*(\d+),\s*(\d+)\)$/;
12
+ let match;
13
+ // eslint-disable-next-line no-cond-assign
14
+ if (match = colorString.match(rgbaRegex)) {
15
+ const r = parseInt(match[1]);
16
+ const g = parseInt(match[2]);
17
+ const b = parseInt(match[3]);
18
+ const a = parseFloat(match[4]);
19
+ return { r, g, b, a };
20
+ // eslint-disable-next-line no-cond-assign
21
+ }
22
+ else if (match = colorString.match(rgbRegex)) {
23
+ const r = parseInt(match[1]);
24
+ const g = parseInt(match[2]);
25
+ const b = parseInt(match[3]);
26
+ return { r, g, b };
27
+ }
28
+ else {
29
+ return null;
30
+ }
31
+ }
32
+ function invertColorRgb(rgb, bw) {
33
+ const rgba = parseRgb(rgb);
34
+ if (!rgba) {
35
+ return rgb;
36
+ }
37
+ const { r, g, b } = rgba;
38
+ if (bw) {
39
+ // http://stackoverflow.com/a/3943023/112731
40
+ return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? "rgba(0, 0, 0, 1)" : "rgba(255, 255, 255, 1)";
41
+ }
42
+ return `rgba(${255 - r}, ${255 - g}, ${255 - b}, 1)`;
43
+ }
44
+ function invertColorHEX(hex, bw) {
45
+ if (!hex) {
46
+ return undefined;
47
+ }
48
+ if (hex.indexOf("#") === 0) {
49
+ hex = hex.slice(1);
50
+ }
51
+ // convert 3-digit hex to 6-digits.
52
+ if (hex.length === 3) {
53
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
54
+ }
55
+ if (hex.length !== 6) {
56
+ throw new Error("Invalid HEX color.");
57
+ }
58
+ const r = parseInt(hex.slice(0, 2), 16);
59
+ const g = parseInt(hex.slice(2, 4), 16);
60
+ const b = parseInt(hex.slice(4, 6), 16);
61
+ if (bw) {
62
+ // http://stackoverflow.com/a/3943023/112731
63
+ return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? "#000000" : "#FFFFFF";
64
+ }
65
+ // pad each with zeros and return
66
+ return "#" + padZero((255 - r).toString(16)) + padZero((255 - g).toString(16)) + padZero((255 - b).toString(16));
67
+ }
68
+ function invertColor(color, bw) {
69
+ return color.startsWith("#") ? invertColorHEX(color, bw) : invertColorRgb(color, bw);
70
+ }
71
+ function buildDefaultChatTheme(primaryColor, secondaryColor) {
72
+ const fontFamily = "RobotoRegular";
73
+ if (!secondaryColor) {
74
+ secondaryColor = invertColor(primaryColor, true);
75
+ }
76
+ return {
77
+ zIndex: "10000",
78
+ border: {
79
+ color: primaryColor,
80
+ radius: "10px",
81
+ },
82
+ carousel: {
83
+ button: {
84
+ color: primaryColor,
85
+ },
86
+ subtitle: {
87
+ color: "#979797",
88
+ fontFamily,
89
+ fontSize: "12px",
90
+ fontStyle: "normal",
91
+ fontWeight: "normal",
92
+ },
93
+ title: {
94
+ color: "#000",
95
+ fontFamily,
96
+ fontSize: "14px",
97
+ fontStyle: "normal",
98
+ fontWeight: "bold",
99
+ },
100
+ },
101
+ chatButton: {
102
+ background: primaryColor,
103
+ margin: {
104
+ bottom: "10px",
105
+ left: "10px",
106
+ right: "10px",
107
+ top: "10px",
108
+ },
109
+ },
110
+ content: {
111
+ background: "#ffffff",
112
+ },
113
+ cta: {
114
+ background: "#e1e2e1",
115
+ text: {
116
+ // Use a dark color that contrasts well with the light grey background
117
+ // instead of primaryColor which may not have sufficient contrast
118
+ color: "#333333",
119
+ fontFamily,
120
+ fontSize: "14px",
121
+ },
122
+ },
123
+ footer: {
124
+ background: primaryColor,
125
+ border: {
126
+ color: primaryColor,
127
+ radius: "0px",
128
+ width: "0px",
129
+ },
130
+ branding: {
131
+ text: {
132
+ color: "#ffffff",
133
+ fontFamily,
134
+ fontSize: "14px",
135
+ fontWeight: "normal",
136
+ fontStyle: "normal",
137
+ },
138
+ },
139
+ },
140
+ header: {
141
+ background: primaryColor,
142
+ avatarBackground: "transparent",
143
+ border: {
144
+ color: primaryColor,
145
+ radius: "0px",
146
+ width: "0px",
147
+ },
148
+ text: {
149
+ color: secondaryColor,
150
+ fontFamily,
151
+ fontSize: "16px",
152
+ fontWeight: "normal",
153
+ fontStyle: "normal",
154
+ },
155
+ subtitle: {
156
+ color: secondaryColor,
157
+ fontFamily,
158
+ fontSize: "10px",
159
+ fontWeight: "normal",
160
+ fontStyle: "normal",
161
+ },
162
+ },
163
+ input: {
164
+ background: "#ffffff",
165
+ border: {
166
+ radius: "20px",
167
+ },
168
+ text: {
169
+ color: "#000000",
170
+ fontFamily,
171
+ fontSize: "14px",
172
+ },
173
+ placeholder: {
174
+ color: "#e1e2e1",
175
+ fontFamily,
176
+ fontSize: "14px",
177
+ fontWeight: "normal",
178
+ fontStyle: "normal",
179
+ },
180
+ },
181
+ textTypingStatus: {
182
+ text: {
183
+ color: "#bfbfbf",
184
+ fontFamily,
185
+ fontSize: "14px",
186
+ fontWeight: "normal",
187
+ fontStyle: "normal",
188
+ },
189
+ },
190
+ menu: {
191
+ item: {
192
+ height: "24px",
193
+ text: {
194
+ fontSize: "14px",
195
+ },
196
+ },
197
+ },
198
+ menuButton: {
199
+ color: "#ffffff",
200
+ },
201
+ messages: {
202
+ maxWidth: "400px",
203
+ mine: {
204
+ bubbleColor: "#f2f2f2",
205
+ text: {
206
+ color: "#454545",
207
+ fontFamily,
208
+ fontSize: "18px",
209
+ fontStyle: "normal",
210
+ fontWeight: "normal",
211
+ },
212
+ },
213
+ others: {
214
+ bubbleColor: "#e1e2e1",
215
+ text: {
216
+ color: "#262726",
217
+ fontFamily,
218
+ fontSize: "18px",
219
+ fontStyle: "normal",
220
+ fontWeight: "normal",
221
+ },
222
+ },
223
+ padding: {
224
+ bottom: "0px",
225
+ left: "20px",
226
+ right: "16px",
227
+ top: "16px",
228
+ },
229
+ },
230
+ refreshButton: {
231
+ color: secondaryColor,
232
+ },
233
+ minimizeButton: {
234
+ color: secondaryColor,
235
+ },
236
+ cancelButton: {
237
+ color: secondaryColor,
238
+ },
239
+ primaryColor: primaryColor,
240
+ sendButton: {
241
+ color: "#505050",
242
+ width: "20px",
243
+ },
244
+ size: {
245
+ width: "500px",
246
+ height: "700px",
247
+ },
248
+ };
249
+ }
250
+ //# sourceMappingURL=__clientTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__clientTheme.js","sourceRoot":"","sources":["../src/__clientTheme.ts"],"names":[],"mappings":"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"}
@@ -106,6 +106,19 @@ describe("buildChatWidgetChannel", () => {
106
106
  expect(channel.theme).toBeDefined();
107
107
  expect(channel.type).toEqual("chat-widget");
108
108
  });
109
+ it("names the agent after the business", () => {
110
+ // Without this the widget introduces itself as "Assistant" - the chat
111
+ // widget falls back to that literal when botName is unset. A homeowner
112
+ // arriving on a roofer's site should be met by the roofer's name.
113
+ const channel = (0, buildChatWidgetChannel_1.buildChatWidgetChannel)(Object.assign(Object.assign({}, BASE), { businessName: "314 Roofing Solutions" }));
114
+ expect(channel.botName).toEqual("314 Roofing Solutions");
115
+ });
116
+ it("leaves the agent unnamed when the business name is unknown", () => {
117
+ // Rather than inventing one. The widget's own "Assistant" fallback is a
118
+ // better answer than a guess, and an empty string would defeat it.
119
+ expect((0, buildChatWidgetChannel_1.buildChatWidgetChannel)(BASE).botName).toBeUndefined();
120
+ expect((0, buildChatWidgetChannel_1.buildChatWidgetChannel)(Object.assign(Object.assign({}, BASE), { businessName: " " })).botName).toBeUndefined();
121
+ });
109
122
  it("does not invent an id", () => {
110
123
  // The id is assigned when the channel is written. A builder that made
111
124
  // one up would be creating a second source of truth for it.
@@ -1 +1 @@
1
- {"version":3,"file":"buildChatWidgetChannel.test.js","sourceRoot":"","sources":["../../src/__tests__/buildChatWidgetChannel.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildChatWidgetChannel.test.js","sourceRoot":"","sources":["../../src/__tests__/buildChatWidgetChannel.test.ts"],"names":[],"mappings":"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"}
@@ -95,4 +95,63 @@ describe("isSupportedColor", () => {
95
95
  expect((0, color_1.isSupportedColor)("")).toEqual(false);
96
96
  });
97
97
  });
98
+ describe("usableColorOr", () => {
99
+ it("keeps a colour we can compute contrast against", () => {
100
+ expect((0, color_1.usableColorOr)("#f47c4c", "#1AA7DC")).toEqual("#f47c4c");
101
+ expect((0, color_1.usableColorOr)("rgb(20, 52, 204)", "#1AA7DC")).toEqual("rgb(20, 52, 204)");
102
+ });
103
+ it("substitutes the fallback for anything else", () => {
104
+ // Including colours that are perfectly valid CSS. If we cannot work out
105
+ // what text reads on it, we must not use it as a background — the text
106
+ // colour would be a guess paired with an unknown.
107
+ expect((0, color_1.usableColorOr)("orange", "#1AA7DC")).toEqual("#1AA7DC");
108
+ expect((0, color_1.usableColorOr)("hsl(9, 100%, 64%)", "#1AA7DC")).toEqual("#1AA7DC");
109
+ expect((0, color_1.usableColorOr)(undefined, "#1AA7DC")).toEqual("#1AA7DC");
110
+ expect((0, color_1.usableColorOr)("", "#1AA7DC")).toEqual("#1AA7DC");
111
+ });
112
+ });
113
+ describe("darkenColor", () => {
114
+ it("darkens hex", () => {
115
+ expect((0, color_1.darkenColor)("#1434cc", 20)).toEqual("#0020b8");
116
+ });
117
+ it("darkens rgb without an alpha", () => {
118
+ expect((0, color_1.darkenColor)("rgb(20, 52, 204)", 20)).toEqual("#0020b8");
119
+ });
120
+ it("has no opinion about a missing colour", () => {
121
+ expect((0, color_1.darkenColor)(undefined, 20)).toBeUndefined();
122
+ });
123
+ it("returns unsupported input unchanged", () => {
124
+ expect((0, color_1.darkenColor)("orange", 20)).toEqual("orange");
125
+ });
126
+ /**
127
+ * Fixed here, and therefore the one place this package deliberately does
128
+ * not match stentor-client.
129
+ *
130
+ * The alpha branch computed luminance on the 0-255 scale the channels use
131
+ * and then clamped it to 0-1, so it collapsed to 1 for every real colour
132
+ * and the ratio crushed the result to near-black: rgba(20, 52, 204, 0.8)
133
+ * darkened by 20% came back rgba(0, 1, 3, 1). Clamping on the right scale
134
+ * makes it do what it says — scale each channel by 1 - amount/100.
135
+ *
136
+ * The client still has the old behaviour, so a form themed from an rgba
137
+ * colour will change appearance when it migrates onto this. That is the
138
+ * intended outcome rather than a regression: near-black was never what
139
+ * anyone asked for, and consolidating these builders is what makes one fix
140
+ * enough.
141
+ *
142
+ * Neither version is reachable from the funnel — Arachne reports
143
+ * site.primaryColor as hex.
144
+ */
145
+ it("darkens rgba proportionally rather than crushing it", () => {
146
+ // 80% of each channel, which is what "20% darker" should mean.
147
+ expect((0, color_1.darkenColor)("rgba(20, 52, 204, 0.8)", 20)).toEqual("rgba(16, 42, 163, 1)");
148
+ expect((0, color_1.darkenColor)("rgba(255, 0, 0, 0.5)", 20)).toEqual("rgba(204, 0, 0, 0.7)");
149
+ });
150
+ it("leaves the hex and rgb paths exactly as they were", () => {
151
+ // Those branches were correct and are untouched, so the parity tests
152
+ // over hex colours still hold.
153
+ expect((0, color_1.darkenColor)("#1434cc", 20)).toEqual("#0020b8");
154
+ expect((0, color_1.darkenColor)("rgb(20, 52, 204)", 20)).toEqual("#0020b8");
155
+ });
156
+ });
98
157
  //# sourceMappingURL=color.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.test.js","sourceRoot":"","sources":["../../src/__tests__/color.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"color.test.js","sourceRoot":"","sources":["../../src/__tests__/color.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __clientTheme_1 = require("../__clientTheme");
4
+ const buildChatWidgetChannel_1 = require("../buildChatWidgetChannel");
5
+ /**
6
+ * The port has to be faithful, or migrating stentor-client to it restyles every
7
+ * widget created afterwards. This compares the two directly rather than
8
+ * trusting that it looks right.
9
+ *
10
+ * `__clientTheme.ts` is stentor-client's function, extracted verbatim with its
11
+ * colour helpers inlined so it can run here. It goes away once the client is
12
+ * migrated and there is only one of these left.
13
+ */
14
+ describe("parity with stentor-client's buildDefaultChatTheme", () => {
15
+ // Hex is what a crawl actually yields — Arachne reports site.primaryColor
16
+ // as hex — so these are the cases that matter, and they are byte-identical.
17
+ const HEX = ["#f47c4c", "#c1bdb2", "#1434cc", "#1AA7DC", "#000000", "#ffffff"];
18
+ HEX.forEach((primaryColor) => {
19
+ it(`produces the same theme for ${primaryColor}`, () => {
20
+ expect((0, buildChatWidgetChannel_1.buildChatTheme)(primaryColor)).toEqual((0, __clientTheme_1.buildDefaultChatTheme)(primaryColor));
21
+ });
22
+ });
23
+ it("differs from the client only in notation for rgb input", () => {
24
+ // The one intentional difference. Given rgb, the client's contrast
25
+ // helper answers "rgba(255, 255, 255, 1)" while readableTextOn
26
+ // normalises to "#FFFFFF". Same colour, one shape instead of two — and
27
+ // not reachable from a crawl, which reports hex.
28
+ const mine = JSON.stringify((0, buildChatWidgetChannel_1.buildChatTheme)("rgb(20, 52, 204)"));
29
+ const theirs = JSON.stringify((0, __clientTheme_1.buildDefaultChatTheme)("rgb(20, 52, 204)"));
30
+ expect(mine.replace(/#FFFFFF/g, "rgba(255, 255, 255, 1)")).toEqual(theirs);
31
+ });
32
+ it("produces the same theme when a secondary colour is supplied", () => {
33
+ expect((0, buildChatWidgetChannel_1.buildChatTheme)("#f47c4c", "#ffffff")).toEqual((0, __clientTheme_1.buildDefaultChatTheme)("#f47c4c", "#ffffff"));
34
+ });
35
+ });
36
+ //# sourceMappingURL=themeParity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeParity.test.js","sourceRoot":"","sources":["../../src/__tests__/themeParity.test.ts"],"names":[],"mappings":";;AAAA,oDAAyD;AACzD,sEAA2D;AAE3D;;;;;;;;GAQG;AACH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAEhE,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAE/E,GAAG,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACzB,EAAE,CAAC,+BAA+B,YAAY,EAAE,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,IAAA,uCAAc,EAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,qCAAqB,EAAC,YAAY,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,mEAAmE;QACnE,+DAA+D;QAC/D,uEAAuE;QACvE,iDAAiD;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAA,uCAAc,EAAC,kBAAkB,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAA,qCAAqB,EAAC,kBAAkB,CAAC,CAAC,CAAC;QAEzE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,IAAA,uCAAc,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,qCAAqB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -30,6 +30,12 @@ export interface BuildChatWidgetChannelProps {
30
30
  * guessed foreground is how a widget ships with invisible text.
31
31
  */
32
32
  primaryColor?: string;
33
+ /**
34
+ * Colour of text sitting on primaryColor. Computed from it when absent,
35
+ * which is the usual case — a crawl gives us a brand colour, not a
36
+ * matching text colour.
37
+ */
38
+ secondaryColor?: string;
33
39
  /**
34
40
  * The form widget channel's key, which the booking button opens.
35
41
  *
@@ -40,13 +46,24 @@ export interface BuildChatWidgetChannelProps {
40
46
  formWidgetKey?: string;
41
47
  /** Click-to-call number, if the crawl found one. */
42
48
  phoneNumber?: string;
49
+ /**
50
+ * What the agent introduces itself as.
51
+ *
52
+ * Left off when unknown rather than guessed: the widget falls back to
53
+ * "Assistant", which is a better answer than a wrong name.
54
+ */
55
+ businessName?: string;
43
56
  }
44
57
  export declare function buildChatWidgetChannel(props: BuildChatWidgetChannelProps): NewChatWidgetChannel;
45
58
  /**
46
- * A theme derived from the business's own colour.
59
+ * The theme a new chat widget starts with, from the business's own colour.
60
+ *
61
+ * A faithful port of stentor-client's buildDefaultChatTheme, deliberately: the
62
+ * point of moving it is that onboarding can call this instead of its own copy,
63
+ * and that migration should not restyle every widget created afterwards. A
64
+ * thinner theme would have quietly dropped the CTA, message, input, footer and
65
+ * button styling that new widgets have today.
47
66
  *
48
- * Only the text colour is computed rather than chosen: which of black or white
49
- * reads on a given background is arithmetic, and getting it wrong ships a
50
- * widget nobody can read.
67
+ * The one change is how the contrast colour is derived — see below.
51
68
  */
52
- export declare function buildChatTheme(primaryColor: string): WidgetTheme;
69
+ export declare function buildChatTheme(primaryColor: string, secondaryColor?: string): WidgetTheme;
@@ -6,13 +6,14 @@ const color_1 = require("./color");
6
6
  /** Fallback when a crawl found no branding. Deliberately neutral. */
7
7
  const DEFAULT_PRIMARY = "#1AA7DC";
8
8
  function buildChatWidgetChannel(props) {
9
+ var _a;
9
10
  const { appId, apiUrl, mcpUrl, formWidgetKey, phoneNumber } = props;
11
+ const businessName = (_a = props.businessName) === null || _a === void 0 ? void 0 : _a.trim();
10
12
  // Only a colour whose contrast can actually be computed, so the background
11
13
  // and the text on it are always a matched pair rather than one scraped
12
14
  // value and one guess.
13
- const primaryColor = (0, color_1.isSupportedColor)(props.primaryColor) ? props.primaryColor : DEFAULT_PRIMARY;
14
- return {
15
- type: "chat-widget",
15
+ const primaryColor = (0, color_1.usableColorOr)(props.primaryColor, DEFAULT_PRIMARY);
16
+ return Object.assign({ type: "chat-widget",
16
17
  // MCP by default. The widget runs on a public page, so homeowner mode
17
18
  // — which is unauthenticated and carries the appId in the url — is the
18
19
  // only one that can work there; business_owner needs a token, and a
@@ -23,10 +24,7 @@ function buildChatWidgetChannel(props) {
23
24
  mcp: {
24
25
  mode: "homeowner"
25
26
  }
26
- },
27
- theme: buildChatTheme(primaryColor),
28
- actionBar: buildActionBar({ apiUrl, primaryColor, formWidgetKey, phoneNumber })
29
- };
27
+ }, theme: buildChatTheme(primaryColor, props.secondaryColor), actionBar: buildActionBar({ apiUrl, primaryColor, formWidgetKey, phoneNumber }) }, (businessName ? { botName: businessName } : {}));
30
28
  }
31
29
  /**
32
30
  * The dock of buttons that replaces the plain chat bubble.
@@ -75,19 +73,49 @@ function buildActionBar(props) {
75
73
  };
76
74
  }
77
75
  /**
78
- * A theme derived from the business's own colour.
76
+ * The theme a new chat widget starts with, from the business's own colour.
77
+ *
78
+ * A faithful port of stentor-client's buildDefaultChatTheme, deliberately: the
79
+ * point of moving it is that onboarding can call this instead of its own copy,
80
+ * and that migration should not restyle every widget created afterwards. A
81
+ * thinner theme would have quietly dropped the CTA, message, input, footer and
82
+ * button styling that new widgets have today.
79
83
  *
80
- * Only the text colour is computed rather than chosen: which of black or white
81
- * reads on a given background is arithmetic, and getting it wrong ships a
82
- * widget nobody can read.
84
+ * The one change is how the contrast colour is derived — see below.
83
85
  */
84
- function buildChatTheme(primaryColor) {
85
- const onPrimary = (0, color_1.readableTextOn)(primaryColor);
86
+ function buildChatTheme(primaryColor, secondaryColor) {
87
+ const fontFamily = "RobotoRegular";
88
+ // secondaryColor is the colour of text sitting ON primaryColor — header
89
+ // title, subtitle, footer branding. Left unset it is computed, which is
90
+ // what makes the theme readable against whatever colour was scraped off
91
+ // the business's own site.
92
+ if (!secondaryColor) {
93
+ secondaryColor = (0, color_1.readableTextOn)(primaryColor);
94
+ }
86
95
  return {
87
96
  zIndex: "10000",
88
97
  border: {
89
98
  color: primaryColor,
90
- radius: "10px"
99
+ radius: "10px",
100
+ },
101
+ carousel: {
102
+ button: {
103
+ color: primaryColor,
104
+ },
105
+ subtitle: {
106
+ color: "#979797",
107
+ fontFamily,
108
+ fontSize: "12px",
109
+ fontStyle: "normal",
110
+ fontWeight: "normal",
111
+ },
112
+ title: {
113
+ color: "#000",
114
+ fontFamily,
115
+ fontSize: "14px",
116
+ fontStyle: "normal",
117
+ fontWeight: "bold",
118
+ },
91
119
  },
92
120
  chatButton: {
93
121
  background: primaryColor,
@@ -95,18 +123,147 @@ function buildChatTheme(primaryColor) {
95
123
  bottom: "10px",
96
124
  left: "10px",
97
125
  right: "10px",
98
- top: "10px"
99
- }
126
+ top: "10px",
127
+ },
100
128
  },
101
129
  content: {
102
- background: "#ffffff"
130
+ background: "#ffffff",
131
+ },
132
+ cta: {
133
+ background: "#e1e2e1",
134
+ text: {
135
+ // Use a dark color that contrasts well with the light grey background
136
+ // instead of primaryColor which may not have sufficient contrast
137
+ color: "#333333",
138
+ fontFamily,
139
+ fontSize: "14px",
140
+ },
141
+ },
142
+ footer: {
143
+ background: primaryColor,
144
+ border: {
145
+ color: primaryColor,
146
+ radius: "0px",
147
+ width: "0px",
148
+ },
149
+ branding: {
150
+ text: {
151
+ color: "#ffffff",
152
+ fontFamily,
153
+ fontSize: "14px",
154
+ fontWeight: "normal",
155
+ fontStyle: "normal",
156
+ },
157
+ },
103
158
  },
104
159
  header: {
105
160
  background: primaryColor,
161
+ avatarBackground: "transparent",
162
+ border: {
163
+ color: primaryColor,
164
+ radius: "0px",
165
+ width: "0px",
166
+ },
106
167
  text: {
107
- color: onPrimary
108
- }
109
- }
168
+ color: secondaryColor,
169
+ fontFamily,
170
+ fontSize: "16px",
171
+ fontWeight: "normal",
172
+ fontStyle: "normal",
173
+ },
174
+ subtitle: {
175
+ color: secondaryColor,
176
+ fontFamily,
177
+ fontSize: "10px",
178
+ fontWeight: "normal",
179
+ fontStyle: "normal",
180
+ },
181
+ },
182
+ input: {
183
+ background: "#ffffff",
184
+ border: {
185
+ radius: "20px",
186
+ },
187
+ text: {
188
+ color: "#000000",
189
+ fontFamily,
190
+ fontSize: "14px",
191
+ },
192
+ placeholder: {
193
+ color: "#e1e2e1",
194
+ fontFamily,
195
+ fontSize: "14px",
196
+ fontWeight: "normal",
197
+ fontStyle: "normal",
198
+ },
199
+ },
200
+ textTypingStatus: {
201
+ text: {
202
+ color: "#bfbfbf",
203
+ fontFamily,
204
+ fontSize: "14px",
205
+ fontWeight: "normal",
206
+ fontStyle: "normal",
207
+ },
208
+ },
209
+ menu: {
210
+ item: {
211
+ height: "24px",
212
+ text: {
213
+ fontSize: "14px",
214
+ },
215
+ },
216
+ },
217
+ menuButton: {
218
+ color: "#ffffff",
219
+ },
220
+ messages: {
221
+ maxWidth: "400px",
222
+ mine: {
223
+ bubbleColor: "#f2f2f2",
224
+ text: {
225
+ color: "#454545",
226
+ fontFamily,
227
+ fontSize: "18px",
228
+ fontStyle: "normal",
229
+ fontWeight: "normal",
230
+ },
231
+ },
232
+ others: {
233
+ bubbleColor: "#e1e2e1",
234
+ text: {
235
+ color: "#262726",
236
+ fontFamily,
237
+ fontSize: "18px",
238
+ fontStyle: "normal",
239
+ fontWeight: "normal",
240
+ },
241
+ },
242
+ padding: {
243
+ bottom: "0px",
244
+ left: "20px",
245
+ right: "16px",
246
+ top: "16px",
247
+ },
248
+ },
249
+ refreshButton: {
250
+ color: secondaryColor,
251
+ },
252
+ minimizeButton: {
253
+ color: secondaryColor,
254
+ },
255
+ cancelButton: {
256
+ color: secondaryColor,
257
+ },
258
+ primaryColor: primaryColor,
259
+ sendButton: {
260
+ color: "#505050",
261
+ width: "20px",
262
+ },
263
+ size: {
264
+ width: "500px",
265
+ height: "700px",
266
+ },
110
267
  };
111
268
  }
112
269
  //# sourceMappingURL=buildChatWidgetChannel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildChatWidgetChannel.js","sourceRoot":"","sources":["../src/buildChatWidgetChannel.ts"],"names":[],"mappings":";;AAqDA,wDAuBC;AAiED,wCA4BC;AAtKD,mCAA2D;AA+C3D,qEAAqE;AACrE,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,SAAgB,sBAAsB,CAAC,KAAkC;IACrE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACpE,2EAA2E;IAC3E,uEAAuE;IACvE,uBAAuB;IACvB,MAAM,YAAY,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC;IAEjG,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,yCAAyC;QACzC,UAAU,EAAE;YACR,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE;YAC/B,GAAG,EAAE;gBACD,IAAI,EAAE,WAAW;aACpB;SACJ;QACD,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC;QACnC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;KAC1D,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,KAKvB;IACG,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM;YACb,UAAU,EAAE;gBACR,GAAG,EAAE;oBACD,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,aAAa;iBACrB;aACJ;SACJ,CAAC,CAAC;IACP,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,MAAM;YACb,WAAW;SACd,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,OAAO;QACH,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO;KACV,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,YAAoB;IAC/C,MAAM,SAAS,GAAG,IAAA,sBAAc,EAAC,YAAY,CAAC,CAAC;IAE/C,OAAO;QACH,MAAM,EAAE,OAAO;QACf,MAAM,EAAE;YACJ,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,MAAM;SACjB;QACD,UAAU,EAAE;YACR,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE;gBACJ,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,MAAM;aACd;SACJ;QACD,OAAO,EAAE;YACL,UAAU,EAAE,SAAS;SACxB;QACD,MAAM,EAAE;YACJ,UAAU,EAAE,YAAY;YACxB,IAAI,EAAE;gBACF,KAAK,EAAE,SAAS;aACnB;SACJ;KACW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"buildChatWidgetChannel.js","sourceRoot":"","sources":["../src/buildChatWidgetChannel.ts"],"names":[],"mappings":"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"}
package/lib/color.d.ts CHANGED
@@ -25,6 +25,17 @@ export declare function invertColor(color: string, bw?: boolean): string | undef
25
25
  * background whose contrast we cannot compute is one we must not use.
26
26
  */
27
27
  export declare function isSupportedColor(color: string | undefined): boolean;
28
+ /**
29
+ * The colour to theme with: the one given, or the fallback when we cannot work
30
+ * out what text reads on it.
31
+ *
32
+ * Every builder needs this and each was doing it by hand, which is how the
33
+ * chat widget ended up guarded and the other two not. A background whose
34
+ * contrast cannot be computed is one we must not use — the foreground would be
35
+ * a guess paired with an unknown, and on a dark unparseable colour that is
36
+ * invisible text.
37
+ */
38
+ export declare function usableColorOr(color: string | undefined, fallback: string): string;
28
39
  /**
29
40
  * The text colour that will read on this background: black or white, never
30
41
  * anything else.
@@ -41,3 +52,9 @@ export declare function isSupportedColor(color: string | undefined): boolean;
41
52
  * guessed foreground with an unknown background.
42
53
  */
43
54
  export declare function readableTextOn(background: string | undefined): string;
55
+ /**
56
+ * A shade of the input colour, darkened by `amount` percent (negative
57
+ * lightens). Ported alongside the rest so the form widget's theme does not
58
+ * need its own copy of it.
59
+ */
60
+ export declare function darkenColor(colorIn: string | undefined, amount: number): string | undefined;
package/lib/color.js CHANGED
@@ -6,7 +6,9 @@ exports.invertColorHEX = invertColorHEX;
6
6
  exports.invertColorRgb = invertColorRgb;
7
7
  exports.invertColor = invertColor;
8
8
  exports.isSupportedColor = isSupportedColor;
9
+ exports.usableColorOr = usableColorOr;
9
10
  exports.readableTextOn = readableTextOn;
11
+ exports.darkenColor = darkenColor;
10
12
  /**
11
13
  * Colour maths for building a widget theme from a business's own branding.
12
14
  *
@@ -115,6 +117,19 @@ function isSupportedColor(color) {
115
117
  }
116
118
  return parseRgb(color) !== null;
117
119
  }
120
+ /**
121
+ * The colour to theme with: the one given, or the fallback when we cannot work
122
+ * out what text reads on it.
123
+ *
124
+ * Every builder needs this and each was doing it by hand, which is how the
125
+ * chat widget ended up guarded and the other two not. A background whose
126
+ * contrast cannot be computed is one we must not use — the foreground would be
127
+ * a guess paired with an unknown, and on a dark unparseable colour that is
128
+ * invisible text.
129
+ */
130
+ function usableColorOr(color, fallback) {
131
+ return isSupportedColor(color) ? color : fallback;
132
+ }
118
133
  /**
119
134
  * The text colour that will read on this background: black or white, never
120
135
  * anything else.
@@ -154,4 +169,75 @@ function hexToRgb(hex) {
154
169
  b: parseInt(value.slice(4, 6), 16)
155
170
  };
156
171
  }
172
+ /**
173
+ * A shade of the input colour, darkened by `amount` percent (negative
174
+ * lightens). Ported alongside the rest so the form widget's theme does not
175
+ * need its own copy of it.
176
+ */
177
+ function darkenColor(colorIn, amount) {
178
+ if (!colorIn) {
179
+ return colorIn;
180
+ }
181
+ let r, g, b, a;
182
+ let colorOut;
183
+ try {
184
+ // Parse the color format
185
+ if (colorIn.startsWith('#')) {
186
+ // Hex format
187
+ const hexMatch = colorIn.match(/\w\w/g);
188
+ if (hexMatch) {
189
+ [r, g, b] = hexMatch.map(x => parseInt(x, 16));
190
+ }
191
+ }
192
+ else if (colorIn.startsWith('rgb')) {
193
+ // RGB or RGBA format
194
+ const rgba = parseRgb(colorIn);
195
+ if (rgba) {
196
+ ({ r, g, b, a } = rgba);
197
+ }
198
+ }
199
+ if (r === undefined || g === undefined || b === undefined) {
200
+ console.error(`Unsupported color format: ${colorIn}`);
201
+ return colorIn;
202
+ }
203
+ if (a !== undefined) {
204
+ // Adjust luminance for RGBA
205
+ // Luminance is on the 0-255 scale the channels are, so the clamp
206
+ // has to be too. Bounding it to 0-1 collapsed it to 1 for every
207
+ // real colour, which made the ratio tiny and crushed the result to
208
+ // near-black instead of darkening it: rgba(20, 52, 204, 0.8) at 20%
209
+ // came back rgba(0, 1, 3, 1).
210
+ const luminance = 0.3 * r + 0.59 * g + 0.11 * b;
211
+ let newLuminance = luminance * (1 - amount / 100);
212
+ newLuminance = Math.max(0, Math.min(255, newLuminance));
213
+ const ratio = newLuminance / (luminance || 1); // no division by zero
214
+ r = Math.round(r * ratio);
215
+ g = Math.round(g * ratio);
216
+ b = Math.round(b * ratio);
217
+ // Adjust alpha
218
+ a = a + amount / 100;
219
+ a = Math.max(0, Math.min(1, a)); // within 0 and 1
220
+ colorOut = `rgba(${r}, ${g}, ${b}, ${a})`;
221
+ }
222
+ else {
223
+ // Adjust the color for RGB or Hex
224
+ if (amount > 0) {
225
+ r = Math.max(0, r - amount);
226
+ g = Math.max(0, g - amount);
227
+ b = Math.max(0, b - amount);
228
+ }
229
+ else {
230
+ amount = Math.abs(amount); // positive for lightening
231
+ r = Math.min(255, r + amount);
232
+ g = Math.min(255, g + amount);
233
+ b = Math.min(255, b + amount);
234
+ }
235
+ colorOut = `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
236
+ }
237
+ }
238
+ catch (e) {
239
+ console.error(`Unsupported color format: ${colorIn} - Error: ${e}`);
240
+ }
241
+ return colorOut;
242
+ }
157
243
  //# sourceMappingURL=color.js.map
package/lib/color.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":";AAAA,kCAAkC;;AA4BlC,4BAoBC;AAqBD,wCAsBC;AAGD,wCAYC;AAGD,kCAKC;AASD,4CAWC;AAiBD,wCAWC;AAhKD;;;;;;;;;;;GAWG;AAEH,qDAAqD;AACrD,SAAS,OAAO,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AASD,SAAgB,QAAQ,CAAC,WAAmB;IACxC,MAAM,IAAI,GAAG,gDAAgD,CAAC;IAC9D,MAAM,GAAG,GAAG,mCAAmC,CAAC;IAEhD,MAAM,SAAS,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO;YACH,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC9B,CAAC;IACN,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC/F,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC5C,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAW,EAAE,EAAY;IACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1C,IAAI,EAAE,EAAE,CAAC;QACL,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACrH,CAAC;AAED,6CAA6C;AAC7C,SAAgB,cAAc,CAAC,GAAW,EAAE,EAAY;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,EAAE,CAAC;QACL,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,mDAAmD;AACnD,SAAgB,WAAW,CAAC,KAAa,EAAE,EAAY;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,KAAyB;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,cAAc,CAAC,UAA8B;IACzD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrF,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IACzB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO;QACH,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KACrC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "1.96.0",
7
+ "version": "1.98.0",
8
8
  "description": "Chat Widget channel for stentor",
9
9
  "types": "lib/index",
10
10
  "main": "lib/index",