@agentiffai/design 0.1.0 → 0.1.2
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/dist/{Window-CgGFIYHS.d.cts → Window-CukhSS8T.d.cts} +3 -1
- package/dist/{Window-B6e_UfLV.d.ts → Window-CukhSS8T.d.ts} +3 -1
- package/dist/{chunk-MNXQDDWP.js → chunk-6NGVSBJZ.js} +71 -10
- package/dist/chunk-6NGVSBJZ.js.map +1 -0
- package/dist/{chunk-CNVJ5UF2.js → chunk-H5TKEGIC.js} +28 -5
- package/dist/chunk-H5TKEGIC.js.map +1 -0
- package/dist/{chunk-P4Q3MHIY.cjs → chunk-OPWUJP7J.cjs} +28 -5
- package/dist/chunk-OPWUJP7J.cjs.map +1 -0
- package/dist/{chunk-KNSPBTTJ.cjs → chunk-ULL2LDN3.cjs} +71 -10
- package/dist/chunk-ULL2LDN3.cjs.map +1 -0
- package/dist/copilotkit/index.cjs +122 -118
- package/dist/copilotkit/index.cjs.map +1 -1
- package/dist/copilotkit/index.d.cts +53 -56
- package/dist/copilotkit/index.d.ts +53 -56
- package/dist/copilotkit/index.js +98 -94
- package/dist/copilotkit/index.js.map +1 -1
- package/dist/index.cjs +31 -31
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/layout/index.cjs +11 -11
- package/dist/layout/index.d.cts +16 -4
- package/dist/layout/index.d.ts +16 -4
- package/dist/layout/index.js +1 -1
- package/package.json +8 -7
- package/CHANGELOG.md +0 -35
- package/LICENSE +0 -21
- package/assets/layout/main-pane-section.png +0 -0
- package/assets/layout/nav-complete.png +0 -0
- package/assets/layout/nav-horizontal-section.png +0 -0
- package/assets/layout/nav-vertical-section.png +0 -0
- package/assets/layout/pane-section-dropdowns.png +0 -0
- package/assets/layout/pane-section-header.png +0 -0
- package/dist/chunk-CNVJ5UF2.js.map +0 -1
- package/dist/chunk-KNSPBTTJ.cjs.map +0 -1
- package/dist/chunk-MNXQDDWP.js.map +0 -1
- package/dist/chunk-P4Q3MHIY.cjs.map +0 -1
- package/dist/index.d-DYU1eVeb.d.cts +0 -252
- package/dist/index.d-DYU1eVeb.d.ts +0 -252
- package/public/assets/bg-set/brand-logos/Google.svg +0 -1
- package/public/assets/bg-set/brand-logos/Google2.svg +0 -1
- package/public/assets/bg-set/brand-logos/Microsoft.svg +0 -1
- package/public/assets/bg-set/brand-logos/Microsoft2.svg +0 -1
- package/public/assets/bg-set/brand-logos/Slack.svg +0 -1
- package/public/assets/bg-set/brand-logos/Slack2.svg +0 -1
- package/public/assets/bg-set/brand-logos/YouTube.svg +0 -1
- package/public/assets/bg-set/brand-logos/YouTube2.svg +0 -1
- package/public/assets/bg-set/pattern/Size=lg, Type=Waves Rays2.svg +0 -1
- package/public/assets/bg-set/pattern/Size=md, Type=Waves Rays2.svg +0 -1
- package/public/assets/bg-set/pattern/Size=sm, Type=Waves Rays2.svg +0 -1
- package/public/assets/bg-set/pattern/Size=xl, Type=Waves Rays2.svg +0 -1
- package/public/assets/bg-set/pattern/Size=xs, Type=Waves Rays2.svg +0 -1
- package/public/assets/icon-set/Icon-add-circle-fill.svg +0 -1
- package/public/assets/icon-set/Icon-calendar-fill.svg +0 -1
- package/public/assets/icon-set/Icon-chat-1-fill.svg +0 -1
- package/public/assets/icon-set/Icon-download-2-fill.svg +0 -1
- package/public/assets/icon-set/Icon-home-fill.svg +0 -1
- package/public/assets/icon-set/Icon-mic-fill.svg +0 -1
- package/public/assets/icon-set/Icon-settings-3-fill.svg +0 -1
- package/public/assets/icon-set/Icon-settings-fill.svg +0 -1
- package/public/assets/icon-set/Icon-settings-line.svg +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkOPWUJP7J_cjs = require('../chunk-OPWUJP7J.cjs');
|
|
4
|
+
var reactUi = require('@copilotkit/react-ui');
|
|
5
|
+
var styled = require('styled-components');
|
|
4
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
7
|
var react = require('react');
|
|
6
|
-
var styled = require('styled-components');
|
|
7
|
-
var reactUi = require('@copilotkit/react-ui');
|
|
8
8
|
|
|
9
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
|
|
@@ -24,15 +24,15 @@ var AssistantMessageAdapter = ({
|
|
|
24
24
|
// ImageRenderer,
|
|
25
25
|
}) => {
|
|
26
26
|
if (isLoading) {
|
|
27
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.AssistantThinking, { message: "Thinking..." });
|
|
28
28
|
}
|
|
29
29
|
if (isGenerating && !message?.content) {
|
|
30
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.AssistantThinking, { message: "Generating response..." });
|
|
31
31
|
}
|
|
32
32
|
const content = message?.content || "";
|
|
33
33
|
const attachments = [];
|
|
34
34
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
-
|
|
35
|
+
chunkOPWUJP7J_cjs.AssistantMessage,
|
|
36
36
|
{
|
|
37
37
|
content,
|
|
38
38
|
avatarInitials: "AI",
|
|
@@ -43,6 +43,29 @@ var AssistantMessageAdapter = ({
|
|
|
43
43
|
);
|
|
44
44
|
};
|
|
45
45
|
AssistantMessageAdapter.displayName = "AssistantMessageAdapter";
|
|
46
|
+
var UserMessageWrapper = styled__default.default.div`
|
|
47
|
+
display: flex;
|
|
48
|
+
justify-content: flex-end;
|
|
49
|
+
width: 100%;
|
|
50
|
+
padding: 8px 0;
|
|
51
|
+
`;
|
|
52
|
+
var UserMessageAdapter = ({
|
|
53
|
+
message,
|
|
54
|
+
ImageRenderer
|
|
55
|
+
}) => {
|
|
56
|
+
if (message?.image) {
|
|
57
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
ImageRenderer,
|
|
59
|
+
{
|
|
60
|
+
image: message.image,
|
|
61
|
+
content: message.content
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
const content = message?.content || "";
|
|
66
|
+
return /* @__PURE__ */ jsxRuntime.jsx(UserMessageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.UserMessage, { children: content }) });
|
|
67
|
+
};
|
|
68
|
+
UserMessageAdapter.displayName = "UserMessageAdapter";
|
|
46
69
|
var InputAdapter = ({
|
|
47
70
|
inProgress,
|
|
48
71
|
onSend,
|
|
@@ -55,7 +78,7 @@ var InputAdapter = ({
|
|
|
55
78
|
setValue("");
|
|
56
79
|
};
|
|
57
80
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
-
|
|
81
|
+
chunkOPWUJP7J_cjs.ChatInput,
|
|
59
82
|
{
|
|
60
83
|
value,
|
|
61
84
|
onChange: setValue,
|
|
@@ -77,23 +100,6 @@ var InputAdapter = ({
|
|
|
77
100
|
);
|
|
78
101
|
};
|
|
79
102
|
InputAdapter.displayName = "InputAdapter";
|
|
80
|
-
var UserMessageWrapper = styled__default.default.div`
|
|
81
|
-
display: flex;
|
|
82
|
-
justify-content: flex-end;
|
|
83
|
-
width: 100%;
|
|
84
|
-
padding: 8px 0;
|
|
85
|
-
`;
|
|
86
|
-
var UserMessageAdapter = ({
|
|
87
|
-
message,
|
|
88
|
-
ImageRenderer
|
|
89
|
-
}) => {
|
|
90
|
-
if (message?.image) {
|
|
91
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ImageRenderer, { image: message.image, content: message.content });
|
|
92
|
-
}
|
|
93
|
-
const content = message?.content || "";
|
|
94
|
-
return /* @__PURE__ */ jsxRuntime.jsx(UserMessageWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkP4Q3MHIY_cjs.UserMessage, { children: content }) });
|
|
95
|
-
};
|
|
96
|
-
UserMessageAdapter.displayName = "UserMessageAdapter";
|
|
97
103
|
var GlobalSidebarStyles = styled.createGlobalStyle`
|
|
98
104
|
/* Override CopilotKit's default positioning - start off-screen */
|
|
99
105
|
.copilotKitSidebar {
|
|
@@ -110,6 +116,7 @@ var GlobalSidebarStyles = styled.createGlobalStyle`
|
|
|
110
116
|
|
|
111
117
|
/* Mobile-first: Full viewport sidebar */
|
|
112
118
|
.copilotKitSidebar .copilotKitWindow {
|
|
119
|
+
/* Override CopilotKit defaults for mobile */
|
|
113
120
|
position: fixed !important;
|
|
114
121
|
top: 0 !important;
|
|
115
122
|
right: 0 !important;
|
|
@@ -123,12 +130,14 @@ var GlobalSidebarStyles = styled.createGlobalStyle`
|
|
|
123
130
|
border-radius: 0 !important;
|
|
124
131
|
z-index: 1001 !important;
|
|
125
132
|
|
|
133
|
+
/* Hidden by default - translateX(100%) moves it off-screen to the right */
|
|
126
134
|
transform: translateX(100%) !important;
|
|
127
135
|
visibility: hidden !important;
|
|
128
136
|
pointer-events: none !important;
|
|
129
137
|
opacity: 0 !important;
|
|
130
138
|
display: none !important;
|
|
131
139
|
|
|
140
|
+
/* Smooth slide transition */
|
|
132
141
|
transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;
|
|
133
142
|
}
|
|
134
143
|
|
|
@@ -171,36 +180,6 @@ var GlobalSidebarStyles = styled.createGlobalStyle`
|
|
|
171
180
|
display: flex !important;
|
|
172
181
|
}
|
|
173
182
|
}
|
|
174
|
-
|
|
175
|
-
/* Override CopilotKit's default message styles with our custom components */
|
|
176
|
-
.copilotKitSidebar {
|
|
177
|
-
/* Reset all default CopilotKit message styling */
|
|
178
|
-
[class*="copilotKitMessage"],
|
|
179
|
-
[class*="Message-module"] {
|
|
180
|
-
all: unset !important;
|
|
181
|
-
display: contents !important;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/* Ensure our custom UserMessage gradient pill shows through */
|
|
185
|
-
button[role="presentation"] {
|
|
186
|
-
all: revert !important;
|
|
187
|
-
display: inline-flex !important;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/* Reset input styles to allow our custom ChatInput */
|
|
191
|
-
[class*="Input-module"],
|
|
192
|
-
[class*="copilotKitInput"] {
|
|
193
|
-
all: unset !important;
|
|
194
|
-
display: contents !important;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/* Reset header styles */
|
|
198
|
-
[class*="Header-module"],
|
|
199
|
-
[class*="copilotKitHeader"] {
|
|
200
|
-
all: unset !important;
|
|
201
|
-
display: contents !important;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
183
|
`;
|
|
205
184
|
var StyledChatButton = styled__default.default.button`
|
|
206
185
|
position: fixed;
|
|
@@ -234,38 +213,32 @@ var StyledChatButton = styled__default.default.button`
|
|
|
234
213
|
fill: white;
|
|
235
214
|
}
|
|
236
215
|
`;
|
|
237
|
-
|
|
216
|
+
function CustomCopilotSidebar({
|
|
238
217
|
children,
|
|
239
|
-
instructions = "You are a helpful AI assistant.",
|
|
240
|
-
labels,
|
|
241
|
-
icons,
|
|
242
218
|
defaultOpen = false,
|
|
243
|
-
clickOutsideToClose = true,
|
|
244
|
-
hitEscapeToClose = true,
|
|
245
|
-
shortcut = "/",
|
|
246
219
|
onSetOpen,
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
})
|
|
250
|
-
const
|
|
220
|
+
instructions,
|
|
221
|
+
className
|
|
222
|
+
}) {
|
|
223
|
+
const HeaderAdapterWithClose = (_props) => {
|
|
251
224
|
const { setOpen } = reactUi.useChatContext();
|
|
252
225
|
const handleClose = () => {
|
|
253
226
|
setOpen(false);
|
|
254
227
|
onSetOpen?.(false);
|
|
255
228
|
};
|
|
256
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
229
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.Header, { title: "AI Assistant", subtitle: "How can I help you today?", onClose: handleClose });
|
|
257
230
|
};
|
|
258
|
-
const
|
|
259
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
231
|
+
const WindowAdapterLocal = (props) => {
|
|
232
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.Window, { children: props.children });
|
|
260
233
|
};
|
|
261
|
-
const MessagesAdapter = (
|
|
262
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
263
|
-
|
|
234
|
+
const MessagesAdapter = (props) => {
|
|
235
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.Messages, { children: props.messages.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
236
|
+
props.RenderMessage,
|
|
264
237
|
{
|
|
265
238
|
message,
|
|
266
|
-
inProgress:
|
|
239
|
+
inProgress: props.inProgress,
|
|
267
240
|
index,
|
|
268
|
-
isCurrentMessage: index ===
|
|
241
|
+
isCurrentMessage: index === props.messages.length - 1
|
|
269
242
|
},
|
|
270
243
|
message.id || `message-${index}`
|
|
271
244
|
)) });
|
|
@@ -310,29 +283,25 @@ var CustomCopilotSidebar = ({
|
|
|
310
283
|
AssistantMessage: AssistantMessageAdapter,
|
|
311
284
|
UserMessage: UserMessageAdapter,
|
|
312
285
|
Input: InputAdapter,
|
|
313
|
-
Header:
|
|
314
|
-
Window:
|
|
286
|
+
Header: HeaderAdapterWithClose,
|
|
287
|
+
Window: WindowAdapterLocal,
|
|
315
288
|
Messages: MessagesAdapter,
|
|
316
289
|
Button: CustomButton,
|
|
317
290
|
instructions,
|
|
318
291
|
labels: {
|
|
319
292
|
title: "AI Assistant",
|
|
320
|
-
initial: "Hi! How can I help you today?"
|
|
321
|
-
...labels
|
|
293
|
+
initial: "Hi! How can I help you today?"
|
|
322
294
|
},
|
|
323
|
-
icons,
|
|
324
295
|
defaultOpen,
|
|
325
|
-
clickOutsideToClose,
|
|
326
|
-
hitEscapeToClose,
|
|
327
|
-
shortcut,
|
|
296
|
+
clickOutsideToClose: true,
|
|
297
|
+
hitEscapeToClose: true,
|
|
328
298
|
onSetOpen,
|
|
329
299
|
className,
|
|
330
|
-
...props,
|
|
331
300
|
children
|
|
332
301
|
}
|
|
333
302
|
)
|
|
334
303
|
] });
|
|
335
|
-
}
|
|
304
|
+
}
|
|
336
305
|
CustomCopilotSidebar.displayName = "CustomCopilotSidebar";
|
|
337
306
|
var GlobalSidebarStyles2 = styled.createGlobalStyle`
|
|
338
307
|
/* Override CopilotKit's default positioning - start off-screen */
|
|
@@ -350,7 +319,6 @@ var GlobalSidebarStyles2 = styled.createGlobalStyle`
|
|
|
350
319
|
|
|
351
320
|
/* Mobile-first: Full viewport sidebar */
|
|
352
321
|
.copilotKitSidebar .copilotKitWindow {
|
|
353
|
-
/* Override CopilotKit defaults for mobile */
|
|
354
322
|
position: fixed !important;
|
|
355
323
|
top: 0 !important;
|
|
356
324
|
right: 0 !important;
|
|
@@ -364,14 +332,12 @@ var GlobalSidebarStyles2 = styled.createGlobalStyle`
|
|
|
364
332
|
border-radius: 0 !important;
|
|
365
333
|
z-index: 1001 !important;
|
|
366
334
|
|
|
367
|
-
/* Hidden by default - translateX(100%) moves it off-screen to the right */
|
|
368
335
|
transform: translateX(100%) !important;
|
|
369
336
|
visibility: hidden !important;
|
|
370
337
|
pointer-events: none !important;
|
|
371
338
|
opacity: 0 !important;
|
|
372
339
|
display: none !important;
|
|
373
340
|
|
|
374
|
-
/* Smooth slide transition */
|
|
375
341
|
transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;
|
|
376
342
|
}
|
|
377
343
|
|
|
@@ -414,6 +380,36 @@ var GlobalSidebarStyles2 = styled.createGlobalStyle`
|
|
|
414
380
|
display: flex !important;
|
|
415
381
|
}
|
|
416
382
|
}
|
|
383
|
+
|
|
384
|
+
/* Override CopilotKit's default message styles with our custom components */
|
|
385
|
+
.copilotKitSidebar {
|
|
386
|
+
/* Reset all default CopilotKit message styling */
|
|
387
|
+
[class*="copilotKitMessage"],
|
|
388
|
+
[class*="Message-module"] {
|
|
389
|
+
all: unset !important;
|
|
390
|
+
display: contents !important;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/* Ensure our custom UserMessage gradient pill shows through */
|
|
394
|
+
button[role="presentation"] {
|
|
395
|
+
all: revert !important;
|
|
396
|
+
display: inline-flex !important;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/* Reset input styles to allow our custom ChatInput */
|
|
400
|
+
[class*="Input-module"],
|
|
401
|
+
[class*="copilotKitInput"] {
|
|
402
|
+
all: unset !important;
|
|
403
|
+
display: contents !important;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/* Reset header styles */
|
|
407
|
+
[class*="Header-module"],
|
|
408
|
+
[class*="copilotKitHeader"] {
|
|
409
|
+
all: unset !important;
|
|
410
|
+
display: contents !important;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
417
413
|
`;
|
|
418
414
|
var StyledChatButton2 = styled__default.default.button`
|
|
419
415
|
position: fixed;
|
|
@@ -447,26 +443,31 @@ var StyledChatButton2 = styled__default.default.button`
|
|
|
447
443
|
fill: white;
|
|
448
444
|
}
|
|
449
445
|
`;
|
|
450
|
-
|
|
446
|
+
var CustomCopilotSidebar2 = ({
|
|
451
447
|
children,
|
|
448
|
+
instructions = "You are a helpful AI assistant.",
|
|
449
|
+
labels,
|
|
450
|
+
icons,
|
|
452
451
|
defaultOpen = false,
|
|
452
|
+
clickOutsideToClose = true,
|
|
453
|
+
hitEscapeToClose = true,
|
|
454
|
+
shortcut = "/",
|
|
453
455
|
onSetOpen,
|
|
454
|
-
instructions,
|
|
455
456
|
className
|
|
456
|
-
}) {
|
|
457
|
-
const
|
|
457
|
+
}) => {
|
|
458
|
+
const HeaderAdapter = (_props) => {
|
|
458
459
|
const { setOpen } = reactUi.useChatContext();
|
|
459
460
|
const handleClose = () => {
|
|
460
461
|
setOpen(false);
|
|
461
462
|
onSetOpen?.(false);
|
|
462
463
|
};
|
|
463
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
464
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.Header, { title: "AI Assistant", subtitle: "How can I help you today?", onClose: handleClose });
|
|
464
465
|
};
|
|
465
|
-
const
|
|
466
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
466
|
+
const WindowAdapter = (props) => {
|
|
467
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.Window, { children: props.children });
|
|
467
468
|
};
|
|
468
469
|
const MessagesAdapter = (props) => {
|
|
469
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
470
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkOPWUJP7J_cjs.Messages, { children: props.messages.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
470
471
|
props.RenderMessage,
|
|
471
472
|
{
|
|
472
473
|
message,
|
|
@@ -517,95 +518,98 @@ function CustomCopilotSidebar2({
|
|
|
517
518
|
AssistantMessage: AssistantMessageAdapter,
|
|
518
519
|
UserMessage: UserMessageAdapter,
|
|
519
520
|
Input: InputAdapter,
|
|
520
|
-
Header:
|
|
521
|
-
Window:
|
|
521
|
+
Header: HeaderAdapter,
|
|
522
|
+
Window: WindowAdapter,
|
|
522
523
|
Messages: MessagesAdapter,
|
|
523
524
|
Button: CustomButton,
|
|
524
525
|
instructions,
|
|
525
526
|
labels: {
|
|
526
527
|
title: "AI Assistant",
|
|
527
|
-
initial: "Hi! How can I help you today?"
|
|
528
|
+
initial: "Hi! How can I help you today?",
|
|
529
|
+
...labels
|
|
528
530
|
},
|
|
531
|
+
icons,
|
|
529
532
|
defaultOpen,
|
|
530
|
-
clickOutsideToClose
|
|
531
|
-
hitEscapeToClose
|
|
533
|
+
clickOutsideToClose,
|
|
534
|
+
hitEscapeToClose,
|
|
535
|
+
shortcut,
|
|
532
536
|
onSetOpen,
|
|
533
537
|
className,
|
|
534
538
|
children
|
|
535
539
|
}
|
|
536
540
|
)
|
|
537
541
|
] });
|
|
538
|
-
}
|
|
542
|
+
};
|
|
539
543
|
CustomCopilotSidebar2.displayName = "CustomCopilotSidebar";
|
|
540
544
|
|
|
541
545
|
Object.defineProperty(exports, "Actions", {
|
|
542
546
|
enumerable: true,
|
|
543
|
-
get: function () { return
|
|
547
|
+
get: function () { return chunkOPWUJP7J_cjs.Actions; }
|
|
544
548
|
});
|
|
545
549
|
Object.defineProperty(exports, "AgentState", {
|
|
546
550
|
enumerable: true,
|
|
547
|
-
get: function () { return
|
|
551
|
+
get: function () { return chunkOPWUJP7J_cjs.AgentState; }
|
|
548
552
|
});
|
|
549
553
|
Object.defineProperty(exports, "AssistantMessage", {
|
|
550
554
|
enumerable: true,
|
|
551
|
-
get: function () { return
|
|
555
|
+
get: function () { return chunkOPWUJP7J_cjs.AssistantMessage; }
|
|
552
556
|
});
|
|
553
557
|
Object.defineProperty(exports, "Button", {
|
|
554
558
|
enumerable: true,
|
|
555
|
-
get: function () { return
|
|
559
|
+
get: function () { return chunkOPWUJP7J_cjs.Button; }
|
|
556
560
|
});
|
|
557
561
|
Object.defineProperty(exports, "FileAttachment", {
|
|
558
562
|
enumerable: true,
|
|
559
|
-
get: function () { return
|
|
563
|
+
get: function () { return chunkOPWUJP7J_cjs.FileAttachment; }
|
|
560
564
|
});
|
|
561
565
|
Object.defineProperty(exports, "Footer", {
|
|
562
566
|
enumerable: true,
|
|
563
|
-
get: function () { return
|
|
567
|
+
get: function () { return chunkOPWUJP7J_cjs.Footer; }
|
|
564
568
|
});
|
|
565
569
|
Object.defineProperty(exports, "Header", {
|
|
566
570
|
enumerable: true,
|
|
567
|
-
get: function () { return
|
|
571
|
+
get: function () { return chunkOPWUJP7J_cjs.Header; }
|
|
568
572
|
});
|
|
569
573
|
Object.defineProperty(exports, "Input", {
|
|
570
574
|
enumerable: true,
|
|
571
|
-
get: function () { return
|
|
575
|
+
get: function () { return chunkOPWUJP7J_cjs.Input; }
|
|
572
576
|
});
|
|
573
577
|
Object.defineProperty(exports, "Messages", {
|
|
574
578
|
enumerable: true,
|
|
575
|
-
get: function () { return
|
|
579
|
+
get: function () { return chunkOPWUJP7J_cjs.Messages; }
|
|
576
580
|
});
|
|
577
581
|
Object.defineProperty(exports, "MessagesList", {
|
|
578
582
|
enumerable: true,
|
|
579
|
-
get: function () { return
|
|
583
|
+
get: function () { return chunkOPWUJP7J_cjs.MessagesList; }
|
|
580
584
|
});
|
|
581
585
|
Object.defineProperty(exports, "MessagesListContainer", {
|
|
582
586
|
enumerable: true,
|
|
583
|
-
get: function () { return
|
|
587
|
+
get: function () { return chunkOPWUJP7J_cjs.MessagesListContainer; }
|
|
584
588
|
});
|
|
585
589
|
Object.defineProperty(exports, "MessagesListContent", {
|
|
586
590
|
enumerable: true,
|
|
587
|
-
get: function () { return
|
|
591
|
+
get: function () { return chunkOPWUJP7J_cjs.MessagesListContent; }
|
|
588
592
|
});
|
|
589
593
|
Object.defineProperty(exports, "Response", {
|
|
590
594
|
enumerable: true,
|
|
591
|
-
get: function () { return
|
|
595
|
+
get: function () { return chunkOPWUJP7J_cjs.Response; }
|
|
592
596
|
});
|
|
593
597
|
Object.defineProperty(exports, "Suggestions", {
|
|
594
598
|
enumerable: true,
|
|
595
|
-
get: function () { return
|
|
599
|
+
get: function () { return chunkOPWUJP7J_cjs.Suggestions; }
|
|
596
600
|
});
|
|
597
601
|
Object.defineProperty(exports, "UserMessage", {
|
|
598
602
|
enumerable: true,
|
|
599
|
-
get: function () { return
|
|
603
|
+
get: function () { return chunkOPWUJP7J_cjs.UserMessage2; }
|
|
600
604
|
});
|
|
601
605
|
Object.defineProperty(exports, "Window", {
|
|
602
606
|
enumerable: true,
|
|
603
|
-
get: function () { return
|
|
607
|
+
get: function () { return chunkOPWUJP7J_cjs.Window; }
|
|
604
608
|
});
|
|
605
609
|
exports.AssistantMessageAdapter = AssistantMessageAdapter;
|
|
606
|
-
exports.CustomCopilotSidebar =
|
|
610
|
+
exports.CustomCopilotSidebar = CustomCopilotSidebar;
|
|
607
611
|
exports.InputAdapter = InputAdapter;
|
|
608
|
-
exports.IntegratedSidebar =
|
|
612
|
+
exports.IntegratedSidebar = CustomCopilotSidebar2;
|
|
609
613
|
exports.UserMessageAdapter = UserMessageAdapter;
|
|
610
614
|
//# sourceMappingURL=index.cjs.map
|
|
611
615
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/copilotkit/adapters/AssistantMessageAdapter.tsx","../../src/components/copilotkit/adapters/InputAdapter.tsx","../../src/components/copilotkit/adapters/UserMessageAdapter.tsx","../../src/components/copilotkit/CopilotSidebarIntegration.tsx","../../src/components/copilotkit/CustomCopilotSidebar/CustomCopilotSidebar.tsx"],"names":["jsx","AssistantThinking","AssistantMessage","useState","ChatInput","styled","UserMessage","createGlobalStyle","useChatContext","Header","props","Window","Messages","jsxs","Fragment","CopilotSidebar","GlobalSidebarStyles","StyledChatButton","CustomCopilotSidebar"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Adapter component that bridges custom AssistantMessage with CopilotKit's expected interface\n *\n * This adapter:\n * 1. Converts CopilotKit's AssistantMessageProps to our custom component props\n * 2. Handles loading states by showing AssistantThinking component\n * 3. Extracts message content and renders with our styled component\n */\n\nimport type { AssistantMessageProps as CopilotAssistantMessageProps } from '@copilotkit/react-ui';\nimport type React from 'react';\nimport { AssistantThinking } from '../../AssistantThinking/AssistantThinking';\nimport { AssistantMessage } from '../Messages/AssistantMessage';\n\n/**\n * Adapter that converts CopilotKit's AssistantMessageProps to our custom component\n */\nexport const AssistantMessageAdapter: React.FC<CopilotAssistantMessageProps> = ({\n message,\n isLoading,\n isGenerating,\n // These are available but not used in our current implementation:\n // isCurrentMessage,\n // onRegenerate,\n // onCopy,\n // onThumbsUp,\n // onThumbsDown,\n // markdownTagRenderers,\n // ImageRenderer,\n}) => {\n // Show thinking state when loading (before content arrives)\n if (isLoading) {\n return <AssistantThinking message=\"Thinking...\" />;\n }\n\n // Show thinking state when generating (content is streaming)\n if (isGenerating && !message?.content) {\n return <AssistantThinking message=\"Generating response...\" />;\n }\n\n // Extract content from the message\n const content = message?.content || '';\n\n // Parse attachments if present in the message\n // Note: generativeUI is a function in CopilotKit's AIMessage, not an array\n // For now, we don't extract attachments from the message\n // TODO: Implement proper attachment extraction when CopilotKit supports it\n const attachments: any[] = [];\n\n return (\n <AssistantMessage\n content={content}\n avatarInitials=\"AI\"\n isLoading={isGenerating} // Show loading dots while generating\n attachments={attachments}\n enableMarkdown={true}\n />\n );\n};\n\nAssistantMessageAdapter.displayName = 'AssistantMessageAdapter';\n","/**\n * Adapter component that bridges custom Input with CopilotKit's expected interface\n *\n * This adapter:\n * 1. Converts CopilotKit's InputProps to our custom component props\n * 2. Handles the onSend callback to work with CopilotKit's message system\n * 3. Manages input state and submission\n */\n\nimport type { InputProps as CopilotInputProps } from '@copilotkit/react-ui';\nimport type React from 'react';\nimport { useState } from 'react';\nimport { ChatInput } from '../../ChatInput/ChatInput';\n\n/**\n * Adapter that converts CopilotKit's InputProps to our custom component\n */\nexport const InputAdapter: React.FC<CopilotInputProps> = ({\n inProgress,\n onSend,\n isVisible = true,\n}) => {\n const [value, setValue] = useState('');\n\n const handleSubmit = async (message: string) => {\n if (!message.trim() || inProgress) return;\n\n // Call CopilotKit's onSend which returns a Promise<Message>\n await onSend(message);\n setValue(''); // Clear input after sending\n };\n\n // TODO: Add support for stop button and file upload if needed\n\n return (\n <ChatInput\n value={value}\n onChange={setValue}\n onSubmit={handleSubmit}\n placeholder=\"Ask, write or search for anything...\"\n isDisabled={inProgress}\n autoFocus={isVisible}\n aria-label=\"Chat message input\"\n suggestions={[\n { text: 'Create in-depth analysis' },\n { text: 'Identify actionable tasks' },\n { text: 'Summarize key points' },\n ]}\n onSuggestionSelect={(suggestion) => {\n setValue(suggestion);\n handleSubmit(suggestion);\n }}\n />\n );\n};\n\nInputAdapter.displayName = 'InputAdapter';\n","/**\n * Adapter component that bridges custom UserMessage with CopilotKit's expected interface\n *\n * This adapter:\n * 1. Converts CopilotKit's UserMessageProps to our custom component props\n * 2. Extracts message content from CopilotKit's message object\n * 3. Handles image messages appropriately\n */\n\nimport type { UserMessageProps as CopilotUserMessageProps } from '@copilotkit/react-ui';\nimport type React from 'react';\nimport styled from 'styled-components';\nimport { UserMessage } from '../../UserMessage/UserMessage';\n\n// Wrapper to align user messages to the right\nconst UserMessageWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n width: 100%;\n padding: 8px 0;\n`;\n\n/**\n * Adapter that converts CopilotKit's UserMessageProps to our custom component\n */\nexport const UserMessageAdapter: React.FC<CopilotUserMessageProps> = ({\n message,\n ImageRenderer,\n}) => {\n // Handle image messages\n if (message?.image) {\n return <ImageRenderer image={message.image} content={message.content} />;\n }\n\n // Extract text content\n const content = message?.content || '';\n\n // Our UserMessage is a button-like component with React ARIA\n // In the chat context, it's not interactive, so we don't provide onPress\n return (\n <UserMessageWrapper>\n <UserMessage>{content}</UserMessage>\n </UserMessageWrapper>\n );\n};\n\nUserMessageAdapter.displayName = 'UserMessageAdapter';\n","/**\n * Complete CopilotSidebar Integration Example\n *\n * This file demonstrates how to integrate custom-designed components\n * (AssistantMessage, UserMessage, AssistantThinking, Input) with CopilotKit's\n * CopilotSidebar component using adapter components.\n *\n * Usage:\n * ```tsx\n * import { CopilotKit } from \"@copilotkit/react-core\";\n * import { CustomCopilotSidebar } from \"./CopilotSidebarIntegration\";\n *\n * function App() {\n * return (\n * <CopilotKit runtimeUrl=\"/api/copilotkit\">\n * <CustomCopilotSidebar>\n * <YourApp />\n * </CustomCopilotSidebar>\n * </CopilotKit>\n * );\n * }\n * ```\n */\n\nimport type {\n ButtonProps as CopilotButtonProps,\n HeaderProps as CopilotHeaderProps,\n MessagesProps as CopilotMessagesProps,\n WindowProps as CopilotWindowProps,\n} from '@copilotkit/react-ui';\nimport { CopilotSidebar, useChatContext } from '@copilotkit/react-ui';\nimport type React from 'react';\nimport styled, { createGlobalStyle } from 'styled-components';\nimport { AssistantMessageAdapter, InputAdapter, UserMessageAdapter } from './adapters';\nimport { Header } from './Header/Header';\nimport { Messages } from './Messages/Messages';\nimport { Window } from './Window/Window';\n\n// Global styles to ensure sidebar starts hidden and button visibility\nconst GlobalSidebarStyles = createGlobalStyle`\n /* Override CopilotKit's default positioning - start off-screen */\n .copilotKitSidebar {\n position: fixed !important;\n right: -100vw !important;\n bottom: 0 !important;\n transition: right 0.3s ease !important;\n }\n\n /* Move sidebar container into view when expanded */\n .copilotKitSidebarContentWrapper.sidebarExpanded .copilotKitSidebar {\n right: 0 !important;\n }\n\n /* Mobile-first: Full viewport sidebar */\n .copilotKitSidebar .copilotKitWindow {\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n margin: 0 !important;\n border-radius: 0 !important;\n z-index: 1001 !important;\n\n transform: translateX(100%) !important;\n visibility: hidden !important;\n pointer-events: none !important;\n opacity: 0 !important;\n display: none !important;\n\n transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;\n }\n\n /* When window has .open class (CopilotKit's native class), show it */\n .copilotKitSidebar .copilotKitWindow.open {\n display: flex !important;\n transform: translateX(0) !important;\n visibility: visible !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n }\n\n /* Desktop: Sidebar panel on the right (640px = CopilotKit's breakpoint) */\n @media (min-width: 640px) {\n .copilotKitSidebar .copilotKitWindow {\n inset: auto !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 28rem !important;\n height: 100vh !important;\n max-width: 28rem !important;\n max-height: 100vh !important;\n }\n }\n\n /* Hide button when sidebar is open */\n .copilotKitSidebarContentWrapper.sidebarExpanded {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: none !important;\n }\n }\n\n /* Show button when sidebar is closed */\n .copilotKitSidebarContentWrapper:not(.sidebarExpanded) {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: flex !important;\n }\n }\n\n /* Override CopilotKit's default message styles with our custom components */\n .copilotKitSidebar {\n /* Reset all default CopilotKit message styling */\n [class*=\"copilotKitMessage\"],\n [class*=\"Message-module\"] {\n all: unset !important;\n display: contents !important;\n }\n\n /* Ensure our custom UserMessage gradient pill shows through */\n button[role=\"presentation\"] {\n all: revert !important;\n display: inline-flex !important;\n }\n\n /* Reset input styles to allow our custom ChatInput */\n [class*=\"Input-module\"],\n [class*=\"copilotKitInput\"] {\n all: unset !important;\n display: contents !important;\n }\n\n /* Reset header styles */\n [class*=\"Header-module\"],\n [class*=\"copilotKitHeader\"] {\n all: unset !important;\n display: contents !important;\n }\n }\n`;\n\n// Styled button positioned in the bottom-right corner\nconst StyledChatButton = styled.button`\n position: fixed;\n bottom: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n border-radius: 18px;\n border: none;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1000;\n transition: all 0.2s ease;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 16px rgba(102, 126, 234, 0.5);\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 20px;\n height: 20px;\n fill: white;\n }\n`;\n\nexport interface CustomCopilotSidebarProps {\n /**\n * Children to render alongside the sidebar\n */\n children?: React.ReactNode;\n /**\n * Instructions for the AI assistant\n */\n instructions?: string;\n /**\n * Custom labels for the sidebar\n */\n labels?: {\n title?: string;\n initial?: string;\n };\n /**\n * Custom icons\n */\n icons?: Record<string, React.ReactNode>;\n /**\n * Whether the sidebar starts open\n */\n defaultOpen?: boolean;\n /**\n * Allow closing by clicking outside\n */\n clickOutsideToClose?: boolean;\n /**\n * Allow closing with Escape key\n */\n hitEscapeToClose?: boolean;\n /**\n * Keyboard shortcut to open\n */\n shortcut?: string;\n /**\n * Callback when open state changes\n */\n onSetOpen?: (open: boolean) => void;\n /**\n * CSS class name\n */\n className?: string;\n}\n\n/**\n * CopilotSidebar with custom-designed components\n *\n * This component wraps CopilotKit's CopilotSidebar and injects our\n * custom components via adapter components.\n *\n * Features:\n * - Custom AssistantMessage with avatar and loading states\n * - AssistantThinking component shown during loading\n * - Custom UserMessage with gradient pill design\n * - Custom Input with React ARIA accessibility\n * - Styled chat button with gradient\n */\nexport const CustomCopilotSidebar: React.FC<CustomCopilotSidebarProps> = ({\n children,\n instructions = 'You are a helpful AI assistant.',\n labels,\n icons,\n defaultOpen = false,\n clickOutsideToClose = true,\n hitEscapeToClose = true,\n shortcut = '/',\n onSetOpen,\n className,\n ...props\n}) => {\n // Header adapter with close handler\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const HeaderAdapter = (_props: CopilotHeaderProps) => {\n const { setOpen } = useChatContext();\n\n const handleClose = () => {\n setOpen(false);\n onSetOpen?.(false);\n };\n\n return (\n <Header title=\"AI Assistant\" subtitle=\"How can I help you today?\" onClose={handleClose} />\n );\n };\n\n // Window adapter - wraps our custom Window component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const WindowAdapter = (props: CopilotWindowProps) => {\n return <Window>{props.children}</Window>;\n };\n\n // Messages adapter - wraps our custom Messages component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const MessagesAdapter = (props: CopilotMessagesProps) => {\n return (\n <Messages>\n {props.messages.map((message, index) => (\n <props.RenderMessage\n key={message.id || `message-${index}`}\n message={message}\n inProgress={props.inProgress}\n index={index}\n isCurrentMessage={index === props.messages.length - 1}\n />\n ))}\n </Messages>\n );\n };\n\n // Custom Button component that uses CopilotKit's ChatContext\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const CustomButton = (_props: CopilotButtonProps) => {\n const { open, setOpen } = useChatContext();\n\n const handleClick = () => {\n const newOpenState = !open;\n setOpen(newOpenState);\n onSetOpen?.(newOpenState);\n };\n\n return (\n <StyledChatButton\n onClick={handleClick}\n aria-label={open ? 'Close chat' : 'Open chat'}\n type=\"button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Chat icon\"\n >\n <title>Chat</title>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </svg>\n </StyledChatButton>\n );\n };\n\n return (\n <>\n <GlobalSidebarStyles />\n <CopilotSidebar\n // Pass through custom components via adapters\n AssistantMessage={AssistantMessageAdapter}\n UserMessage={UserMessageAdapter}\n Input={InputAdapter}\n Header={HeaderAdapter}\n Window={WindowAdapter}\n Messages={MessagesAdapter}\n Button={CustomButton}\n // Configuration\n instructions={instructions}\n labels={{\n title: 'AI Assistant',\n initial: 'Hi! How can I help you today?',\n ...labels,\n }}\n icons={icons}\n // Behavior\n defaultOpen={defaultOpen}\n clickOutsideToClose={clickOutsideToClose}\n hitEscapeToClose={hitEscapeToClose}\n shortcut={shortcut}\n onSetOpen={onSetOpen}\n // Styling\n className={className}\n // Other props\n {...props}\n >\n {children}\n </CopilotSidebar>\n </>\n );\n};\n\nCustomCopilotSidebar.displayName = 'CustomCopilotSidebar';\n","import type {\n ButtonProps as CopilotButtonProps,\n HeaderProps as CopilotHeaderProps,\n MessagesProps as CopilotMessagesProps,\n WindowProps as CopilotWindowProps,\n} from '@copilotkit/react-ui';\nimport { CopilotSidebar, useChatContext } from '@copilotkit/react-ui';\nimport type { ReactNode } from 'react';\nimport styled, { createGlobalStyle } from 'styled-components';\nimport { AssistantMessageAdapter, InputAdapter, UserMessageAdapter } from '../adapters';\nimport { Header } from '../Header/Header';\nimport { Messages } from '../Messages/Messages';\nimport { Window } from '../Window/Window';\n\n// Global styles to ensure sidebar starts hidden and button visibility\nconst GlobalSidebarStyles = createGlobalStyle`\n /* Override CopilotKit's default positioning - start off-screen */\n .copilotKitSidebar {\n position: fixed !important;\n right: -100vw !important;\n bottom: 0 !important;\n transition: right 0.3s ease !important;\n }\n\n /* Move sidebar container into view when expanded */\n .copilotKitSidebarContentWrapper.sidebarExpanded .copilotKitSidebar {\n right: 0 !important;\n }\n\n /* Mobile-first: Full viewport sidebar */\n .copilotKitSidebar .copilotKitWindow {\n /* Override CopilotKit defaults for mobile */\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n margin: 0 !important;\n border-radius: 0 !important;\n z-index: 1001 !important;\n\n /* Hidden by default - translateX(100%) moves it off-screen to the right */\n transform: translateX(100%) !important;\n visibility: hidden !important;\n pointer-events: none !important;\n opacity: 0 !important;\n display: none !important;\n\n /* Smooth slide transition */\n transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;\n }\n\n /* When window has .open class (CopilotKit's native class), show it */\n .copilotKitSidebar .copilotKitWindow.open {\n display: flex !important;\n transform: translateX(0) !important;\n visibility: visible !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n }\n\n /* Desktop: Sidebar panel on the right (640px = CopilotKit's breakpoint) */\n @media (min-width: 640px) {\n .copilotKitSidebar .copilotKitWindow {\n inset: auto !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 28rem !important;\n height: 100vh !important;\n max-width: 28rem !important;\n max-height: 100vh !important;\n }\n }\n\n /* Hide button when sidebar is open */\n .copilotKitSidebarContentWrapper.sidebarExpanded {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: none !important;\n }\n }\n\n /* Show button when sidebar is closed */\n .copilotKitSidebarContentWrapper:not(.sidebarExpanded) {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: flex !important;\n }\n }\n`;\n\n// Styled button positioned in the bottom-right corner\nconst StyledChatButton = styled.button`\n position: fixed;\n bottom: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n border-radius: 18px;\n border: none;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1000;\n transition: all 0.2s ease;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 16px rgba(102, 126, 234, 0.5);\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 20px;\n height: 20px;\n fill: white;\n }\n`;\n\nexport interface CustomCopilotSidebarProps {\n children: ReactNode;\n defaultOpen?: boolean;\n onSetOpen?: (open: boolean) => void;\n instructions?: string;\n className?: string;\n}\n\n/**\n * CustomCopilotSidebar - A CopilotSidebar wrapper using our custom components\n *\n * This component wraps CopilotKit's CopilotSidebar and provides our custom\n * design system components for a consistent look and feel.\n *\n * @example\n * ```tsx\n * <CustomCopilotSidebar defaultOpen={false} onSetOpen={(open) => console.log(open)}>\n * <YourApp />\n * </CustomCopilotSidebar>\n * ```\n */\nexport function CustomCopilotSidebar({\n children,\n defaultOpen = false,\n onSetOpen,\n instructions,\n className,\n}: CustomCopilotSidebarProps) {\n // Header adapter with close handler\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const HeaderAdapterWithClose = (_props: CopilotHeaderProps) => {\n const { setOpen } = useChatContext();\n\n const handleClose = () => {\n setOpen(false);\n onSetOpen?.(false);\n };\n\n return (\n <Header title=\"AI Assistant\" subtitle=\"How can I help you today?\" onClose={handleClose} />\n );\n };\n\n // Window adapter - wraps our custom Window component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const WindowAdapterLocal = (props: CopilotWindowProps) => {\n return <Window>{props.children}</Window>;\n };\n\n // Messages adapter - wraps our custom Messages component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const MessagesAdapter = (props: CopilotMessagesProps) => {\n return (\n <Messages>\n {props.messages.map((message, index) => (\n <props.RenderMessage\n key={message.id || `message-${index}`}\n message={message}\n inProgress={props.inProgress}\n index={index}\n isCurrentMessage={index === props.messages.length - 1}\n />\n ))}\n </Messages>\n );\n };\n\n // Custom Button component that uses CopilotKit's ChatContext\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const CustomButton = (_props: CopilotButtonProps) => {\n const { open, setOpen } = useChatContext();\n\n const handleClick = () => {\n const newOpenState = !open;\n setOpen(newOpenState);\n onSetOpen?.(newOpenState);\n };\n\n return (\n <StyledChatButton\n onClick={handleClick}\n aria-label={open ? 'Close chat' : 'Open chat'}\n type=\"button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Chat icon\"\n >\n <title>Chat</title>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </svg>\n </StyledChatButton>\n );\n };\n\n return (\n <>\n <GlobalSidebarStyles />\n <CopilotSidebar\n // Pass through custom components via adapters\n AssistantMessage={AssistantMessageAdapter}\n UserMessage={UserMessageAdapter}\n Input={InputAdapter}\n Header={HeaderAdapterWithClose}\n Window={WindowAdapterLocal}\n Messages={MessagesAdapter}\n Button={CustomButton}\n // Configuration\n instructions={instructions}\n labels={{\n title: 'AI Assistant',\n initial: 'Hi! How can I help you today?',\n }}\n // Behavior\n defaultOpen={defaultOpen}\n clickOutsideToClose={true}\n hitEscapeToClose={true}\n onSetOpen={onSetOpen}\n // Styling\n className={className}\n >\n {children}\n </CopilotSidebar>\n </>\n );\n}\n\nCustomCopilotSidebar.displayName = 'CustomCopilotSidebar';\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/copilotkit/adapters/AssistantMessageAdapter.tsx","../../src/components/copilotkit/adapters/UserMessageAdapter.tsx","../../src/components/copilotkit/adapters/InputAdapter.tsx","../../src/components/copilotkit/CustomCopilotSidebar/CustomCopilotSidebar.tsx","../../src/components/copilotkit/CopilotSidebarIntegration.tsx"],"names":["jsx","AssistantThinking","AssistantMessage","styled","UserMessage","useState","ChatInput","createGlobalStyle","useChatContext","Header","Window","Messages","jsxs","Fragment","CopilotSidebar","GlobalSidebarStyles","StyledChatButton","CustomCopilotSidebar"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Adapter component that bridges custom AssistantMessage with CopilotKit's expected interface\n *\n * This adapter:\n * 1. Converts CopilotKit's AssistantMessageProps to our custom component props\n * 2. Handles loading states by showing AssistantThinking component\n * 3. Extracts message content and renders with our styled component\n */\n\nimport type React from 'react';\nimport type { AssistantMessageProps as CopilotAssistantMessageProps } from '@copilotkit/react-ui';\nimport { AssistantMessage } from '../Messages/AssistantMessage';\nimport { AssistantThinking } from '../../AssistantThinking/AssistantThinking';\n\n/**\n * Adapter that converts CopilotKit's AssistantMessageProps to our custom component\n */\nexport const AssistantMessageAdapter: React.FC<CopilotAssistantMessageProps> = ({\n message,\n isLoading,\n isGenerating,\n // These are available but not used in our current implementation:\n // isCurrentMessage,\n // onRegenerate,\n // onCopy,\n // onThumbsUp,\n // onThumbsDown,\n // markdownTagRenderers,\n // ImageRenderer,\n}) => {\n // Show thinking state when loading (before content arrives)\n if (isLoading) {\n return <AssistantThinking message=\"Thinking...\" />;\n }\n\n // Show thinking state when generating (content is streaming)\n if (isGenerating && !message?.content) {\n return <AssistantThinking message=\"Generating response...\" />;\n }\n\n // Extract content from the message\n const content = message?.content || '';\n\n // Parse attachments if present in the message\n // TODO: Implement attachments parsing from CopilotKit message data\n const attachments: any[] = [];\n\n return (\n <AssistantMessage\n content={content}\n avatarInitials=\"AI\"\n isLoading={isGenerating} // Show loading dots while generating\n attachments={attachments}\n enableMarkdown={true}\n />\n );\n};\n\nAssistantMessageAdapter.displayName = 'AssistantMessageAdapter';\n","/**\n * Adapter component that bridges custom UserMessage with CopilotKit's expected interface\n *\n * This adapter:\n * 1. Converts CopilotKit's UserMessageProps to our custom component props\n * 2. Extracts message content from CopilotKit's message object\n * 3. Handles image messages appropriately\n */\n\nimport type React from 'react';\nimport type { UserMessageProps as CopilotUserMessageProps } from '@copilotkit/react-ui';\nimport styled from 'styled-components';\nimport { UserMessage } from '../../UserMessage/UserMessage';\n\n// Wrapper to align user messages to the right\nconst UserMessageWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n width: 100%;\n padding: 8px 0;\n`;\n\n/**\n * Adapter that converts CopilotKit's UserMessageProps to our custom component\n */\nexport const UserMessageAdapter: React.FC<CopilotUserMessageProps> = ({\n message,\n ImageRenderer,\n}) => {\n // Handle image messages\n if (message?.image) {\n return (\n <ImageRenderer\n image={message.image}\n content={message.content}\n />\n );\n }\n\n // Extract text content\n const content = message?.content || '';\n\n // Our UserMessage is a button-like component with React ARIA\n // In the chat context, it's not interactive, so we don't provide onPress\n return (\n <UserMessageWrapper>\n <UserMessage>\n {content}\n </UserMessage>\n </UserMessageWrapper>\n );\n};\n\nUserMessageAdapter.displayName = 'UserMessageAdapter';\n","/**\n * Adapter component that bridges custom Input with CopilotKit's expected interface\n *\n * This adapter:\n * 1. Converts CopilotKit's InputProps to our custom component props\n * 2. Handles the onSend callback to work with CopilotKit's message system\n * 3. Manages input state and submission\n */\n\nimport { useState } from 'react';\nimport type React from 'react';\nimport type { InputProps as CopilotInputProps } from '@copilotkit/react-ui';\nimport { ChatInput } from '../../ChatInput/ChatInput';\n\n/**\n * Adapter that converts CopilotKit's InputProps to our custom component\n */\nexport const InputAdapter: React.FC<CopilotInputProps> = ({\n inProgress,\n onSend,\n isVisible = true,\n}) => {\n const [value, setValue] = useState('');\n\n const handleSubmit = async (message: string) => {\n if (!message.trim() || inProgress) return;\n\n // Call CopilotKit's onSend which returns a Promise<Message>\n await onSend(message);\n setValue(''); // Clear input after sending\n };\n\n // TODO: Add support for stop button and file upload if needed\n\n return (\n <ChatInput\n value={value}\n onChange={setValue}\n onSubmit={handleSubmit}\n placeholder=\"Ask, write or search for anything...\"\n isDisabled={inProgress}\n autoFocus={isVisible}\n aria-label=\"Chat message input\"\n suggestions={[\n { text: 'Create in-depth analysis' },\n { text: 'Identify actionable tasks' },\n { text: 'Summarize key points' },\n ]}\n onSuggestionSelect={(suggestion) => {\n setValue(suggestion);\n handleSubmit(suggestion);\n }}\n />\n );\n};\n\nInputAdapter.displayName = 'InputAdapter';\n","import type {\n ButtonProps as CopilotButtonProps,\n HeaderProps as CopilotHeaderProps,\n MessagesProps as CopilotMessagesProps,\n WindowProps as CopilotWindowProps,\n} from '@copilotkit/react-ui';\nimport { CopilotSidebar, useChatContext } from '@copilotkit/react-ui';\nimport type { ReactNode } from 'react';\nimport styled, { createGlobalStyle } from 'styled-components';\nimport {\n AssistantMessageAdapter,\n UserMessageAdapter,\n InputAdapter,\n} from '../adapters';\nimport { Header } from '../Header/Header';\nimport { Messages } from '../Messages/Messages';\nimport { Window } from '../Window/Window';\n\n// Global styles to ensure sidebar starts hidden and button visibility\nconst GlobalSidebarStyles = createGlobalStyle`\n /* Override CopilotKit's default positioning - start off-screen */\n .copilotKitSidebar {\n position: fixed !important;\n right: -100vw !important;\n bottom: 0 !important;\n transition: right 0.3s ease !important;\n }\n\n /* Move sidebar container into view when expanded */\n .copilotKitSidebarContentWrapper.sidebarExpanded .copilotKitSidebar {\n right: 0 !important;\n }\n\n /* Mobile-first: Full viewport sidebar */\n .copilotKitSidebar .copilotKitWindow {\n /* Override CopilotKit defaults for mobile */\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n margin: 0 !important;\n border-radius: 0 !important;\n z-index: 1001 !important;\n\n /* Hidden by default - translateX(100%) moves it off-screen to the right */\n transform: translateX(100%) !important;\n visibility: hidden !important;\n pointer-events: none !important;\n opacity: 0 !important;\n display: none !important;\n\n /* Smooth slide transition */\n transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;\n }\n\n /* When window has .open class (CopilotKit's native class), show it */\n .copilotKitSidebar .copilotKitWindow.open {\n display: flex !important;\n transform: translateX(0) !important;\n visibility: visible !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n }\n\n /* Desktop: Sidebar panel on the right (640px = CopilotKit's breakpoint) */\n @media (min-width: 640px) {\n .copilotKitSidebar .copilotKitWindow {\n inset: auto !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 28rem !important;\n height: 100vh !important;\n max-width: 28rem !important;\n max-height: 100vh !important;\n }\n }\n\n /* Hide button when sidebar is open */\n .copilotKitSidebarContentWrapper.sidebarExpanded {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: none !important;\n }\n }\n\n /* Show button when sidebar is closed */\n .copilotKitSidebarContentWrapper:not(.sidebarExpanded) {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: flex !important;\n }\n }\n`;\n\n// Styled button positioned in the bottom-right corner\nconst StyledChatButton = styled.button`\n position: fixed;\n bottom: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n border-radius: 18px;\n border: none;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1000;\n transition: all 0.2s ease;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 16px rgba(102, 126, 234, 0.5);\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 20px;\n height: 20px;\n fill: white;\n }\n`;\n\nexport interface CustomCopilotSidebarProps {\n children: ReactNode;\n defaultOpen?: boolean;\n onSetOpen?: (open: boolean) => void;\n instructions?: string;\n className?: string;\n}\n\n/**\n * CustomCopilotSidebar - A CopilotSidebar wrapper using our custom components\n *\n * This component wraps CopilotKit's CopilotSidebar and provides our custom\n * design system components for a consistent look and feel.\n *\n * @example\n * ```tsx\n * <CustomCopilotSidebar defaultOpen={false} onSetOpen={(open) => console.log(open)}>\n * <YourApp />\n * </CustomCopilotSidebar>\n * ```\n */\nexport function CustomCopilotSidebar({\n children,\n defaultOpen = false,\n onSetOpen,\n instructions,\n className,\n}: CustomCopilotSidebarProps) {\n // Header adapter with close handler\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const HeaderAdapterWithClose = (_props: CopilotHeaderProps) => {\n const { setOpen } = useChatContext();\n\n const handleClose = () => {\n setOpen(false);\n onSetOpen?.(false);\n };\n\n return (\n <Header title=\"AI Assistant\" subtitle=\"How can I help you today?\" onClose={handleClose} />\n );\n };\n\n // Window adapter - wraps our custom Window component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const WindowAdapterLocal = (props: CopilotWindowProps) => {\n return <Window>{props.children}</Window>;\n };\n\n // Messages adapter - wraps our custom Messages component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const MessagesAdapter = (props: CopilotMessagesProps) => {\n return (\n <Messages>\n {props.messages.map((message, index) => (\n <props.RenderMessage\n key={message.id || `message-${index}`}\n message={message}\n inProgress={props.inProgress}\n index={index}\n isCurrentMessage={index === props.messages.length - 1}\n />\n ))}\n </Messages>\n );\n };\n\n // Custom Button component that uses CopilotKit's ChatContext\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const CustomButton = (_props: CopilotButtonProps) => {\n const { open, setOpen } = useChatContext();\n\n const handleClick = () => {\n const newOpenState = !open;\n setOpen(newOpenState);\n onSetOpen?.(newOpenState);\n };\n\n return (\n <StyledChatButton\n onClick={handleClick}\n aria-label={open ? 'Close chat' : 'Open chat'}\n type=\"button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Chat icon\"\n >\n <title>Chat</title>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </svg>\n </StyledChatButton>\n );\n };\n\n return (\n <>\n <GlobalSidebarStyles />\n <CopilotSidebar\n // Pass through custom components via adapters\n AssistantMessage={AssistantMessageAdapter}\n UserMessage={UserMessageAdapter}\n Input={InputAdapter}\n Header={HeaderAdapterWithClose}\n Window={WindowAdapterLocal}\n Messages={MessagesAdapter}\n Button={CustomButton}\n\n // Configuration\n instructions={instructions}\n labels={{\n title: 'AI Assistant',\n initial: 'Hi! How can I help you today?',\n }}\n\n // Behavior\n defaultOpen={defaultOpen}\n clickOutsideToClose={true}\n hitEscapeToClose={true}\n onSetOpen={onSetOpen}\n\n // Styling\n className={className}\n >\n {children}\n </CopilotSidebar>\n </>\n );\n}\n\nCustomCopilotSidebar.displayName = 'CustomCopilotSidebar';\n","/**\n * Complete CopilotSidebar Integration Example\n *\n * This file demonstrates how to integrate custom-designed components\n * (AssistantMessage, UserMessage, AssistantThinking, Input) with CopilotKit's\n * CopilotSidebar component using adapter components.\n *\n * Usage:\n * ```tsx\n * import { CopilotKit } from \"@copilotkit/react-core\";\n * import { CustomCopilotSidebar } from \"./CopilotSidebarIntegration\";\n *\n * function App() {\n * return (\n * <CopilotKit runtimeUrl=\"/api/copilotkit\">\n * <CustomCopilotSidebar>\n * <YourApp />\n * </CustomCopilotSidebar>\n * </CopilotKit>\n * );\n * }\n * ```\n */\n\nimport type React from 'react';\nimport { CopilotSidebar, useChatContext } from '@copilotkit/react-ui';\nimport type {\n ButtonProps as CopilotButtonProps,\n HeaderProps as CopilotHeaderProps,\n WindowProps as CopilotWindowProps,\n MessagesProps as CopilotMessagesProps,\n} from '@copilotkit/react-ui';\nimport styled, { createGlobalStyle } from 'styled-components';\nimport {\n AssistantMessageAdapter,\n UserMessageAdapter,\n InputAdapter,\n} from './adapters';\nimport { Header } from './Header/Header';\nimport { Window } from './Window/Window';\nimport { Messages } from './Messages/Messages';\n\n// Global styles to ensure sidebar starts hidden and button visibility\nconst GlobalSidebarStyles = createGlobalStyle`\n /* Override CopilotKit's default positioning - start off-screen */\n .copilotKitSidebar {\n position: fixed !important;\n right: -100vw !important;\n bottom: 0 !important;\n transition: right 0.3s ease !important;\n }\n\n /* Move sidebar container into view when expanded */\n .copilotKitSidebarContentWrapper.sidebarExpanded .copilotKitSidebar {\n right: 0 !important;\n }\n\n /* Mobile-first: Full viewport sidebar */\n .copilotKitSidebar .copilotKitWindow {\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n margin: 0 !important;\n border-radius: 0 !important;\n z-index: 1001 !important;\n\n transform: translateX(100%) !important;\n visibility: hidden !important;\n pointer-events: none !important;\n opacity: 0 !important;\n display: none !important;\n\n transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;\n }\n\n /* When window has .open class (CopilotKit's native class), show it */\n .copilotKitSidebar .copilotKitWindow.open {\n display: flex !important;\n transform: translateX(0) !important;\n visibility: visible !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n }\n\n /* Desktop: Sidebar panel on the right (640px = CopilotKit's breakpoint) */\n @media (min-width: 640px) {\n .copilotKitSidebar .copilotKitWindow {\n inset: auto !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: auto !important;\n width: 28rem !important;\n height: 100vh !important;\n max-width: 28rem !important;\n max-height: 100vh !important;\n }\n }\n\n /* Hide button when sidebar is open */\n .copilotKitSidebarContentWrapper.sidebarExpanded {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: none !important;\n }\n }\n\n /* Show button when sidebar is closed */\n .copilotKitSidebarContentWrapper:not(.sidebarExpanded) {\n button[aria-label=\"Open chat\"],\n button[aria-label=\"Close chat\"] {\n display: flex !important;\n }\n }\n\n /* Override CopilotKit's default message styles with our custom components */\n .copilotKitSidebar {\n /* Reset all default CopilotKit message styling */\n [class*=\"copilotKitMessage\"],\n [class*=\"Message-module\"] {\n all: unset !important;\n display: contents !important;\n }\n\n /* Ensure our custom UserMessage gradient pill shows through */\n button[role=\"presentation\"] {\n all: revert !important;\n display: inline-flex !important;\n }\n\n /* Reset input styles to allow our custom ChatInput */\n [class*=\"Input-module\"],\n [class*=\"copilotKitInput\"] {\n all: unset !important;\n display: contents !important;\n }\n\n /* Reset header styles */\n [class*=\"Header-module\"],\n [class*=\"copilotKitHeader\"] {\n all: unset !important;\n display: contents !important;\n }\n }\n`;\n\n// Styled button positioned in the bottom-right corner\nconst StyledChatButton = styled.button`\n position: fixed;\n bottom: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n border-radius: 18px;\n border: none;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1000;\n transition: all 0.2s ease;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 16px rgba(102, 126, 234, 0.5);\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 20px;\n height: 20px;\n fill: white;\n }\n`;\n\nexport interface CustomCopilotSidebarProps {\n /**\n * Children to render alongside the sidebar\n */\n children?: React.ReactNode;\n /**\n * Instructions for the AI assistant\n */\n instructions?: string;\n /**\n * Custom labels for the UI\n */\n labels?: Record<string, string>;\n /**\n * Custom icons for the UI\n */\n icons?: Record<string, React.ReactNode>;\n /**\n * Whether the sidebar should be open by default\n */\n defaultOpen?: boolean;\n /**\n * Whether clicking outside should close the sidebar\n */\n clickOutsideToClose?: boolean;\n /**\n * Whether hitting escape should close the sidebar\n */\n hitEscapeToClose?: boolean;\n /**\n * Keyboard shortcut to open the sidebar\n */\n shortcut?: string;\n /**\n * Callback when the sidebar open state changes\n */\n onSetOpen?: (open: boolean) => void;\n /**\n * Additional CSS class name\n */\n className?: string;\n}\n\n/**\n * CopilotSidebar with custom-designed components\n *\n * This component wraps CopilotKit's CopilotSidebar and injects our\n * custom components via adapter components.\n *\n * Features:\n * - Custom AssistantMessage with avatar and loading states\n * - AssistantThinking component shown during loading\n * - Custom UserMessage with gradient pill design\n * - Custom Input with React ARIA accessibility\n * - Styled chat button with gradient\n */\nexport const CustomCopilotSidebar: React.FC<CustomCopilotSidebarProps> = ({\n children,\n instructions = \"You are a helpful AI assistant.\",\n labels,\n icons,\n defaultOpen = false,\n clickOutsideToClose = true,\n hitEscapeToClose = true,\n shortcut = '/',\n onSetOpen,\n className,\n}) => {\n // Header adapter with close handler\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const HeaderAdapter = (_props: CopilotHeaderProps) => {\n const { setOpen } = useChatContext();\n\n const handleClose = () => {\n setOpen(false);\n onSetOpen?.(false);\n };\n\n return (\n <Header title=\"AI Assistant\" subtitle=\"How can I help you today?\" onClose={handleClose} />\n );\n };\n\n // Window adapter - wraps our custom Window component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const WindowAdapter = (props: CopilotWindowProps) => {\n return <Window>{props.children}</Window>;\n };\n\n // Messages adapter - wraps our custom Messages component\n // biome-ignore lint/correctness/noNestedComponentDefinitions: Simple adapter component\n const MessagesAdapter = (props: CopilotMessagesProps) => {\n return (\n <Messages>\n {props.messages.map((message, index) => (\n <props.RenderMessage\n key={message.id || `message-${index}`}\n message={message}\n inProgress={props.inProgress}\n index={index}\n isCurrentMessage={index === props.messages.length - 1}\n />\n ))}\n </Messages>\n );\n };\n\n // Custom Button component that uses CopilotKit's ChatContext\n // biome-ignore lint/correctness/noNestedComponentDefinitions: This component must be defined here to access CopilotKit's ChatContext and the onSetOpen prop\n const CustomButton = (_props: CopilotButtonProps) => {\n const { open, setOpen } = useChatContext();\n\n const handleClick = () => {\n const newOpenState = !open;\n setOpen(newOpenState);\n onSetOpen?.(newOpenState);\n };\n\n return (\n <StyledChatButton\n onClick={handleClick}\n aria-label={open ? 'Close chat' : 'Open chat'}\n type=\"button\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Chat icon\"\n >\n <title>Chat</title>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </svg>\n </StyledChatButton>\n );\n };\n\n return (\n <>\n <GlobalSidebarStyles />\n <CopilotSidebar\n // Pass through custom components via adapters\n AssistantMessage={AssistantMessageAdapter}\n UserMessage={UserMessageAdapter}\n Input={InputAdapter}\n Header={HeaderAdapter}\n Window={WindowAdapter}\n Messages={MessagesAdapter}\n Button={CustomButton}\n\n // Configuration\n instructions={instructions}\n labels={{\n title: \"AI Assistant\",\n initial: \"Hi! How can I help you today?\",\n ...labels,\n }}\n icons={icons}\n\n // Behavior\n defaultOpen={defaultOpen}\n clickOutsideToClose={clickOutsideToClose}\n hitEscapeToClose={hitEscapeToClose}\n shortcut={shortcut}\n onSetOpen={onSetOpen}\n\n // Styling\n className={className}\n >\n {children}\n </CopilotSidebar>\n </>\n );\n};\n\nCustomCopilotSidebar.displayName = 'CustomCopilotSidebar';\n"]}
|