@copilotkit/react-ui 0.9.0-alpha.0 → 0.9.0-alpha.10

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.
Files changed (145) hide show
  1. package/.turbo/turbo-build.log +89 -86
  2. package/CHANGELOG.md +87 -0
  3. package/dist/components/chat-components/chat-list.mjs +488 -12
  4. package/dist/components/chat-components/chat-list.mjs.map +1 -1
  5. package/dist/components/chat-components/chat-message-actions.mjs +184 -7
  6. package/dist/components/chat-components/chat-message-actions.mjs.map +1 -1
  7. package/dist/components/chat-components/chat-message.mjs +440 -10
  8. package/dist/components/chat-components/chat-message.mjs.map +1 -1
  9. package/dist/components/chat-components/chat-panel.mjs +334 -9
  10. package/dist/components/chat-components/chat-panel.mjs.map +1 -1
  11. package/dist/components/chat-components/chat-scroll-anchor.mjs +48 -4
  12. package/dist/components/chat-components/chat-scroll-anchor.mjs.map +1 -1
  13. package/dist/components/chat-components/clear-history.mjs +268 -26
  14. package/dist/components/chat-components/clear-history.mjs.map +1 -1
  15. package/dist/components/chat-components/copilot-chat.mjs +931 -21
  16. package/dist/components/chat-components/copilot-chat.mjs.map +1 -1
  17. package/dist/components/chat-components/default-empty-screen.mjs +206 -7
  18. package/dist/components/chat-components/default-empty-screen.mjs.map +1 -1
  19. package/dist/components/chat-components/external-link.mjs +31 -3
  20. package/dist/components/chat-components/external-link.mjs.map +1 -1
  21. package/dist/components/chat-components/markdown.mjs +10 -3
  22. package/dist/components/chat-components/markdown.mjs.map +1 -1
  23. package/dist/components/chat-components/prompt-form.mjs +246 -8
  24. package/dist/components/chat-components/prompt-form.mjs.map +1 -1
  25. package/dist/components/chat-components/theme-toggle.mjs +133 -15
  26. package/dist/components/chat-components/theme-toggle.mjs.map +1 -1
  27. package/dist/components/chat-components/toaster.mjs +6 -3
  28. package/dist/components/chat-components/toaster.mjs.map +1 -1
  29. package/dist/components/chat-components/ui/alert-dialog.mjs +216 -5
  30. package/dist/components/chat-components/ui/alert-dialog.mjs.map +1 -1
  31. package/dist/components/chat-components/ui/badge.mjs +49 -7
  32. package/dist/components/chat-components/ui/badge.mjs.map +1 -1
  33. package/dist/components/chat-components/ui/button.mjs +88 -4
  34. package/dist/components/chat-components/ui/button.mjs.map +1 -1
  35. package/dist/components/chat-components/ui/codeblock.mjs +298 -7
  36. package/dist/components/chat-components/ui/codeblock.mjs.map +1 -1
  37. package/dist/components/chat-components/ui/dialog.mjs +94 -26
  38. package/dist/components/chat-components/ui/dialog.mjs.map +1 -1
  39. package/dist/components/chat-components/ui/dropdown-menu.mjs +61 -8
  40. package/dist/components/chat-components/ui/dropdown-menu.mjs.map +1 -1
  41. package/dist/components/chat-components/ui/icons.mjs +551 -4
  42. package/dist/components/chat-components/ui/icons.mjs.map +1 -1
  43. package/dist/components/chat-components/ui/input.mjs +48 -7
  44. package/dist/components/chat-components/ui/input.mjs.map +1 -1
  45. package/dist/components/chat-components/ui/label.mjs +51 -9
  46. package/dist/components/chat-components/ui/label.mjs.map +1 -1
  47. package/dist/components/chat-components/ui/select.mjs +113 -27
  48. package/dist/components/chat-components/ui/select.mjs.map +1 -1
  49. package/dist/components/chat-components/ui/separator.mjs +67 -4
  50. package/dist/components/chat-components/ui/separator.mjs.map +1 -1
  51. package/dist/components/chat-components/ui/sheet.mjs +93 -24
  52. package/dist/components/chat-components/ui/sheet.mjs.map +1 -1
  53. package/dist/components/chat-components/ui/switch.mjs +53 -8
  54. package/dist/components/chat-components/ui/switch.mjs.map +1 -1
  55. package/dist/components/chat-components/ui/textarea.mjs +48 -7
  56. package/dist/components/chat-components/ui/textarea.mjs.map +1 -1
  57. package/dist/components/chat-components/ui/tooltip.mjs +69 -4
  58. package/dist/components/chat-components/ui/tooltip.mjs.map +1 -1
  59. package/dist/components/index.mjs +1057 -25
  60. package/dist/components/index.mjs.map +1 -1
  61. package/dist/components/sidebar/copilot-sidebar-ui-provider.mjs +1052 -24
  62. package/dist/components/sidebar/copilot-sidebar-ui-provider.mjs.map +1 -1
  63. package/dist/components/sidebar/copilot-sidebar.mjs +974 -22
  64. package/dist/components/sidebar/copilot-sidebar.mjs.map +1 -1
  65. package/dist/components/sidebar/sidebar-context.mjs +10 -3
  66. package/dist/components/sidebar/sidebar-context.mjs.map +1 -1
  67. package/dist/context/index.mjs +0 -2
  68. package/dist/context/index.mjs.map +1 -1
  69. package/dist/hooks/index.mjs +0 -2
  70. package/dist/hooks/index.mjs.map +1 -1
  71. package/dist/hooks/use-at-bottom.mjs +21 -3
  72. package/dist/hooks/use-at-bottom.mjs.map +1 -1
  73. package/dist/hooks/use-copy-to-clipboard.mjs +27 -3
  74. package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -1
  75. package/dist/hooks/use-enter-submit.mjs +16 -3
  76. package/dist/hooks/use-enter-submit.mjs.map +1 -1
  77. package/dist/index.mjs +1057 -28
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/lib/utils.mjs +62 -3
  80. package/dist/lib/utils.mjs.map +1 -1
  81. package/dist/lib/utils.test.mjs +0 -1
  82. package/dist/lib/utils.test.mjs.map +1 -1
  83. package/dist/types/index.mjs +0 -2
  84. package/dist/types/index.mjs.map +1 -1
  85. package/dist/types/types.mjs +0 -2
  86. package/dist/types/types.mjs.map +1 -1
  87. package/package.json +8 -7
  88. package/src/components/chat-components/prompt-form.tsx +3 -3
  89. package/src/components/chat-components/ui/codeblock.tsx +0 -2
  90. package/dist/chunk-6LAC5RA2.mjs +0 -28
  91. package/dist/chunk-6LAC5RA2.mjs.map +0 -1
  92. package/dist/chunk-6LRNF2VU.mjs +0 -12
  93. package/dist/chunk-6LRNF2VU.mjs.map +0 -1
  94. package/dist/chunk-6UJWRTL6.mjs +0 -45
  95. package/dist/chunk-6UJWRTL6.mjs.map +0 -1
  96. package/dist/chunk-752MT4QP.mjs +0 -72
  97. package/dist/chunk-752MT4QP.mjs.map +0 -1
  98. package/dist/chunk-7NSRDJ5C.mjs +0 -3
  99. package/dist/chunk-7NSRDJ5C.mjs.map +0 -1
  100. package/dist/chunk-BHJWB2SA.mjs +0 -48
  101. package/dist/chunk-BHJWB2SA.mjs.map +0 -1
  102. package/dist/chunk-BIPCPNHG.mjs +0 -18
  103. package/dist/chunk-BIPCPNHG.mjs.map +0 -1
  104. package/dist/chunk-BS6RR2DJ.mjs +0 -25
  105. package/dist/chunk-BS6RR2DJ.mjs.map +0 -1
  106. package/dist/chunk-DHK56U5Z.mjs +0 -106
  107. package/dist/chunk-DHK56U5Z.mjs.map +0 -1
  108. package/dist/chunk-DOMJCSI6.mjs +0 -26
  109. package/dist/chunk-DOMJCSI6.mjs.map +0 -1
  110. package/dist/chunk-H4VKQGVU.mjs +0 -3
  111. package/dist/chunk-H4VKQGVU.mjs.map +0 -1
  112. package/dist/chunk-I2AB5FK4.mjs +0 -123
  113. package/dist/chunk-I2AB5FK4.mjs.map +0 -1
  114. package/dist/chunk-IU3WTXLQ.mjs +0 -3
  115. package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
  116. package/dist/chunk-JUGCIZPN.mjs +0 -69
  117. package/dist/chunk-JUGCIZPN.mjs.map +0 -1
  118. package/dist/chunk-JUPNM7ZR.mjs +0 -75
  119. package/dist/chunk-JUPNM7ZR.mjs.map +0 -1
  120. package/dist/chunk-KR7MH7XO.mjs +0 -481
  121. package/dist/chunk-KR7MH7XO.mjs.map +0 -1
  122. package/dist/chunk-KXJV37FS.mjs +0 -33
  123. package/dist/chunk-KXJV37FS.mjs.map +0 -1
  124. package/dist/chunk-MC6KTH4X.mjs +0 -12
  125. package/dist/chunk-MC6KTH4X.mjs.map +0 -1
  126. package/dist/chunk-MRXNTQOX.mjs +0 -55
  127. package/dist/chunk-MRXNTQOX.mjs.map +0 -1
  128. package/dist/chunk-N7KB3Z57.mjs +0 -23
  129. package/dist/chunk-N7KB3Z57.mjs.map +0 -1
  130. package/dist/chunk-RSONJDLO.mjs +0 -28
  131. package/dist/chunk-RSONJDLO.mjs.map +0 -1
  132. package/dist/chunk-RVWZKSLL.mjs +0 -29
  133. package/dist/chunk-RVWZKSLL.mjs.map +0 -1
  134. package/dist/chunk-TVTG3V4F.mjs +0 -40
  135. package/dist/chunk-TVTG3V4F.mjs.map +0 -1
  136. package/dist/chunk-U6NJWGTV.mjs +0 -3
  137. package/dist/chunk-U6NJWGTV.mjs.map +0 -1
  138. package/dist/chunk-V6QYUEJR.mjs +0 -47
  139. package/dist/chunk-V6QYUEJR.mjs.map +0 -1
  140. package/dist/chunk-VQNV2DHJ.mjs +0 -142
  141. package/dist/chunk-VQNV2DHJ.mjs.map +0 -1
  142. package/dist/chunk-VSNDSL6W.mjs +0 -74
  143. package/dist/chunk-VSNDSL6W.mjs.map +0 -1
  144. package/dist/chunk-ZAS4O7XI.mjs +0 -53
  145. package/dist/chunk-ZAS4O7XI.mjs.map +0 -1
