@smooai/chat-widget 0.10.0 → 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/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.
@@ -253,6 +259,16 @@ declare class SmoothAgentChatElement extends HTMLElement {
253
259
  private tickReveal;
254
260
  /** Snap the bound bubble to the full buffered text immediately (reduced-motion / no-rAF). */
255
261
  private snapReveal;
262
+ /**
263
+ * Full-page sizing probe: decide whether the host's container gives it a
264
+ * real box. With the `.wrap` flex chain hidden, `height: 100%` of a SIZED
265
+ * container still resolves (clientHeight > 0), while an auto-height parent
266
+ * (e.g. mounted straight into `<body>`) collapses to ~0. Only the latter
267
+ * gets `data-viewport-fallback`, whose CSS applies `min-height: 100dvh` —
268
+ * so an embed inside a fixed-height box never overflows it (the composer
269
+ * stays visible), and a bare full-page route still fills the viewport.
270
+ */
271
+ private syncViewportFallback;
256
272
  /** Cancel any in-flight reveal loop and clear its state (called on full rebuild). */
257
273
  private resetReveal;
258
274
  /**
@@ -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":"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"}
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,
@@ -1398,11 +1399,11 @@ function buildStyles(theme, mode = "popover") {
1398
1399
  --sac-ease: cubic-bezier(.16, 1, .3, 1);
1399
1400
 
1400
1401
  ${mode === "fullpage" ? `/* Full-page: fill the host's box (sized by its container, else the viewport). */
1401
- display: block;
1402
+ display: flex;
1403
+ flex-direction: column;
1402
1404
  position: relative;
1403
1405
  width: 100%;
1404
- height: 100%;
1405
- min-height: 100vh;` : `/* Popover: float in the bottom-right corner. */
1406
+ height: 100%;` : `/* Popover: float in the bottom-right corner. */
1406
1407
  position: fixed;
1407
1408
  bottom: 24px;
1408
1409
  right: 24px;
@@ -1410,7 +1411,20 @@ function buildStyles(theme, mode = "popover") {
1410
1411
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
1411
1412
  -webkit-font-smoothing: antialiased;
1412
1413
  }
1413
-
1414
+ ${mode === "fullpage" ? `
1415
+ /* Viewport fallback — the element sets this attribute only when the host's
1416
+ container gives it no resolved height (e.g. mounted straight into an
1417
+ auto-height <body>). A sized container always wins, so an embed inside a
1418
+ fixed-height box never overflows it (composer stays visible). */
1419
+ :host([data-viewport-fallback]) { min-height: 100dvh; }
1420
+ /* The render wrapper passes the host's box down to the panel via flex. */
1421
+ .wrap {
1422
+ flex: 1;
1423
+ display: flex;
1424
+ flex-direction: column;
1425
+ min-height: 0;
1426
+ }
1427
+ ` : ""}
1414
1428
  * { box-sizing: border-box; }
1415
1429
 
1416
1430
  /* ───────────────────────────── Launcher ───────────────────────────── */
@@ -1492,11 +1506,13 @@ function buildStyles(theme, mode = "popover") {
1492
1506
  pointer-events: none;
1493
1507
  background: radial-gradient(120% 100% at 50% 0%, color-mix(in srgb, var(--sac-primary) 22%, transparent), transparent 70%);
1494
1508
  }
1495
- /* Full-page: the panel becomes the whole surface. */
1509
+ /* Full-page: the panel becomes the whole surface — it follows the host's box
1510
+ (via the .wrap flex chain), never a hardcoded viewport unit. */
1496
1511
  .panel.fullpage {
1497
1512
  width: 100%;
1498
- height: 100%;
1499
- min-height: 100vh;
1513
+ flex: 1;
1514
+ height: auto;
1515
+ min-height: 0;
1500
1516
  max-width: none;
1501
1517
  max-height: none;
1502
1518
  border: none;
@@ -1572,7 +1588,8 @@ function buildStyles(theme, mode = "popover") {
1572
1588
  }
1573
1589
  .close:hover { background: color-mix(in srgb, var(--sac-text) 12%, transparent); transform: translateY(1px); }
1574
1590
  .close svg { width: 16px; height: 16px; opacity: .8; }
1575
- .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; }
1576
1593
  .header-sep { height: 1px; margin: 0 16px; background: linear-gradient(90deg, transparent, var(--sac-border), transparent); }
1577
1594
 
1578
1595
  /* Full-page header: taller, logo-led, no close. */
@@ -1844,6 +1861,8 @@ function buildStyles(theme, mode = "popover") {
1844
1861
  color: color-mix(in srgb, var(--sac-text) 38%, transparent);
1845
1862
  }
1846
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; }
1847
1866
 
1848
1867
  /* ─────────────────── Pre-chat identity form ───────────────────────── */
1849
1868
  .prechat { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 18px; padding: 22px 20px; }
@@ -2097,6 +2116,8 @@ function phoneToE164(value) {
2097
2116
  return null;
2098
2117
  }
