chatbotlite 0.5.0 → 0.5.1

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.
@@ -1015,12 +1015,15 @@ var BOLT = "\u26A1";
1015
1015
  var DEFAULT_PRIMARY = "#0f172a";
1016
1016
  var DEFAULT_ON_PRIMARY = "#ffffff";
1017
1017
  var SURFACE = "#ffffff";
1018
- var SURFACE_MUTED = "#fafbfc";
1018
+ var CHAT_BG = "#f5f1eb";
1019
+ var BUBBLE_BOT = "#ffffff";
1020
+ var INPUT_BG = "#f1f3f5";
1019
1021
  var BORDER = "#e5e7eb";
1022
+ var BORDER_LIGHT = "rgba(15,23,42,0.06)";
1020
1023
  var TEXT_BODY = "#0f172a";
1021
1024
  var TEXT_MUTED = "#64748b";
1022
1025
  var TEXT_FAINT = "#94a3b8";
1023
- var FONT_STACK = `'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif`;
1026
+ var FONT_STACK = `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif`;
1024
1027
  var STYLE_TAG_ID = "chatbotlite-widget-styles";
1025
1028
  var KEYFRAMES = `
1026
1029
  @keyframes chatbotlite-pop { 0% { opacity: 0; transform: scale(0.6); } 100% { opacity: 1; transform: scale(1); } }
@@ -1032,8 +1035,8 @@ var KEYFRAMES = `
1032
1035
  .chatbotlite-launcher { transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 180ms cubic-bezier(0.4, 0, 0.2, 1); animation: chatbotlite-pop 320ms cubic-bezier(0.34, 1.56, 0.64, 1), chatbotlite-pulse 3.6s ease-in-out 1.2s 2; }
1033
1036
  .chatbotlite-launcher:hover { transform: translateY(-2px) scale(1.04); }
1034
1037
  .chatbotlite-launcher:active { transform: translateY(0) scale(0.98); }
1035
- .chatbotlite-close { transition: background 120ms ease; }
1036
- .chatbotlite-close:hover { background: rgba(255,255,255,0.16); }
1038
+ .chatbotlite-close { transition: background 120ms ease, color 120ms ease; }
1039
+ .chatbotlite-close:hover { background: rgba(15,23,42,0.06); color: ${TEXT_BODY}; }
1037
1040
  .chatbotlite-send { transition: transform 120ms ease, opacity 120ms ease, box-shadow 120ms ease; }
1038
1041
  .chatbotlite-send:not(:disabled):hover { transform: translateY(-1px); }
1039
1042
  .chatbotlite-send:not(:disabled):active { transform: translateY(0); }
