@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.
@@ -2,21 +2,33 @@ import React, { useState } from "react";
2
2
  import { ImageRendererProps } from "../props";
3
3
 
4
4
  /**
5
- * Default image rendering component that can be customized by users.
6
- * Uses CSS classes for styling so users can override styles.
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
- const handleImageError = () => {
18
- setImageError(true);
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={handleImageError}
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 isImageMessage =
36
- message && "image" in message && Boolean(message.image);
53
+ const content = message?.content;
37
54
 
38
- if (isImageMessage) {
39
- const imageMessage = message!;
40
- const content = getTextContent(imageMessage?.content);
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={imageMessage.image!} content={content} />
64
+ <ImageRenderer image={legacyImage} content={textContent} />
45
65
  </div>
46
66
  );
47
67
  }
48
68
 
49
- const content = getTextContent(message?.content);
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">{content}</div>
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
- * The image data containing format and bytes
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
- image: ImageData;
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
+ }
@@ -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: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
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: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
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: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
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: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
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
  }
@@ -75,7 +75,11 @@
75
75
  }
76
76
 
77
77
  .copilotKitDevConsole .copilotKitDebugMenuTriggerButton:hover {
78
- background-color: color-mix(in srgb, var(--copilot-kit-dev-console-bg) 85%, black);
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"] .copilotKitDevConsole .copilotKitDebugMenuTriggerButton {
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"] .copilotKitDevConsole .copilotKitDebugMenuTriggerButton:hover {
97
- background-color: color-mix(in srgb, var(--copilot-kit-dev-console-bg) 20%, black);
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(in srgb, var(--copilot-kit-dev-console-bg) 80%, black);
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(in srgb, var(--copilot-kit-dev-console-bg) 95%, black);
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: 0 5px 5px 0px rgba(0,0,0,.01),0 2px 3px 0px rgba(0,0,0,.02);
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(in srgb, var(--copilot-kit-dev-console-bg) 95%, black);
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(in srgb, rgb(200 200 200) 80%, black); /* Darker color on hover */
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
-
@@ -147,4 +147,4 @@ li.copilotKitMarkdownElement {
147
147
  border-radius: 0.375rem;
148
148
  padding: 0.05rem 0.4rem;
149
149
  font-size: 15px;
150
- }
150
+ }
@@ -128,7 +128,11 @@
128
128
  }
129
129
 
130
130
  .copilotKitMessageControlButton.active:hover {
131
- background-color: color-mix(in srgb, var(--copilot-kit-primary-color) 90%, black);
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 + .copilotKitMessage.copilotKitUserMessage {
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%, 80%, 100% {
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: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
12
- "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
13
- "Segoe UI Symbol", "Noto Color Emoji";
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;
@@ -8,9 +8,21 @@
8
8
  -moz-tab-size: 4;
9
9
  -o-tab-size: 4;
10
10
  tab-size: 4;
11
- font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
12
- "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
13
- "Segoe UI Symbol", "Noto Color Emoji";
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) {
@@ -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: 0 5px 5px 0px rgba(0,0,0,.01),0 2px 3px 0px rgba(0,0,0,.02);
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";