@@ -1,18 +0,0 @@
1
- import { useRef } from 'react';
2
-
3
- // src/hooks/use-enter-submit.tsx
4
- function useEnterSubmit() {
5
- const formRef = useRef(null);
6
- const handleKeyDown = (event) => {
7
- var _a;
8
- if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
9
- (_a = formRef.current) == null ? void 0 : _a.requestSubmit();
10
- event.preventDefault();
11
- }
12
- };
13
- return { formRef, onKeyDown: handleKeyDown };
14
- }
15
-
16
- export { useEnterSubmit };
17
- //# sourceMappingURL=out.js.map
18
- //# sourceMappingURL=chunk-BIPCPNHG.mjs.map
@@ -1 +0,0 @@
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,CACpB,UACS;AAVb;AAWI,QACE,MAAM,QAAQ,WACd,CAAC,MAAM,YACP,CAAC,MAAM,YAAY,aACnB;AACA,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 = (\n event: React.KeyboardEvent<HTMLTextAreaElement>\n ): void => {\n if (\n event.key === \"Enter\" &&\n !event.shiftKey &&\n !event.nativeEvent.isComposing\n ) {\n formRef.current?.requestSubmit();\n event.preventDefault();\n }\n };\n\n return { formRef, onKeyDown: handleKeyDown };\n}\n"]}
@@ -1,25 +0,0 @@
1
- import { cn } from './chunk-TVTG3V4F.mjs';
2
- import { __objRest, __spreadValues } from './chunk-MRXNTQOX.mjs';
3
- import * as React from 'react';
4
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
5
- import { jsx } from 'react/jsx-runtime';
6
-
7
- var TooltipProvider = TooltipPrimitive.Provider;
8
- var Tooltip = TooltipPrimitive.Root;
9
- var TooltipTrigger = TooltipPrimitive.Trigger;
10
- var TooltipContent = React.forwardRef((_a, ref) => {
11
- var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
12
- return /* @__PURE__ */ jsx(TooltipPrimitive.Content, __spreadValues({
13
- ref,
14
- sideOffset,
15
- className: cn(
16
- "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",
17
- className
18
- )
19
- }, props));
20
- });
21
- TooltipContent.displayName = TooltipPrimitive.Content.displayName;
22
-
23
- export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
24
- //# sourceMappingURL=out.js.map
25
- //# sourceMappingURL=chunk-BS6RR2DJ.mjs.map
@@ -1 +0,0 @@
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"]}
@@ -1,106 +0,0 @@
1
- import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-BS6RR2DJ.mjs';
2
- import { useEnterSubmit } from './chunk-BIPCPNHG.mjs';
3
- import { buttonVariants, Button } from './chunk-V6QYUEJR.mjs';
4
- import { IconPlus, IconArrowElbow } from './chunk-KR7MH7XO.mjs';
5
- import { cn } from './chunk-TVTG3V4F.mjs';
6
- import { __async } from './chunk-MRXNTQOX.mjs';
7
- import * as React from 'react';
8
- import TextareaAutosize from 'react-textarea-autosize';
9
- import Link from 'next/link';
10
- import { jsx, jsxs } from 'react/jsx-runtime';
11
-
12
- function PromptForm({
13
- onSubmit,
14
- input,
15
- setInput,
16
- isLoading
17
- }) {
18
- const { formRef, onKeyDown } = useEnterSubmit();
19
- const inputRef = React.useRef(null);
20
- React.useEffect(() => {
21
- if (inputRef.current) {
22
- inputRef.current.focus();
23
- }
24
- }, []);
25
- return /* @__PURE__ */ jsx("form", {
26
- onSubmit: (e) => __async(this, null, function* () {
27
- e.preventDefault();
28
- if (!(input == null ? void 0 : input.trim())) {
29
- return;
30
- }
31
- setInput("");
32
- yield onSubmit(input);
33
- }),
34
- ref: formRef,
35
- children: /* @__PURE__ */ jsxs("div", {
36
- className: "relative flex max-h-60 w-full grow flex-col overflow-hidden bg-background px-8 sm:rounded-md border sm:px-12",
37
- children: [
38
- /* @__PURE__ */ jsxs(Tooltip, {
39
- children: [
40
- /* @__PURE__ */ jsx(TooltipTrigger, {
41
- asChild: true,
42
- children: /* @__PURE__ */ jsxs(Link, {
43
- href: "/",
44
- className: cn(
45
- buttonVariants({ size: "sm", variant: "outline" }),
46
- "absolute left-0 top-4 h-8 w-8 rounded-full bg-background p-0 sm:left-4"
47
- ),
48
- children: [
49
- /* @__PURE__ */ jsx(IconPlus, {}),
50
- /* @__PURE__ */ jsx("span", {
51
- className: "sr-only",
52
- children: "New Chat"
53
- })
54
- ]
55
- })
56
- }),
57
- /* @__PURE__ */ jsx(TooltipContent, {
58
- children: "New Chat"
59
- })
60
- ]
61
- }),
62
- /* @__PURE__ */ jsx(TextareaAutosize, {
63
- ref: inputRef,
64
- tabIndex: 0,
65
- onKeyDown,
66
- rows: 1,
67
- value: input,
68
- onChange: (e) => setInput(e.target.value),
69
- placeholder: "Send a message.",
70
- spellCheck: false,
71
- className: "min-h-[60px] w-full resize-none bg-transparent px-4 py-[1.3rem] focus-within:outline-none sm:text-sm"
72
- }),
73
- /* @__PURE__ */ jsx("div", {
74
- className: "absolute right-0 top-4 sm:right-4",
75
- children: /* @__PURE__ */ jsxs(Tooltip, {
76
- children: [
77
- /* @__PURE__ */ jsx(TooltipTrigger, {
78
- asChild: true,
79
- children: /* @__PURE__ */ jsxs(Button, {
80
- type: "submit",
81
- size: "icon",
82
- disabled: isLoading || input === "",
83
- className: " bg-slate-300",
84
- children: [
85
- /* @__PURE__ */ jsx(IconArrowElbow, {}),
86
- /* @__PURE__ */ jsx("span", {
87
- className: "sr-only",
88
- children: "Send message"
89
- })
90
- ]
91
- })
92
- }),
93
- /* @__PURE__ */ jsx(TooltipContent, {
94
- children: "Send message"
95
- })
96
- ]
97
- })
98
- })
99
- ]
100
- })
101
- });
102
- }
103
-
104
- export { PromptForm };
105
- //# sourceMappingURL=out.js.map
106
- //# sourceMappingURL=chunk-DHK56U5Z.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat-components/prompt-form.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,WAAW;AACvB,OAAO,sBAAsB;AAQ7B,OAAO,UAAU;AAsCL,SAOE,KAPF;AA9BL,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgB;AACd,QAAM,EAAE,SAAS,UAAU,IAAI,eAAe;AAC9C,QAAM,WAAiB,aAA4B,IAAI;AAEvD,EAAM,gBAAU,MAAM;AACpB,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SACE,oBAAC;AAAA,IACC,UAAU,CAAO,MAAM;AACrB,QAAE,eAAe;AACjB,UAAI,EAAC,+BAAO,SAAQ;AAClB;AAAA,MACF;AACA,eAAS,EAAE;AACX,YAAM,SAAS,KAAK;AAAA,IACtB;AAAA,IACA,KAAK;AAAA,IAEL,+BAAC;AAAA,MAAI,WAAU;AAAA,MACb;AAAA,6BAAC;AAAA,UACC;AAAA,gCAAC;AAAA,cAAe,SAAO;AAAA,cACrB,+BAAC;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW;AAAA,kBACT,eAAe,EAAE,MAAM,MAAM,SAAS,UAAU,CAAC;AAAA,kBACjD;AAAA,gBACF;AAAA,gBAEA;AAAA,sCAAC,YAAS;AAAA,kBACV,oBAAC;AAAA,oBAAK,WAAU;AAAA,oBAAU;AAAA,mBAAQ;AAAA;AAAA,eACpC;AAAA,aACF;AAAA,YACA,oBAAC;AAAA,cAAe;AAAA,aAAQ;AAAA;AAAA,SAC1B;AAAA,QACA,oBAAC;AAAA,UACC,KAAK;AAAA,UACL,UAAU;AAAA,UACV;AAAA,UACA,MAAM;AAAA,UACN,OAAO;AAAA,UACP,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,UACxC,aAAY;AAAA,UACZ,YAAY;AAAA,UACZ,WAAU;AAAA,SACZ;AAAA,QACA,oBAAC;AAAA,UAAI,WAAU;AAAA,UACb,+BAAC;AAAA,YACC;AAAA,kCAAC;AAAA,gBAAe,SAAO;AAAA,gBACrB,+BAAC;AAAA,kBACC,MAAK;AAAA,kBACL,MAAK;AAAA,kBACL,UAAU,aAAa,UAAU;AAAA,kBACjC,WAAU;AAAA,kBAEV;AAAA,wCAAC,kBAAe;AAAA,oBAChB,oBAAC;AAAA,sBAAK,WAAU;AAAA,sBAAU;AAAA,qBAAY;AAAA;AAAA,iBACxC;AAAA,eACF;AAAA,cACA,oBAAC;AAAA,gBAAe;AAAA,eAAY;AAAA;AAAA,WAC9B;AAAA,SACF;AAAA;AAAA,KACF;AAAA,GACF;AAEJ","sourcesContent":["import * as React from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { UseChatHelpers } from \"ai/react\";\n\nimport { useEnterSubmit } from \"../../hooks/use-enter-submit\";\nimport { cn } from \"../../lib/utils\";\nimport { Button, buttonVariants } from \"./ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"./ui/tooltip\";\nimport { IconArrowElbow, IconPlus } from \"./ui/icons\";\nimport Link from \"next/link\";\n\nexport interface PromptProps\n extends Pick<UseChatHelpers, \"input\" | \"setInput\"> {\n onSubmit: (value: string) => Promise<void>;\n isLoading: boolean;\n}\n\nexport function PromptForm({\n onSubmit,\n input,\n setInput,\n isLoading,\n}: PromptProps) {\n const { formRef, onKeyDown } = useEnterSubmit();\n const inputRef = React.useRef<HTMLTextAreaElement>(null);\n\n React.useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n\n return (\n <form\n onSubmit={async (e) => {\n e.preventDefault();\n if (!input?.trim()) {\n return;\n }\n setInput(\"\");\n await onSubmit(input);\n }}\n ref={formRef}\n >\n <div className=\"relative flex max-h-60 w-full grow flex-col overflow-hidden bg-background px-8 sm:rounded-md border sm:px-12\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Link\n href=\"/\"\n className={cn(\n buttonVariants({ size: \"sm\", variant: \"outline\" }),\n \"absolute left-0 top-4 h-8 w-8 rounded-full bg-background p-0 sm:left-4\"\n )}\n >\n <IconPlus />\n <span className=\"sr-only\">New Chat</span>\n </Link>\n </TooltipTrigger>\n <TooltipContent>New Chat</TooltipContent>\n </Tooltip>\n <TextareaAutosize\n ref={inputRef}\n tabIndex={0}\n onKeyDown={onKeyDown}\n rows={1}\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder=\"Send a message.\"\n spellCheck={false}\n className=\"min-h-[60px] w-full resize-none bg-transparent px-4 py-[1.3rem] focus-within:outline-none sm:text-sm\"\n />\n <div className=\"absolute right-0 top-4 sm:right-4\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"submit\"\n size=\"icon\"\n disabled={isLoading || input === \"\"}\n className=\" bg-slate-300\"\n >\n <IconArrowElbow />\n <span className=\"sr-only\">Send message</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Send message</TooltipContent>\n </Tooltip>\n </div>\n </div>\n </form>\n );\n}\n"]}
@@ -1,26 +0,0 @@
1
- import { cn } from './chunk-TVTG3V4F.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(
8
- (_a, ref) => {
9
- var _b = _a, { className, orientation = "horizontal", decorative = true } = _b, props = __objRest(_b, ["className", "orientation", "decorative"]);
10
- return /* @__PURE__ */ jsx(SeparatorPrimitive.Root, __spreadValues({
11
- ref,
12
- decorative,
13
- orientation,
14
- className: cn(
15
- "shrink-0 bg-border",
16
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
17
- className
18
- )
19
- }, props));
20
- }
21
- );
22
- Separator.displayName = SeparatorPrimitive.Root.displayName;
23
-
24
- export { Separator };
25
- //# sourceMappingURL=out.js.map
26
- //# sourceMappingURL=chunk-DOMJCSI6.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat-components/ui/separator.tsx"],"names":[],"mappings":";;;;;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,wBAAwB;AAYhC;AAfJ;AAOA,IAAM,YAAkB;AAAA,EAItB,CACE,IACA,QACA;AAFA,iBAAE,aAAW,cAAc,cAAc,aAAa,KAZ1D,IAYI,IAA+D,kBAA/D,IAA+D,CAA7D,aAAW,eAA4B;AAGzC,+BAAoB,yBAAnB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eAAe,mBAAmB;AAAA,QAClD;AAAA,MACF;AAAA,OACI,MACN;AAAA;AAEJ;AACA,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>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\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 )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"]}
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=out.js.map
3
- //# sourceMappingURL=chunk-H4VKQGVU.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,123 +0,0 @@
1
- import { buttonVariants } from './chunk-V6QYUEJR.mjs';
2
- import { cn } from './chunk-TVTG3V4F.mjs';
3
- import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
4
- import * as React from 'react';
5
- import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
6
- import { jsx, jsxs } from 'react/jsx-runtime';
7
-
8
- var AlertDialog = AlertDialogPrimitive.Root;
9
- var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
10
- var AlertDialogPortal = (_a) => {
11
- var _b = _a, {
12
- className,
13
- children
14
- } = _b, props = __objRest(_b, [
15
- "className",
16
- "children"
17
- ]);
18
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, __spreadProps(__spreadValues({
19
- className: cn(className)
20
- }, props), {
21
- children: /* @__PURE__ */ jsx("div", {
22
- className: "fixed inset-0 z-50 flex items-end justify-center sm:items-center",
23
- children
24
- })
25
- }));
26
- };
27
- AlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName;
28
- var AlertDialogOverlay = React.forwardRef((_a, ref) => {
29
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
30
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Overlay, __spreadProps(__spreadValues({
31
- className: cn(
32
- "fixed inset-0 z-50 bg-background/80 backdrop-blur-sm transition-opacity animate-in fade-in",
33
- className
34
- )
35
- }, props), {
36
- ref
37
- }));
38
- });
39
- AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
40
- var AlertDialogContent = React.forwardRef((_a, ref) => {
41
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
42
- return /* @__PURE__ */ jsxs(AlertDialogPortal, {
43
- children: [
44
- /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
45
- /* @__PURE__ */ jsx(AlertDialogPrimitive.Content, __spreadValues({
46
- ref,
47
- className: cn(
48
- "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",
49
- className
50
- )
51
- }, props))
52
- ]
53
- });
54
- });
55
- AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
56
- var AlertDialogHeader = (_a) => {
57
- var _b = _a, {
58
- className
59
- } = _b, props = __objRest(_b, [
60
- "className"
61
- ]);
62
- return /* @__PURE__ */ jsx("div", __spreadValues({
63
- className: cn(
64
- "flex flex-col space-y-2 text-center sm:text-left",
65
- className
66
- )
67
- }, props));
68
- };
69
- AlertDialogHeader.displayName = "AlertDialogHeader";
70
- var AlertDialogFooter = (_a) => {
71
- var _b = _a, {
72
- className
73
- } = _b, props = __objRest(_b, [
74
- "className"
75
- ]);
76
- 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
- )
81
- }, props));
82
- };
83
- AlertDialogFooter.displayName = "AlertDialogFooter";
84
- var AlertDialogTitle = React.forwardRef((_a, ref) => {
85
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
86
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, __spreadValues({
87
- ref,
88
- className: cn("text-lg font-semibold", className)
89
- }, props));
90
- });
91
- AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
92
- var AlertDialogDescription = React.forwardRef((_a, ref) => {
93
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
94
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, __spreadValues({
95
- ref,
96
- className: cn("text-sm text-muted-foreground", className)
97
- }, props));
98
- });
99
- AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
100
- var AlertDialogAction = React.forwardRef((_a, ref) => {
101
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
102
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, __spreadValues({
103
- ref,
104
- className: cn(buttonVariants(), className)
105
- }, props));
106
- });
107
- AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
108
- var AlertDialogCancel = React.forwardRef((_a, ref) => {
109
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
110
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, __spreadValues({
111
- ref,
112
- className: cn(
113
- buttonVariants({ variant: "outline" }),
114
- "mt-2 sm:mt-0",
115
- className
116
- )
117
- }, props));
118
- });
119
- AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
120
-
121
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger };
122
- //# sourceMappingURL=out.js.map
123
- //# sourceMappingURL=chunk-I2AB5FK4.mjs.map
@@ -1 +0,0 @@
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 = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\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 =\n 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\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\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(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\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"]}
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=out.js.map
3
- //# sourceMappingURL=chunk-IU3WTXLQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,69 +0,0 @@
1
- import { PromptForm } from './chunk-DHK56U5Z.mjs';
2
- import { Button } from './chunk-V6QYUEJR.mjs';
3
- import { IconStop, IconRefresh } from './chunk-KR7MH7XO.mjs';
4
- import { __async } from './chunk-MRXNTQOX.mjs';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
6
-
7
- function ChatPanel({
8
- id,
9
- isLoading,
10
- stop,
11
- append,
12
- reload,
13
- input,
14
- setInput,
15
- messages
16
- }) {
17
- return /* @__PURE__ */ jsx("div", {
18
- className: "inset-x-0 bottom-0 bg-gradient-to-b from-muted/10 from-10% to-muted/30 to-50% mt-4 mb-8",
19
- style: { width: "100%", overflow: "hidden", boxSizing: "border-box" },
20
- children: /* @__PURE__ */ jsxs("div", {
21
- className: "mx-auto sm:max-w-2xl sm:px-4",
22
- children: [
23
- /* @__PURE__ */ jsx("div", {
24
- className: "flex h-10 items-center justify-center mb-4",
25
- children: isLoading ? /* @__PURE__ */ jsxs(Button, {
26
- variant: "outline",
27
- onClick: () => stop(),
28
- className: "bg-background",
29
- children: [
30
- /* @__PURE__ */ jsx(IconStop, {
31
- className: "mr-2"
32
- }),
33
- "Stop generating"
34
- ]
35
- }) : (messages == null ? void 0 : messages.length) > 0 && /* @__PURE__ */ jsxs(Button, {
36
- variant: "outline",
37
- onClick: () => reload(),
38
- className: "bg-background",
39
- children: [
40
- /* @__PURE__ */ jsx(IconRefresh, {
41
- className: "mr-2"
42
- }),
43
- "Regenerate response"
44
- ]
45
- })
46
- }),
47
- /* @__PURE__ */ jsx("div", {
48
- className: "space-y-4 border-2 bg-background px-4 py-2 shadow-lg sm:rounded-xl md:py-4",
49
- children: /* @__PURE__ */ jsx(PromptForm, {
50
- onSubmit: (value) => __async(this, null, function* () {
51
- yield append({
52
- id,
53
- content: value,
54
- role: "user"
55
- });
56
- }),
57
- input,
58
- setInput,
59
- isLoading
60
- })
61
- })
62
- ]
63
- })
64
- });
65
- }
66
-
67
- export { ChatPanel };
68
- //# sourceMappingURL=out.js.map
69
- //# sourceMappingURL=chunk-JUGCIZPN.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat-components/chat-panel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsCY,SAKE,KALF;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,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,KAAK;AAAA,YACpB,WAAU;AAAA,YAEV;AAAA,kCAAC;AAAA,gBAAS,WAAU;AAAA,eAAO;AAAA,cAAE;AAAA;AAAA,WAE/B,KAEA,qCAAU,UAAS,KACjB,qBAAC;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,OAAO;AAAA,YACtB,WAAU;AAAA,YAEV;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\"\n | \"isLoading\"\n | \"reload\"\n | \"messages\"\n | \"stop\"\n | \"input\"\n | \"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\n variant=\"outline\"\n onClick={() => stop()}\n className=\"bg-background\"\n >\n <IconStop className=\"mr-2\" />\n Stop generating\n </Button>\n ) : (\n messages?.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={() => reload()}\n className=\"bg-background\"\n >\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,75 +0,0 @@
1
- import { CodeBlock } from './chunk-VQNV2DHJ.mjs';
2
- import { MemoizedReactMarkdown } from './chunk-6LRNF2VU.mjs';
3
- import { ChatMessageActions } from './chunk-6UJWRTL6.mjs';
4
- import { IconUser, IconOpenAI } from './chunk-KR7MH7XO.mjs';
5
- import { cn } from './chunk-TVTG3V4F.mjs';
6
- import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
7
- import remarkGfm from 'remark-gfm';
8
- import remarkMath from 'remark-math';
9
- import { jsxs, jsx } from 'react/jsx-runtime';
10
-
11
- function ChatMessage(_a) {
12
- var _b = _a, { message } = _b, props = __objRest(_b, ["message"]);
13
- return /* @__PURE__ */ jsxs("div", __spreadProps(__spreadValues({
14
- className: cn("group relative mb-4 flex items-start")
15
- }, props), {
16
- children: [
17
- /* @__PURE__ */ jsx("div", {
18
- className: cn(
19
- "flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border shadow",
20
- message.role === "user" ? "bg-background" : "bg-primary text-primary-foreground"
21
- ),
22
- children: message.role === "user" ? /* @__PURE__ */ jsx(IconUser, {}) : /* @__PURE__ */ jsx(IconOpenAI, {})
23
- }),
24
- /* @__PURE__ */ jsxs("div", {
25
- className: "ml-4 flex-1 space-y-2 overflow-hidden px-1",
26
- children: [
27
- /* @__PURE__ */ jsx(MemoizedReactMarkdown, {
28
- className: "prose break-words dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 text-sm",
29
- remarkPlugins: [remarkGfm, remarkMath],
30
- components: {
31
- p({ children }) {
32
- return /* @__PURE__ */ jsx("p", {
33
- className: "mb-2 last:mb-0",
34
- children
35
- });
36
- },
37
- code(_a2) {
38
- var _b2 = _a2, { children, className, inline } = _b2, props2 = __objRest(_b2, ["children", "className", "inline"]);
39
- if (children.length) {
40
- if (children[0] == "\u258D") {
41
- return /* @__PURE__ */ jsx("span", {
42
- className: "mt-1 animate-pulse cursor-default",
43
- children: "\u258D"
44
- });
45
- }
46
- children[0] = children[0].replace("`\u258D`", "\u258D");
47
- }
48
- const match = /language-(\w+)/.exec(className || "");
49
- if (inline) {
50
- return /* @__PURE__ */ jsx("code", __spreadProps(__spreadValues({
51
- className
52
- }, props2), {
53
- children
54
- }));
55
- }
56
- return /* @__PURE__ */ jsx(CodeBlock, __spreadValues({
57
- language: match && match[1] || "",
58
- value: String(children).replace(/\n$/, "")
59
- }, props2), Math.random());
60
- }
61
- },
62
- children: message.content
63
- }),
64
- /* @__PURE__ */ jsx(ChatMessageActions, {
65
- message
66
- })
67
- ]
68
- })
69
- ]
70
- }));
71
- }
72
-
73
- export { ChatMessage };
74
- //# sourceMappingURL=out.js.map
75
- //# sourceMappingURL=chunk-JUPNM7ZR.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat-components/chat-message.tsx"],"names":["_a","_b","props"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,eAAe;AACtB,OAAO,gBAAgB;AAuBY,cAE7B,YAF6B;AAX5B,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,SACb,kBACA;AAAA,QACN;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,OAnCxC,IAmCiBC,KAAkCC,SAAA,UAAlCD,KAAkC,CAAhC,YAAU,aAAW;AAC1B,oBAAI,SAAS,QAAQ;AACnB,sBAAI,SAAS,MAAM,UAAK;AACtB,2BACE,oBAAC;AAAA,sBAAK,WAAU;AAAA,sBAAoC;AAAA,qBAAC;AAAA,kBAEzD;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\"\n ? \"bg-background\"\n : \"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 (\n <span className=\"mt-1 animate-pulse cursor-default\">▍</span>\n );\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"]}