@@ -1041,8 +1044,8 @@ var KEYFRAMES = `
1041
1044
  .chatbotlite-msg { animation: chatbotlite-fade-in 220ms cubic-bezier(0.4, 0, 0.2, 1); }
1042
1045
  .chatbotlite-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: ${TEXT_FAINT}; margin-right: 4px; animation: chatbotlite-dot 1.2s ease-in-out infinite; }
1043
1046
  .chatbotlite-cursor { display: inline-block; width: 2px; height: 1em; background: currentColor; vertical-align: text-bottom; margin-left: 1px; animation: chatbotlite-cursor 1s steps(1) infinite; }
1044
- .chatbotlite-attach-btn:hover:not(:disabled), .chatbotlite-voice-btn:hover:not(:disabled) { background: ${BORDER}; }
1045
- .chatbotlite-attach-btn:active:not(:disabled), .chatbotlite-voice-btn:active:not(:disabled) { transform: scale(0.96); }
1047
+ .chatbotlite-icon-btn:hover:not(:disabled) { background: rgba(15,23,42,0.06) !important; opacity: 1 !important; }
1048
+ .chatbotlite-icon-btn:active:not(:disabled) { transform: scale(0.92); }
1046
1049
  .chatbotlite-dot:nth-child(2) { animation-delay: 0.15s; }
1047
1050
  .chatbotlite-dot:nth-child(3) { animation-delay: 0.3s; margin-right: 0; }
1048
1051
  .chatbotlite-brand:hover { color: ${TEXT_MUTED} !important; }
@@ -1358,17 +1361,34 @@ function ChatWidget(props) {
1358
1361
  },
1359
1362
  children: [
1360
1363
  /* @__PURE__ */ jsxRuntime.jsxs("header", { style: {
1361
- padding: "16px 18px",
1362
- background: primary,
1363
- color: onPrimary,
1364
+ padding: "14px 16px",
1365
+ background: SURFACE,
1366
+ color: TEXT_BODY,
1364
1367
  display: "flex",
1365
1368
  justifyContent: "space-between",
1366
1369
  alignItems: "center",
1367
- gap: 12
1370
+ gap: 12,
1371
+ borderBottom: `1px solid ${BORDER_LIGHT}`
1368
1372
  }, children: [
1369
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", lineHeight: 1.2, minWidth: 0 }, children: [
1370
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 600, fontSize: 15, letterSpacing: "-0.01em", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: resolvedTitle }),
1371
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, opacity: 0.7, marginTop: 2, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: subtitle })
1373
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: 10, minWidth: 0 }, children: [
1374
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
1375
+ width: 36,
1376
+ height: 36,
1377
+ borderRadius: "50%",
1378
+ background: primary,
1379
+ color: onPrimary,
1380
+ display: "flex",
1381
+ alignItems: "center",
1382
+ justifyContent: "center",
1383
+ fontSize: 16,
1384
+ fontWeight: 600,
1385
+ flexShrink: 0,
1386
+ letterSpacing: "-0.02em"
1387
+ }, children: resolvedTitle.charAt(0).toUpperCase() }),
1388
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", lineHeight: 1.2, minWidth: 0 }, children: [
1389
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontWeight: 600, fontSize: 15, letterSpacing: "-0.01em", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: TEXT_BODY }, children: resolvedTitle }),
1390
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, color: TEXT_MUTED, marginTop: 2, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: subtitle ?? (sending ? "typing\u2026" : "online") })
1391
+ ] })
1372
1392
  ] }),
1373
1393
  /* @__PURE__ */ jsxRuntime.jsx(
1374
1394
  "button",
@@ -1379,7 +1399,7 @@ function ChatWidget(props) {
1379
1399
  style: {
1380
1400
  background: "transparent",
1381
1401
  border: "none",
1382
- color: onPrimary,
1402
+ color: TEXT_MUTED,
1383
1403
  width: 32,
1384
1404
  height: 32,
1385
1405
  borderRadius: 10,
@@ -1406,7 +1426,7 @@ function ChatWidget(props) {
1406
1426
  display: "flex",
1407
1427
  flexDirection: "column",
1408
1428
  gap: 8,
1409
- background: SURFACE_MUTED
1429
+ background: CHAT_BG
1410
1430
  },
1411
1431
  children: [
1412
1432
  messages.map((m) => /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 6, alignItems: m.role === "user" ? "flex-end" : "stretch" }, children: [
@@ -1416,18 +1436,18 @@ function ChatWidget(props) {
1416
1436
  className: "chatbotlite-msg",
1417
1437
  style: {
1418
1438
  alignSelf: m.role === "user" ? "flex-end" : "flex-start",
1419
- maxWidth: "82%",
1420
- padding: "9px 13px",
1421
- borderRadius: m.role === "user" ? "18px 18px 4px 18px" : "18px 18px 18px 4px",
1422
- background: m.role === "user" ? primary : SURFACE,
1439
+ maxWidth: "78%",
1440
+ padding: "8px 12px",
1441
+ borderRadius: 18,
1442
+ background: m.role === "user" ? primary : BUBBLE_BOT,
1423
1443
  color: m.role === "user" ? onPrimary : TEXT_BODY,
1424
- border: m.role === "user" ? "none" : `1px solid ${BORDER}`,
1425
- fontSize: 14,
1426
- lineHeight: 1.5,
1444
+ border: "none",
1445
+ fontSize: 14.5,
1446
+ lineHeight: 1.4,
1427
1447
  letterSpacing: "-0.005em",
1428
1448
  whiteSpace: "pre-wrap",
1429
1449
  wordBreak: "break-word",
1430
- boxShadow: m.role === "user" ? "0 1px 2px rgba(15,23,42,0.12)" : "0 1px 2px rgba(15,23,42,0.04)"
1450
+ boxShadow: m.role === "user" ? "none" : "0 1px 0.5px rgba(15,23,42,0.05)"
1431
1451
  },
1432
1452
  children: [
1433
1453
  m.content,
@@ -1442,7 +1462,7 @@ function ChatWidget(props) {
1442
1462
  onPrimary,
1443
1463
  border: BORDER,
1444
1464
  surface: SURFACE,
1445
- surfaceMuted: SURFACE_MUTED,
1465
+ surfaceMuted: CHAT_BG,
1446
1466
  textBody: TEXT_BODY,
1447
1467
  textMuted: TEXT_MUTED
1448
1468
  };
@@ -1525,17 +1545,16 @@ function ChatWidget(props) {
1525
1545
  return null;
1526
1546
  })
1527
1547
  ] }, m.id)),
1528
- sending && /* @__PURE__ */ jsxRuntime.jsxs(
1548
+ sending && messages[messages.length - 1]?.content === "" && /* @__PURE__ */ jsxRuntime.jsxs(
1529
1549
  "div",
1530
1550
  {
1531
1551
  className: "chatbotlite-msg",
1532
1552
  style: {
1533
1553
  alignSelf: "flex-start",
1534
- padding: "12px 14px",
1535
- borderRadius: "18px 18px 18px 4px",
1536
- background: SURFACE,
1537
- border: `1px solid ${BORDER}`,
1538
- boxShadow: "0 1px 2px rgba(15,23,42,0.04)"
1554
+ padding: "10px 14px",
1555
+ borderRadius: 18,
1556
+ background: BUBBLE_BOT,
1557
+ boxShadow: "0 1px 0.5px rgba(15,23,42,0.05)"
1539
1558
  },
1540
1559
  children: [
1541
1560
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "chatbotlite-dot" }),
@@ -1547,172 +1566,199 @@ function ChatWidget(props) {
1547
1566
  ]
1548
1567
  }
1549
1568
  ),
1550
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: {
1551
- display: "flex",
1552
- flexDirection: "column",
1553
- padding: 12,
1554
- gap: 8,
1569
+ files.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
1570
+ padding: "8px 12px 0",
1555
1571
  background: SURFACE,
1556
- borderTop: `1px solid ${BORDER}`
1557
- }, children: [
1558
- files.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6 }, children: files.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1559
- "span",
1560
- {
1561
- style: {
1562
- display: "inline-flex",
1563
- alignItems: "center",
1564
- gap: 6,
1565
- padding: "4px 8px 4px 10px",
1566
- borderRadius: 8,
1567
- background: SURFACE_MUTED,
1568
- border: `1px solid ${BORDER}`,
1569
- fontSize: 12,
1570
- color: TEXT_BODY,
1571
- maxWidth: 200
1572
- },
1573
- children: [
1574
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: [
1575
- "\u{1F4CE} ",
1576
- f.name
1577
- ] }),
1578
- /* @__PURE__ */ jsxRuntime.jsx(
1579
- "button",
1580
- {
1581
- onClick: () => removeFile(i),
1582
- "aria-label": `Remove ${f.name}`,
1583
- style: {
1584
- background: "transparent",
1585
- border: "none",
1586
- cursor: "pointer",
1587
- color: TEXT_MUTED,
1588
- fontSize: 14,
1589
- lineHeight: 1,
1590
- padding: 0
1591
- },
1592
- children: "\xD7"
1593
- }
1594
- )
1595
- ]
1572
+ display: "flex",
1573
+ flexWrap: "wrap",
1574
+ gap: 6
1575
+ }, children: files.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1576
+ "span",
1577
+ {
1578
+ style: {
1579
+ display: "inline-flex",
1580
+ alignItems: "center",
1581
+ gap: 6,
1582
+ padding: "4px 8px 4px 10px",
1583
+ borderRadius: 999,
1584
+ background: INPUT_BG,
1585
+ fontSize: 12,
1586
+ color: TEXT_BODY,
1587
+ maxWidth: 200
1596
1588
  },
1597
- `${f.name}-${i}`
1598
- )) }),
1599
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", gap: 8 }, children: [
1600
- attachEnabled && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1601
- /* @__PURE__ */ jsxRuntime.jsx(
1602
- "input",
1603
- {
1604
- ref: fileInputRef,
1605
- type: "file",
1606
- multiple: true,
1607
- accept: acceptAttr,
1608
- style: { display: "none" },
1609
- onChange: (e) => {
1610
- if (e.target.files) addFiles(e.target.files);
1611
- e.target.value = "";
1612
- }
1613
- }
1614
- ),
1589
+ children: [
1590
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: [
1591
+ "\u{1F4CE} ",
1592
+ f.name
1593
+ ] }),
1615
1594
  /* @__PURE__ */ jsxRuntime.jsx(
1616
1595
  "button",
1617
1596
  {
1618
- className: "chatbotlite-attach-btn",
1619
- onClick: () => fileInputRef.current?.click(),
1620
- disabled: sending || files.length >= maxFiles,
1621
- "aria-label": "Attach file",
1622
- style: {
1623
- width: 40,
1624
- height: 40,
1625
- borderRadius: 10,
1626
- background: SURFACE_MUTED,
1627
- border: `1px solid ${BORDER}`,
1628
- cursor: sending || files.length >= maxFiles ? "default" : "pointer",
1629
- opacity: sending || files.length >= maxFiles ? 0.4 : 1,
1630
- fontSize: 16,
1631
- transition: "background 120ms ease, transform 80ms ease"
1632
- },
1633
- children: "\u{1F4CE}"
1597
+ onClick: () => removeFile(i),
1598
+ "aria-label": `Remove ${f.name}`,
1599
+ style: { background: "transparent", border: "none", cursor: "pointer", color: TEXT_MUTED, fontSize: 14, lineHeight: 1, padding: 0 },
1600
+ children: "\xD7"
1634
1601
  }
1635
1602
  )
1636
- ] }),
1637
- voiceEnabled && speechSupported && /* @__PURE__ */ jsxRuntime.jsx(
1638
- "button",
1639
- {
1640
- className: "chatbotlite-voice-btn",
1641
- onClick: toggleVoice,
1642
- disabled: sending,
1643
- "aria-label": voiceListening ? "Stop recording" : "Start voice input",
1644
- style: {
1645
- width: 40,
1646
- height: 40,
1647
- borderRadius: 10,
1648
- background: voiceListening ? primary : SURFACE_MUTED,
1649
- color: voiceListening ? onPrimary : TEXT_BODY,
1650
- border: `1px solid ${voiceListening ? primary : BORDER}`,
1651
- cursor: sending ? "default" : "pointer",
1652
- opacity: sending ? 0.4 : 1,
1653
- fontSize: 16,
1654
- transition: "background 120ms ease, color 120ms ease, border-color 120ms ease, transform 80ms ease"
1655
- },
1656
- children: "\u{1F399}\uFE0F"
1657
- }
1658
- ),
1603
+ ]
1604
+ },
1605
+ `${f.name}-${i}`
1606
+ )) }),
1607
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
1608
+ padding: "10px 12px 12px",
1609
+ background: SURFACE
1610
+ }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: {
1611
+ display: "flex",
1612
+ alignItems: "flex-end",
1613
+ gap: 6,
1614
+ padding: "6px 6px 6px 10px",
1615
+ background: INPUT_BG,
1616
+ borderRadius: 22,
1617
+ transition: "background 120ms ease"
1618
+ }, children: [
1619
+ attachEnabled && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1659
1620
  /* @__PURE__ */ jsxRuntime.jsx(
1660
1621
  "input",
1661
1622
  {
1662
- ref: inputRef,
1663
- className: "chatbotlite-input",
1664
- type: "text",
1665
- value: input,
1666
- onChange: (e) => setInput(e.target.value),
1667
- onKeyDown: (e) => {
1668
- if (e.key === "Enter" && !e.shiftKey) {
1669
- e.preventDefault();
1670
- void send();
1671
- }
1672
- },
1673
- placeholder: "Type a message\u2026",
1674
- disabled: sending,
1675
- style: {
1676
- flex: 1,
1677
- padding: "10px 14px",
1678
- borderRadius: 12,
1679
- border: `1px solid ${BORDER}`,
1680
- background: SURFACE_MUTED,
1681
- fontSize: 14,
1682
- fontFamily: FONT_STACK,
1683
- color: TEXT_BODY,
1684
- outline: "none",
1685
- transition: "box-shadow 120ms ease, border-color 120ms ease"
1623
+ ref: fileInputRef,
1624
+ type: "file",
1625
+ multiple: true,
1626
+ accept: acceptAttr,
1627
+ style: { display: "none" },
1628
+ onChange: (e) => {
1629
+ if (e.target.files) addFiles(e.target.files);
1630
+ e.target.value = "";
1686
1631
  }
1687
1632
  }
1688
1633
  ),
1689
1634
  /* @__PURE__ */ jsxRuntime.jsx(
1690
1635
  "button",
1691
1636
  {
1692
- className: "chatbotlite-send",
1693
- onClick: () => void send(),
1694
- disabled: sending || !input.trim() && files.length === 0,
1695
- "aria-label": "Send message",
1637
+ className: "chatbotlite-icon-btn",
1638
+ onClick: () => fileInputRef.current?.click(),
1639
+ disabled: sending || files.length >= maxFiles,
1640
+ "aria-label": "Attach file",
1696
1641
  style: {
1697
- padding: "0 16px",
1698
- height: 40,
1699
- minWidth: 64,
1700
- borderRadius: 12,
1701
- background: primary,
1702
- color: onPrimary,
1642
+ width: 32,
1643
+ height: 32,
1644
+ borderRadius: "50%",
1645
+ background: "transparent",
1703
1646
  border: "none",
1704
- fontSize: 14,
1705
- fontWeight: 600,
1706
- fontFamily: FONT_STACK,
1707
- cursor: sending || !input.trim() && files.length === 0 ? "default" : "pointer",
1708
- opacity: sending || !input.trim() && files.length === 0 ? 0.4 : 1,
1709
- boxShadow: "0 2px 6px -1px rgba(15,23,42,0.18)"
1647
+ cursor: sending || files.length >= maxFiles ? "default" : "pointer",
1648
+ opacity: sending || files.length >= maxFiles ? 0.35 : 0.7,
1649
+ fontSize: 18,
1650
+ lineHeight: 1,
1651
+ padding: 0,
1652
+ display: "flex",
1653
+ alignItems: "center",
1654
+ justifyContent: "center",
1655
+ flexShrink: 0,
1656
+ alignSelf: "center",
1657
+ transition: "opacity 120ms ease, background 120ms ease"
1710
1658
  },
1711
- children: "Send"
1659
+ children: "\u{1F4CE}"
1712
1660
  }
1713
1661
  )
1714
- ] })
1715
- ] }),
1662
+ ] }),
1663
+ voiceEnabled && speechSupported && /* @__PURE__ */ jsxRuntime.jsx(
1664
+ "button",
1665
+ {
1666
+ className: "chatbotlite-icon-btn",
1667
+ onClick: toggleVoice,
1668
+ disabled: sending,
1669
+ "aria-label": voiceListening ? "Stop recording" : "Start voice input",
1670
+ style: {
1671
+ width: 32,
1672
+ height: 32,
1673
+ borderRadius: "50%",
1674
+ background: voiceListening ? primary : "transparent",
1675
+ color: voiceListening ? onPrimary : "inherit",
1676
+ border: "none",
1677
+ cursor: sending ? "default" : "pointer",
1678
+ opacity: sending ? 0.35 : voiceListening ? 1 : 0.7,
1679
+ fontSize: 16,
1680
+ lineHeight: 1,
1681
+ padding: 0,
1682
+ display: "flex",
1683
+ alignItems: "center",
1684
+ justifyContent: "center",
1685
+ flexShrink: 0,
1686
+ alignSelf: "center",
1687
+ transition: "opacity 120ms ease, background 120ms ease, color 120ms ease"
1688
+ },
1689
+ children: "\u{1F399}\uFE0F"
1690
+ }
1691
+ ),
1692
+ /* @__PURE__ */ jsxRuntime.jsx(
1693
+ "textarea",
1694
+ {
1695
+ ref: inputRef,
1696
+ className: "chatbotlite-input",
1697
+ rows: 1,
1698
+ value: input,
1699
+ onChange: (e) => {
1700
+ setInput(e.target.value);
1701
+ const el = e.currentTarget;
1702
+ el.style.height = "auto";
1703
+ el.style.height = Math.min(el.scrollHeight, 100) + "px";
1704
+ },
1705
+ onKeyDown: (e) => {
1706
+ if (e.key === "Enter" && !e.shiftKey) {
1707
+ e.preventDefault();
1708
+ void send();
1709
+ }
1710
+ },
1711
+ placeholder: "Message",
1712
+ disabled: sending,
1713
+ style: {
1714
+ flex: 1,
1715
+ padding: "7px 4px",
1716
+ border: "none",
1717
+ background: "transparent",
1718
+ fontSize: 14.5,
1719
+ fontFamily: FONT_STACK,
1720
+ color: TEXT_BODY,
1721
+ outline: "none",
1722
+ resize: "none",
1723
+ lineHeight: 1.35,
1724
+ maxHeight: 100,
1725
+ minHeight: 20
1726
+ }
1727
+ }
1728
+ ),
1729
+ /* @__PURE__ */ jsxRuntime.jsx(
1730
+ "button",
1731
+ {
1732
+ className: "chatbotlite-send",
1733
+ onClick: () => void send(),
1734
+ disabled: sending || !input.trim() && files.length === 0,
1735
+ "aria-label": "Send message",
1736
+ style: {
1737
+ width: 34,
1738
+ height: 34,
1739
+ borderRadius: "50%",
1740
+ background: primary,
1741
+ color: onPrimary,
1742
+ border: "none",
1743
+ fontSize: 14,
1744
+ fontWeight: 600,
1745
+ fontFamily: FONT_STACK,
1746
+ cursor: sending || !input.trim() && files.length === 0 ? "default" : "pointer",
1747
+ opacity: sending || !input.trim() && files.length === 0 ? 0.35 : 1,
1748
+ display: "flex",
1749
+ alignItems: "center",
1750
+ justifyContent: "center",
1751
+ flexShrink: 0,
1752
+ padding: 0,
1753
+ transition: "opacity 120ms ease, transform 80ms ease"
1754
+ },
1755
+ children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
1756
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "19", x2: "12", y2: "5" }),
1757
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "5 12 12 5 19 12" })
1758
+ ] })
1759
+ }
1760
+ )
1761
+ ] }) }),
1716
1762
  showBranding && /* @__PURE__ */ jsxRuntime.jsxs(
1717
1763
  "a",
1718
1764
  {