@copilotkit/react-ui 0.14.0-alpha.3 → 0.14.0-alpha.5
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 +119 -119
- package/CHANGELOG.md +37 -8
- package/dist/components/chat-components/chat-list.d.ts +1 -1
- package/dist/components/chat-components/chat-list.mjs +440 -12
- package/dist/components/chat-components/chat-list.mjs.map +1 -1
- package/dist/components/chat-components/chat-message-actions.d.ts +1 -1
- package/dist/components/chat-components/chat-message-actions.mjs +168 -7
- package/dist/components/chat-components/chat-message-actions.mjs.map +1 -1
- package/dist/components/chat-components/chat-message.d.ts +1 -1
- package/dist/components/chat-components/chat-message.mjs +403 -10
- package/dist/components/chat-components/chat-message.mjs.map +1 -1
- package/dist/components/chat-components/chat-panel.d.ts +1 -1
- package/dist/components/chat-components/chat-panel.mjs +301 -9
- package/dist/components/chat-components/chat-panel.mjs.map +1 -1
- package/dist/components/chat-components/chat-scroll-anchor.mjs +44 -4
- package/dist/components/chat-components/chat-scroll-anchor.mjs.map +1 -1
- package/dist/components/chat-components/clear-history.d.ts +1 -1
- package/dist/components/chat-components/clear-history.mjs +249 -25
- package/dist/components/chat-components/clear-history.mjs.map +1 -1
- package/dist/components/chat-components/copilot-chat.mjs +809 -21
- package/dist/components/chat-components/copilot-chat.mjs.map +1 -1
- package/dist/components/chat-components/default-empty-screen.mjs +175 -7
- package/dist/components/chat-components/default-empty-screen.mjs.map +1 -1
- package/dist/components/chat-components/external-link.mjs +25 -3
- package/dist/components/chat-components/external-link.mjs.map +1 -1
- package/dist/components/chat-components/markdown.mjs +10 -3
- package/dist/components/chat-components/markdown.mjs.map +1 -1
- package/dist/components/chat-components/prompt-form.d.ts +1 -1
- package/dist/components/chat-components/prompt-form.mjs +227 -8
- package/dist/components/chat-components/prompt-form.mjs.map +1 -1
- package/dist/components/chat-components/theme-toggle.mjs +130 -14
- package/dist/components/chat-components/theme-toggle.mjs.map +1 -1
- package/dist/components/chat-components/toaster.mjs +7 -3
- package/dist/components/chat-components/toaster.mjs.map +1 -1
- package/dist/components/chat-components/ui/alert-dialog.mjs +199 -5
- package/dist/components/chat-components/ui/alert-dialog.mjs.map +1 -1
- package/dist/components/chat-components/ui/badge.mjs +49 -7
- package/dist/components/chat-components/ui/badge.mjs.map +1 -1
- package/dist/components/chat-components/ui/button.mjs +85 -4
- package/dist/components/chat-components/ui/button.mjs.map +1 -1
- package/dist/components/chat-components/ui/codeblock.mjs +283 -7
- package/dist/components/chat-components/ui/codeblock.mjs.map +1 -1
- package/dist/components/chat-components/ui/dialog.mjs +93 -25
- package/dist/components/chat-components/ui/dialog.mjs.map +1 -1
- package/dist/components/chat-components/ui/dropdown-menu.mjs +61 -8
- package/dist/components/chat-components/ui/dropdown-menu.mjs.map +1 -1
- package/dist/components/chat-components/ui/icons.mjs +554 -4
- package/dist/components/chat-components/ui/icons.mjs.map +1 -1
- package/dist/components/chat-components/ui/input.mjs +48 -7
- package/dist/components/chat-components/ui/input.mjs.map +1 -1
- package/dist/components/chat-components/ui/label.mjs +51 -9
- package/dist/components/chat-components/ui/label.mjs.map +1 -1
- package/dist/components/chat-components/ui/select.mjs +106 -23
- package/dist/components/chat-components/ui/select.mjs.map +1 -1
- package/dist/components/chat-components/ui/separator.mjs +68 -4
- package/dist/components/chat-components/ui/separator.mjs.map +1 -1
- package/dist/components/chat-components/ui/sheet.mjs +92 -23
- package/dist/components/chat-components/ui/sheet.mjs.map +1 -1
- package/dist/components/chat-components/ui/switch.mjs +53 -8
- package/dist/components/chat-components/ui/switch.mjs.map +1 -1
- package/dist/components/chat-components/ui/textarea.mjs +48 -7
- package/dist/components/chat-components/ui/textarea.mjs.map +1 -1
- package/dist/components/chat-components/ui/tooltip.mjs +72 -4
- package/dist/components/chat-components/ui/tooltip.mjs.map +1 -1
- package/dist/components/index.mjs +925 -25
- package/dist/components/index.mjs.map +1 -1
- package/dist/components/sidebar/copilot-sidebar-ui-provider.mjs +920 -24
- package/dist/components/sidebar/copilot-sidebar-ui-provider.mjs.map +1 -1
- package/dist/components/sidebar/copilot-sidebar.mjs +842 -22
- package/dist/components/sidebar/copilot-sidebar.mjs.map +1 -1
- package/dist/components/sidebar/sidebar-context.mjs +10 -3
- package/dist/components/sidebar/sidebar-context.mjs.map +1 -1
- package/dist/context/index.mjs +0 -2
- package/dist/context/index.mjs.map +1 -1
- package/dist/hooks/index.mjs +0 -2
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/hooks/use-at-bottom.mjs +19 -3
- package/dist/hooks/use-at-bottom.mjs.map +1 -1
- package/dist/hooks/use-copy-to-clipboard.mjs +26 -3
- package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -1
- package/dist/hooks/use-enter-submit.mjs +16 -3
- package/dist/hooks/use-enter-submit.mjs.map +1 -1
- package/dist/index.mjs +925 -28
- package/dist/index.mjs.map +1 -1
- package/dist/lib/utils.mjs +62 -3
- package/dist/lib/utils.mjs.map +1 -1
- package/dist/lib/utils.test.mjs +0 -1
- package/dist/lib/utils.test.mjs.map +1 -1
- package/dist/types/index.mjs +0 -2
- package/dist/types/index.mjs.map +1 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/types.mjs +0 -2
- package/dist/types/types.mjs.map +1 -1
- package/package.json +2 -3
- package/src/components/chat-components/chat-list.tsx +1 -1
- package/src/components/chat-components/chat-message-actions.tsx +1 -1
- package/src/components/chat-components/chat-message.tsx +1 -1
- package/src/components/chat-components/chat-panel.tsx +3 -2
- package/src/components/chat-components/default-empty-screen.tsx +0 -1
- package/src/components/chat-components/prompt-form.tsx +1 -1
- package/src/types/types.ts +1 -1
- package/dist/chunk-2KAF7NKC.mjs +0 -484
- package/dist/chunk-2KAF7NKC.mjs.map +0 -1
- package/dist/chunk-3OM3QBDC.mjs +0 -39
- package/dist/chunk-3OM3QBDC.mjs.map +0 -1
- package/dist/chunk-5KEDV5VC.mjs +0 -27
- package/dist/chunk-5KEDV5VC.mjs.map +0 -1
- package/dist/chunk-6LAZQHEB.mjs +0 -129
- package/dist/chunk-6LAZQHEB.mjs.map +0 -1
- package/dist/chunk-7NSRDJ5C.mjs +0 -3
- package/dist/chunk-7NSRDJ5C.mjs.map +0 -1
- package/dist/chunk-7TUGXTHJ.mjs +0 -42
- package/dist/chunk-7TUGXTHJ.mjs.map +0 -1
- package/dist/chunk-EJR2J4DR.mjs +0 -18
- package/dist/chunk-EJR2J4DR.mjs.map +0 -1
- package/dist/chunk-GC4LE273.mjs +0 -52
- package/dist/chunk-GC4LE273.mjs.map +0 -1
- package/dist/chunk-GCOPYGHH.mjs +0 -27
- package/dist/chunk-GCOPYGHH.mjs.map +0 -1
- package/dist/chunk-H4VKQGVU.mjs +0 -3
- package/dist/chunk-H4VKQGVU.mjs.map +0 -1
- package/dist/chunk-IAFCGDM6.mjs +0 -72
- package/dist/chunk-IAFCGDM6.mjs.map +0 -1
- package/dist/chunk-IJLMKBSZ.mjs +0 -25
- package/dist/chunk-IJLMKBSZ.mjs.map +0 -1
- package/dist/chunk-ITE4RI6K.mjs +0 -66
- package/dist/chunk-ITE4RI6K.mjs.map +0 -1
- package/dist/chunk-IU3WTXLQ.mjs +0 -3
- package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
- package/dist/chunk-L3OH4SEP.mjs +0 -52
- package/dist/chunk-L3OH4SEP.mjs.map +0 -1
- package/dist/chunk-M3CZWJI3.mjs +0 -44
- package/dist/chunk-M3CZWJI3.mjs.map +0 -1
- package/dist/chunk-MC6KTH4X.mjs +0 -12
- package/dist/chunk-MC6KTH4X.mjs.map +0 -1
- package/dist/chunk-MRXNTQOX.mjs +0 -55
- package/dist/chunk-MRXNTQOX.mjs.map +0 -1
- package/dist/chunk-OHWEJUCS.mjs +0 -18
- package/dist/chunk-OHWEJUCS.mjs.map +0 -1
- package/dist/chunk-POVINPXX.mjs +0 -26
- package/dist/chunk-POVINPXX.mjs.map +0 -1
- package/dist/chunk-Q6YO7LDK.mjs +0 -40
- package/dist/chunk-Q6YO7LDK.mjs.map +0 -1
- package/dist/chunk-SRBUGQTM.mjs +0 -109
- package/dist/chunk-SRBUGQTM.mjs.map +0 -1
- package/dist/chunk-TEYIQHMK.mjs +0 -12
- package/dist/chunk-TEYIQHMK.mjs.map +0 -1
- package/dist/chunk-U6NJWGTV.mjs +0 -3
- package/dist/chunk-U6NJWGTV.mjs.map +0 -1
- package/dist/chunk-UB4Q6LFN.mjs +0 -72
- package/dist/chunk-UB4Q6LFN.mjs.map +0 -1
- package/dist/chunk-VGX2W5ZB.mjs +0 -28
- package/dist/chunk-VGX2W5ZB.mjs.map +0 -1
- package/dist/chunk-Y2LXYPNP.mjs +0 -34
- package/dist/chunk-Y2LXYPNP.mjs.map +0 -1
- package/dist/chunk-ZYC5YVDO.mjs +0 -21
- package/dist/chunk-ZYC5YVDO.mjs.map +0 -1
package/dist/chunk-M3CZWJI3.mjs
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { cn } from './chunk-Q6YO7LDK.mjs';
|
|
2
|
-
import { __objRest, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
5
|
-
import { cva } from 'class-variance-authority';
|
|
6
|
-
import { jsx } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
var buttonVariants = cva(
|
|
9
|
-
"inline-flex items-center justify-center rounded-md text-sm font-medium shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
10
|
-
{
|
|
11
|
-
variants: {
|
|
12
|
-
variant: {
|
|
13
|
-
default: "bg-primary text-primary-foreground shadow-md hover:bg-primary/90",
|
|
14
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
15
|
-
outline: "border border-input hover:bg-accent hover:text-accent-foreground",
|
|
16
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
17
|
-
ghost: "shadow-none hover:bg-accent hover:text-accent-foreground",
|
|
18
|
-
link: "text-primary underline-offset-4 shadow-none hover:underline"
|
|
19
|
-
},
|
|
20
|
-
size: {
|
|
21
|
-
default: "h-8 px-4 py-2",
|
|
22
|
-
sm: "h-8 rounded-md px-3",
|
|
23
|
-
lg: "h-11 rounded-md px-8",
|
|
24
|
-
icon: "h-8 w-8 p-0"
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
defaultVariants: {
|
|
28
|
-
variant: "default",
|
|
29
|
-
size: "default"
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
);
|
|
33
|
-
var Button = React.forwardRef(
|
|
34
|
-
(_a, ref) => {
|
|
35
|
-
var _b = _a, { className, variant, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild"]);
|
|
36
|
-
const Comp = asChild ? Slot : "button";
|
|
37
|
-
return /* @__PURE__ */ jsx(Comp, __spreadValues({ className: cn(buttonVariants({ variant, size, className })), ref }, props));
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
Button.displayName = "Button";
|
|
41
|
-
|
|
42
|
-
export { Button, buttonVariants };
|
|
43
|
-
//# sourceMappingURL=out.js.map
|
|
44
|
-
//# sourceMappingURL=chunk-M3CZWJI3.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat-components/ui/button.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;AAwCjC;AApCN,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAQA,IAAM,SAAe;AAAA,EACnB,CAAC,IAAyD,QAAQ;AAAjE,iBAAE,aAAW,SAAS,MAAM,UAAU,MAvCzC,IAuCG,IAAgD,kBAAhD,IAAgD,CAA9C,aAAW,WAAS,QAAM;AAC3B,UAAM,OAAO,UAAU,OAAO;AAC9B,WACE,oBAAC,uBAAK,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC,GAAG,OAAc,MAAO;AAAA,EAE5F;AACF;AACA,OAAO,cAAc","sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground shadow-md hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"shadow-none hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 shadow-none hover:underline\",\n },\n size: {\n default: \"h-8 px-4 py-2\",\n sm: \"h-8 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-8 w-8 p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"]}
|
package/dist/chunk-MC6KTH4X.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createContext } from 'react';
|
|
2
|
-
|
|
3
|
-
// src/components/sidebar/sidebar-context.tsx
|
|
4
|
-
var CopilotSidebarContext = createContext({
|
|
5
|
-
isSidebarOpen: false,
|
|
6
|
-
toggleSidebar: () => {
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
export { CopilotSidebarContext };
|
|
11
|
-
//# sourceMappingURL=out.js.map
|
|
12
|
-
//# sourceMappingURL=chunk-MC6KTH4X.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/sidebar/sidebar-context.tsx"],"names":[],"mappings":";AAAA,SAAS,qBAAgC;AAOlC,IAAM,wBAAwB,cAAyC;AAAA,EAC5E,eAAe;AAAA,EACf,eAAe,MAAM;AAAA,EAAC;AACxB,CAAC","sourcesContent":["import { createContext, ReactNode } from \"react\";\n\nexport interface CopilotSidebarContextType {\n isSidebarOpen: boolean;\n toggleSidebar: () => void;\n}\n\nexport const CopilotSidebarContext = createContext<CopilotSidebarContextType>({\n isSidebarOpen: false,\n toggleSidebar: () => {},\n});\n"]}
|
package/dist/chunk-MRXNTQOX.mjs
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
var __objRest = (source, exclude) => {
|
|
21
|
-
var target = {};
|
|
22
|
-
for (var prop in source)
|
|
23
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
-
target[prop] = source[prop];
|
|
25
|
-
if (source != null && __getOwnPropSymbols)
|
|
26
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
-
target[prop] = source[prop];
|
|
29
|
-
}
|
|
30
|
-
return target;
|
|
31
|
-
};
|
|
32
|
-
var __async = (__this, __arguments, generator) => {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
var fulfilled = (value) => {
|
|
35
|
-
try {
|
|
36
|
-
step(generator.next(value));
|
|
37
|
-
} catch (e) {
|
|
38
|
-
reject(e);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
var rejected = (value) => {
|
|
42
|
-
try {
|
|
43
|
-
step(generator.throw(value));
|
|
44
|
-
} catch (e) {
|
|
45
|
-
reject(e);
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
49
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export { __async, __objRest, __spreadProps, __spreadValues };
|
|
54
|
-
//# sourceMappingURL=out.js.map
|
|
55
|
-
//# sourceMappingURL=chunk-MRXNTQOX.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
package/dist/chunk-OHWEJUCS.mjs
DELETED
|
@@ -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-OHWEJUCS.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,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"]}
|
package/dist/chunk-POVINPXX.mjs
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
// src/hooks/use-copy-to-clipboard.tsx
|
|
4
|
-
function useCopyToClipboard({ timeout = 2e3 }) {
|
|
5
|
-
const [isCopied, setIsCopied] = React.useState(false);
|
|
6
|
-
const copyToClipboard = (value) => {
|
|
7
|
-
var _a;
|
|
8
|
-
if (typeof window === "undefined" || !((_a = navigator.clipboard) == null ? void 0 : _a.writeText)) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
if (!value) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
navigator.clipboard.writeText(value).then(() => {
|
|
15
|
-
setIsCopied(true);
|
|
16
|
-
setTimeout(() => {
|
|
17
|
-
setIsCopied(false);
|
|
18
|
-
}, timeout);
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
return { isCopied, copyToClipboard };
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export { useCopyToClipboard };
|
|
25
|
-
//# sourceMappingURL=out.js.map
|
|
26
|
-
//# sourceMappingURL=chunk-POVINPXX.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-copy-to-clipboard.tsx"],"names":[],"mappings":";AAEA,YAAY,WAAW;AAMhB,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"]}
|
package/dist/chunk-Q6YO7LDK.mjs
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { __async } from './chunk-MRXNTQOX.mjs';
|
|
2
|
-
import { clsx } from 'clsx';
|
|
3
|
-
import { customAlphabet } from 'nanoid';
|
|
4
|
-
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
|
|
6
|
-
function cn(...inputs) {
|
|
7
|
-
return twMerge(clsx(inputs));
|
|
8
|
-
}
|
|
9
|
-
var nanoid = customAlphabet(
|
|
10
|
-
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
|
11
|
-
7
|
|
12
|
-
);
|
|
13
|
-
function fetcher(input, init) {
|
|
14
|
-
return __async(this, null, function* () {
|
|
15
|
-
const res = yield fetch(input, init);
|
|
16
|
-
if (!res.ok) {
|
|
17
|
-
const json = yield res.json();
|
|
18
|
-
if (json.error) {
|
|
19
|
-
const error = new Error(json.error);
|
|
20
|
-
error.status = res.status;
|
|
21
|
-
throw error;
|
|
22
|
-
} else {
|
|
23
|
-
throw new Error("An unexpected error occurred");
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return res.json();
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
function formatDate(input) {
|
|
30
|
-
const date = new Date(input);
|
|
31
|
-
return date.toLocaleDateString("en-US", {
|
|
32
|
-
month: "long",
|
|
33
|
-
day: "numeric",
|
|
34
|
-
year: "numeric"
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export { cn, fetcher, formatDate, nanoid };
|
|
39
|
-
//# sourceMappingURL=out.js.map
|
|
40
|
-
//# sourceMappingURL=chunk-Q6YO7LDK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/chunk-SRBUGQTM.mjs
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { buttonVariants } from './chunk-M3CZWJI3.mjs';
|
|
2
|
-
import { cn } from './chunk-Q6YO7LDK.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({ className: cn(className) }, props), { children: /* @__PURE__ */ jsx("div", { className: "fixed inset-0 z-50 flex items-end justify-center sm:items-center", children }) }));
|
|
19
|
-
};
|
|
20
|
-
AlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName;
|
|
21
|
-
var AlertDialogOverlay = React.forwardRef((_a, ref) => {
|
|
22
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
23
|
-
return /* @__PURE__ */ jsx(
|
|
24
|
-
AlertDialogPrimitive.Overlay,
|
|
25
|
-
__spreadProps(__spreadValues({
|
|
26
|
-
className: cn(
|
|
27
|
-
"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm transition-opacity animate-in fade-in",
|
|
28
|
-
className
|
|
29
|
-
)
|
|
30
|
-
}, props), {
|
|
31
|
-
ref
|
|
32
|
-
})
|
|
33
|
-
);
|
|
34
|
-
});
|
|
35
|
-
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
36
|
-
var AlertDialogContent = React.forwardRef((_a, ref) => {
|
|
37
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
38
|
-
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
39
|
-
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
40
|
-
/* @__PURE__ */ jsx(
|
|
41
|
-
AlertDialogPrimitive.Content,
|
|
42
|
-
__spreadValues({
|
|
43
|
-
ref,
|
|
44
|
-
className: cn(
|
|
45
|
-
"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",
|
|
46
|
-
className
|
|
47
|
-
)
|
|
48
|
-
}, props)
|
|
49
|
-
)
|
|
50
|
-
] });
|
|
51
|
-
});
|
|
52
|
-
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
|
|
53
|
-
var AlertDialogHeader = (_a) => {
|
|
54
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
55
|
-
return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col space-y-2 text-center sm:text-left", className) }, props));
|
|
56
|
-
};
|
|
57
|
-
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
58
|
-
var AlertDialogFooter = (_a) => {
|
|
59
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
60
|
-
return /* @__PURE__ */ jsx(
|
|
61
|
-
"div",
|
|
62
|
-
__spreadValues({
|
|
63
|
-
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className)
|
|
64
|
-
}, props)
|
|
65
|
-
);
|
|
66
|
-
};
|
|
67
|
-
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
68
|
-
var AlertDialogTitle = React.forwardRef((_a, ref) => {
|
|
69
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
70
|
-
return /* @__PURE__ */ jsx(
|
|
71
|
-
AlertDialogPrimitive.Title,
|
|
72
|
-
__spreadValues({
|
|
73
|
-
ref,
|
|
74
|
-
className: cn("text-lg font-semibold", className)
|
|
75
|
-
}, props)
|
|
76
|
-
);
|
|
77
|
-
});
|
|
78
|
-
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
79
|
-
var AlertDialogDescription = React.forwardRef((_a, ref) => {
|
|
80
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
81
|
-
return /* @__PURE__ */ jsx(
|
|
82
|
-
AlertDialogPrimitive.Description,
|
|
83
|
-
__spreadValues({
|
|
84
|
-
ref,
|
|
85
|
-
className: cn("text-sm text-muted-foreground", className)
|
|
86
|
-
}, props)
|
|
87
|
-
);
|
|
88
|
-
});
|
|
89
|
-
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
90
|
-
var AlertDialogAction = React.forwardRef((_a, ref) => {
|
|
91
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
92
|
-
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, __spreadValues({ ref, className: cn(buttonVariants(), className) }, props));
|
|
93
|
-
});
|
|
94
|
-
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
95
|
-
var AlertDialogCancel = React.forwardRef((_a, ref) => {
|
|
96
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
97
|
-
return /* @__PURE__ */ jsx(
|
|
98
|
-
AlertDialogPrimitive.Cancel,
|
|
99
|
-
__spreadValues({
|
|
100
|
-
ref,
|
|
101
|
-
className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className)
|
|
102
|
-
}, props)
|
|
103
|
-
);
|
|
104
|
-
});
|
|
105
|
-
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
106
|
-
|
|
107
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger };
|
|
108
|
-
//# sourceMappingURL=out.js.map
|
|
109
|
-
//# sourceMappingURL=chunk-SRBUGQTM.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat-components/ui/alert-dialog.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,0BAA0B;AAelC,cA0BF,YA1BE;AAVJ,IAAM,cAAmC;AAEzC,IAAM,qBAA0C;AAEhD,IAAM,oBAAoB,CAAC,OAIqB;AAJrB,eACzB;AAAA;AAAA,IACA;AAAA,EAdF,IAY2B,IAGtB,kBAHsB,IAGtB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,6BAAsB,6BAArB,+BAA4B,WAAW,GAAG,SAAS,KAAO,QAA1D,EACC,8BAAC,SAAI,WAAU,oEACZ,UACH,IACF;AAAA;AAEF,kBAAkB,cAAmC,4BAAO;AAE5D,IAAM,qBAA2B,iBAG/B,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SA5BhB,IA4BG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QALL;AAAA,MAMC;AAAA;AAAA,EACF;AAAA,CACD;AACD,mBAAmB,cAAmC,6BAAQ;AAE9D,IAAM,qBAA2B,iBAG/B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA3CL,IA2CG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,8BAAC,qBACC;AAAA,wBAAC,sBAAmB;AAAA,IACpB;AAAA,MAAsB;AAAA,MAArB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,SACI;AAAA,IACN;AAAA,KACF;AAAA,CACD;AACD,mBAAmB,cAAmC,6BAAQ;AAE9D,IAAM,oBAAoB,CAAC,OAA+D;AAA/D,eAAE,YA1D7B,IA0D2B,IAAgB,kBAAhB,IAAgB,CAAd;AAC3B,6BAAC,wBAAI,WAAW,GAAG,oDAAoD,SAAS,KAAO,MAAO;AAAA;AAEhG,kBAAkB,cAAc;AAEhC,IAAM,oBAAoB,CAAC,OAA+D;AAA/D,eAAE,YA/D7B,IA+D2B,IAAgB,kBAAhB,IAAgB,CAAd;AAC3B;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,iEAAiE,SAAS;AAAA,OACpF;AAAA,EACN;AAAA;AAEF,kBAAkB,cAAc;AAEhC,IAAM,mBAAyB,iBAG7B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1EL,IA0EG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,yBAAyB,SAAS;AAAA,OAC5C;AAAA,EACN;AAAA,CACD;AACD,iBAAiB,cAAmC,2BAAM;AAE1D,IAAM,yBAA+B,iBAGnC,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAtFL,IAsFG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,uBAAuB,cAAmC,iCAAY;AAEtE,IAAM,oBAA0B,iBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAlGL,IAkGG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,6BAAsB,6BAArB,iBAA4B,KAAU,WAAW,GAAG,eAAe,GAAG,SAAS,KAAO,MAAO;AAAA,CAC/F;AACD,kBAAkB,cAAmC,4BAAO;AAE5D,IAAM,oBAA0B,iBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1GL,IA0GG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,eAAe,EAAE,SAAS,UAAU,CAAC,GAAG,gBAAgB,SAAS;AAAA,OAC3E;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAAmC,4BAAO","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"]}
|
package/dist/chunk-TEYIQHMK.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { memo } from 'react';
|
|
2
|
-
import ReactMarkdown from 'react-markdown';
|
|
3
|
-
|
|
4
|
-
// src/components/chat-components/markdown.tsx
|
|
5
|
-
var MemoizedReactMarkdown = memo(
|
|
6
|
-
ReactMarkdown,
|
|
7
|
-
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
|
|
8
|
-
);
|
|
9
|
-
|
|
10
|
-
export { MemoizedReactMarkdown };
|
|
11
|
-
//# sourceMappingURL=out.js.map
|
|
12
|
-
//# sourceMappingURL=chunk-TEYIQHMK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/chunk-U6NJWGTV.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
package/dist/chunk-UB4Q6LFN.mjs
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { CopilotSidebar } from './chunk-3OM3QBDC.mjs';
|
|
2
|
-
import { CopilotSidebarContext } from './chunk-MC6KTH4X.mjs';
|
|
3
|
-
import { TooltipProvider } from './chunk-VGX2W5ZB.mjs';
|
|
4
|
-
import { useState, useCallback } from 'react';
|
|
5
|
-
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
function CopilotSidebarUIProvider({ children }) {
|
|
8
|
-
const [sidebarOpen, setSidebarOpen] = useState(true);
|
|
9
|
-
const toggleSidebar = useCallback(() => {
|
|
10
|
-
setSidebarOpen((prev) => !prev);
|
|
11
|
-
}, []);
|
|
12
|
-
return /* @__PURE__ */ jsx(CopilotSidebarContext.Provider, { value: { isSidebarOpen: sidebarOpen, toggleSidebar }, children: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
|
|
13
|
-
"div",
|
|
14
|
-
{
|
|
15
|
-
style: {
|
|
16
|
-
height: "100vh",
|
|
17
|
-
width: "100vw",
|
|
18
|
-
position: "relative"
|
|
19
|
-
},
|
|
20
|
-
children: [
|
|
21
|
-
/* @__PURE__ */ jsx(
|
|
22
|
-
"div",
|
|
23
|
-
{
|
|
24
|
-
style: {
|
|
25
|
-
overflowY: "auto",
|
|
26
|
-
overflowX: "hidden",
|
|
27
|
-
height: "100%",
|
|
28
|
-
width: sidebarOpen ? "calc(100% - 450px)" : "100%",
|
|
29
|
-
position: "absolute",
|
|
30
|
-
transition: "width 0.5s ease-in-out"
|
|
31
|
-
// New
|
|
32
|
-
},
|
|
33
|
-
children: /* @__PURE__ */ jsx("main", { children })
|
|
34
|
-
}
|
|
35
|
-
),
|
|
36
|
-
/* @__PURE__ */ jsx(
|
|
37
|
-
"div",
|
|
38
|
-
{
|
|
39
|
-
style: {
|
|
40
|
-
overflowY: "auto",
|
|
41
|
-
height: "100%",
|
|
42
|
-
width: "450px",
|
|
43
|
-
position: "absolute",
|
|
44
|
-
right: sidebarOpen ? "0" : "-450px",
|
|
45
|
-
transition: "right 0.5s ease-in-out"
|
|
46
|
-
},
|
|
47
|
-
children: /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(CopilotSidebar, { setSidebarOpen }) })
|
|
48
|
-
}
|
|
49
|
-
),
|
|
50
|
-
!sidebarOpen && /* @__PURE__ */ jsx(
|
|
51
|
-
"button",
|
|
52
|
-
{
|
|
53
|
-
onClick: toggleSidebar,
|
|
54
|
-
style: {
|
|
55
|
-
position: "absolute",
|
|
56
|
-
top: "5%",
|
|
57
|
-
right: "20px",
|
|
58
|
-
transform: "translateY(-50%)",
|
|
59
|
-
transition: "opacity 0.5s ease-in-out"
|
|
60
|
-
},
|
|
61
|
-
className: "bg-slate-100 ring-2 ring-slate-600 font-semibold text-black p-2 rounded-lg shadow-lg",
|
|
62
|
-
children: "Open Copilot"
|
|
63
|
-
}
|
|
64
|
-
)
|
|
65
|
-
]
|
|
66
|
-
}
|
|
67
|
-
) }) });
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export { CopilotSidebarUIProvider };
|
|
71
|
-
//# sourceMappingURL=out.js.map
|
|
72
|
-
//# sourceMappingURL=chunk-UB4Q6LFN.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/sidebar/copilot-sidebar-ui-provider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,SAA2B,mBAAmB;AAC9C,SAAS,gBAAgB;AAkBnB,mBAkBM,KAjBJ,YADF;AATC,SAAS,yBAAyB,EAAE,SAAS,GAAkC;AACpF,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,IAAI;AAEnD,QAAM,gBAAgB,YAAY,MAAM;AACtC,mBAAe,CAAC,SAAS,CAAC,IAAI;AAAA,EAChC,GAAG,CAAC,CAAC;AAEL,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,EAAE,eAAe,aAAa,cAAc,GACjF,0CACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,WAAW;AAAA,cACX,WAAW;AAAA,cACX,QAAQ;AAAA,cACR,OAAO,cAAc,uBAAuB;AAAA,cAC5C,UAAU;AAAA,cACV,YAAY;AAAA;AAAA,YACd;AAAA,YAEA,8BAAC,UAAM,UAAS;AAAA;AAAA,QAClB;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,WAAW;AAAA,cACX,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,UAAU;AAAA,cACV,OAAO,cAAc,MAAM;AAAA,cAC3B,YAAY;AAAA,YACd;AAAA,YAEA,8BAAC,mBACC,8BAAC,kBAAe,gBAAgC,GAClD;AAAA;AAAA,QACF;AAAA,QACC,CAAC,eACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT,OAAO;AAAA,cACL,UAAU;AAAA,cACV,KAAK;AAAA,cACL,OAAO;AAAA,cACP,WAAW;AAAA,cACX,YAAY;AAAA,YACd;AAAA,YACA,WAAU;AAAA,YACX;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EAEJ,GACF,GACF;AAEJ","sourcesContent":["import React, { ReactNode, useCallback } from \"react\";\nimport { useState } from \"react\";\nimport { CopilotSidebar } from \"./copilot-sidebar\";\nimport { CopilotSidebarContext } from \"./sidebar-context\";\nimport { TooltipProvider } from \"../chat-components/ui/tooltip\";\n\nexport interface CopilotSidebarUIProviderProps {\n children: ReactNode;\n}\n\nexport function CopilotSidebarUIProvider({ children }: CopilotSidebarUIProviderProps) {\n const [sidebarOpen, setSidebarOpen] = useState(true);\n\n const toggleSidebar = useCallback(() => {\n setSidebarOpen((prev) => !prev);\n }, []);\n\n return (\n <CopilotSidebarContext.Provider value={{ isSidebarOpen: sidebarOpen, toggleSidebar }}>\n <>\n <div\n style={{\n height: \"100vh\",\n width: \"100vw\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n overflowY: \"auto\",\n overflowX: \"hidden\",\n height: \"100%\",\n width: sidebarOpen ? \"calc(100% - 450px)\" : \"100%\",\n position: \"absolute\",\n transition: \"width 0.5s ease-in-out\", // New\n }}\n >\n <main>{children}</main>\n </div>\n <div\n style={{\n overflowY: \"auto\",\n height: \"100%\",\n width: \"450px\",\n position: \"absolute\",\n right: sidebarOpen ? \"0\" : \"-450px\",\n transition: \"right 0.5s ease-in-out\",\n }}\n >\n <TooltipProvider>\n <CopilotSidebar setSidebarOpen={setSidebarOpen} />\n </TooltipProvider>\n </div>\n {!sidebarOpen && (\n <button\n onClick={toggleSidebar}\n style={{\n position: \"absolute\",\n top: \"5%\",\n right: \"20px\",\n transform: \"translateY(-50%)\",\n transition: \"opacity 0.5s ease-in-out\",\n }}\n className=\"bg-slate-100 ring-2 ring-slate-600 font-semibold text-black p-2 rounded-lg shadow-lg\"\n >\n Open Copilot\n </button>\n )}\n </div>\n </>\n </CopilotSidebarContext.Provider>\n );\n}\n"]}
|
package/dist/chunk-VGX2W5ZB.mjs
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { cn } from './chunk-Q6YO7LDK.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(
|
|
13
|
-
TooltipPrimitive.Content,
|
|
14
|
-
__spreadValues({
|
|
15
|
-
ref,
|
|
16
|
-
sideOffset,
|
|
17
|
-
className: cn(
|
|
18
|
-
"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",
|
|
19
|
-
className
|
|
20
|
-
)
|
|
21
|
-
}, props)
|
|
22
|
-
);
|
|
23
|
-
});
|
|
24
|
-
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
25
|
-
|
|
26
|
-
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
27
|
-
//# sourceMappingURL=out.js.map
|
|
28
|
-
//# sourceMappingURL=chunk-VGX2W5ZB.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;AAVF,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;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;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"]}
|
package/dist/chunk-Y2LXYPNP.mjs
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Button } from './chunk-M3CZWJI3.mjs';
|
|
2
|
-
import { IconCheck, IconCopy } from './chunk-2KAF7NKC.mjs';
|
|
3
|
-
import { cn } from './chunk-Q6YO7LDK.mjs';
|
|
4
|
-
import { useCopyToClipboard } from './chunk-POVINPXX.mjs';
|
|
5
|
-
import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
6
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
function ChatMessageActions(_a) {
|
|
9
|
-
var _b = _a, { message, className } = _b, props = __objRest(_b, ["message", "className"]);
|
|
10
|
-
const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2e3 });
|
|
11
|
-
const onCopy = () => {
|
|
12
|
-
if (isCopied)
|
|
13
|
-
return;
|
|
14
|
-
copyToClipboard(message.content);
|
|
15
|
-
};
|
|
16
|
-
return /* @__PURE__ */ jsx(
|
|
17
|
-
"div",
|
|
18
|
-
__spreadProps(__spreadValues({
|
|
19
|
-
className: cn(
|
|
20
|
-
"flex items-center justify-end transition-opacity group-hover:opacity-100 md:absolute md:-right-10 md:-top-2 md:opacity-0",
|
|
21
|
-
className
|
|
22
|
-
)
|
|
23
|
-
}, props), {
|
|
24
|
-
children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "icon", onClick: onCopy, children: [
|
|
25
|
-
isCopied ? /* @__PURE__ */ jsx(IconCheck, {}) : /* @__PURE__ */ jsx(IconCopy, {}),
|
|
26
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Copy message" })
|
|
27
|
-
] })
|
|
28
|
-
})
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export { ChatMessageActions };
|
|
33
|
-
//# sourceMappingURL=out.js.map
|
|
34
|
-
//# sourceMappingURL=chunk-Y2LXYPNP.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/chat-components/chat-message-actions.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA6BM,SACc,KADd;AAhBC,SAAS,mBAAmB,IAA2D;AAA3D,eAAE,WAAS,UAb9C,IAamC,IAAyB,kBAAzB,IAAyB,CAAvB,WAAS;AAC5C,QAAM,EAAE,UAAU,gBAAgB,IAAI,mBAAmB,EAAE,SAAS,IAAK,CAAC;AAE1E,QAAM,SAAS,MAAM;AACnB,QAAI;AAAU;AACd,oBAAgB,QAAQ,OAAO;AAAA,EACjC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI,QALL;AAAA,MAOC,+BAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,SAAS,QAC1C;AAAA,mBAAW,oBAAC,aAAU,IAAK,oBAAC,YAAS;AAAA,QACtC,oBAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,SACxC;AAAA;AAAA,EACF;AAEJ","sourcesContent":["\"use client\";\n\nimport { type Message } from \"ai\";\n\nimport { Button } from \"./ui/button\";\nimport { IconCheck, IconCopy } from \"./ui/icons\";\nimport { useCopyToClipboard } from \"../../hooks/use-copy-to-clipboard\";\nimport { cn } from \"../../lib/utils\";\n\ninterface ChatMessageActionsProps extends React.ComponentProps<\"div\"> {\n message: Message;\n}\n\nexport function ChatMessageActions({ message, className, ...props }: ChatMessageActionsProps) {\n const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 });\n\n const onCopy = () => {\n if (isCopied) return;\n copyToClipboard(message.content);\n };\n\n return (\n <div\n className={cn(\n \"flex items-center justify-end transition-opacity group-hover:opacity-100 md:absolute md:-right-10 md:-top-2 md:opacity-0\",\n className,\n )}\n {...props}\n >\n <Button variant=\"ghost\" size=\"icon\" onClick={onCopy}>\n {isCopied ? <IconCheck /> : <IconCopy />}\n <span className=\"sr-only\">Copy message</span>\n </Button>\n </div>\n );\n}\n"]}
|
package/dist/chunk-ZYC5YVDO.mjs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
// src/hooks/use-at-bottom.tsx
|
|
4
|
-
function useAtBottom(offset = 0) {
|
|
5
|
-
const [isAtBottom, setIsAtBottom] = React.useState(false);
|
|
6
|
-
React.useEffect(() => {
|
|
7
|
-
const handleScroll = () => {
|
|
8
|
-
setIsAtBottom(window.innerHeight + window.scrollY >= document.body.offsetHeight - offset);
|
|
9
|
-
};
|
|
10
|
-
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
11
|
-
handleScroll();
|
|
12
|
-
return () => {
|
|
13
|
-
window.removeEventListener("scroll", handleScroll);
|
|
14
|
-
};
|
|
15
|
-
}, [offset]);
|
|
16
|
-
return isAtBottom;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export { useAtBottom };
|
|
20
|
-
//# sourceMappingURL=out.js.map
|
|
21
|
-
//# sourceMappingURL=chunk-ZYC5YVDO.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|