@copilotkit/react-ui 0.11.0 → 0.12.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.
- package/.turbo/turbo-build.log +62 -62
- package/CHANGELOG.md +11 -0
- package/dist/{chunk-KR7MH7XO.mjs → chunk-34MTYKUD.mjs} +4 -12
- package/dist/chunk-34MTYKUD.mjs.map +1 -0
- package/dist/{chunk-UKKJ6H2K.mjs → chunk-4ENGXGIC.mjs} +6 -11
- package/dist/chunk-4ENGXGIC.mjs.map +1 -0
- package/dist/{chunk-V6QYUEJR.mjs → chunk-5HCN6SPC.mjs} +2 -2
- package/dist/chunk-5HCN6SPC.mjs.map +1 -0
- package/dist/{chunk-RSONJDLO.mjs → chunk-6RG3YDAC.mjs} +2 -2
- package/dist/{chunk-TUPGAO7T.mjs → chunk-AYVNEHBC.mjs} +4 -6
- package/dist/chunk-AYVNEHBC.mjs.map +1 -0
- package/dist/{chunk-2NO6SF5H.mjs → chunk-CRRPHVT3.mjs} +10 -6
- package/dist/chunk-CRRPHVT3.mjs.map +1 -0
- package/dist/{chunk-KXJV37FS.mjs → chunk-D72RVITD.mjs} +2 -5
- package/dist/chunk-D72RVITD.mjs.map +1 -0
- package/dist/{chunk-6UJWRTL6.mjs → chunk-ESP3H6NQ.mjs} +6 -12
- package/dist/chunk-ESP3H6NQ.mjs.map +1 -0
- package/dist/{chunk-VSNDSL6W.mjs → chunk-EXOYIXGQ.mjs} +4 -4
- package/dist/{chunk-VSNDSL6W.mjs.map → chunk-EXOYIXGQ.mjs.map} +1 -1
- package/dist/{chunk-LMCFSE4V.mjs → chunk-GBPOPYU3.mjs} +4 -6
- package/dist/chunk-GBPOPYU3.mjs.map +1 -0
- package/dist/{chunk-7KPMJBGH.mjs → chunk-GWX3NPF5.mjs} +2 -2
- package/dist/{chunk-7KPMJBGH.mjs.map → chunk-GWX3NPF5.mjs.map} +1 -1
- package/dist/{chunk-I2AB5FK4.mjs → chunk-HKSE5ISX.mjs} +8 -26
- package/dist/chunk-HKSE5ISX.mjs.map +1 -0
- package/dist/{chunk-BIPCPNHG.mjs → chunk-OHWEJUCS.mjs} +1 -1
- package/dist/chunk-OHWEJUCS.mjs.map +1 -0
- package/dist/{chunk-BS6RR2DJ.mjs → chunk-PY4F436T.mjs} +2 -2
- package/dist/{chunk-BS6RR2DJ.mjs.map → chunk-PY4F436T.mjs.map} +1 -1
- package/dist/{chunk-TVTG3V4F.mjs → chunk-Q6YO7LDK.mjs} +1 -1
- package/dist/chunk-Q6YO7LDK.mjs.map +1 -0
- package/dist/{chunk-6LRNF2VU.mjs → chunk-TEYIQHMK.mjs} +1 -1
- package/dist/chunk-TEYIQHMK.mjs.map +1 -0
- package/dist/chunk-VUNHHCOA.mjs +24 -0
- package/dist/chunk-VUNHHCOA.mjs.map +1 -0
- package/dist/{chunk-HKSY5T7Y.mjs → chunk-XEVSX2QD.mjs} +5 -8
- package/dist/chunk-XEVSX2QD.mjs.map +1 -0
- package/dist/{chunk-ZB6JHNDT.mjs → chunk-XLGSWCCV.mjs} +6 -6
- package/dist/chunk-XLGSWCCV.mjs.map +1 -0
- package/dist/{chunk-APH6ZQHG.mjs → chunk-ZA25IBKF.mjs} +4 -4
- package/dist/chunk-ZA25IBKF.mjs.map +1 -0
- package/dist/{chunk-6LAC5RA2.mjs → chunk-ZLFSBGYI.mjs} +2 -4
- package/dist/chunk-ZLFSBGYI.mjs.map +1 -0
- package/dist/{chunk-N7KB3Z57.mjs → chunk-ZYC5YVDO.mjs} +2 -4
- package/dist/chunk-ZYC5YVDO.mjs.map +1 -0
- package/dist/components/chat-components/chat-list.mjs +10 -10
- package/dist/components/chat-components/chat-message-actions.mjs +5 -5
- package/dist/components/chat-components/chat-message.mjs +8 -8
- package/dist/components/chat-components/chat-panel.mjs +7 -7
- package/dist/components/chat-components/chat-scroll-anchor.mjs +2 -2
- package/dist/components/chat-components/clear-history.mjs +4 -4
- package/dist/components/chat-components/clear-history.mjs.map +1 -1
- package/dist/components/chat-components/copilot-chat.mjs +19 -19
- package/dist/components/chat-components/default-empty-screen.mjs +5 -5
- package/dist/components/chat-components/external-link.d.ts +1 -1
- package/dist/components/chat-components/external-link.mjs +1 -1
- package/dist/components/chat-components/markdown.mjs +1 -1
- package/dist/components/chat-components/prompt-form.d.ts +1 -1
- package/dist/components/chat-components/prompt-form.mjs +6 -6
- package/dist/components/chat-components/theme-toggle.mjs +3 -3
- package/dist/components/chat-components/ui/alert-dialog.mjs +3 -3
- package/dist/components/chat-components/ui/badge.mjs +1 -1
- package/dist/components/chat-components/ui/badge.mjs.map +1 -1
- package/dist/components/chat-components/ui/button.mjs +2 -2
- package/dist/components/chat-components/ui/codeblock.mjs +5 -5
- package/dist/components/chat-components/ui/dialog.mjs +8 -31
- package/dist/components/chat-components/ui/dialog.mjs.map +1 -1
- package/dist/components/chat-components/ui/dropdown-menu.mjs +3 -11
- package/dist/components/chat-components/ui/dropdown-menu.mjs.map +1 -1
- package/dist/components/chat-components/ui/icons.mjs +2 -2
- package/dist/components/chat-components/ui/input.mjs +1 -1
- package/dist/components/chat-components/ui/input.mjs.map +1 -1
- package/dist/components/chat-components/ui/label.mjs +1 -1
- package/dist/components/chat-components/ui/label.mjs.map +1 -1
- package/dist/components/chat-components/ui/select.mjs +2 -2
- package/dist/components/chat-components/ui/select.mjs.map +1 -1
- package/dist/components/chat-components/ui/separator.mjs +2 -2
- package/dist/components/chat-components/ui/sheet.mjs +6 -23
- package/dist/components/chat-components/ui/sheet.mjs.map +1 -1
- package/dist/components/chat-components/ui/switch.mjs +1 -1
- package/dist/components/chat-components/ui/switch.mjs.map +1 -1
- package/dist/components/chat-components/ui/textarea.mjs +1 -1
- package/dist/components/chat-components/ui/textarea.mjs.map +1 -1
- package/dist/components/chat-components/ui/tooltip.mjs +2 -2
- package/dist/components/index.mjs +21 -21
- package/dist/components/sidebar/copilot-sidebar-ui-provider.d.ts +1 -1
- package/dist/components/sidebar/copilot-sidebar-ui-provider.mjs +21 -21
- package/dist/components/sidebar/copilot-sidebar.mjs +20 -20
- package/dist/hooks/use-at-bottom.mjs +1 -1
- package/dist/hooks/use-copy-to-clipboard.d.ts +1 -1
- package/dist/hooks/use-copy-to-clipboard.mjs +1 -1
- package/dist/hooks/use-enter-submit.mjs +1 -1
- package/dist/index.mjs +21 -21
- package/dist/lib/utils.mjs +1 -1
- package/package.json +3 -3
- package/src/components/chat-components/chat-list.tsx +2 -6
- package/src/components/chat-components/chat-message-actions.tsx +2 -6
- package/src/components/chat-components/chat-message.tsx +2 -6
- package/src/components/chat-components/chat-panel.tsx +3 -17
- package/src/components/chat-components/clear-history.tsx +1 -2
- package/src/components/chat-components/copilot-chat.tsx +6 -5
- package/src/components/chat-components/default-empty-screen.tsx +3 -9
- package/src/components/chat-components/external-link.tsx +2 -14
- package/src/components/chat-components/markdown.tsx +1 -2
- package/src/components/chat-components/prompt-form.tsx +2 -8
- package/src/components/chat-components/ui/alert-dialog.tsx +9 -33
- package/src/components/chat-components/ui/badge.tsx +3 -6
- package/src/components/chat-components/ui/button.tsx +7 -15
- package/src/components/chat-components/ui/codeblock.tsx +1 -4
- package/src/components/chat-components/ui/dialog.tsx +8 -30
- package/src/components/chat-components/ui/dropdown-menu.tsx +7 -18
- package/src/components/chat-components/ui/icons.tsx +6 -29
- package/src/components/chat-components/ui/input.tsx +3 -4
- package/src/components/chat-components/ui/label.tsx +3 -8
- package/src/components/chat-components/ui/select.tsx +4 -4
- package/src/components/chat-components/ui/separator.tsx +13 -18
- package/src/components/chat-components/ui/sheet.tsx +7 -23
- package/src/components/chat-components/ui/switch.tsx +2 -2
- package/src/components/chat-components/ui/textarea.tsx +3 -4
- package/src/components/chat-components/ui/tooltip.tsx +1 -1
- package/src/components/sidebar/copilot-sidebar-ui-provider.tsx +2 -6
- package/src/components/sidebar/copilot-sidebar.tsx +1 -3
- package/src/hooks/use-at-bottom.tsx +1 -4
- package/src/hooks/use-copy-to-clipboard.tsx +1 -3
- package/src/hooks/use-enter-submit.tsx +2 -8
- package/src/lib/utils.ts +2 -5
- package/dist/chunk-2NO6SF5H.mjs.map +0 -1
- package/dist/chunk-6LAC5RA2.mjs.map +0 -1
- package/dist/chunk-6LRNF2VU.mjs.map +0 -1
- package/dist/chunk-6UJWRTL6.mjs.map +0 -1
- package/dist/chunk-APH6ZQHG.mjs.map +0 -1
- package/dist/chunk-BIPCPNHG.mjs.map +0 -1
- package/dist/chunk-DOMJCSI6.mjs +0 -26
- package/dist/chunk-DOMJCSI6.mjs.map +0 -1
- package/dist/chunk-HKSY5T7Y.mjs.map +0 -1
- package/dist/chunk-I2AB5FK4.mjs.map +0 -1
- package/dist/chunk-KR7MH7XO.mjs.map +0 -1
- package/dist/chunk-KXJV37FS.mjs.map +0 -1
- package/dist/chunk-LMCFSE4V.mjs.map +0 -1
- package/dist/chunk-N7KB3Z57.mjs.map +0 -1
- package/dist/chunk-TUPGAO7T.mjs.map +0 -1
- package/dist/chunk-TVTG3V4F.mjs.map +0 -1
- package/dist/chunk-UKKJ6H2K.mjs.map +0 -1
- package/dist/chunk-V6QYUEJR.mjs.map +0 -1
- package/dist/chunk-ZB6JHNDT.mjs.map +0 -1
- /package/dist/{chunk-RSONJDLO.mjs.map → chunk-6RG3YDAC.mjs.map} +0 -0
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { Separator } from './chunk-
|
|
2
|
-
import { ChatMessage } from './chunk-
|
|
1
|
+
import { Separator } from './chunk-VUNHHCOA.mjs';
|
|
2
|
+
import { ChatMessage } from './chunk-XLGSWCCV.mjs';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
function ChatList({ messages }) {
|
|
6
|
-
const displayedMessages = messages.filter(
|
|
7
|
-
(message) => message.role !== "system"
|
|
8
|
-
);
|
|
6
|
+
const displayedMessages = messages.filter((message) => message.role !== "system");
|
|
9
7
|
if (!displayedMessages.length) {
|
|
10
8
|
return null;
|
|
11
9
|
}
|
|
@@ -26,4 +24,4 @@ function ChatList({ messages }) {
|
|
|
26
24
|
|
|
27
25
|
export { ChatList };
|
|
28
26
|
//# sourceMappingURL=out.js.map
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-GBPOPYU3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/chat-list.tsx"],"names":[],"mappings":";;;;;;;;AAoBQ,SACE,KADF;AAXD,SAAS,SAAS,EAAE,SAAS,GAAa;AAE/C,QAAM,oBAAoB,SAAS,OAAO,CAAC,YAAY,QAAQ,SAAS,QAAQ;AAEhF,MAAI,CAAC,kBAAkB,QAAQ;AAC7B,WAAO;AAAA,EACT;AAEA,SACE,oBAAC;AAAA,IAAI,WAAU;AAAA,IACZ,4BAAkB,IAAI,CAAC,SAAS,UAC/B,qBAAC;AAAA,MACC;AAAA,4BAAC;AAAA,UAAY;AAAA,SAAkB;AAAA,QAC9B,QAAQ,kBAAkB,SAAS,KAAK,oBAAC;AAAA,UAAU,WAAU;AAAA,SAAe;AAAA;AAAA,OAFrE,KAGV,CACD;AAAA,GACH;AAEJ","sourcesContent":["import { type Message } from \"ai\";\n\nimport { Separator } from \"./ui/separator\";\nimport { ChatMessage } from \"./chat-message\";\n\nexport interface ChatList {\n messages: Message[];\n}\n\nexport function ChatList({ messages }: ChatList) {\n // we don't want to display system messages\n const displayedMessages = messages.filter((message) => message.role !== \"system\");\n\n if (!displayedMessages.length) {\n return null;\n }\n\n return (\n <div className=\"relative mx-auto max-w-2xl px-0\">\n {displayedMessages.map((message, index) => (\n <div key={index}>\n <ChatMessage message={message} />\n {index < displayedMessages.length - 1 && <Separator className=\"my-4 md:my-4\" />}\n </div>\n ))}\n </div>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CopilotChat } from './chunk-
|
|
1
|
+
import { CopilotChat } from './chunk-CRRPHVT3.mjs';
|
|
2
2
|
import { __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
3
3
|
import { XMarkIcon } from '@heroicons/react/24/outline';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -45,4 +45,4 @@ function TopBar(props) {
|
|
|
45
45
|
|
|
46
46
|
export { CopilotSidebar };
|
|
47
47
|
//# sourceMappingURL=out.js.map
|
|
48
|
-
//# sourceMappingURL=chunk-
|
|
48
|
+
//# sourceMappingURL=chunk-GWX3NPF5.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/sidebar/copilot-sidebar.tsx"],"names":[],"mappings":";;;;;;;;AAmBA,SAAS,iBAAiB;AAVtB,SAIE,KAJF;AAFG,SAAS,eAAe,OAAkC;AAC/D,SACE,qBAAC;AAAA,IACC,WAAU;AAAA,IACV,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,IAEvC;AAAA,0BAAC,2BAAW,MAAO;AAAA,MACnB,oBAAC,eAAY;AAAA;AAAA,GACf;AAEJ;AAIA,SAAS,OAAO,OAAkC;AAChD,SACE,qBAAC;AAAA,IAAI,WAAU;AAAA,IACb;AAAA,0BAAC;AAAA,QAAG,WAAU;AAAA,QAAkD;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/components/sidebar/copilot-sidebar.tsx"],"names":[],"mappings":";;;;;;;;AAmBA,SAAS,iBAAiB;AAVtB,SAIE,KAJF;AAFG,SAAS,eAAe,OAAkC;AAC/D,SACE,qBAAC;AAAA,IACC,WAAU;AAAA,IACV,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,IAEvC;AAAA,0BAAC,2BAAW,MAAO;AAAA,MACnB,oBAAC,eAAY;AAAA;AAAA,GACf;AAEJ;AAIA,SAAS,OAAO,OAAkC;AAChD,SACE,qBAAC;AAAA,IAAI,WAAU;AAAA,IACb;AAAA,0BAAC;AAAA,QAAG,WAAU;AAAA,QAAkD;AAAA,OAAY;AAAA,MAC5E,oBAAC;AAAA,QAAI,WAAU;AAAA,QACb,+BAAC;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM,MAAM,eAAe,KAAK;AAAA,UAEzC;AAAA,gCAAC;AAAA,cAAK,WAAU;AAAA,cAAU;AAAA,aAAW;AAAA,YACrC,oBAAC;AAAA,cAAU,WAAU;AAAA,cAAU,eAAY;AAAA,aAAO;AAAA;AAAA,SACpD;AAAA,OACF;AAAA;AAAA,GACF;AAEJ","sourcesContent":["import React from \"react\";\nimport { CopilotChat } from \"../chat-components/copilot-chat\";\n\nexport interface SidebarProps {\n setSidebarOpen: (open: boolean) => void;\n}\n\nexport function CopilotSidebar(props: SidebarProps): JSX.Element {\n return (\n <div\n className=\"shadow-lg bg-gray-50 flex flex-col border-l-2\"\n style={{ width: \"100%\", height: \"100%\" }}\n >\n <TopBar {...props} />\n <CopilotChat />\n </div>\n );\n}\n\nimport { XMarkIcon } from \"@heroicons/react/24/outline\";\n\nfunction TopBar(props: SidebarProps): JSX.Element {\n return (\n <div className=\"py-6 flex bg-gray-50 items-center justify-between px-4\">\n <h1 className=\"text-base font-semibold leading-6 text-gray-900\">Copilot Chat</h1>\n <div className=\"ml-3 flex h-7 items-center\">\n <button\n type=\"button\"\n className=\"rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2\"\n onClick={() => props.setSidebarOpen(false)}\n >\n <span className=\"sr-only\">Close panel</span>\n <XMarkIcon className=\"h-6 w-6\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { buttonVariants } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { buttonVariants } from './chunk-5HCN6SPC.mjs';
|
|
2
|
+
import { cn } from './chunk-Q6YO7LDK.mjs';
|
|
3
3
|
import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
@@ -54,30 +54,16 @@ var AlertDialogContent = React.forwardRef((_a, ref) => {
|
|
|
54
54
|
});
|
|
55
55
|
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
|
|
56
56
|
var AlertDialogHeader = (_a) => {
|
|
57
|
-
var _b = _a, {
|
|
58
|
-
className
|
|
59
|
-
} = _b, props = __objRest(_b, [
|
|
60
|
-
"className"
|
|
61
|
-
]);
|
|
57
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
62
58
|
return /* @__PURE__ */ jsx("div", __spreadValues({
|
|
63
|
-
className: cn(
|
|
64
|
-
"flex flex-col space-y-2 text-center sm:text-left",
|
|
65
|
-
className
|
|
66
|
-
)
|
|
59
|
+
className: cn("flex flex-col space-y-2 text-center sm:text-left", className)
|
|
67
60
|
}, props));
|
|
68
61
|
};
|
|
69
62
|
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
70
63
|
var AlertDialogFooter = (_a) => {
|
|
71
|
-
var _b = _a, {
|
|
72
|
-
className
|
|
73
|
-
} = _b, props = __objRest(_b, [
|
|
74
|
-
"className"
|
|
75
|
-
]);
|
|
64
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
76
65
|
return /* @__PURE__ */ jsx("div", __spreadValues({
|
|
77
|
-
className: cn(
|
|
78
|
-
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
|
|
79
|
-
className
|
|
80
|
-
)
|
|
66
|
+
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className)
|
|
81
67
|
}, props));
|
|
82
68
|
};
|
|
83
69
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
@@ -109,15 +95,11 @@ var AlertDialogCancel = React.forwardRef((_a, ref) => {
|
|
|
109
95
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
110
96
|
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, __spreadValues({
|
|
111
97
|
ref,
|
|
112
|
-
className: cn(
|
|
113
|
-
buttonVariants({ variant: "outline" }),
|
|
114
|
-
"mt-2 sm:mt-0",
|
|
115
|
-
className
|
|
116
|
-
)
|
|
98
|
+
className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className)
|
|
117
99
|
}, props));
|
|
118
100
|
});
|
|
119
101
|
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
120
102
|
|
|
121
103
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger };
|
|
122
104
|
//# sourceMappingURL=out.js.map
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
105
|
+
//# sourceMappingURL=chunk-HKSE5ISX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/ui/alert-dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { buttonVariants } from \"./button\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = ({\n className,\n children,\n ...props\n}: AlertDialogPrimitive.AlertDialogPortalProps) => (\n <AlertDialogPrimitive.Portal className={cn(className)} {...props}>\n <div className=\"fixed inset-0 z-50 flex items-end justify-center sm:items-center\">\n {children}\n </div>\n </AlertDialogPrimitive.Portal>\n);\nAlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, children, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm transition-opacity animate-in fade-in\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed z-50 grid w-full max-w-lg scale-100 gap-4 border bg-background p-6 opacity-100 shadow-lg animate-in fade-in-90 slide-in-from-bottom-10 sm:rounded-lg sm:zoom-in-90 sm:slide-in-from-bottom-0 md:w-full\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: \"outline\" }), \"mt-2 sm:mt-0\", className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-enter-submit.tsx"],"names":[],"mappings":";AAAA,SAAS,cAA8B;AAEhC,SAAS,iBAGd;AACA,QAAM,UAAU,OAAwB,IAAI;AAE5C,QAAM,gBAAgB,CAAC,UAA0D;AARnF;AASI,QAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,YAAY,CAAC,MAAM,YAAY,aAAa;AAC9E,oBAAQ,YAAR,mBAAiB;AACjB,YAAM,eAAe;AAAA,IACvB;AAAA,EACF;AAEA,SAAO,EAAE,SAAS,WAAW,cAAc;AAC7C","sourcesContent":["import { useRef, type RefObject } from \"react\";\n\nexport function useEnterSubmit(): {\n formRef: RefObject<HTMLFormElement>;\n onKeyDown: (event: React.KeyboardEvent<HTMLTextAreaElement>) => void;\n} {\n const formRef = useRef<HTMLFormElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTextAreaElement>): void => {\n if (event.key === \"Enter\" && !event.shiftKey && !event.nativeEvent.isComposing) {\n formRef.current?.requestSubmit();\n event.preventDefault();\n }\n };\n\n return { formRef, onKeyDown: handleKeyDown };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-Q6YO7LDK.mjs';
|
|
2
2
|
import { __objRest, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
@@ -22,4 +22,4 @@ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
|
22
22
|
|
|
23
23
|
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
24
24
|
//# sourceMappingURL=out.js.map
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-PY4F436T.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat-components/ui/tooltip.tsx"],"names":[],"mappings":";;;;;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,sBAAsB;AAchC;AAjBF;AAOA,IAAM,kBAAmC;AAEzC,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,iBAAuB,iBAG3B,CAAC,IAAyC,QAAK;AAA9C,eAAE,aAAW,aAAa,EAhB7B,IAgBG,IAAgC,kBAAhC,IAAgC,CAA9B,aAAW;AACd,6BAAkB,0BAAjB;AAAA,IACC;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,KACI,MACN;AAAA,CACD;AACD,eAAe,cAA+B,yBAAQ","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1\",\n className
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/ui/tooltip.tsx"],"names":[],"mappings":";;;;;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,sBAAsB;AAchC;AAjBF;AAOA,IAAM,kBAAmC;AAEzC,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,iBAAuB,iBAG3B,CAAC,IAAyC,QAAK;AAA9C,eAAE,aAAW,aAAa,EAhB7B,IAgBG,IAAgC,kBAAhC,IAAgC,CAA9B,aAAW;AACd,6BAAkB,0BAAjB;AAAA,IACC;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,KACI,MACN;AAAA,CACD;AACD,eAAe,cAA+B,yBAAQ","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1\",\n className,\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,YAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAEO,IAAM,SAAS;AAAA,EACpB;AAAA,EACA;AACF;AAEA,SAAsB,QAAoB,OAAoB,MAAmC;AAAA;AAC/F,UAAM,MAAM,MAAM,MAAM,OAAO,IAAI;AAEnC,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,UAAI,KAAK,OAAO;AACd,cAAM,QAAQ,IAAI,MAAM,KAAK,KAAK;AAGlC,cAAM,SAAS,IAAI;AACnB,cAAM;AAAA,MACR,OAAO;AACL,cAAM,IAAI,MAAM,8BAA8B;AAAA,MAChD;AAAA,IACF;AAEA,WAAO,IAAI,KAAK;AAAA,EAClB;AAAA;AAEO,SAAS,WAAW,OAAuC;AAChE,QAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,SAAO,KAAK,mBAAmB,SAAS;AAAA,IACtC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,EACR,CAAC;AACH","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { customAlphabet } from \"nanoid\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const nanoid = customAlphabet(\n \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n 7,\n); // 7-character random string\n\nexport async function fetcher<JSON = any>(input: RequestInfo, init?: RequestInit): Promise<JSON> {\n const res = await fetch(input, init);\n\n if (!res.ok) {\n const json = await res.json();\n if (json.error) {\n const error = new Error(json.error) as Error & {\n status: number;\n };\n error.status = res.status;\n throw error;\n } else {\n throw new Error(\"An unexpected error occurred\");\n }\n }\n\n return res.json();\n}\n\nexport function formatDate(input: string | number | Date): string {\n const date = new Date(input);\n return date.toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/markdown.tsx"],"names":[],"mappings":";AAAA,SAAa,YAAY;AACzB,OAAO,mBAAgC;AAEhC,IAAM,wBAAqC;AAAA,EAChD;AAAA,EACA,CAAC,WAAW,cACV,UAAU,aAAa,UAAU,YAAY,UAAU,cAAc,UAAU;AACnF","sourcesContent":["import { FC, memo } from \"react\";\nimport ReactMarkdown, { Options } from \"react-markdown\";\n\nexport const MemoizedReactMarkdown: FC<Options> = memo(\n ReactMarkdown,\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.className === nextProps.className,\n);\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { cn } from './chunk-Q6YO7LDK.mjs';
|
|
2
|
+
import { __objRest, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var Separator = React.forwardRef((_a, ref) => {
|
|
8
|
+
var _b = _a, { className, orientation = "horizontal", decorative = true } = _b, props = __objRest(_b, ["className", "orientation", "decorative"]);
|
|
9
|
+
return /* @__PURE__ */ jsx(SeparatorPrimitive.Root, __spreadValues({
|
|
10
|
+
ref,
|
|
11
|
+
decorative,
|
|
12
|
+
orientation,
|
|
13
|
+
className: cn(
|
|
14
|
+
"shrink-0 bg-border",
|
|
15
|
+
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
16
|
+
className
|
|
17
|
+
)
|
|
18
|
+
}, props));
|
|
19
|
+
});
|
|
20
|
+
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
21
|
+
|
|
22
|
+
export { Separator };
|
|
23
|
+
//# sourceMappingURL=out.js.map
|
|
24
|
+
//# sourceMappingURL=chunk-VUNHHCOA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/ui/separator.tsx"],"names":[],"mappings":";;;;;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,wBAAwB;AAQlC;AAXF;AAOA,IAAM,YAAkB,iBAGtB,CAAC,IAAwE,QAAK;AAA7E,eAAE,aAAW,cAAc,cAAc,aAAa,KAVzD,IAUG,IAA+D,kBAA/D,IAA+D,CAA7D,aAAW,eAA4B;AAC1C,6BAAoB,yBAAnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,gBAAgB,eAAe,mBAAmB;AAAA,MAClD;AAAA,IACF;AAAA,KACI,MACN;AAAA,CACD;AACD,UAAU,cAAiC,wBAAK","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"../../../lib/utils\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className,\n )}\n {...props}\n />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
2
|
-
import { IconDownload, IconCheck, IconCopy } from './chunk-
|
|
3
|
-
import { useCopyToClipboard } from './chunk-
|
|
1
|
+
import { Button } from './chunk-5HCN6SPC.mjs';
|
|
2
|
+
import { IconDownload, IconCheck, IconCopy } from './chunk-34MTYKUD.mjs';
|
|
3
|
+
import { useCopyToClipboard } from './chunk-ZLFSBGYI.mjs';
|
|
4
4
|
import { memo } from 'react';
|
|
5
5
|
import { Prism } from 'react-syntax-highlighter';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -45,10 +45,7 @@ var CodeBlock = memo(({ language, value }) => {
|
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
const fileExtension = programmingLanguages[language] || ".file";
|
|
48
|
-
const suggestedFileName = `file-${generateRandomString(
|
|
49
|
-
3,
|
|
50
|
-
true
|
|
51
|
-
)}${fileExtension}`;
|
|
48
|
+
const suggestedFileName = `file-${generateRandomString(3, true)}${fileExtension}`;
|
|
52
49
|
const fileName = window.prompt("Enter file name", suggestedFileName);
|
|
53
50
|
if (!fileName) {
|
|
54
51
|
return;
|
|
@@ -137,4 +134,4 @@ CodeBlock.displayName = "CodeBlock";
|
|
|
137
134
|
|
|
138
135
|
export { CodeBlock, generateRandomString, programmingLanguages };
|
|
139
136
|
//# sourceMappingURL=out.js.map
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
137
|
+
//# sourceMappingURL=chunk-XEVSX2QD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/ui/codeblock.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport { FC, memo } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\n\nimport { useCopyToClipboard } from \"../../../hooks/use-copy-to-clipboard\";\nimport { IconCheck, IconCopy, IconDownload } from \"./icons\";\nimport { Button } from \"./button\";\n\ninterface Props {\n language: string;\n value: string;\n}\n\ninterface languageMap {\n [key: string]: string | undefined;\n}\n\nexport const programmingLanguages: languageMap = {\n javascript: \".js\",\n python: \".py\",\n java: \".java\",\n c: \".c\",\n cpp: \".cpp\",\n \"c++\": \".cpp\",\n \"c#\": \".cs\",\n ruby: \".rb\",\n php: \".php\",\n swift: \".swift\",\n \"objective-c\": \".m\",\n kotlin: \".kt\",\n typescript: \".ts\",\n go: \".go\",\n perl: \".pl\",\n rust: \".rs\",\n scala: \".scala\",\n haskell: \".hs\",\n lua: \".lua\",\n shell: \".sh\",\n sql: \".sql\",\n html: \".html\",\n css: \".css\",\n // add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component\n};\n\nexport const generateRandomString = (length: number, lowercase = false) => {\n const chars = \"ABCDEFGHJKLMNPQRSTUVWXY3456789\"; // excluding similar looking characters like Z, 2, I, 1, O, 0\n let result = \"\";\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return lowercase ? result.toLowerCase() : result;\n};\n\nconst CodeBlock: FC<Props> = memo(({ language, value }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 });\n\n const downloadAsFile = () => {\n if (typeof window === \"undefined\") {\n return;\n }\n const fileExtension = programmingLanguages[language] || \".file\";\n const suggestedFileName = `file-${generateRandomString(3, true)}${fileExtension}`;\n const fileName = window.prompt(\"Enter file name\" || \"\", suggestedFileName);\n\n if (!fileName) {\n // User pressed cancel on prompt.\n return;\n }\n\n const blob = new Blob([value], { type: \"text/plain\" });\n const url = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.download = fileName;\n link.href = url;\n link.style.display = \"none\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n };\n\n const onCopy = () => {\n if (isCopied) return;\n copyToClipboard(value);\n };\n\n return (\n <div className=\"codeblock relative w-full bg-zinc-950 font-sans\">\n <div className=\"flex w-full items-center justify-between bg-zinc-800 px-6 py-2 pr-4 text-zinc-100\">\n <span className=\"text-xs lowercase\">{language}</span>\n <div className=\"flex items-center space-x-1\">\n <Button\n variant=\"ghost\"\n className=\"hover:bg-zinc-800 focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0\"\n onClick={downloadAsFile}\n size=\"icon\"\n >\n <IconDownload />\n <span className=\"sr-only\">Download</span>\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"text-xs hover:bg-zinc-800 focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0\"\n onClick={onCopy}\n >\n {isCopied ? <IconCheck /> : <IconCopy />}\n <span className=\"sr-only\">Copy code</span>\n </Button>\n </div>\n </div>\n <SyntaxHighlighter\n language={language}\n PreTag=\"div\"\n showLineNumbers\n customStyle={{\n margin: 0,\n width: \"100%\",\n background: \"transparent\",\n padding: \"1.5rem 1rem\",\n }}\n codeTagProps={{\n style: {\n fontSize: \"0.9rem\",\n fontFamily: \"var(--font-mono)\",\n },\n }}\n >\n {value}\n </SyntaxHighlighter>\n </div>\n );\n});\nCodeBlock.displayName = \"CodeBlock\";\n\nexport { CodeBlock };\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CodeBlock } from './chunk-
|
|
2
|
-
import { MemoizedReactMarkdown } from './chunk-
|
|
3
|
-
import { ChatMessageActions } from './chunk-
|
|
4
|
-
import { IconUser, IconOpenAI } from './chunk-
|
|
5
|
-
import { cn } from './chunk-
|
|
1
|
+
import { CodeBlock } from './chunk-XEVSX2QD.mjs';
|
|
2
|
+
import { MemoizedReactMarkdown } from './chunk-TEYIQHMK.mjs';
|
|
3
|
+
import { ChatMessageActions } from './chunk-ESP3H6NQ.mjs';
|
|
4
|
+
import { IconUser, IconOpenAI } from './chunk-34MTYKUD.mjs';
|
|
5
|
+
import { cn } from './chunk-Q6YO7LDK.mjs';
|
|
6
6
|
import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
7
7
|
import remarkGfm from 'remark-gfm';
|
|
8
8
|
import remarkMath from 'remark-math';
|
|
@@ -72,4 +72,4 @@ function ChatMessage(_a) {
|
|
|
72
72
|
|
|
73
73
|
export { ChatMessage };
|
|
74
74
|
//# sourceMappingURL=out.js.map
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-XLGSWCCV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/chat-message.tsx"],"names":["_a","_b","props"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,eAAe;AACtB,OAAO,gBAAgB;AAqBY,cAE7B,YAF6B;AAT5B,SAAS,YAAY,IAAyC;AAAzC,eAAE,UAd9B,IAc4B,IAAc,kBAAd,IAAc,CAAZ;AAC5B,SACE,qBAAC;AAAA,IAAI,WAAW,GAAG,sCAAsC;AAAA,KAAO,QAA/D;AAAA,IACC;AAAA,0BAAC;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,QAAQ,SAAS,SAAS,kBAAkB;AAAA,QAC9C;AAAA,QAEC,kBAAQ,SAAS,SAAS,oBAAC,YAAS,IAAK,oBAAC,cAAW;AAAA,OACxD;AAAA,MACA,qBAAC;AAAA,QAAI,WAAU;AAAA,QACb;AAAA,8BAAC;AAAA,YACC,WAAU;AAAA,YACV,eAAe,CAAC,WAAW,UAAU;AAAA,YACrC,YAAY;AAAA,cACV,EAAE,EAAE,SAAS,GAAG;AACd,uBAAO,oBAAC;AAAA,kBAAE,WAAU;AAAA,kBAAkB;AAAA,iBAAS;AAAA,cACjD;AAAA,cACA,KAAKA,KAA2C;AAA3C,oBAAAC,MAAAD,KAAE,YAAU,WAAW,OAjCxC,IAiCiBC,KAAkCC,SAAA,UAAlCD,KAAkC,CAAhC,YAAU,aAAW;AAC1B,oBAAI,SAAS,QAAQ;AACnB,sBAAI,SAAS,MAAM,UAAK;AACtB,2BAAO,oBAAC;AAAA,sBAAK,WAAU;AAAA,sBAAoC;AAAA,qBAAC;AAAA,kBAC9D;AAEA,2BAAS,KAAM,SAAS,GAAc,QAAQ,YAAO,QAAG;AAAA,gBAC1D;AAEA,sBAAM,QAAQ,iBAAiB,KAAK,aAAa,EAAE;AAEnD,oBAAI,QAAQ;AACV,yBACE,oBAAC;AAAA,oBAAK;AAAA,qBAA0BC,SAA/B;AAAA,oBACE;AAAA,oBACH;AAAA,gBAEJ;AAEA,uBACE,oBAAC;AAAA,kBAEC,UAAW,SAAS,MAAM,MAAO;AAAA,kBACjC,OAAO,OAAO,QAAQ,EAAE,QAAQ,OAAO,EAAE;AAAA,mBACrCA,SAHC,KAAK,OAAO,CAInB;AAAA,cAEJ;AAAA,YACF;AAAA,YAEC,kBAAQ;AAAA,WACX;AAAA,UACA,oBAAC;AAAA,YAAmB;AAAA,WAAkB;AAAA;AAAA,OACxC;AAAA;AAAA,IACF;AAEJ","sourcesContent":["import { Message } from \"ai\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\n\nimport { cn } from \"../../lib/utils\";\nimport { CodeBlock } from \"./ui/codeblock\";\nimport { MemoizedReactMarkdown } from \"./markdown\";\nimport { IconOpenAI, IconUser } from \"./ui/icons\";\nimport { ChatMessageActions } from \"./chat-message-actions\";\n\nexport interface ChatMessageProps {\n message: Message;\n}\n\nexport function ChatMessage({ message, ...props }: ChatMessageProps) {\n return (\n <div className={cn(\"group relative mb-4 flex items-start\")} {...props}>\n <div\n className={cn(\n \"flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border shadow\",\n message.role === \"user\" ? \"bg-background\" : \"bg-primary text-primary-foreground\",\n )}\n >\n {message.role === \"user\" ? <IconUser /> : <IconOpenAI />}\n </div>\n <div className=\"ml-4 flex-1 space-y-2 overflow-hidden px-1\">\n <MemoizedReactMarkdown\n className=\"prose break-words dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 text-sm\"\n remarkPlugins={[remarkGfm, remarkMath]}\n components={{\n p({ children }) {\n return <p className=\"mb-2 last:mb-0\">{children}</p>;\n },\n code({ children, className, inline, ...props }) {\n if (children.length) {\n if (children[0] == \"▍\") {\n return <span className=\"mt-1 animate-pulse cursor-default\">▍</span>;\n }\n\n children[0] = (children[0] as string).replace(\"`▍`\", \"▍\");\n }\n\n const match = /language-(\\w+)/.exec(className || \"\");\n\n if (inline) {\n return (\n <code className={className} {...props}>\n {children}\n </code>\n );\n }\n\n return (\n <CodeBlock\n key={Math.random()}\n language={(match && match[1]) || \"\"}\n value={String(children).replace(/\\n$/, \"\")}\n {...props}\n />\n );\n },\n }}\n >\n {message.content}\n </MemoizedReactMarkdown>\n <ChatMessageActions message={message} />\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PromptForm } from './chunk-
|
|
2
|
-
import { Button } from './chunk-
|
|
3
|
-
import { IconStop, IconRefresh } from './chunk-
|
|
1
|
+
import { PromptForm } from './chunk-4ENGXGIC.mjs';
|
|
2
|
+
import { Button } from './chunk-5HCN6SPC.mjs';
|
|
3
|
+
import { IconStop, IconRefresh } from './chunk-34MTYKUD.mjs';
|
|
4
4
|
import { __async } from './chunk-MRXNTQOX.mjs';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -66,4 +66,4 @@ function ChatPanel({
|
|
|
66
66
|
|
|
67
67
|
export { ChatPanel };
|
|
68
68
|
//# sourceMappingURL=out.js.map
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-ZA25IBKF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat-components/chat-panel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgCY,SACE,KADF;AAlBL,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,SACE,oBAAC;AAAA,IACC,WAAU;AAAA,IACV,OAAO,EAAE,OAAO,QAAQ,UAAU,UAAU,WAAW,aAAa;AAAA,IAEpE,+BAAC;AAAA,MAAI,WAAU;AAAA,MACb;AAAA,4BAAC;AAAA,UAAI,WAAU;AAAA,UACZ,sBACC,qBAAC;AAAA,YAAO,SAAQ;AAAA,YAAU,SAAS,MAAM,KAAK;AAAA,YAAG,WAAU;AAAA,YACzD;AAAA,kCAAC;AAAA,gBAAS,WAAU;AAAA,eAAO;AAAA,cAAE;AAAA;AAAA,WAE/B,KAEA,qCAAU,UAAS,KACjB,qBAAC;AAAA,YAAO,SAAQ;AAAA,YAAU,SAAS,MAAM,OAAO;AAAA,YAAG,WAAU;AAAA,YAC3D;AAAA,kCAAC;AAAA,gBAAY,WAAU;AAAA,eAAO;AAAA,cAAE;AAAA;AAAA,WAElC;AAAA,SAGN;AAAA,QACA,oBAAC;AAAA,UAAI,WAAU;AAAA,UACb,8BAAC;AAAA,YACC,UAAU,CAAO,UAAU;AACzB,oBAAM,OAAO;AAAA,gBACX;AAAA,gBACA,SAAS;AAAA,gBACT,MAAM;AAAA,cACR,CAAC;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,WACF;AAAA,SACF;AAAA;AAAA,KACF;AAAA,GACF;AAEJ","sourcesContent":["import { type UseChatHelpers } from \"ai/react\";\n\nimport { Button } from \"./ui/button\";\nimport { PromptForm } from \"./prompt-form\";\nimport { IconRefresh, IconStop } from \"./ui/icons\";\n\nexport interface ChatPanelProps\n extends Pick<\n UseChatHelpers,\n \"append\" | \"isLoading\" | \"reload\" | \"messages\" | \"stop\" | \"input\" | \"setInput\"\n > {\n id?: string;\n}\n\nexport function ChatPanel({\n id,\n isLoading,\n stop,\n append,\n reload,\n input,\n setInput,\n messages,\n}: ChatPanelProps) {\n return (\n <div\n className=\"inset-x-0 bottom-0 bg-gradient-to-b from-muted/10 from-10% to-muted/30 to-50% mt-4 mb-8\"\n style={{ width: \"100%\", overflow: \"hidden\", boxSizing: \"border-box\" }}\n >\n <div className=\"mx-auto sm:max-w-2xl sm:px-4\">\n <div className=\"flex h-10 items-center justify-center mb-4\">\n {isLoading ? (\n <Button variant=\"outline\" onClick={() => stop()} className=\"bg-background\">\n <IconStop className=\"mr-2\" />\n Stop generating\n </Button>\n ) : (\n messages?.length > 0 && (\n <Button variant=\"outline\" onClick={() => reload()} className=\"bg-background\">\n <IconRefresh className=\"mr-2\" />\n Regenerate response\n </Button>\n )\n )}\n </div>\n <div className=\"space-y-4 border-2 bg-background px-4 py-2 shadow-lg sm:rounded-xl md:py-4\">\n <PromptForm\n onSubmit={async (value) => {\n await append({\n id,\n content: value,\n role: \"user\",\n });\n }}\n input={input}\n setInput={setInput}\n isLoading={isLoading}\n />\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
3
|
// src/hooks/use-copy-to-clipboard.tsx
|
|
4
|
-
function useCopyToClipboard({
|
|
5
|
-
timeout = 2e3
|
|
6
|
-
}) {
|
|
4
|
+
function useCopyToClipboard({ timeout = 2e3 }) {
|
|
7
5
|
const [isCopied, setIsCopied] = React.useState(false);
|
|
8
6
|
const copyToClipboard = (value) => {
|
|
9
7
|
var _a;
|
|
@@ -25,4 +23,4 @@ function useCopyToClipboard({
|
|
|
25
23
|
|
|
26
24
|
export { useCopyToClipboard };
|
|
27
25
|
//# sourceMappingURL=out.js.map
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-ZLFSBGYI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-copy-to-clipboard.tsx"],"names":[],"mappings":";AAEA,YAAY,WAAW;AAFvB;AAQO,SAAS,mBAAmB,EAAE,UAAU,IAAK,GAA4B;AAC9E,QAAM,CAAC,UAAU,WAAW,IAAU,eAAkB,KAAK;AAE7D,QAAM,kBAAkB,CAAC,UAAkB;AAX7C;AAYI,QAAI,OAAO,WAAW,eAAe,GAAC,eAAU,cAAV,mBAAqB,YAAW;AACpE;AAAA,IACF;AAEA,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,cAAU,UAAU,UAAU,KAAK,EAAE,KAAK,MAAM;AAC9C,kBAAY,IAAI;AAEhB,iBAAW,MAAM;AACf,oBAAY,KAAK;AAAA,MACnB,GAAG,OAAO;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,UAAU,gBAAgB;AACrC","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nexport interface useCopyToClipboardProps {\n timeout?: number;\n}\n\nexport function useCopyToClipboard({ timeout = 2000 }: useCopyToClipboardProps) {\n const [isCopied, setIsCopied] = React.useState<Boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (typeof window === \"undefined\" || !navigator.clipboard?.writeText) {\n return;\n }\n\n if (!value) {\n return;\n }\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n\n setTimeout(() => {\n setIsCopied(false);\n }, timeout);\n });\n };\n\n return { isCopied, copyToClipboard };\n}\n"]}
|
|
@@ -5,9 +5,7 @@ function useAtBottom(offset = 0) {
|
|
|
5
5
|
const [isAtBottom, setIsAtBottom] = React.useState(false);
|
|
6
6
|
React.useEffect(() => {
|
|
7
7
|
const handleScroll = () => {
|
|
8
|
-
setIsAtBottom(
|
|
9
|
-
window.innerHeight + window.scrollY >= document.body.offsetHeight - offset
|
|
10
|
-
);
|
|
8
|
+
setIsAtBottom(window.innerHeight + window.scrollY >= document.body.offsetHeight - offset);
|
|
11
9
|
};
|
|
12
10
|
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
13
11
|
handleScroll();
|
|
@@ -20,4 +18,4 @@ function useAtBottom(offset = 0) {
|
|
|
20
18
|
|
|
21
19
|
export { useAtBottom };
|
|
22
20
|
//# sourceMappingURL=out.js.map
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-ZYC5YVDO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-at-bottom.tsx"],"names":[],"mappings":";AAAA,YAAY,WAAW;AAEhB,SAAS,YAAY,SAAS,GAAG;AACtC,QAAM,CAAC,YAAY,aAAa,IAAU,eAAS,KAAK;AAExD,EAAM,gBAAU,MAAM;AACpB,UAAM,eAAe,MAAM;AACzB,oBAAc,OAAO,cAAc,OAAO,WAAW,SAAS,KAAK,eAAe,MAAM;AAAA,IAC1F;AAEA,WAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,KAAK,CAAC;AACjE,iBAAa;AAEb,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT","sourcesContent":["import * as React from \"react\";\n\nexport function useAtBottom(offset = 0) {\n const [isAtBottom, setIsAtBottom] = React.useState(false);\n\n React.useEffect(() => {\n const handleScroll = () => {\n setIsAtBottom(window.innerHeight + window.scrollY >= document.body.offsetHeight - offset);\n };\n\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n handleScroll();\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, [offset]);\n\n return isAtBottom;\n}\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { ChatList } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-
|
|
8
|
-
import '../../chunk-
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-
|
|
1
|
+
export { ChatList } from '../../chunk-GBPOPYU3.mjs';
|
|
2
|
+
import '../../chunk-VUNHHCOA.mjs';
|
|
3
|
+
import '../../chunk-XLGSWCCV.mjs';
|
|
4
|
+
import '../../chunk-XEVSX2QD.mjs';
|
|
5
|
+
import '../../chunk-TEYIQHMK.mjs';
|
|
6
|
+
import '../../chunk-ESP3H6NQ.mjs';
|
|
7
|
+
import '../../chunk-5HCN6SPC.mjs';
|
|
8
|
+
import '../../chunk-34MTYKUD.mjs';
|
|
9
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
10
|
+
import '../../chunk-ZLFSBGYI.mjs';
|
|
11
11
|
import '../../chunk-MRXNTQOX.mjs';
|
|
12
12
|
//# sourceMappingURL=out.js.map
|
|
13
13
|
//# sourceMappingURL=chat-list.mjs.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ChatMessageActions } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
1
|
+
export { ChatMessageActions } from '../../chunk-ESP3H6NQ.mjs';
|
|
2
|
+
import '../../chunk-5HCN6SPC.mjs';
|
|
3
|
+
import '../../chunk-34MTYKUD.mjs';
|
|
4
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
5
|
+
import '../../chunk-ZLFSBGYI.mjs';
|
|
6
6
|
import '../../chunk-MRXNTQOX.mjs';
|
|
7
7
|
//# sourceMappingURL=out.js.map
|
|
8
8
|
//# sourceMappingURL=chat-message-actions.mjs.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { ChatMessage } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-
|
|
8
|
-
import '../../chunk-
|
|
1
|
+
export { ChatMessage } from '../../chunk-XLGSWCCV.mjs';
|
|
2
|
+
import '../../chunk-XEVSX2QD.mjs';
|
|
3
|
+
import '../../chunk-TEYIQHMK.mjs';
|
|
4
|
+
import '../../chunk-ESP3H6NQ.mjs';
|
|
5
|
+
import '../../chunk-5HCN6SPC.mjs';
|
|
6
|
+
import '../../chunk-34MTYKUD.mjs';
|
|
7
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
8
|
+
import '../../chunk-ZLFSBGYI.mjs';
|
|
9
9
|
import '../../chunk-MRXNTQOX.mjs';
|
|
10
10
|
//# sourceMappingURL=out.js.map
|
|
11
11
|
//# sourceMappingURL=chat-message.mjs.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { ChatPanel } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-
|
|
1
|
+
export { ChatPanel } from '../../chunk-ZA25IBKF.mjs';
|
|
2
|
+
import '../../chunk-4ENGXGIC.mjs';
|
|
3
|
+
import '../../chunk-PY4F436T.mjs';
|
|
4
|
+
import '../../chunk-5HCN6SPC.mjs';
|
|
5
|
+
import '../../chunk-34MTYKUD.mjs';
|
|
6
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
7
|
+
import '../../chunk-OHWEJUCS.mjs';
|
|
8
8
|
import '../../chunk-MRXNTQOX.mjs';
|
|
9
9
|
//# sourceMappingURL=out.js.map
|
|
10
10
|
//# sourceMappingURL=chat-panel.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { ChatScrollAnchor } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { ChatScrollAnchor } from '../../chunk-6RG3YDAC.mjs';
|
|
2
|
+
import '../../chunk-ZYC5YVDO.mjs';
|
|
3
3
|
import '../../chunk-MRXNTQOX.mjs';
|
|
4
4
|
//# sourceMappingURL=out.js.map
|
|
5
5
|
//# sourceMappingURL=chat-scroll-anchor.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from '../../chunk-
|
|
2
|
-
import { Button } from '../../chunk-
|
|
3
|
-
import { IconSpinner } from '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
1
|
+
import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from '../../chunk-HKSE5ISX.mjs';
|
|
2
|
+
import { Button } from '../../chunk-5HCN6SPC.mjs';
|
|
3
|
+
import { IconSpinner } from '../../chunk-34MTYKUD.mjs';
|
|
4
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
5
5
|
import { __async } from '../../chunk-MRXNTQOX.mjs';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { useRouter } from 'next/navigation';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/chat-components/clear-history.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAY,WAAW;AACvB,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AA6Bd,SACgB,KADhB;AAjCR;AAyBO,SAAS,aAAa,EAAE,WAAW,GAAsB;AAC9D,QAAM,CAAC,MAAM,OAAO,IAAU,eAAS,KAAK;AAC5C,QAAM,CAAC,WAAW,eAAe,IAAU,oBAAc;AACzD,QAAM,SAAS,UAAU;AAEzB,SACE,qBAAC;AAAA,IAAY;AAAA,IAAY,cAAc;AAAA,IACrC;AAAA,0BAAC;AAAA,QAAmB,SAAO;AAAA,QACzB,+BAAC;AAAA,UAAO,SAAQ;AAAA,UAAQ,UAAU;AAAA,UAC/B;AAAA,yBAAa,oBAAC;AAAA,cAAY,WAAU;AAAA,aAAO;AAAA,YAAG;AAAA;AAAA,SAEjD;AAAA,OACF;AAAA,MACA,qBAAC;AAAA,QACC;AAAA,+BAAC;AAAA,YACC;AAAA,kCAAC;AAAA,gBAAiB;AAAA,eAAwB;AAAA,cAC1C,oBAAC;AAAA,gBAAuB;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/chat-components/clear-history.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAY,WAAW;AACvB,SAAS,iBAAiB;AAC1B,SAAS,aAAa;AA6Bd,SACgB,KADhB;AAjCR;AAyBO,SAAS,aAAa,EAAE,WAAW,GAAsB;AAC9D,QAAM,CAAC,MAAM,OAAO,IAAU,eAAS,KAAK;AAC5C,QAAM,CAAC,WAAW,eAAe,IAAU,oBAAc;AACzD,QAAM,SAAS,UAAU;AAEzB,SACE,qBAAC;AAAA,IAAY;AAAA,IAAY,cAAc;AAAA,IACrC;AAAA,0BAAC;AAAA,QAAmB,SAAO;AAAA,QACzB,+BAAC;AAAA,UAAO,SAAQ;AAAA,UAAQ,UAAU;AAAA,UAC/B;AAAA,yBAAa,oBAAC;AAAA,cAAY,WAAU;AAAA,aAAO;AAAA,YAAG;AAAA;AAAA,SAEjD;AAAA,OACF;AAAA,MACA,qBAAC;AAAA,QACC;AAAA,+BAAC;AAAA,YACC;AAAA,kCAAC;AAAA,gBAAiB;AAAA,eAAwB;AAAA,cAC1C,oBAAC;AAAA,gBAAuB;AAAA,eAExB;AAAA;AAAA,WACF;AAAA,UACA,qBAAC;AAAA,YACC;AAAA,kCAAC;AAAA,gBAAkB,UAAU;AAAA,gBAAW;AAAA,eAAM;AAAA,cAC9C,qBAAC;AAAA,gBACC,UAAU;AAAA,gBACV,SAAS,CAAC,UAAe;AACvB,wBAAM,eAAe;AACrB,kCAAgB,MAAY;AAC1B,0BAAM,SAAS,MAAM,WAAW;AAEhC,wBAAI,UAAU,WAAW,QAAQ;AAC/B,4BAAM,MAAM,OAAO,KAAK;AACxB;AAAA,oBACF;AAEA,4BAAQ,KAAK;AACb,2BAAO,KAAK,GAAG;AAAA,kBACjB,EAAC;AAAA,gBACH;AAAA,gBAEC;AAAA,+BAAa,oBAAC;AAAA,oBAAY,WAAU;AAAA,mBAAoB;AAAA,kBAAG;AAAA;AAAA,eAE9D;AAAA;AAAA,WACF;AAAA;AAAA,OACF;AAAA;AAAA,GACF;AAEJ","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { useRouter } from \"next/navigation\";\nimport { toast } from \"react-hot-toast\";\n\nimport { ServerActionResult } from \"../../types/types\";\nimport { Button } from \"./ui/button\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"./ui/alert-dialog\";\nimport { IconSpinner } from \"./ui/icons\";\n\ninterface ClearHistoryProps {\n clearChats: () => ServerActionResult<void>;\n}\n\nexport function ClearHistory({ clearChats }: ClearHistoryProps) {\n const [open, setOpen] = React.useState(false);\n const [isPending, startTransition] = React.useTransition();\n const router = useRouter();\n\n return (\n <AlertDialog open={open} onOpenChange={setOpen}>\n <AlertDialogTrigger asChild>\n <Button variant=\"ghost\" disabled={isPending}>\n {isPending && <IconSpinner className=\"mr-2\" />}\n Clear history\n </Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete your chat history and remove your data from our servers.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isPending}>Cancel</AlertDialogCancel>\n <AlertDialogAction\n disabled={isPending}\n onClick={(event: any) => {\n event.preventDefault();\n startTransition(async () => {\n const result = await clearChats();\n\n if (result && \"error\" in result) {\n toast.error(result.error);\n return;\n }\n\n setOpen(false);\n router.push(\"/\");\n });\n }}\n >\n {isPending && <IconSpinner className=\"mr-2 animate-spin\" />}\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n"]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
export { CopilotChat } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-
|
|
8
|
-
import '../../chunk-
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-
|
|
11
|
-
import '../../chunk-
|
|
12
|
-
import '../../chunk-
|
|
13
|
-
import '../../chunk-
|
|
14
|
-
import '../../chunk-
|
|
15
|
-
import '../../chunk-
|
|
16
|
-
import '../../chunk-
|
|
17
|
-
import '../../chunk-
|
|
18
|
-
import '../../chunk-
|
|
19
|
-
import '../../chunk-
|
|
1
|
+
export { CopilotChat } from '../../chunk-CRRPHVT3.mjs';
|
|
2
|
+
import '../../chunk-EXOYIXGQ.mjs';
|
|
3
|
+
import '../../chunk-D72RVITD.mjs';
|
|
4
|
+
import '../../chunk-GBPOPYU3.mjs';
|
|
5
|
+
import '../../chunk-VUNHHCOA.mjs';
|
|
6
|
+
import '../../chunk-XLGSWCCV.mjs';
|
|
7
|
+
import '../../chunk-XEVSX2QD.mjs';
|
|
8
|
+
import '../../chunk-TEYIQHMK.mjs';
|
|
9
|
+
import '../../chunk-ESP3H6NQ.mjs';
|
|
10
|
+
import '../../chunk-ZA25IBKF.mjs';
|
|
11
|
+
import '../../chunk-4ENGXGIC.mjs';
|
|
12
|
+
import '../../chunk-PY4F436T.mjs';
|
|
13
|
+
import '../../chunk-5HCN6SPC.mjs';
|
|
14
|
+
import '../../chunk-34MTYKUD.mjs';
|
|
15
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
16
|
+
import '../../chunk-6RG3YDAC.mjs';
|
|
17
|
+
import '../../chunk-ZYC5YVDO.mjs';
|
|
18
|
+
import '../../chunk-ZLFSBGYI.mjs';
|
|
19
|
+
import '../../chunk-OHWEJUCS.mjs';
|
|
20
20
|
import '../../chunk-MRXNTQOX.mjs';
|
|
21
21
|
//# sourceMappingURL=out.js.map
|
|
22
22
|
//# sourceMappingURL=copilot-chat.mjs.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { DefaultEmptyScreen } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
1
|
+
export { DefaultEmptyScreen } from '../../chunk-EXOYIXGQ.mjs';
|
|
2
|
+
import '../../chunk-D72RVITD.mjs';
|
|
3
|
+
import '../../chunk-5HCN6SPC.mjs';
|
|
4
|
+
import '../../chunk-34MTYKUD.mjs';
|
|
5
|
+
import '../../chunk-Q6YO7LDK.mjs';
|
|
6
6
|
import '../../chunk-MRXNTQOX.mjs';
|
|
7
7
|
//# sourceMappingURL=out.js.map
|
|
8
8
|
//# sourceMappingURL=default-empty-screen.mjs.map
|
|
@@ -4,6 +4,6 @@ interface PromptProps extends Pick<UseChatHelpers, "input" | "setInput"> {
|
|
|
4
4
|
onSubmit: (value: string) => Promise<void>;
|
|
5
5
|
isLoading: boolean;
|
|
6
6
|
}
|
|
7
|
-
declare function PromptForm({ onSubmit, input, setInput, isLoading
|
|
7
|
+
declare function PromptForm({ onSubmit, input, setInput, isLoading }: PromptProps): JSX.Element;
|
|
8
8
|
|
|
9
9
|
export { PromptForm, PromptProps };
|