@smooai/chat-widget 0.10.1 → 0.10.2
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/README.md +1 -0
- package/dist/chat-widget.global.js +14 -5
- package/dist/chat-widget.global.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +7 -0
- package/src/element.ts +20 -4
- package/src/styles.ts +4 -1
package/dist/index.d.ts
CHANGED
|
@@ -88,6 +88,12 @@ interface ChatWidgetConfig {
|
|
|
88
88
|
connectionErrorMessage?: string;
|
|
89
89
|
/** Start the panel open instead of collapsed to the launcher. */
|
|
90
90
|
startOpen?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Hide the "powered by smooth-operator" branding in the header tag and the
|
|
93
|
+
* composer footer. Defaults to `false` (branding shown). The `hide-branding`
|
|
94
|
+
* HTML attribute maps to this.
|
|
95
|
+
*/
|
|
96
|
+
hideBranding?: boolean;
|
|
91
97
|
/**
|
|
92
98
|
* Suggested starter prompts shown as clickable chips before the first message.
|
|
93
99
|
* Clicking one sends it. Capped at 5 for layout.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/persistence.ts","../src/conversation.ts","../src/fingerprint.ts"],"mappings":";;;;UASiB,eAAA;;EAEb,IAAA;;EAEA,UAAA;EAJ4B;EAM5B,OAAA;EAN4B;EAQ5B,WAAA;EAJA;EAMA,SAAA;EAFA;EAIA,eAAA;EAAA;EAEA,mBAAA;EAEA;EAAA,UAAA;EAIA;EAFA,cAAA;EAUA;EARA,MAAA;EAYA;EANA,iBAAA;EAMsB;EAJtB,qBAAA;EAesB;EAbtB,kBAAA;EAasB;EAXtB,sBAAA;AAAA;;;;;;;;;KAWQ,cAAA;AAAA,UAEK,gBAAA;EAyBb;;;;EApBA,QAAA;EA6BmD;;;;EAxBnD,IAAA,GAAO,cAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/persistence.ts","../src/conversation.ts","../src/fingerprint.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -332,6 +332,7 @@ function resolveConfig(config) {
|
|
|
332
332
|
greeting: config.greeting ?? "Hi! How can I help you today?",
|
|
333
333
|
connectionErrorMessage: config.connectionErrorMessage ?? "We couldn't reach the chat. Please try again in a moment.",
|
|
334
334
|
startOpen: config.startOpen ?? false,
|
|
335
|
+
hideBranding: config.hideBranding ?? false,
|
|
335
336
|
examplePrompts: (config.examplePrompts ?? []).filter((p) => p.trim().length > 0).slice(0, 5),
|
|
336
337
|
requireName: config.requireName ?? false,
|
|
337
338
|
requireEmail: config.requireEmail ?? false,
|
|
@@ -1587,7 +1588,8 @@ ${mode === "fullpage" ? `
|
|
|
1587
1588
|
}
|
|
1588
1589
|
.close:hover { background: color-mix(in srgb, var(--sac-text) 12%, transparent); transform: translateY(1px); }
|
|
1589
1590
|
.close svg { width: 16px; height: 16px; opacity: .8; }
|
|
1590
|
-
.powered { margin-left: auto; font-size: 10.5px; letter-spacing: .02em; opacity: .6; }
|
|
1591
|
+
.powered { margin-left: auto; font-size: 10.5px; letter-spacing: .02em; opacity: .6; color: inherit; text-decoration: none; }
|
|
1592
|
+
.powered:hover { opacity: .85; text-decoration: underline; }
|
|
1591
1593
|
.header-sep { height: 1px; margin: 0 16px; background: linear-gradient(90deg, transparent, var(--sac-border), transparent); }
|
|
1592
1594
|
|
|
1593
1595
|
/* Full-page header: taller, logo-led, no close. */
|
|
@@ -1859,6 +1861,8 @@ ${mode === "fullpage" ? `
|
|
|
1859
1861
|
color: color-mix(in srgb, var(--sac-text) 38%, transparent);
|
|
1860
1862
|
}
|
|
1861
1863
|
.footer b { font-weight: 600; color: color-mix(in srgb, var(--sac-text) 55%, transparent); }
|
|
1864
|
+
.footer a { color: inherit; text-decoration: none; }
|
|
1865
|
+
.footer a:hover { text-decoration: underline; }
|
|
1862
1866
|
|
|
1863
1867
|
/* ─────────────────── Pre-chat identity form ───────────────────────── */
|
|
1864
1868
|
.prechat { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 18px; padding: 22px 20px; }
|
|
@@ -2112,6 +2116,8 @@ function phoneToE164(value) {
|
|
|
2112
2116
|
return null;
|
|
2113
2117
|
}
|
|
2114
2118
|
}
|
|
2119
|
+
/** Public smooth-operator repo — the "powered by" header tag + footer link here. */
|
|
2120
|
+
const SMOOTH_OPERATOR_URL = "https://github.com/SmooAI/smooth-operator";
|
|
2115
2121
|
const OBSERVED = [
|
|
2116
2122
|
"endpoint",
|
|
2117
2123
|
"agent-id",
|
|
@@ -2120,7 +2126,8 @@ const OBSERVED = [
|
|
|
2120
2126
|
"placeholder",
|
|
2121
2127
|
"greeting",
|
|
2122
2128
|
"start-open",
|
|
2123
|
-
"mode"
|
|
2129
|
+
"mode",
|
|
2130
|
+
"hide-branding"
|
|
2124
2131
|
];
|
|
2125
2132
|
/**
|
|
2126
2133
|
* Inline SVG icons (static, trusted strings — never interpolated with user data).
|
|
@@ -2237,6 +2244,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2237
2244
|
greeting: this.overrides.greeting ?? this.getAttribute("greeting") ?? void 0,
|
|
2238
2245
|
connectionErrorMessage: this.overrides.connectionErrorMessage,
|
|
2239
2246
|
startOpen: this.overrides.startOpen ?? this.hasAttribute("start-open"),
|
|
2247
|
+
hideBranding: this.overrides.hideBranding ?? this.hasAttribute("hide-branding"),
|
|
2240
2248
|
examplePrompts: this.overrides.examplePrompts,
|
|
2241
2249
|
requireName: this.overrides.requireName,
|
|
2242
2250
|
requireEmail: this.overrides.requireEmail,
|
|
@@ -2290,7 +2298,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2290
2298
|
<span class="title">${escapeHtml(resolved.agentName)}</span>
|
|
2291
2299
|
<span class="status"><span class="dot off"></span><span class="status-text"></span></span>
|
|
2292
2300
|
</div>
|
|
2293
|
-
|
|
2301
|
+
${resolved.hideBranding ? "" : `<a class="powered" href="${SMOOTH_OPERATOR_URL}" target="_blank" rel="noopener noreferrer">powered by smooth-operator</a>`}
|
|
2294
2302
|
</div>` : `<div class="header">
|
|
2295
2303
|
<div class="avatar">${monogram}</div>
|
|
2296
2304
|
<div class="meta">
|
|
@@ -2324,7 +2332,8 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2324
2332
|
<button type="submit" class="pc-submit">Start chat</button>
|
|
2325
2333
|
</form>
|
|
2326
2334
|
</div>`;
|
|
2327
|
-
const
|
|
2335
|
+
const footerInner = [resolved.hideBranding ? "" : `<a href="${SMOOTH_OPERATOR_URL}" target="_blank" rel="noopener noreferrer">powered by <b>smooth‑operator</b></a>`, this.allowChatRestore ? `<button type="button" class="restore-link">Restore my chats</button>` : ""].filter(Boolean).join(" · ");
|
|
2336
|
+
const footerHtml = footerInner ? `<div class="footer">${footerInner}</div>` : "";
|
|
2328
2337
|
const chatHtml = `
|
|
2329
2338
|
<div class="messages"></div>
|
|
2330
2339
|
<div class="interrupt hidden"></div>
|
|
@@ -2333,7 +2342,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2333
2342
|
<textarea rows="1" placeholder="${escapeHtml(resolved.placeholder)}"></textarea>
|
|
2334
2343
|
<button class="send" type="button" aria-label="Send message">${ICON.send}</button>
|
|
2335
2344
|
</div>
|
|
2336
|
-
|
|
2345
|
+
${footerHtml}
|
|
2337
2346
|
</div>`;
|
|
2338
2347
|
const container = document.createElement("div");
|
|
2339
2348
|
container.className = "wrap";
|