@copilotkit/react-ui 1.8.0-next.6 → 1.8.0-next.8
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/CHANGELOG.md +19 -0
- package/dist/{chunk-FBYETUFL.mjs → chunk-5M7ODWKH.mjs} +6 -12
- package/dist/chunk-5M7ODWKH.mjs.map +1 -0
- package/dist/{chunk-GBXUOB6L.mjs → chunk-7BXD65QV.mjs} +3 -3
- package/dist/{chunk-6H7IQRIU.mjs → chunk-DKYAA4DM.mjs} +2 -2
- package/dist/{chunk-DFHFPZQD.mjs → chunk-FGVMRZ5D.mjs} +9 -16
- package/dist/chunk-FGVMRZ5D.mjs.map +1 -0
- package/dist/{chunk-Z6YOBQUJ.mjs → chunk-HGA4N4ME.mjs} +8 -13
- package/dist/chunk-HGA4N4ME.mjs.map +1 -0
- package/dist/{chunk-FFNESJSG.mjs → chunk-N5QWMFFT.mjs} +2 -2
- package/dist/{chunk-YC4NBUGE.mjs → chunk-NRA3CFEE.mjs} +3 -3
- package/dist/chunk-NRA3CFEE.mjs.map +1 -0
- package/dist/{chunk-CGVOCLHN.mjs → chunk-P7S3E5UW.mjs} +2 -2
- package/dist/{chunk-OTPAZXVR.mjs → chunk-Q5V6S67N.mjs} +17 -6
- package/dist/chunk-Q5V6S67N.mjs.map +1 -0
- package/dist/{chunk-LYHZXHTJ.mjs → chunk-SNLHKLW3.mjs} +2 -2
- package/dist/{chunk-5JY5QJ2W.mjs → chunk-UN2E3HCK.mjs} +9 -3
- package/dist/chunk-UN2E3HCK.mjs.map +1 -0
- package/dist/{chunk-QS7UFQFD.mjs → chunk-Y5RNSFAD.mjs} +3 -3
- package/dist/{chunk-VC4NO5QZ.mjs → chunk-YOEL33HG.mjs} +2 -2
- package/dist/{chunk-GJME6MK4.mjs → chunk-ZY25LVYR.mjs} +2 -2
- package/dist/components/chat/Button.js.map +1 -1
- package/dist/components/chat/Button.mjs +2 -2
- package/dist/components/chat/Chat.d.ts +2 -11
- package/dist/components/chat/Chat.js +67 -76
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +6 -7
- package/dist/components/chat/ChatContext.d.ts +15 -0
- package/dist/components/chat/ChatContext.js +67 -1
- package/dist/components/chat/ChatContext.js.map +1 -1
- package/dist/components/chat/ChatContext.mjs +1 -1
- package/dist/components/chat/Header.js +18 -7
- package/dist/components/chat/Header.js.map +1 -1
- package/dist/components/chat/Header.mjs +5 -5
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +2 -2
- package/dist/components/chat/Modal.d.ts +1 -1
- package/dist/components/chat/Modal.js +92 -94
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +13 -14
- package/dist/components/chat/Popup.js +94 -96
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +14 -15
- package/dist/components/chat/Sidebar.js +94 -96
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +14 -15
- package/dist/components/chat/Window.js.map +1 -1
- package/dist/components/chat/Window.mjs +2 -2
- package/dist/components/chat/index.d.ts +1 -1
- package/dist/components/chat/index.js +96 -98
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +17 -18
- package/dist/components/chat/messages/AssistantMessage.js +4 -67
- package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
- package/dist/components/chat/messages/AssistantMessage.mjs +2 -2
- package/dist/components/chat/props.d.ts +1 -5
- package/dist/components/chat/props.js.map +1 -1
- package/dist/components/dev-console/console.js +18 -7
- package/dist/components/dev-console/console.js.map +1 -1
- package/dist/components/dev-console/console.mjs +3 -3
- package/dist/components/dev-console/icons.js +16 -5
- package/dist/components/dev-console/icons.js.map +1 -1
- package/dist/components/dev-console/icons.mjs +1 -1
- package/dist/components/dev-console/index.js +18 -7
- package/dist/components/dev-console/index.js.map +1 -1
- package/dist/components/dev-console/index.mjs +3 -3
- package/dist/components/help-modal/index.js +2 -2
- package/dist/components/help-modal/index.js.map +1 -1
- package/dist/components/help-modal/index.mjs +1 -1
- package/dist/components/help-modal/modal.js +2 -2
- package/dist/components/help-modal/modal.js.map +1 -1
- package/dist/components/help-modal/modal.mjs +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +96 -98
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +17 -18
- package/dist/index.css +39 -34
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +96 -98
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -19
- package/dist/types/css.d.ts +2 -0
- package/dist/types/css.js.map +1 -1
- package/package.json +4 -4
- package/src/components/chat/Chat.tsx +0 -16
- package/src/components/chat/ChatContext.tsx +25 -0
- package/src/components/chat/Modal.tsx +0 -6
- package/src/components/chat/messages/AssistantMessage.tsx +4 -5
- package/src/components/chat/props.ts +0 -5
- package/src/components/dev-console/icons.tsx +9 -2
- package/src/components/help-modal/modal.tsx +2 -2
- package/src/css/colors.css +3 -0
- package/src/css/console.css +44 -9
- package/src/styles.css +0 -1
- package/src/types/css.ts +2 -0
- package/dist/chunk-5JY5QJ2W.mjs.map +0 -1
- package/dist/chunk-DFHFPZQD.mjs.map +0 -1
- package/dist/chunk-FBYETUFL.mjs.map +0 -1
- package/dist/chunk-OTPAZXVR.mjs.map +0 -1
- package/dist/chunk-UZTZXMYS.mjs +0 -18
- package/dist/chunk-UZTZXMYS.mjs.map +0 -1
- package/dist/chunk-YC4NBUGE.mjs.map +0 -1
- package/dist/chunk-Z6YOBQUJ.mjs.map +0 -1
- package/dist/components/chat/Response.d.ts +0 -7
- package/dist/components/chat/Response.js +0 -64
- package/dist/components/chat/Response.js.map +0 -1
- package/dist/components/chat/Response.mjs +0 -10
- package/dist/components/chat/Response.mjs.map +0 -1
- package/src/components/chat/Response.tsx +0 -12
- package/src/css/response.css +0 -26
- /package/dist/{chunk-GBXUOB6L.mjs.map → chunk-7BXD65QV.mjs.map} +0 -0
- /package/dist/{chunk-6H7IQRIU.mjs.map → chunk-DKYAA4DM.mjs.map} +0 -0
- /package/dist/{chunk-FFNESJSG.mjs.map → chunk-N5QWMFFT.mjs.map} +0 -0
- /package/dist/{chunk-CGVOCLHN.mjs.map → chunk-P7S3E5UW.mjs.map} +0 -0
- /package/dist/{chunk-LYHZXHTJ.mjs.map → chunk-SNLHKLW3.mjs.map} +0 -0
- /package/dist/{chunk-QS7UFQFD.mjs.map → chunk-Y5RNSFAD.mjs.map} +0 -0
- /package/dist/{chunk-VC4NO5QZ.mjs.map → chunk-YOEL33HG.mjs.map} +0 -0
- /package/dist/{chunk-GJME6MK4.mjs.map → chunk-ZY25LVYR.mjs.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -372,7 +372,10 @@ var ChatContextProvider = ({
|
|
|
372
372
|
spinnerIcon: SpinnerIcon,
|
|
373
373
|
stopIcon: StopIcon,
|
|
374
374
|
regenerateIcon: RegenerateIcon,
|
|
375
|
-
pushToTalkIcon: MicrophoneIcon
|
|
375
|
+
pushToTalkIcon: MicrophoneIcon,
|
|
376
|
+
copyIcon: CopyIcon,
|
|
377
|
+
thumbsUpIcon: ThumbsUpIcon,
|
|
378
|
+
thumbsDownIcon: ThumbsDownIcon
|
|
376
379
|
}), icons),
|
|
377
380
|
[icons]
|
|
378
381
|
);
|
|
@@ -687,13 +690,24 @@ var ExclamationMarkIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
|
687
690
|
) }) })
|
|
688
691
|
}
|
|
689
692
|
);
|
|
690
|
-
var ChevronDownIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
691
|
-
"
|
|
693
|
+
var ChevronDownIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
694
|
+
"svg",
|
|
692
695
|
{
|
|
693
|
-
|
|
694
|
-
|
|
696
|
+
width: "7px",
|
|
697
|
+
height: "4px",
|
|
698
|
+
viewBox: "0 0 7 4",
|
|
699
|
+
version: "1.1",
|
|
700
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
701
|
+
fill: "currentColor",
|
|
702
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Group", fill: "currentColor", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
703
|
+
"path",
|
|
704
|
+
{
|
|
705
|
+
d: "M3.71690723,3.90271086 C3.59268176,4.03242971 3.39143629,4.03242971 3.26721082,3.90271086 L0.0853966595,0.57605615 C-0.0314221035,0.444981627 -0.0279751448,0.240725043 0.0931934622,0.114040675 C0.214362069,-0.0126436935 0.409725445,-0.0162475626 0.535093061,0.105888951 L3.49205902,3.19746006 L6.44902499,0.105888951 C6.52834574,0.0168884389 6.64780588,-0.0197473458 6.7605411,0.0103538404 C6.87327633,0.0404550266 6.96130636,0.132492308 6.99009696,0.250359396 C7.01888756,0.368226483 6.98384687,0.493124608 6.89872139,0.57605615 L3.71690723,3.90271086 Z",
|
|
706
|
+
id: "Path"
|
|
707
|
+
}
|
|
708
|
+
) }) })
|
|
695
709
|
}
|
|
696
|
-
)
|
|
710
|
+
);
|
|
697
711
|
var CheckIcon2 = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
698
712
|
"svg",
|
|
699
713
|
{
|
|
@@ -776,11 +790,11 @@ function CopilotKitHelpModal() {
|
|
|
776
790
|
right: "-120px",
|
|
777
791
|
width: "380px"
|
|
778
792
|
},
|
|
779
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "
|
|
793
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "copilotKitHelpModal rounded-lg shadow-xl w-full p-4 flex-col relative", children: [
|
|
780
794
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
781
795
|
"button",
|
|
782
796
|
{
|
|
783
|
-
className: "absolute text-gray-400 hover:text-gray-600 focus:outline-none",
|
|
797
|
+
className: "copilotKitHelpModalCloseButton absolute text-gray-400 hover:text-gray-600 focus:outline-none",
|
|
784
798
|
style: { top: "10px", right: "10px" },
|
|
785
799
|
onClick: () => setShowHelpModal(false),
|
|
786
800
|
"aria-label": "Close",
|
|
@@ -1439,18 +1453,8 @@ var Input = ({ inProgress, onSend, isVisible = false, onStop }) => {
|
|
|
1439
1453
|
] }) });
|
|
1440
1454
|
};
|
|
1441
1455
|
|
|
1442
|
-
// src/components/chat/Response.tsx
|
|
1443
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1444
|
-
var ResponseButton = ({ onClick, inProgress }) => {
|
|
1445
|
-
const context = useChatContext();
|
|
1446
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { onClick, className: "copilotKitResponseButton", children: [
|
|
1447
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: inProgress ? context.icons.stopIcon : context.icons.regenerateIcon }),
|
|
1448
|
-
inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse
|
|
1449
|
-
] });
|
|
1450
|
-
};
|
|
1451
|
-
|
|
1452
1456
|
// src/components/chat/messages/RenderTextMessage.tsx
|
|
1453
|
-
var
|
|
1457
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1454
1458
|
function RenderTextMessage(props) {
|
|
1455
1459
|
const {
|
|
1456
1460
|
message,
|
|
@@ -1466,7 +1470,7 @@ function RenderTextMessage(props) {
|
|
|
1466
1470
|
} = props;
|
|
1467
1471
|
if (message.isTextMessage()) {
|
|
1468
1472
|
if (message.role === "user") {
|
|
1469
|
-
return /* @__PURE__ */ (0,
|
|
1473
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1470
1474
|
UserMessage2,
|
|
1471
1475
|
{
|
|
1472
1476
|
"data-message-role": "user",
|
|
@@ -1476,7 +1480,7 @@ function RenderTextMessage(props) {
|
|
|
1476
1480
|
index
|
|
1477
1481
|
);
|
|
1478
1482
|
} else if (message.role == "assistant") {
|
|
1479
|
-
return /* @__PURE__ */ (0,
|
|
1483
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1480
1484
|
AssistantMessage2,
|
|
1481
1485
|
{
|
|
1482
1486
|
"data-message-role": "assistant",
|
|
@@ -1499,7 +1503,7 @@ function RenderTextMessage(props) {
|
|
|
1499
1503
|
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
1500
1504
|
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
1501
1505
|
var import_react_core6 = require("@copilotkit/react-core");
|
|
1502
|
-
var
|
|
1506
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1503
1507
|
function RenderActionExecutionMessage(props) {
|
|
1504
1508
|
const { chatComponentsCache } = (0, import_react_core6.useCopilotContext)();
|
|
1505
1509
|
const { message, inProgress, index, isCurrentMessage, actionResult, AssistantMessage: AssistantMessage2 } = props;
|
|
@@ -1508,7 +1512,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1508
1512
|
const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
|
|
1509
1513
|
if (typeof render === "string") {
|
|
1510
1514
|
if (isCurrentMessage && inProgress) {
|
|
1511
|
-
return /* @__PURE__ */ (0,
|
|
1515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1512
1516
|
AssistantMessage2,
|
|
1513
1517
|
{
|
|
1514
1518
|
rawData: message,
|
|
@@ -1541,7 +1545,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1541
1545
|
return null;
|
|
1542
1546
|
}
|
|
1543
1547
|
if (typeof toRender === "string") {
|
|
1544
|
-
return /* @__PURE__ */ (0,
|
|
1548
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1545
1549
|
AssistantMessage2,
|
|
1546
1550
|
{
|
|
1547
1551
|
rawData: message,
|
|
@@ -1553,7 +1557,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1553
1557
|
index
|
|
1554
1558
|
);
|
|
1555
1559
|
} else {
|
|
1556
|
-
return /* @__PURE__ */ (0,
|
|
1560
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1557
1561
|
AssistantMessage2,
|
|
1558
1562
|
{
|
|
1559
1563
|
rawData: message,
|
|
@@ -1567,20 +1571,20 @@ function RenderActionExecutionMessage(props) {
|
|
|
1567
1571
|
}
|
|
1568
1572
|
} catch (e) {
|
|
1569
1573
|
console.error(`Error executing render function for action ${message.name}: ${e}`);
|
|
1570
|
-
return /* @__PURE__ */ (0,
|
|
1574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1571
1575
|
AssistantMessage2,
|
|
1572
1576
|
{
|
|
1573
1577
|
rawData: message,
|
|
1574
1578
|
"data-message-role": "assistant",
|
|
1575
1579
|
isLoading: false,
|
|
1576
1580
|
isGenerating: false,
|
|
1577
|
-
subComponent: /* @__PURE__ */ (0,
|
|
1578
|
-
/* @__PURE__ */ (0,
|
|
1581
|
+
subComponent: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
1582
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("b", { children: [
|
|
1579
1583
|
"\u274C Error executing render function for action ",
|
|
1580
1584
|
message.name,
|
|
1581
1585
|
":"
|
|
1582
1586
|
] }),
|
|
1583
|
-
/* @__PURE__ */ (0,
|
|
1587
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
|
|
1584
1588
|
] })
|
|
1585
1589
|
},
|
|
1586
1590
|
index
|
|
@@ -1590,7 +1594,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1590
1594
|
} else if (!inProgress || !isCurrentMessage) {
|
|
1591
1595
|
return null;
|
|
1592
1596
|
} else {
|
|
1593
|
-
return /* @__PURE__ */ (0,
|
|
1597
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1594
1598
|
AssistantMessage2,
|
|
1595
1599
|
{
|
|
1596
1600
|
rawData: message,
|
|
@@ -1605,11 +1609,11 @@ function RenderActionExecutionMessage(props) {
|
|
|
1605
1609
|
}
|
|
1606
1610
|
|
|
1607
1611
|
// src/components/chat/messages/RenderResultMessage.tsx
|
|
1608
|
-
var
|
|
1612
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1609
1613
|
function RenderResultMessage(props) {
|
|
1610
1614
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
1611
1615
|
if (message.isResultMessage() && inProgress && isCurrentMessage) {
|
|
1612
|
-
return /* @__PURE__ */ (0,
|
|
1616
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1613
1617
|
AssistantMessage2,
|
|
1614
1618
|
{
|
|
1615
1619
|
"data-message-role": "assistant",
|
|
@@ -1626,7 +1630,7 @@ function RenderResultMessage(props) {
|
|
|
1626
1630
|
|
|
1627
1631
|
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
1628
1632
|
var import_react_core7 = require("@copilotkit/react-core");
|
|
1629
|
-
var
|
|
1633
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1630
1634
|
function RenderAgentStateMessage(props) {
|
|
1631
1635
|
const { chatComponentsCache } = (0, import_react_core7.useCopilotContext)();
|
|
1632
1636
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
@@ -1638,7 +1642,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1638
1642
|
if (render) {
|
|
1639
1643
|
if (typeof render === "string") {
|
|
1640
1644
|
if (isCurrentMessage && inProgress) {
|
|
1641
|
-
return /* @__PURE__ */ (0,
|
|
1645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1642
1646
|
AssistantMessage2,
|
|
1643
1647
|
{
|
|
1644
1648
|
rawData: message,
|
|
@@ -1664,7 +1668,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1664
1668
|
return null;
|
|
1665
1669
|
}
|
|
1666
1670
|
if (!toRender && isCurrentMessage && inProgress) {
|
|
1667
|
-
return /* @__PURE__ */ (0,
|
|
1671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1668
1672
|
AssistantMessage2,
|
|
1669
1673
|
{
|
|
1670
1674
|
"data-message-role": "assistant",
|
|
@@ -1678,7 +1682,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1678
1682
|
return null;
|
|
1679
1683
|
}
|
|
1680
1684
|
if (typeof toRender === "string") {
|
|
1681
|
-
return /* @__PURE__ */ (0,
|
|
1685
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1682
1686
|
AssistantMessage2,
|
|
1683
1687
|
{
|
|
1684
1688
|
rawData: message,
|
|
@@ -1690,7 +1694,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1690
1694
|
index
|
|
1691
1695
|
);
|
|
1692
1696
|
} else {
|
|
1693
|
-
return /* @__PURE__ */ (0,
|
|
1697
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1694
1698
|
AssistantMessage2,
|
|
1695
1699
|
{
|
|
1696
1700
|
rawData: message,
|
|
@@ -1706,7 +1710,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1706
1710
|
} else if (!inProgress || !isCurrentMessage) {
|
|
1707
1711
|
return null;
|
|
1708
1712
|
} else {
|
|
1709
|
-
return /* @__PURE__ */ (0,
|
|
1713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1710
1714
|
AssistantMessage2,
|
|
1711
1715
|
{
|
|
1712
1716
|
rawData: message,
|
|
@@ -1751,7 +1755,7 @@ function useCopyToClipboard({ timeout = 2e3 }) {
|
|
|
1751
1755
|
}
|
|
1752
1756
|
|
|
1753
1757
|
// src/components/chat/CodeBlock.tsx
|
|
1754
|
-
var
|
|
1758
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1755
1759
|
var programmingLanguages = {
|
|
1756
1760
|
javascript: ".js",
|
|
1757
1761
|
python: ".py",
|
|
@@ -1814,15 +1818,15 @@ var CodeBlock = (0, import_react10.memo)(({ language, value }) => {
|
|
|
1814
1818
|
return;
|
|
1815
1819
|
copyToClipboard(value);
|
|
1816
1820
|
};
|
|
1817
|
-
return /* @__PURE__ */ (0,
|
|
1818
|
-
/* @__PURE__ */ (0,
|
|
1819
|
-
/* @__PURE__ */ (0,
|
|
1820
|
-
/* @__PURE__ */ (0,
|
|
1821
|
-
/* @__PURE__ */ (0,
|
|
1822
|
-
/* @__PURE__ */ (0,
|
|
1821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlock", children: [
|
|
1822
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbar", children: [
|
|
1823
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
|
|
1824
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
|
|
1825
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: DownloadIcon }),
|
|
1826
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: isCopied ? CheckIcon : CopyIcon })
|
|
1823
1827
|
] })
|
|
1824
1828
|
] }),
|
|
1825
|
-
/* @__PURE__ */ (0,
|
|
1829
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1826
1830
|
import_react_syntax_highlighter.Prism,
|
|
1827
1831
|
{
|
|
1828
1832
|
language,
|
|
@@ -2125,18 +2129,18 @@ var highlightStyle = {
|
|
|
2125
2129
|
// src/components/chat/Markdown.tsx
|
|
2126
2130
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
2127
2131
|
var import_remark_math = __toESM(require("remark-math"));
|
|
2128
|
-
var
|
|
2132
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2129
2133
|
var MemoizedReactMarkdown = (0, import_react11.memo)(
|
|
2130
2134
|
import_react_markdown.default,
|
|
2131
2135
|
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
|
|
2132
2136
|
);
|
|
2133
2137
|
var Markdown = ({ content }) => {
|
|
2134
|
-
return /* @__PURE__ */ (0,
|
|
2138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(MemoizedReactMarkdown, { components, remarkPlugins: [import_remark_gfm.default, import_remark_math.default], children: content }) });
|
|
2135
2139
|
};
|
|
2136
2140
|
var components = {
|
|
2137
2141
|
a(_a) {
|
|
2138
2142
|
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
2139
|
-
return /* @__PURE__ */ (0,
|
|
2143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2140
2144
|
"a",
|
|
2141
2145
|
__spreadProps(__spreadValues({
|
|
2142
2146
|
style: { color: "blue", textDecoration: "underline" }
|
|
@@ -2151,7 +2155,7 @@ var components = {
|
|
|
2151
2155
|
var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
|
|
2152
2156
|
if (children.length) {
|
|
2153
2157
|
if (children[0] == "\u258D") {
|
|
2154
|
-
return /* @__PURE__ */ (0,
|
|
2158
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2155
2159
|
"span",
|
|
2156
2160
|
{
|
|
2157
2161
|
style: {
|
|
@@ -2166,9 +2170,9 @@ var components = {
|
|
|
2166
2170
|
}
|
|
2167
2171
|
const match = /language-(\w+)/.exec(className || "");
|
|
2168
2172
|
if (inline) {
|
|
2169
|
-
return /* @__PURE__ */ (0,
|
|
2173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
|
|
2170
2174
|
}
|
|
2171
|
-
return /* @__PURE__ */ (0,
|
|
2175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2172
2176
|
CodeBlock,
|
|
2173
2177
|
__spreadValues({
|
|
2174
2178
|
language: match && match[1] || "",
|
|
@@ -2181,7 +2185,7 @@ var components = {
|
|
|
2181
2185
|
|
|
2182
2186
|
// src/components/chat/messages/AssistantMessage.tsx
|
|
2183
2187
|
var import_react12 = require("react");
|
|
2184
|
-
var
|
|
2188
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2185
2189
|
var AssistantMessage = (props) => {
|
|
2186
2190
|
const { icons, labels } = useChatContext();
|
|
2187
2191
|
const {
|
|
@@ -2222,77 +2226,77 @@ var AssistantMessage = (props) => {
|
|
|
2222
2226
|
onThumbsDown(message);
|
|
2223
2227
|
}
|
|
2224
2228
|
};
|
|
2225
|
-
const LoadingIcon = () => /* @__PURE__ */ (0,
|
|
2226
|
-
return /* @__PURE__ */ (0,
|
|
2227
|
-
(message || isLoading) && /* @__PURE__ */ (0,
|
|
2228
|
-
message && /* @__PURE__ */ (0,
|
|
2229
|
-
isLoading && /* @__PURE__ */ (0,
|
|
2230
|
-
message && !isLoading && /* @__PURE__ */ (0,
|
|
2229
|
+
const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: icons.activityIcon });
|
|
2230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
2231
|
+
(message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
|
|
2232
|
+
message && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Markdown, { content: message || "" }),
|
|
2233
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LoadingIcon, {}),
|
|
2234
|
+
message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2231
2235
|
"div",
|
|
2232
2236
|
{
|
|
2233
2237
|
className: `copilotKitMessageControls ${isCurrentMessage ? "currentMessage" : ""}`,
|
|
2234
2238
|
children: [
|
|
2235
|
-
/* @__PURE__ */ (0,
|
|
2239
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2236
2240
|
"button",
|
|
2237
2241
|
{
|
|
2238
2242
|
className: "copilotKitMessageControlButton",
|
|
2239
2243
|
onClick: handleRegenerate,
|
|
2240
2244
|
"aria-label": labels.regenerateResponse,
|
|
2241
2245
|
title: labels.regenerateResponse,
|
|
2242
|
-
children:
|
|
2246
|
+
children: icons.regenerateIcon
|
|
2243
2247
|
}
|
|
2244
2248
|
),
|
|
2245
|
-
/* @__PURE__ */ (0,
|
|
2249
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2246
2250
|
"button",
|
|
2247
2251
|
{
|
|
2248
2252
|
className: "copilotKitMessageControlButton",
|
|
2249
2253
|
onClick: handleCopy,
|
|
2250
2254
|
"aria-label": labels.copyToClipboard,
|
|
2251
2255
|
title: labels.copyToClipboard,
|
|
2252
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
2256
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: { fontSize: "10px", fontWeight: "bold" }, children: "\u2713" }) : icons.copyIcon
|
|
2253
2257
|
}
|
|
2254
2258
|
),
|
|
2255
|
-
onThumbsUp && /* @__PURE__ */ (0,
|
|
2259
|
+
onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2256
2260
|
"button",
|
|
2257
2261
|
{
|
|
2258
2262
|
className: "copilotKitMessageControlButton",
|
|
2259
2263
|
onClick: handleThumbsUp,
|
|
2260
2264
|
"aria-label": labels.thumbsUp,
|
|
2261
2265
|
title: labels.thumbsUp,
|
|
2262
|
-
children:
|
|
2266
|
+
children: icons.thumbsUpIcon
|
|
2263
2267
|
}
|
|
2264
2268
|
),
|
|
2265
|
-
onThumbsDown && /* @__PURE__ */ (0,
|
|
2269
|
+
onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2266
2270
|
"button",
|
|
2267
2271
|
{
|
|
2268
2272
|
className: "copilotKitMessageControlButton",
|
|
2269
2273
|
onClick: handleThumbsDown,
|
|
2270
2274
|
"aria-label": labels.thumbsDown,
|
|
2271
2275
|
title: labels.thumbsDown,
|
|
2272
|
-
children:
|
|
2276
|
+
children: icons.thumbsDownIcon
|
|
2273
2277
|
}
|
|
2274
2278
|
)
|
|
2275
2279
|
]
|
|
2276
2280
|
}
|
|
2277
2281
|
)
|
|
2278
2282
|
] }),
|
|
2279
|
-
/* @__PURE__ */ (0,
|
|
2283
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
|
|
2280
2284
|
] });
|
|
2281
2285
|
};
|
|
2282
2286
|
|
|
2283
2287
|
// src/components/chat/messages/UserMessage.tsx
|
|
2284
|
-
var
|
|
2288
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2285
2289
|
var UserMessage = (props) => {
|
|
2286
|
-
return /* @__PURE__ */ (0,
|
|
2290
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: props.message });
|
|
2287
2291
|
};
|
|
2288
2292
|
|
|
2289
2293
|
// src/components/chat/Suggestion.tsx
|
|
2290
2294
|
var import_react_core8 = require("@copilotkit/react-core");
|
|
2291
2295
|
var import_shared2 = require("@copilotkit/shared");
|
|
2292
2296
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
2293
|
-
var
|
|
2297
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2294
2298
|
function Suggestion({ title, message, onClick, partial, className }) {
|
|
2295
|
-
return /* @__PURE__ */ (0,
|
|
2299
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2296
2300
|
"button",
|
|
2297
2301
|
{
|
|
2298
2302
|
disabled: partial,
|
|
@@ -2302,7 +2306,7 @@ function Suggestion({ title, message, onClick, partial, className }) {
|
|
|
2302
2306
|
},
|
|
2303
2307
|
className: className || (partial ? "suggestion loading" : "suggestion"),
|
|
2304
2308
|
"data-test-id": "suggestion",
|
|
2305
|
-
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0,
|
|
2309
|
+
children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: title })
|
|
2306
2310
|
}
|
|
2307
2311
|
);
|
|
2308
2312
|
}
|
|
@@ -2382,12 +2386,11 @@ var import_react_core9 = require("@copilotkit/react-core");
|
|
|
2382
2386
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
2383
2387
|
var import_shared3 = require("@copilotkit/shared");
|
|
2384
2388
|
var import_react_core10 = require("@copilotkit/react-core");
|
|
2385
|
-
var
|
|
2389
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2386
2390
|
function CopilotChat({
|
|
2387
2391
|
instructions,
|
|
2388
2392
|
onSubmitMessage,
|
|
2389
2393
|
makeSystemMessage,
|
|
2390
|
-
showResponseButton = true,
|
|
2391
2394
|
onInProgress,
|
|
2392
2395
|
onStopGeneration,
|
|
2393
2396
|
onReloadMessages,
|
|
@@ -2401,7 +2404,6 @@ function CopilotChat({
|
|
|
2401
2404
|
RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
|
|
2402
2405
|
RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
|
|
2403
2406
|
Input: Input2 = Input,
|
|
2404
|
-
ResponseButton: ResponseButton2 = ResponseButton,
|
|
2405
2407
|
className,
|
|
2406
2408
|
icons,
|
|
2407
2409
|
labels,
|
|
@@ -2449,8 +2451,8 @@ function CopilotChat({
|
|
|
2449
2451
|
onCopy(message);
|
|
2450
2452
|
}
|
|
2451
2453
|
};
|
|
2452
|
-
return /* @__PURE__ */ (0,
|
|
2453
|
-
/* @__PURE__ */ (0,
|
|
2454
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
2455
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2454
2456
|
Messages2,
|
|
2455
2457
|
{
|
|
2456
2458
|
AssistantMessage: AssistantMessage2,
|
|
@@ -2465,7 +2467,7 @@ function CopilotChat({
|
|
|
2465
2467
|
onCopy: handleCopy,
|
|
2466
2468
|
onThumbsUp,
|
|
2467
2469
|
onThumbsDown,
|
|
2468
|
-
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0,
|
|
2470
|
+
children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "suggestions", children: currentSuggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2469
2471
|
Suggestion,
|
|
2470
2472
|
{
|
|
2471
2473
|
title: suggestion.title,
|
|
@@ -2478,7 +2480,7 @@ function CopilotChat({
|
|
|
2478
2480
|
)) })
|
|
2479
2481
|
}
|
|
2480
2482
|
),
|
|
2481
|
-
/* @__PURE__ */ (0,
|
|
2483
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2482
2484
|
Input2,
|
|
2483
2485
|
{
|
|
2484
2486
|
inProgress: isLoading,
|
|
@@ -2497,10 +2499,10 @@ function WrappedCopilotChat({
|
|
|
2497
2499
|
}) {
|
|
2498
2500
|
const chatContext = import_react13.default.useContext(ChatContext);
|
|
2499
2501
|
if (!chatContext) {
|
|
2500
|
-
return /* @__PURE__ */ (0,
|
|
2501
|
-
}, children: /* @__PURE__ */ (0,
|
|
2502
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
|
|
2503
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `copilotKitChat ${className}`, children }) });
|
|
2502
2504
|
}
|
|
2503
|
-
return /* @__PURE__ */ (0,
|
|
2505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children });
|
|
2504
2506
|
}
|
|
2505
2507
|
var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
|
|
2506
2508
|
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
@@ -2661,7 +2663,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2661
2663
|
};
|
|
2662
2664
|
|
|
2663
2665
|
// src/components/chat/Modal.tsx
|
|
2664
|
-
var
|
|
2666
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2665
2667
|
var CopilotModal = ({
|
|
2666
2668
|
instructions,
|
|
2667
2669
|
defaultOpen = false,
|
|
@@ -2675,14 +2677,12 @@ var CopilotModal = ({
|
|
|
2675
2677
|
icons,
|
|
2676
2678
|
labels,
|
|
2677
2679
|
makeSystemMessage,
|
|
2678
|
-
showResponseButton = true,
|
|
2679
2680
|
onInProgress,
|
|
2680
2681
|
Window: Window2 = Window,
|
|
2681
2682
|
Button: Button2 = Button,
|
|
2682
2683
|
Header: Header2 = Header,
|
|
2683
2684
|
Messages: Messages2 = Messages,
|
|
2684
2685
|
Input: Input2 = Input,
|
|
2685
|
-
ResponseButton: ResponseButton2 = ResponseButton,
|
|
2686
2686
|
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2687
2687
|
UserMessage: UserMessage2 = UserMessage,
|
|
2688
2688
|
className,
|
|
@@ -2693,19 +2693,19 @@ var CopilotModal = ({
|
|
|
2693
2693
|
onSetOpen == null ? void 0 : onSetOpen(open);
|
|
2694
2694
|
setOpenState(open);
|
|
2695
2695
|
};
|
|
2696
|
-
return /* @__PURE__ */ (0,
|
|
2696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
|
|
2697
2697
|
children,
|
|
2698
|
-
/* @__PURE__ */ (0,
|
|
2699
|
-
/* @__PURE__ */ (0,
|
|
2700
|
-
/* @__PURE__ */ (0,
|
|
2698
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className, children: [
|
|
2699
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button2, {}),
|
|
2700
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2701
2701
|
Window2,
|
|
2702
2702
|
{
|
|
2703
2703
|
clickOutsideToClose,
|
|
2704
2704
|
shortcut,
|
|
2705
2705
|
hitEscapeToClose,
|
|
2706
2706
|
children: [
|
|
2707
|
-
/* @__PURE__ */ (0,
|
|
2708
|
-
/* @__PURE__ */ (0,
|
|
2707
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Header2, {}),
|
|
2708
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2709
2709
|
CopilotChat,
|
|
2710
2710
|
{
|
|
2711
2711
|
instructions,
|
|
@@ -2713,11 +2713,9 @@ var CopilotModal = ({
|
|
|
2713
2713
|
onStopGeneration,
|
|
2714
2714
|
onReloadMessages,
|
|
2715
2715
|
makeSystemMessage,
|
|
2716
|
-
showResponseButton,
|
|
2717
2716
|
onInProgress,
|
|
2718
2717
|
Messages: Messages2,
|
|
2719
2718
|
Input: Input2,
|
|
2720
|
-
ResponseButton: ResponseButton2,
|
|
2721
2719
|
AssistantMessage: AssistantMessage2,
|
|
2722
2720
|
UserMessage: UserMessage2
|
|
2723
2721
|
}
|
|
@@ -2730,17 +2728,17 @@ var CopilotModal = ({
|
|
|
2730
2728
|
};
|
|
2731
2729
|
|
|
2732
2730
|
// src/components/chat/Popup.tsx
|
|
2733
|
-
var
|
|
2731
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2734
2732
|
function CopilotPopup(props) {
|
|
2735
2733
|
props = __spreadProps(__spreadValues({}, props), {
|
|
2736
2734
|
className: props.className ? props.className + " copilotKitPopup" : "copilotKitPopup"
|
|
2737
2735
|
});
|
|
2738
|
-
return /* @__PURE__ */ (0,
|
|
2736
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CopilotModal, __spreadProps(__spreadValues({}, props), { children: props.children }));
|
|
2739
2737
|
}
|
|
2740
2738
|
|
|
2741
2739
|
// src/components/chat/Sidebar.tsx
|
|
2742
2740
|
var import_react15 = require("react");
|
|
2743
|
-
var
|
|
2741
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2744
2742
|
function CopilotSidebar(props) {
|
|
2745
2743
|
props = __spreadProps(__spreadValues({}, props), {
|
|
2746
2744
|
className: props.className ? props.className + " copilotKitSidebar" : "copilotKitSidebar"
|
|
@@ -2753,7 +2751,7 @@ function CopilotSidebar(props) {
|
|
|
2753
2751
|
(_a = props.onSetOpen) == null ? void 0 : _a.call(props, open);
|
|
2754
2752
|
setExpandedClassName(open ? "sidebarExpanded" : "");
|
|
2755
2753
|
};
|
|
2756
|
-
return /* @__PURE__ */ (0,
|
|
2754
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `copilotKitSidebarContentWrapper ${expandedClassName}`, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CopilotModal, __spreadProps(__spreadValues(__spreadValues({}, props), { onSetOpen }), { children: props.children })) });
|
|
2757
2755
|
}
|
|
2758
2756
|
|
|
2759
2757
|
// src/hooks/use-copilot-chat-suggestions.tsx
|