2099
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";
2100
2121
  const OBSERVED = [
2101
2122
  "endpoint",
2102
2123
  "agent-id",
@@ -2105,7 +2126,8 @@ const OBSERVED = [
2105
2126
  "placeholder",
2106
2127
  "greeting",
2107
2128
  "start-open",
2108
- "mode"
2129
+ "mode",
2130
+ "hide-branding"
2109
2131
  ];
2110
2132
  /**
2111
2133
  * Inline SVG icons (static, trusted strings — never interpolated with user data).
@@ -2222,6 +2244,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2222
2244
  greeting: this.overrides.greeting ?? this.getAttribute("greeting") ?? void 0,
2223
2245
  connectionErrorMessage: this.overrides.connectionErrorMessage,
2224
2246
  startOpen: this.overrides.startOpen ?? this.hasAttribute("start-open"),
2247
+ hideBranding: this.overrides.hideBranding ?? this.hasAttribute("hide-branding"),
2225
2248
  examplePrompts: this.overrides.examplePrompts,
2226
2249
  requireName: this.overrides.requireName,
2227
2250
  requireEmail: this.overrides.requireEmail,
@@ -2275,7 +2298,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2275
2298
  <span class="title">${escapeHtml(resolved.agentName)}</span>
2276
2299
  <span class="status"><span class="dot off"></span><span class="status-text"></span></span>
2277
2300
  </div>
2278
- <span class="powered">powered by smooth-operator</span>
2301
+ ${resolved.hideBranding ? "" : `<a class="powered" href="${SMOOTH_OPERATOR_URL}" target="_blank" rel="noopener noreferrer">powered by smooth-operator</a>`}
2279
2302
  </div>` : `<div class="header">
2280
2303
  <div class="avatar">${monogram}</div>
2281
2304
  <div class="meta">
@@ -2309,7 +2332,8 @@ var SmoothAgentChatElement = class extends HTMLElement {
2309
2332
  <button type="submit" class="pc-submit">Start chat</button>
2310
2333
  </form>
2311
2334
  </div>`;
2312
- const restoreLink = this.allowChatRestore ? ` · <button type="button" class="restore-link">Restore my chats</button>` : "";
2335
+ const footerInner = [resolved.hideBranding ? "" : `<a href="${SMOOTH_OPERATOR_URL}" target="_blank" rel="noopener noreferrer">powered by <b>smooth&#8209;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>` : "";
2313
2337
  const chatHtml = `
2314
2338
  <div class="messages"></div>
2315
2339
  <div class="interrupt hidden"></div>
@@ -2318,9 +2342,10 @@ var SmoothAgentChatElement = class extends HTMLElement {
2318
2342
  <textarea rows="1" placeholder="${escapeHtml(resolved.placeholder)}"></textarea>
2319
2343
  <button class="send" type="button" aria-label="Send message">${ICON.send}</button>
2320
2344
  </div>
2321
- <div class="footer">powered by <b>smooth&#8209;operator</b>${restoreLink}</div>
2345
+ ${footerHtml}
2322
2346
  </div>`;
2323
2347
  const container = document.createElement("div");
2348
+ container.className = "wrap";
2324
2349
  container.innerHTML = `
2325
2350
  ${fullpage ? "" : `<button class="launcher" part="launcher" aria-label="Open chat">${ICON.spark}</button>`}
2326
2351
  <div class="panel${fullpage ? " fullpage" : " hidden"}" part="panel" role="${fullpage ? "region" : "dialog"}" aria-label="${escapeHtml(resolved.agentName)} chat">
@@ -2364,6 +2389,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2364
2389
  await this.controller?.connect().catch(() => {});
2365
2390
  })();
2366
2391
  });
2392
+ if (fullpage) this.syncViewportFallback();
2367
2393
  if (fullpage && !gating) this.controller?.connect().catch(() => {});
2368
2394
  this.syncOpenState();
2369
2395
  if (!gating) this.renderMessages();
@@ -2853,6 +2879,24 @@ var SmoothAgentChatElement = class extends HTMLElement {
2853
2879
  this.streamBubbleEl.textContent = this.streamTarget;
2854
2880
  }
2855
2881
  }
2882
+ /**
2883
+ * Full-page sizing probe: decide whether the host's container gives it a
2884
+ * real box. With the `.wrap` flex chain hidden, `height: 100%` of a SIZED
2885
+ * container still resolves (clientHeight > 0), while an auto-height parent
2886
+ * (e.g. mounted straight into `<body>`) collapses to ~0. Only the latter
2887
+ * gets `data-viewport-fallback`, whose CSS applies `min-height: 100dvh` —
2888
+ * so an embed inside a fixed-height box never overflows it (the composer
2889
+ * stays visible), and a bare full-page route still fills the viewport.
2890
+ */
2891
+ syncViewportFallback() {
2892
+ const wrap = this.shadowRoot?.querySelector(".wrap");
2893
+ if (!wrap) return;
2894
+ const prev = wrap.style.display;
2895
+ wrap.style.display = "none";
2896
+ const heightless = this.clientHeight < 8;
2897
+ wrap.style.display = prev;
2898
+ this.toggleAttribute("data-viewport-fallback", heightless);
2899
+ }
2856
2900
  /** Cancel any in-flight reveal loop and clear its state (called on full rebuild). */
2857
2901
  resetReveal() {
2858
2902
  if (this.rafId && typeof cancelAnimationFrame === "function") cancelAnimationFrame(this.rafId);