@copilotkit/react-ui 1.55.0-next.9 → 1.55.1-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -4
- package/dist/index.cjs +429 -174
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +334 -25
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +62 -6
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +62 -6
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +430 -176
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +440 -179
- package/dist/index.umd.js.map +1 -1
- package/oxlint-rules/copilotkit-plugin.mjs +10 -0
- package/oxlint-rules/require-cpk-prefix.mjs +547 -0
- package/package.json +33 -34
- package/src/components/chat/AttachmentQueue.tsx +125 -0
- package/src/components/chat/AttachmentRenderer.tsx +133 -0
- package/src/components/chat/Chat.tsx +367 -149
- package/src/components/chat/Modal.tsx +1 -1
- package/src/components/chat/attachment-utils.ts +32 -0
- package/src/components/chat/index.tsx +1 -0
- package/src/components/chat/messages/ImageRenderer.tsx +20 -8
- package/src/components/chat/messages/UserMessage.tsx +42 -8
- package/src/components/chat/props.ts +25 -2
- package/src/css/attachments.css +227 -0
- package/src/css/colors.css +8 -4
- package/src/css/console.css +34 -9
- package/src/css/input.css +5 -2
- package/src/css/markdown.css +1 -1
- package/src/css/messages.css +11 -4
- package/src/css/popup.css +15 -3
- package/src/css/sidebar.css +28 -3
- package/src/css/suggestions.css +4 -2
- package/src/styles.css +2 -1
|
@@ -2,21 +2,33 @@ import React, { useState } from "react";
|
|
|
2
2
|
import { ImageRendererProps } from "../props";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* @deprecated Use `CopilotChatAttachmentRenderer` from `@copilotkit/react-core/v2` instead.
|
|
6
|
+
* `ImageRenderer` only handles images. The v2 attachment renderer supports images, audio, video, and documents.
|
|
7
|
+
* See https://docs.copilotkit.ai/migration-guides/migrate-attachments
|
|
8
|
+
* @since 1.56.0
|
|
7
9
|
*/
|
|
8
10
|
export const ImageRenderer: React.FC<ImageRendererProps> = ({
|
|
9
11
|
image,
|
|
12
|
+
source,
|
|
10
13
|
content,
|
|
11
14
|
className = "",
|
|
12
15
|
}) => {
|
|
13
16
|
const [imageError, setImageError] = useState(false);
|
|
14
|
-
const imageSrc = `data:image/${image.format};base64,${image.bytes}`;
|
|
15
|
-
const altText = content || "User uploaded image";
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
// Determine image src from either legacy ImageData or new InputContentSource
|
|
19
|
+
let imageSrc: string;
|
|
20
|
+
if (source) {
|
|
21
|
+
imageSrc =
|
|
22
|
+
source.type === "url"
|
|
23
|
+
? source.value
|
|
24
|
+
: `data:${source.mimeType};base64,${source.value}`;
|
|
25
|
+
} else if (image) {
|
|
26
|
+
imageSrc = `data:image/${image.format};base64,${image.bytes}`;
|
|
27
|
+
} else {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const altText = content || "User uploaded image";
|
|
20
32
|
|
|
21
33
|
if (imageError) {
|
|
22
34
|
return (
|
|
@@ -39,7 +51,7 @@ export const ImageRenderer: React.FC<ImageRendererProps> = ({
|
|
|
39
51
|
src={imageSrc}
|
|
40
52
|
alt={altText}
|
|
41
53
|
className="copilotKitImageRenderingImage"
|
|
42
|
-
onError={
|
|
54
|
+
onError={() => setImageError(true)}
|
|
43
55
|
/>
|
|
44
56
|
{content && (
|
|
45
57
|
<div className="copilotKitImageRenderingContent">{content}</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { UserMessageProps } from "../props";
|
|
2
|
+
import { AttachmentRenderer } from "../AttachmentRenderer";
|
|
2
3
|
|
|
3
4
|
type UserMessageContent = NonNullable<UserMessageProps["message"]>["content"];
|
|
4
5
|
|
|
@@ -30,25 +31,58 @@ const getTextContent = (
|
|
|
30
31
|
);
|
|
31
32
|
};
|
|
32
33
|
|
|
34
|
+
const getMediaParts = (content: UserMessageContent | undefined) => {
|
|
35
|
+
if (!content || typeof content === "string") return [];
|
|
36
|
+
|
|
37
|
+
return content.filter(
|
|
38
|
+
(part) =>
|
|
39
|
+
part.type === "image" ||
|
|
40
|
+
part.type === "audio" ||
|
|
41
|
+
part.type === "video" ||
|
|
42
|
+
part.type === "document",
|
|
43
|
+
) as Array<{
|
|
44
|
+
type: "image" | "audio" | "video" | "document";
|
|
45
|
+
source:
|
|
46
|
+
| { type: "data"; value: string; mimeType: string }
|
|
47
|
+
| { type: "url"; value: string; mimeType?: string };
|
|
48
|
+
}>;
|
|
49
|
+
};
|
|
50
|
+
|
|
33
51
|
export const UserMessage = (props: UserMessageProps) => {
|
|
34
52
|
const { message, ImageRenderer } = props;
|
|
35
|
-
const
|
|
36
|
-
message && "image" in message && Boolean(message.image);
|
|
53
|
+
const content = message?.content;
|
|
37
54
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
// Legacy path: old-style image field on message
|
|
56
|
+
const isLegacyImageMessage =
|
|
57
|
+
message && "image" in message && Boolean((message as any).image);
|
|
41
58
|
|
|
59
|
+
if (isLegacyImageMessage) {
|
|
60
|
+
const legacyImage = (message as any).image;
|
|
61
|
+
const textContent = getTextContent(content);
|
|
42
62
|
return (
|
|
43
63
|
<div className="copilotKitMessage copilotKitUserMessage">
|
|
44
|
-
<ImageRenderer image={
|
|
64
|
+
<ImageRenderer image={legacyImage} content={textContent} />
|
|
45
65
|
</div>
|
|
46
66
|
);
|
|
47
67
|
}
|
|
48
68
|
|
|
49
|
-
const
|
|
69
|
+
const textContent = getTextContent(content);
|
|
70
|
+
const mediaParts = getMediaParts(content);
|
|
71
|
+
|
|
72
|
+
if (mediaParts.length === 0) {
|
|
73
|
+
return (
|
|
74
|
+
<div className="copilotKitMessage copilotKitUserMessage">
|
|
75
|
+
{textContent}
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
50
79
|
|
|
51
80
|
return (
|
|
52
|
-
<div className="copilotKitMessage copilotKitUserMessage">
|
|
81
|
+
<div className="copilotKitMessage copilotKitUserMessage">
|
|
82
|
+
{textContent && <div>{textContent}</div>}
|
|
83
|
+
{mediaParts.map((part, index) => (
|
|
84
|
+
<AttachmentRenderer key={index} type={part.type} source={part.source} />
|
|
85
|
+
))}
|
|
86
|
+
</div>
|
|
53
87
|
);
|
|
54
88
|
};
|
|
@@ -7,6 +7,15 @@ import {
|
|
|
7
7
|
import { CopilotChatSuggestion } from "../../types/suggestions";
|
|
8
8
|
import { ReactNode } from "react";
|
|
9
9
|
import { ImageData } from "@copilotkit/shared";
|
|
10
|
+
import type { InputContentSource } from "@copilotkit/shared";
|
|
11
|
+
import type {
|
|
12
|
+
AttachmentsConfig,
|
|
13
|
+
Attachment,
|
|
14
|
+
AttachmentModality,
|
|
15
|
+
} from "@copilotkit/shared";
|
|
16
|
+
|
|
17
|
+
// Re-export for backward compat
|
|
18
|
+
export type { AttachmentsConfig, Attachment, AttachmentModality };
|
|
10
19
|
|
|
11
20
|
/**
|
|
12
21
|
* Event hooks for CopilotKit chat events.
|
|
@@ -339,11 +348,25 @@ export interface RenderSuggestionsListProps {
|
|
|
339
348
|
isLoading: boolean;
|
|
340
349
|
}
|
|
341
350
|
|
|
351
|
+
/**
|
|
352
|
+
* @deprecated Use `CopilotChatAttachmentRenderer` from `@copilotkit/react-core/v2` instead.
|
|
353
|
+
* See https://docs.copilotkit.ai/migration-guides/migrate-attachments
|
|
354
|
+
* @since 1.56.0
|
|
355
|
+
*/
|
|
342
356
|
export interface ImageRendererProps {
|
|
343
357
|
/**
|
|
344
|
-
*
|
|
358
|
+
* @deprecated Use `source` (type `InputContentSource`) instead.
|
|
359
|
+
* `image` only carried base64 image data. `source` supports both data and URL
|
|
360
|
+
* sources for any modality.
|
|
361
|
+
* See https://docs.copilotkit.ai/migration-guides/migrate-attachments
|
|
362
|
+
* @since 1.56.0
|
|
363
|
+
*/
|
|
364
|
+
image?: ImageData;
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* The content source for the image (new AG-UI format)
|
|
345
368
|
*/
|
|
346
|
-
|
|
369
|
+
source?: InputContentSource;
|
|
347
370
|
|
|
348
371
|
/**
|
|
349
372
|
* Optional content to display alongside the image
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/* Attachment Queue */
|
|
2
|
+
.copilotKitAttachmentQueue {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-wrap: wrap;
|
|
5
|
+
gap: 8px;
|
|
6
|
+
margin: 8px;
|
|
7
|
+
padding: 8px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.copilotKitAttachmentQueueItem {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
border-radius: 8px;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
border: 1px solid var(--copilot-kit-separator-color);
|
|
16
|
+
background: var(--copilot-kit-input-background-color);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.copilotKitAttachmentQueueItem--image,
|
|
20
|
+
.copilotKitAttachmentQueueItem--video {
|
|
21
|
+
width: 72px;
|
|
22
|
+
height: 72px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.copilotKitAttachmentQueueItem--audio {
|
|
26
|
+
min-width: 200px;
|
|
27
|
+
max-width: 280px;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
padding: 4px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.copilotKitAttachmentQueueItem--document {
|
|
33
|
+
padding: 8px 12px;
|
|
34
|
+
max-width: 200px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.copilotKitAttachmentQueueOverlay {
|
|
38
|
+
position: absolute;
|
|
39
|
+
inset: 0;
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
background: rgba(0, 0, 0, 0.4);
|
|
44
|
+
z-index: 1;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.copilotKitAttachmentQueueSpinner {
|
|
48
|
+
width: 20px;
|
|
49
|
+
height: 20px;
|
|
50
|
+
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
51
|
+
border-top-color: white;
|
|
52
|
+
border-radius: 50%;
|
|
53
|
+
animation: copilotKitSpin 0.6s linear infinite;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@keyframes copilotKitSpin {
|
|
57
|
+
to {
|
|
58
|
+
transform: rotate(360deg);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.copilotKitAttachmentQueueRemoveButton {
|
|
63
|
+
position: absolute;
|
|
64
|
+
top: 4px;
|
|
65
|
+
right: 4px;
|
|
66
|
+
background: rgba(0, 0, 0, 0.6);
|
|
67
|
+
color: white;
|
|
68
|
+
border: none;
|
|
69
|
+
border-radius: 50%;
|
|
70
|
+
width: 20px;
|
|
71
|
+
height: 20px;
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
cursor: pointer;
|
|
76
|
+
font-size: 10px;
|
|
77
|
+
padding: 0;
|
|
78
|
+
z-index: 2;
|
|
79
|
+
line-height: 1;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.copilotKitAttachmentQueueRemoveButton:hover {
|
|
83
|
+
background: rgba(0, 0, 0, 0.8);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.copilotKitAttachmentQueuePreviewPlaceholder {
|
|
87
|
+
width: 100%;
|
|
88
|
+
height: 100%;
|
|
89
|
+
background: var(--copilot-kit-input-background-color);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.copilotKitAttachmentQueuePreviewImage {
|
|
93
|
+
width: 100%;
|
|
94
|
+
height: 100%;
|
|
95
|
+
object-fit: cover;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Audio preview in queue */
|
|
99
|
+
.copilotKitAttachmentQueuePreviewAudio {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-direction: column;
|
|
102
|
+
gap: 4px;
|
|
103
|
+
width: 100%;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.copilotKitAttachmentQueuePreviewAudio audio {
|
|
107
|
+
width: 100%;
|
|
108
|
+
height: 32px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Video preview in queue */
|
|
112
|
+
.copilotKitAttachmentQueuePreviewVideo {
|
|
113
|
+
width: 100%;
|
|
114
|
+
height: 100%;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Document preview in queue */
|
|
118
|
+
.copilotKitAttachmentQueuePreviewDocument {
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
gap: 8px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.copilotKitAttachmentQueueDocIcon {
|
|
125
|
+
width: 32px;
|
|
126
|
+
height: 32px;
|
|
127
|
+
border-radius: 6px;
|
|
128
|
+
background: var(--copilot-kit-primary-color, #6366f1);
|
|
129
|
+
color: white;
|
|
130
|
+
display: flex;
|
|
131
|
+
align-items: center;
|
|
132
|
+
justify-content: center;
|
|
133
|
+
font-size: 10px;
|
|
134
|
+
font-weight: 600;
|
|
135
|
+
flex-shrink: 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.copilotKitAttachmentQueueDocInfo {
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-direction: column;
|
|
141
|
+
gap: 2px;
|
|
142
|
+
min-width: 0;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.copilotKitAttachmentQueueFilename {
|
|
146
|
+
font-size: 12px;
|
|
147
|
+
font-weight: 500;
|
|
148
|
+
overflow: hidden;
|
|
149
|
+
text-overflow: ellipsis;
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.copilotKitAttachmentQueueFileSize {
|
|
154
|
+
font-size: 11px;
|
|
155
|
+
color: var(--copilot-kit-secondary-contrast-color);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Drag-and-drop overlay */
|
|
159
|
+
.copilotKitDragOver {
|
|
160
|
+
outline: 2px dashed var(--copilot-kit-primary-color, #6366f1);
|
|
161
|
+
outline-offset: -4px;
|
|
162
|
+
border-radius: 8px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Attachment Rendering in Messages */
|
|
166
|
+
.copilotKitAttachment {
|
|
167
|
+
display: inline-flex;
|
|
168
|
+
flex-direction: column;
|
|
169
|
+
gap: 4px;
|
|
170
|
+
max-width: 100%;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.copilotKitAttachmentAudio audio {
|
|
174
|
+
max-width: 300px;
|
|
175
|
+
width: 100%;
|
|
176
|
+
height: 40px;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.copilotKitAttachmentVideo video {
|
|
180
|
+
max-width: 400px;
|
|
181
|
+
width: 100%;
|
|
182
|
+
border-radius: 8px;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.copilotKitAttachmentDocument {
|
|
186
|
+
display: inline-flex;
|
|
187
|
+
align-items: center;
|
|
188
|
+
gap: 8px;
|
|
189
|
+
padding: 8px 12px;
|
|
190
|
+
border: 1px solid var(--copilot-kit-separator-color);
|
|
191
|
+
border-radius: 8px;
|
|
192
|
+
background: var(--copilot-kit-input-background-color);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.copilotKitAttachmentDocIcon {
|
|
196
|
+
width: 28px;
|
|
197
|
+
height: 28px;
|
|
198
|
+
border-radius: 6px;
|
|
199
|
+
background: var(--copilot-kit-primary-color, #6366f1);
|
|
200
|
+
color: white;
|
|
201
|
+
display: flex;
|
|
202
|
+
align-items: center;
|
|
203
|
+
justify-content: center;
|
|
204
|
+
font-size: 9px;
|
|
205
|
+
font-weight: 600;
|
|
206
|
+
flex-shrink: 0;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.copilotKitAttachmentDocInfo {
|
|
210
|
+
display: flex;
|
|
211
|
+
flex-direction: column;
|
|
212
|
+
gap: 1px;
|
|
213
|
+
min-width: 0;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.copilotKitAttachmentDocName {
|
|
217
|
+
font-size: 13px;
|
|
218
|
+
font-weight: 500;
|
|
219
|
+
overflow: hidden;
|
|
220
|
+
text-overflow: ellipsis;
|
|
221
|
+
white-space: nowrap;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.copilotKitAttachmentDocMeta {
|
|
225
|
+
font-size: 11px;
|
|
226
|
+
color: var(--copilot-kit-secondary-contrast-color);
|
|
227
|
+
}
|
package/src/css/colors.css
CHANGED
|
@@ -32,9 +32,11 @@ WHEN MAKING ANY CHANGE, MAKE SURE TO INCLUDE IT IN ALL DUPLICATIONS.
|
|
|
32
32
|
/* Small shadow for subtle elevation */
|
|
33
33
|
--copilot-kit-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
34
34
|
/* Medium shadow for cards */
|
|
35
|
-
--copilot-kit-shadow-md:
|
|
35
|
+
--copilot-kit-shadow-md:
|
|
36
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
36
37
|
/* Large shadow for modals */
|
|
37
|
-
--copilot-kit-shadow-lg:
|
|
38
|
+
--copilot-kit-shadow-lg:
|
|
39
|
+
0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
38
40
|
|
|
39
41
|
--copilot-kit-dev-console-bg: #f8f8fa;
|
|
40
42
|
--copilot-kit-dev-console-text: black;
|
|
@@ -72,7 +74,9 @@ body[style*="color-scheme: dark"] :root {
|
|
|
72
74
|
/* Small shadow for subtle elevation */
|
|
73
75
|
--copilot-kit-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
|
|
74
76
|
/* Medium shadow for cards */
|
|
75
|
-
--copilot-kit-shadow-md:
|
|
77
|
+
--copilot-kit-shadow-md:
|
|
78
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
|
|
76
79
|
/* Large shadow for modals */
|
|
77
|
-
--copilot-kit-shadow-lg:
|
|
80
|
+
--copilot-kit-shadow-lg:
|
|
81
|
+
0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
|
|
78
82
|
}
|
package/src/css/console.css
CHANGED
|
@@ -75,7 +75,11 @@
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.copilotKitDevConsole .copilotKitDebugMenuTriggerButton:hover {
|
|
78
|
-
background-color: color-mix(
|
|
78
|
+
background-color: color-mix(
|
|
79
|
+
in srgb,
|
|
80
|
+
var(--copilot-kit-dev-console-bg) 85%,
|
|
81
|
+
black
|
|
82
|
+
);
|
|
79
83
|
color: var(--copilot-kit-dev-console-text);
|
|
80
84
|
}
|
|
81
85
|
|
|
@@ -84,7 +88,9 @@ html.dark,
|
|
|
84
88
|
body.dark,
|
|
85
89
|
[data-theme="dark"],
|
|
86
90
|
html[style*="color-scheme: dark"],
|
|
87
|
-
body[style*="color-scheme: dark"]
|
|
91
|
+
body[style*="color-scheme: dark"]
|
|
92
|
+
.copilotKitDevConsole
|
|
93
|
+
.copilotKitDebugMenuTriggerButton {
|
|
88
94
|
color: white;
|
|
89
95
|
}
|
|
90
96
|
|
|
@@ -93,8 +99,14 @@ html.dark,
|
|
|
93
99
|
body.dark,
|
|
94
100
|
[data-theme="dark"],
|
|
95
101
|
html[style*="color-scheme: dark"],
|
|
96
|
-
body[style*="color-scheme: dark"]
|
|
97
|
-
|
|
102
|
+
body[style*="color-scheme: dark"]
|
|
103
|
+
.copilotKitDevConsole
|
|
104
|
+
.copilotKitDebugMenuTriggerButton:hover {
|
|
105
|
+
background-color: color-mix(
|
|
106
|
+
in srgb,
|
|
107
|
+
var(--copilot-kit-dev-console-bg) 20%,
|
|
108
|
+
black
|
|
109
|
+
);
|
|
98
110
|
}
|
|
99
111
|
|
|
100
112
|
.copilotKitDevConsole .copilotKitDebugMenuTriggerButton > svg {
|
|
@@ -102,7 +114,11 @@ body[style*="color-scheme: dark"] .copilotKitDevConsole .copilotKitDebugMenuTrig
|
|
|
102
114
|
}
|
|
103
115
|
|
|
104
116
|
.copilotKitDebugMenu {
|
|
105
|
-
--copilot-kit-dev-console-border: color-mix(
|
|
117
|
+
--copilot-kit-dev-console-border: color-mix(
|
|
118
|
+
in srgb,
|
|
119
|
+
var(--copilot-kit-dev-console-bg) 80%,
|
|
120
|
+
black
|
|
121
|
+
);
|
|
106
122
|
margin-top: 2px;
|
|
107
123
|
border-radius: 6px;
|
|
108
124
|
background-color: var(--copilot-kit-dev-console-bg);
|
|
@@ -127,7 +143,11 @@ body[style*="color-scheme: dark"] .copilotKitDevConsole .copilotKitDebugMenuTrig
|
|
|
127
143
|
}
|
|
128
144
|
|
|
129
145
|
.copilotKitDebugMenuItem:hover {
|
|
130
|
-
background-color: color-mix(
|
|
146
|
+
background-color: color-mix(
|
|
147
|
+
in srgb,
|
|
148
|
+
var(--copilot-kit-dev-console-bg) 95%,
|
|
149
|
+
black
|
|
150
|
+
);
|
|
131
151
|
border-radius: 4px;
|
|
132
152
|
}
|
|
133
153
|
|
|
@@ -157,10 +177,15 @@ body[style*="color-scheme: dark"] .copilotKitDevConsole .copilotKitDebugMenuTrig
|
|
|
157
177
|
font-size: 0.8rem;
|
|
158
178
|
border: 1px solid var(--copilot-kit-muted-color);
|
|
159
179
|
color: var(--copilot-kit-dev-console-text);
|
|
160
|
-
box-shadow:
|
|
180
|
+
box-shadow:
|
|
181
|
+
0 5px 5px 0px rgba(0, 0, 0, 0.01),
|
|
182
|
+
0 2px 3px 0px rgba(0, 0, 0, 0.02);
|
|
161
183
|
background-color: var(--copilot-kit-dev-console-bg);
|
|
162
184
|
}
|
|
163
185
|
.copilotKitHelpItemButton:hover {
|
|
164
|
-
background-color: color-mix(
|
|
186
|
+
background-color: color-mix(
|
|
187
|
+
in srgb,
|
|
188
|
+
var(--copilot-kit-dev-console-bg) 95%,
|
|
189
|
+
black
|
|
190
|
+
);
|
|
165
191
|
}
|
|
166
|
-
|
package/src/css/input.css
CHANGED
|
@@ -122,7 +122,11 @@
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
.copilotKitInput textarea::-webkit-scrollbar-thumb:hover {
|
|
125
|
-
background-color: color-mix(
|
|
125
|
+
background-color: color-mix(
|
|
126
|
+
in srgb,
|
|
127
|
+
rgb(200 200 200) 80%,
|
|
128
|
+
black
|
|
129
|
+
); /* Darker color on hover */
|
|
126
130
|
}
|
|
127
131
|
|
|
128
132
|
.poweredByContainer {
|
|
@@ -149,4 +153,3 @@ html[style*="color-scheme: dark"],
|
|
|
149
153
|
body[style*="color-scheme: dark"] .poweredBy {
|
|
150
154
|
color: rgb(69, 69, 69) !important;
|
|
151
155
|
}
|
|
152
|
-
|
package/src/css/markdown.css
CHANGED
package/src/css/messages.css
CHANGED
|
@@ -128,7 +128,11 @@
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
.copilotKitMessageControlButton.active:hover {
|
|
131
|
-
background-color: color-mix(
|
|
131
|
+
background-color: color-mix(
|
|
132
|
+
in srgb,
|
|
133
|
+
var(--copilot-kit-primary-color) 90%,
|
|
134
|
+
black
|
|
135
|
+
);
|
|
132
136
|
color: var(--copilot-kit-contrast-color);
|
|
133
137
|
}
|
|
134
138
|
|
|
@@ -139,7 +143,8 @@
|
|
|
139
143
|
pointer-events: none;
|
|
140
144
|
}
|
|
141
145
|
|
|
142
|
-
.copilotKitMessage.copilotKitAssistantMessage
|
|
146
|
+
.copilotKitMessage.copilotKitAssistantMessage
|
|
147
|
+
+ .copilotKitMessage.copilotKitUserMessage {
|
|
143
148
|
margin-top: 1.5rem;
|
|
144
149
|
}
|
|
145
150
|
|
|
@@ -173,7 +178,9 @@
|
|
|
173
178
|
}
|
|
174
179
|
|
|
175
180
|
@keyframes copilotKitActivityDotAnimation {
|
|
176
|
-
0%,
|
|
181
|
+
0%,
|
|
182
|
+
80%,
|
|
183
|
+
100% {
|
|
177
184
|
transform: scale(0.5);
|
|
178
185
|
opacity: 0.5;
|
|
179
186
|
}
|
|
@@ -241,4 +248,4 @@
|
|
|
241
248
|
.copilotKitImageRenderingErrorMessage::before {
|
|
242
249
|
content: "⚠️";
|
|
243
250
|
font-size: 1rem;
|
|
244
|
-
}
|
|
251
|
+
}
|
package/src/css/popup.css
CHANGED
|
@@ -8,9 +8,21 @@
|
|
|
8
8
|
-moz-tab-size: 4;
|
|
9
9
|
-o-tab-size: 4;
|
|
10
10
|
tab-size: 4;
|
|
11
|
-
font-family:
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
font-family:
|
|
12
|
+
ui-sans-serif,
|
|
13
|
+
system-ui,
|
|
14
|
+
-apple-system,
|
|
15
|
+
BlinkMacSystemFont,
|
|
16
|
+
"Segoe UI",
|
|
17
|
+
Roboto,
|
|
18
|
+
"Helvetica Neue",
|
|
19
|
+
Arial,
|
|
20
|
+
"Noto Sans",
|
|
21
|
+
sans-serif,
|
|
22
|
+
"Apple Color Emoji",
|
|
23
|
+
"Segoe UI Emoji",
|
|
24
|
+
"Segoe UI Symbol",
|
|
25
|
+
"Noto Color Emoji";
|
|
14
26
|
font-feature-settings: normal;
|
|
15
27
|
font-variation-settings: normal;
|
|
16
28
|
touch-action: manipulation;
|
package/src/css/sidebar.css
CHANGED
|
@@ -8,9 +8,21 @@
|
|
|
8
8
|
-moz-tab-size: 4;
|
|
9
9
|
-o-tab-size: 4;
|
|
10
10
|
tab-size: 4;
|
|
11
|
-
font-family:
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
font-family:
|
|
12
|
+
ui-sans-serif,
|
|
13
|
+
system-ui,
|
|
14
|
+
-apple-system,
|
|
15
|
+
BlinkMacSystemFont,
|
|
16
|
+
"Segoe UI",
|
|
17
|
+
Roboto,
|
|
18
|
+
"Helvetica Neue",
|
|
19
|
+
Arial,
|
|
20
|
+
"Noto Sans",
|
|
21
|
+
sans-serif,
|
|
22
|
+
"Apple Color Emoji",
|
|
23
|
+
"Segoe UI Emoji",
|
|
24
|
+
"Segoe UI Symbol",
|
|
25
|
+
"Noto Color Emoji";
|
|
14
26
|
font-feature-settings: normal;
|
|
15
27
|
font-variation-settings: normal;
|
|
16
28
|
touch-action: manipulation;
|
|
@@ -25,6 +37,19 @@
|
|
|
25
37
|
overflow: visible;
|
|
26
38
|
margin-right: 0px;
|
|
27
39
|
transition: margin-right 0.3s ease;
|
|
40
|
+
min-height: 100vh;
|
|
41
|
+
min-height: 100dvh;
|
|
42
|
+
height: 100%;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.copilotKitSidebarContentWrapper > .copilotKitModalChildrenWrapper {
|
|
46
|
+
min-height: 100%;
|
|
47
|
+
height: 100%;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.copilotKitSidebarContentWrapper > .copilotKitModalChildrenWrapper > * {
|
|
51
|
+
min-height: 100%;
|
|
52
|
+
height: 100%;
|
|
28
53
|
}
|
|
29
54
|
|
|
30
55
|
@media (min-width: 640px) {
|
package/src/css/suggestions.css
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
border-radius: 15px;
|
|
17
17
|
border: 1px solid var(--copilot-kit-muted-color);
|
|
18
18
|
color: var(--copilot-kit-secondary-contrast-color);
|
|
19
|
-
box-shadow:
|
|
19
|
+
box-shadow:
|
|
20
|
+
0 5px 5px 0px rgba(0, 0, 0, 0.01),
|
|
21
|
+
0 2px 3px 0px rgba(0, 0, 0, 0.02);
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
.copilotKitMessages footer .suggestions .suggestion.loading {
|
|
@@ -40,4 +42,4 @@
|
|
|
40
42
|
|
|
41
43
|
.copilotKitMessages footer .suggestions button svg {
|
|
42
44
|
margin-right: 6px;
|
|
43
|
-
}
|
|
45
|
+
}
|
package/src/styles.css
CHANGED
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
@import "./css/header.css";
|
|
6
6
|
@import "./css/input.css";
|
|
7
7
|
@import "./css/messages.css";
|
|
8
|
+
@import "./css/attachments.css";
|
|
8
9
|
@import "./css/window.css";
|
|
9
10
|
@import "./css/animations.css";
|
|
10
11
|
@import "./css/markdown.css";
|
|
11
12
|
@import "./css/suggestions.css";
|
|
12
13
|
@import "./css/panel.css";
|
|
13
14
|
@import "./css/console.css";
|
|
14
|
-
@import "./css/crew.css";
|
|
15
|
+
@import "./css/crew.css";
|