@agentiffai/design 1.3.6 → 1.3.7

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,14 +2,14 @@
2
2
 
3
3
  var button = require('@react-aria/button');
4
4
  var react = require('react');
5
- var styled4 = require('styled-components');
5
+ var styled8 = require('styled-components');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var reactUi = require('@copilotkit/react-ui');
8
8
  var textfield = require('@react-aria/textfield');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
- var styled4__default = /*#__PURE__*/_interopDefault(styled4);
12
+ var styled8__default = /*#__PURE__*/_interopDefault(styled8);
13
13
 
14
14
  // src/components/copilotkit/Button/Button.tsx
15
15
 
@@ -170,7 +170,7 @@ var tokens = {
170
170
 
171
171
  // src/components/copilotkit/Button/Button.styles.ts
172
172
  var variantStyles = {
173
- primary: styled4.css`
173
+ primary: styled8.css`
174
174
  background-color: ${tokens.colors.primary};
175
175
  color: ${tokens.colors.text.primary};
176
176
  border: none;
@@ -190,7 +190,7 @@ var variantStyles = {
190
190
  outline-offset: 2px;
191
191
  }
192
192
  `,
193
- secondary: styled4.css`
193
+ secondary: styled8.css`
194
194
  background-color: transparent;
195
195
  color: ${tokens.colors.text.primary};
196
196
  border: 1px solid ${tokens.colors.border.default};
@@ -209,7 +209,7 @@ var variantStyles = {
209
209
  outline-offset: 2px;
210
210
  }
211
211
  `,
212
- icon: styled4.css`
212
+ icon: styled8.css`
213
213
  background-color: transparent;
214
214
  color: ${tokens.colors.text.primary};
215
215
  border: none;
@@ -232,26 +232,26 @@ var variantStyles = {
232
232
  `
233
233
  };
234
234
  var sizeStyles = {
235
- small: styled4.css`
235
+ small: styled8.css`
236
236
  padding: ${tokens.spacing.xs} ${tokens.spacing.sm};
237
237
  font-size: ${tokens.typography.fontSize.sm};
238
238
  min-width: 60px;
239
239
  height: 28px;
240
240
  `,
241
- medium: styled4.css`
241
+ medium: styled8.css`
242
242
  padding: ${tokens.spacing.sm} ${tokens.spacing.md};
243
243
  font-size: ${tokens.typography.fontSize.base};
244
244
  min-width: 80px;
245
245
  height: 36px;
246
246
  `,
247
- large: styled4.css`
247
+ large: styled8.css`
248
248
  padding: ${tokens.spacing.md} ${tokens.spacing.lg};
249
249
  font-size: ${tokens.typography.fontSize.lg};
250
250
  min-width: 100px;
251
251
  height: 44px;
252
252
  `
253
253
  };
254
- var StyledButton = styled4__default.default.button`
254
+ var StyledButton = styled8__default.default.button`
255
255
  /* Base styles */
256
256
  display: inline-flex;
257
257
  align-items: center;
@@ -272,19 +272,19 @@ var StyledButton = styled4__default.default.button`
272
272
  ${({ $size, $variant }) => $variant !== "icon" && sizeStyles[$size]}
273
273
 
274
274
  /* Icon variant size overrides */
275
- ${({ $variant, $size }) => $variant === "icon" && styled4.css`
275
+ ${({ $variant, $size }) => $variant === "icon" && styled8.css`
276
276
  width: ${$size === "small" ? "28px" : $size === "large" ? "44px" : "36px"};
277
277
  height: ${$size === "small" ? "28px" : $size === "large" ? "44px" : "36px"};
278
278
  border-radius: ${tokens.borderRadius.sm};
279
279
  `}
280
280
 
281
281
  /* Pressed state */
282
- ${({ $isPressed }) => $isPressed && styled4.css`
282
+ ${({ $isPressed }) => $isPressed && styled8.css`
283
283
  transform: scale(0.98);
284
284
  `}
285
285
 
286
286
  /* Loading state */
287
- ${({ $isLoading }) => $isLoading && styled4.css`
287
+ ${({ $isLoading }) => $isLoading && styled8.css`
288
288
  cursor: wait;
289
289
  opacity: 0.7;
290
290
  `}
@@ -334,15 +334,15 @@ function Button({
334
334
  );
335
335
  }
336
336
  Button.displayName = "Button";
337
- var ActionsContainer = styled4__default.default.div`
337
+ var ActionsContainer = styled8__default.default.div`
338
338
  display: flex;
339
339
  gap: ${tokens.spacing.sm};
340
340
  align-items: center;
341
341
 
342
- ${({ $layout }) => $layout === "horizontal" ? styled4.css`
342
+ ${({ $layout }) => $layout === "horizontal" ? styled8.css`
343
343
  flex-direction: row;
344
344
  flex-wrap: wrap;
345
- ` : styled4.css`
345
+ ` : styled8.css`
346
346
  flex-direction: column;
347
347
  align-items: stretch;
348
348
 
@@ -368,7 +368,7 @@ function Actions({ actions, layout = "horizontal", className }) {
368
368
  )) });
369
369
  }
370
370
  Actions.displayName = "Actions";
371
- var dotPulse = styled4.keyframes`
371
+ var dotPulse = styled8.keyframes`
372
372
  0%, 100% {
373
373
  opacity: 0.3;
374
374
  transform: scale(0.8);
@@ -378,7 +378,7 @@ var dotPulse = styled4.keyframes`
378
378
  transform: scale(1);
379
379
  }
380
380
  `;
381
- var fadeIn = styled4.keyframes`
381
+ var fadeIn = styled8.keyframes`
382
382
  from {
383
383
  opacity: 0;
384
384
  }
@@ -386,7 +386,7 @@ var fadeIn = styled4.keyframes`
386
386
  opacity: 1;
387
387
  }
388
388
  `;
389
- var blink = styled4.keyframes`
389
+ var blink = styled8.keyframes`
390
390
  0%, 49% {
391
391
  opacity: 1;
392
392
  }
@@ -394,7 +394,7 @@ var blink = styled4.keyframes`
394
394
  opacity: 0;
395
395
  }
396
396
  `;
397
- var ResponseContainer = styled4__default.default.div`
397
+ var ResponseContainer = styled8__default.default.div`
398
398
  display: inline-flex;
399
399
  align-items: center;
400
400
  gap: ${tokens.spacing.sm};
@@ -406,13 +406,13 @@ var ResponseContainer = styled4__default.default.div`
406
406
  max-width: fit-content;
407
407
  margin: 0 auto;
408
408
  `;
409
- var LoadingDots = styled4__default.default.div`
409
+ var LoadingDots = styled8__default.default.div`
410
410
  display: flex;
411
411
  align-items: center;
412
412
  gap: ${tokens.spacing.xs};
413
413
  padding: 0 ${tokens.spacing.xs};
414
414
  `;
415
- var Dot = styled4__default.default.span`
415
+ var Dot = styled8__default.default.span`
416
416
  width: ${tokens.spacing.xs};
417
417
  height: ${tokens.spacing.xs};
418
418
  border-radius: ${tokens.borderRadius.full};
@@ -420,7 +420,7 @@ var Dot = styled4__default.default.span`
420
420
  animation: ${dotPulse} 1.4s ease-in-out infinite;
421
421
  animation-delay: ${(props) => props.delay}s;
422
422
  `;
423
- var TypingIndicator = styled4__default.default.div`
423
+ var TypingIndicator = styled8__default.default.div`
424
424
  display: flex;
425
425
  align-items: center;
426
426
  gap: ${tokens.spacing.xs};
@@ -433,14 +433,14 @@ var TypingIndicator = styled4__default.default.div`
433
433
  animation: ${dotPulse} 1.4s ease-in-out infinite;
434
434
  }
435
435
  `;
436
- var Message = styled4__default.default.span`
436
+ var Message = styled8__default.default.span`
437
437
  font-size: ${tokens.typography.fontSize.sm};
438
438
  color: ${tokens.colors.text.primary};
439
439
  font-weight: ${tokens.typography.fontWeight.regular};
440
440
  line-height: ${tokens.typography.lineHeight.normal};
441
441
  white-space: nowrap;
442
442
  `;
443
- var StreamingText = styled4__default.default.div`
443
+ var StreamingText = styled8__default.default.div`
444
444
  font-size: ${tokens.typography.fontSize.sm};
445
445
  line-height: ${tokens.typography.lineHeight.normal};
446
446
  color: ${tokens.colors.text.primary};
@@ -491,7 +491,7 @@ var Response = ({
491
491
  }
492
492
  return null;
493
493
  };
494
- var dotPulse2 = styled4.keyframes`
494
+ var dotPulse2 = styled8.keyframes`
495
495
  0%, 100% {
496
496
  opacity: 0.3;
497
497
  transform: scale(0.8);
@@ -501,7 +501,7 @@ var dotPulse2 = styled4.keyframes`
501
501
  transform: scale(1);
502
502
  }
503
503
  `;
504
- var shake = styled4.keyframes`
504
+ var shake = styled8.keyframes`
505
505
  0%, 100% {
506
506
  transform: translateX(0);
507
507
  }
@@ -512,7 +512,7 @@ var shake = styled4.keyframes`
512
512
  transform: translateX(5px);
513
513
  }
514
514
  `;
515
- var AgentStateContainer = styled4__default.default.div`
515
+ var AgentStateContainer = styled8__default.default.div`
516
516
  display: inline-flex;
517
517
  flex-direction: column;
518
518
  align-items: center;
@@ -526,35 +526,35 @@ var AgentStateContainer = styled4__default.default.div`
526
526
  max-width: fit-content;
527
527
  margin: 0 auto;
528
528
  `;
529
- var StateContent = styled4__default.default.div`
529
+ var StateContent = styled8__default.default.div`
530
530
  display: flex;
531
531
  flex-direction: column;
532
532
  gap: ${tokens.spacing.sm};
533
533
  align-items: center;
534
534
  width: 100%;
535
535
  `;
536
- var IdleIndicator = styled4__default.default.div`
536
+ var IdleIndicator = styled8__default.default.div`
537
537
  width: ${tokens.spacing.xs};
538
538
  height: ${tokens.spacing.xs};
539
539
  background-color: ${tokens.colors.status.idle};
540
540
  border-radius: ${tokens.borderRadius.full};
541
541
  animation: ${dotPulse2} 2s infinite ease-in-out;
542
542
  `;
543
- var ErrorIndicator = styled4__default.default.div`
543
+ var ErrorIndicator = styled8__default.default.div`
544
544
  width: ${tokens.spacing.xs};
545
545
  height: ${tokens.spacing.xs};
546
546
  background-color: ${tokens.colors.error};
547
547
  border-radius: ${tokens.borderRadius.full};
548
548
  animation: ${shake} 0.5s ease-in-out;
549
549
  `;
550
- var StateLabel = styled4__default.default.span`
550
+ var StateLabel = styled8__default.default.span`
551
551
  font-size: ${tokens.typography.fontSize.sm};
552
552
  font-weight: ${tokens.typography.fontWeight.regular};
553
553
  color: ${tokens.colors.text.primary};
554
554
  line-height: ${tokens.typography.lineHeight.normal};
555
555
  white-space: nowrap;
556
556
  `;
557
- styled4__default.default.p`
557
+ styled8__default.default.p`
558
558
  font-size: ${tokens.typography.fontSize.sm};
559
559
  color: ${tokens.colors.text.tertiary};
560
560
  line-height: ${tokens.typography.lineHeight.normal};
@@ -562,7 +562,7 @@ styled4__default.default.p`
562
562
  text-align: center;
563
563
  white-space: nowrap;
564
564
  `;
565
- var ProgressBar = styled4__default.default.div`
565
+ var ProgressBar = styled8__default.default.div`
566
566
  width: 100%;
567
567
  height: ${tokens.spacing.xs};
568
568
  background-color: ${tokens.colors.surface.elevated};
@@ -570,7 +570,7 @@ var ProgressBar = styled4__default.default.div`
570
570
  overflow: hidden;
571
571
  margin-top: ${tokens.spacing.xs};
572
572
  `;
573
- var ProgressBarFill = styled4__default.default.div`
573
+ var ProgressBarFill = styled8__default.default.div`
574
574
  height: 100%;
575
575
  width: ${(props) => Math.min(Math.max(props.progress, 0), 100)}%;
576
576
  background: linear-gradient(135deg, ${tokens.colors.accent} 0%, ${tokens.colors.primary} 100%);
@@ -599,11 +599,11 @@ var AgentState = ({ state, message, progress, className }) => {
599
599
  }
600
600
  return null;
601
601
  };
602
- var Container = styled4__default.default.div`
602
+ var Container = styled8__default.default.div`
603
603
  margin: ${tokens.spacing.sm} 0;
604
604
  padding: 0 ${tokens.spacing.sm};
605
605
  `;
606
- var ToolName = styled4__default.default.div`
606
+ var ToolName = styled8__default.default.div`
607
607
  font-size: ${tokens.typography.fontSize.xs};
608
608
  color: ${tokens.colors.text.tertiary};
609
609
  margin-bottom: ${tokens.spacing.xs};
@@ -653,7 +653,7 @@ var ActionExecutionAdapter = ({ message, inProgress }) => {
653
653
  ] });
654
654
  };
655
655
  ActionExecutionAdapter.displayName = "ActionExecutionAdapter";
656
- var dotPulse3 = styled4.keyframes`
656
+ var dotPulse3 = styled8.keyframes`
657
657
  0%, 100% {
658
658
  opacity: 0.3;
659
659
  transform: scale(0.8);
@@ -663,7 +663,7 @@ var dotPulse3 = styled4.keyframes`
663
663
  transform: scale(1);
664
664
  }
665
665
  `;
666
- var pulse = styled4.keyframes`
666
+ var pulse = styled8.keyframes`
667
667
  0%, 100% {
668
668
  opacity: 0.5;
669
669
  transform: scale(1);
@@ -673,7 +673,7 @@ var pulse = styled4.keyframes`
673
673
  transform: scale(1.2);
674
674
  }
675
675
  `;
676
- var wave = styled4.keyframes`
676
+ var wave = styled8.keyframes`
677
677
  0%, 40%, 100% {
678
678
  transform: translateY(0);
679
679
  }
@@ -710,7 +710,7 @@ var getSizeValue = (size = "md") => {
710
710
  };
711
711
  }
712
712
  };
713
- var Container2 = styled4__default.default.div`
713
+ var Container2 = styled8__default.default.div`
714
714
  display: inline-flex;
715
715
  align-items: center;
716
716
  gap: ${tokens.spacing.md};
@@ -722,7 +722,7 @@ var Container2 = styled4__default.default.div`
722
722
  max-width: fit-content;
723
723
  margin: 0 auto;
724
724
  `;
725
- var Avatar = styled4__default.default.div`
725
+ var Avatar = styled8__default.default.div`
726
726
  width: ${(props) => getSizeValue(props.size).avatar};
727
727
  height: ${(props) => getSizeValue(props.size).avatar};
728
728
  border-radius: ${tokens.borderRadius.full};
@@ -733,23 +733,23 @@ var Avatar = styled4__default.default.div`
733
733
  flex-shrink: 0;
734
734
  box-shadow: ${tokens.shadows.glow.primary};
735
735
  `;
736
- var HeadphonesIcon = styled4__default.default.svg`
736
+ var HeadphonesIcon = styled8__default.default.svg`
737
737
  width: ${(props) => getSizeValue(props.size).icon};
738
738
  height: ${(props) => getSizeValue(props.size).icon};
739
739
  color: ${tokens.colors.text.primary};
740
740
  `;
741
- var Content = styled4__default.default.div`
741
+ var Content = styled8__default.default.div`
742
742
  display: flex;
743
743
  align-items: center;
744
744
  gap: ${tokens.spacing.sm};
745
745
  `;
746
- var LoadingDots2 = styled4__default.default.div`
746
+ var LoadingDots2 = styled8__default.default.div`
747
747
  display: flex;
748
748
  align-items: center;
749
749
  gap: ${(props) => props.variant === "wave" ? "2px" : `${tokens.spacing.xs}`};
750
750
  padding: 0 ${tokens.spacing.xs};
751
751
  `;
752
- var Dot2 = styled4__default.default.span`
752
+ var Dot2 = styled8__default.default.span`
753
753
  width: ${(props) => getSizeValue(props.size).dotSize};
754
754
  height: ${(props) => getSizeValue(props.size).dotSize};
755
755
  border-radius: ${tokens.borderRadius.full};
@@ -767,7 +767,7 @@ var Dot2 = styled4__default.default.span`
767
767
  }}
768
768
  1.4s ease-in-out infinite;
769
769
  `;
770
- var Message2 = styled4__default.default.span`
770
+ var Message2 = styled8__default.default.span`
771
771
  font-size: ${(props) => getSizeValue(props.size).fontSize};
772
772
  color: ${tokens.colors.text.secondary};
773
773
  font-weight: ${tokens.typography.fontWeight.regular};
@@ -827,7 +827,7 @@ function AssistantThinking({
827
827
  );
828
828
  }
829
829
  AssistantThinking.displayName = "AssistantThinking";
830
- var Container3 = styled4__default.default.div`
830
+ var Container3 = styled8__default.default.div`
831
831
  font-family: ${(props) => props.$variant === "code" ? tokens.typography.fontFamily.monospace : tokens.typography.fontFamily.primary};
832
832
  white-space: pre-wrap;
833
833
  word-break: break-word;
@@ -836,7 +836,7 @@ var Container3 = styled4__default.default.div`
836
836
  text-rendering: optimizeSpeed;
837
837
  contain: content;
838
838
  `;
839
- var Cursor = styled4__default.default.span`
839
+ var Cursor = styled8__default.default.span`
840
840
  display: inline-block;
841
841
  width: 2px;
842
842
  height: 1em;
@@ -860,17 +860,15 @@ var StreamingTextBase = ({
860
860
  content,
861
861
  isStreaming = false,
862
862
  typingSpeed: _typingSpeed = 50,
863
- // Not used - streaming shows chunks as they arrive
863
+ // Reserved for future use
864
864
  cursor = true,
865
865
  variant = "default",
866
866
  onStreamComplete,
867
867
  className
868
868
  }) => {
869
- const [displayedText, setDisplayedText] = react.useState(content);
870
869
  const wasStreamingRef = react.useRef(isStreaming);
871
870
  const completionCalledRef = react.useRef(false);
872
871
  react.useEffect(() => {
873
- setDisplayedText(content);
874
872
  if (wasStreamingRef.current && !isStreaming && !completionCalledRef.current) {
875
873
  completionCalledRef.current = true;
876
874
  onStreamComplete?.();
@@ -879,45 +877,48 @@ var StreamingTextBase = ({
879
877
  completionCalledRef.current = false;
880
878
  }
881
879
  wasStreamingRef.current = isStreaming;
882
- }, [content, isStreaming, onStreamComplete]);
880
+ }, [isStreaming, onStreamComplete]);
883
881
  const showCursor = isStreaming && cursor;
884
882
  return /* @__PURE__ */ jsxRuntime.jsxs(Container3, { $variant: variant, className, children: [
885
- displayedText,
883
+ content,
886
884
  showCursor && /* @__PURE__ */ jsxRuntime.jsx(Cursor, {})
887
885
  ] });
888
886
  };
889
887
  var StreamingText2 = react.memo(StreamingTextBase);
890
888
  StreamingText2.displayName = "StreamingText";
891
- var MessageContainer = styled4__default.default.div`
889
+ var MessageContainer = styled8__default.default.div`
892
890
  display: flex;
893
- gap: ${tokens.spacing.sm};
894
- align-items: flex-start;
895
- padding: ${tokens.spacing.sm} 0;
891
+ flex-direction: column;
892
+ gap: ${tokens.spacing.xs};
893
+ padding: ${tokens.spacing.xs} 0;
896
894
  max-width: 100%;
897
895
  /* GPU acceleration hint for smooth rendering during streaming */
898
896
  will-change: contents;
899
897
  contain: content;
900
898
  `;
901
- var AvatarContainer = styled4__default.default.div`
899
+ var AvatarContainer = styled8__default.default.div`
900
+ display: flex;
901
+ align-items: center;
902
+ gap: ${tokens.spacing.xs};
902
903
  flex-shrink: 0;
903
904
  `;
904
- var Avatar2 = styled4__default.default.img`
905
- width: ${tokens.spacing.xl};
906
- height: ${tokens.spacing.xl};
905
+ var Avatar2 = styled8__default.default.img`
906
+ width: 20px;
907
+ height: 20px;
907
908
  border-radius: ${tokens.borderRadius.full};
908
909
  object-fit: cover;
909
910
  background-color: transparent;
910
911
  `;
911
- var AvatarInitials = styled4__default.default.div`
912
- width: ${tokens.spacing.xl};
913
- height: ${tokens.spacing.xl};
912
+ var AvatarInitials = styled8__default.default.div`
913
+ width: 20px;
914
+ height: 20px;
914
915
  border-radius: ${tokens.borderRadius.full};
915
916
  overflow: hidden;
916
917
  display: flex;
917
918
  align-items: center;
918
919
  justify-content: center;
919
920
  background-color: ${tokens.colors.secondary};
920
- padding: ${tokens.spacing.xs};
921
+ padding: 2px;
921
922
  box-sizing: border-box;
922
923
 
923
924
  img {
@@ -926,16 +927,20 @@ var AvatarInitials = styled4__default.default.div`
926
927
  object-fit: contain;
927
928
  }
928
929
  `;
929
- var ContentContainer = styled4__default.default.div`
930
- flex: 1;
930
+ var AvatarLabel = styled8__default.default.span`
931
+ font-size: ${tokens.typography.fontSize.xs};
932
+ font-weight: ${tokens.typography.fontWeight.medium};
933
+ color: ${tokens.colors.text.secondary};
934
+ `;
935
+ var ContentContainer = styled8__default.default.div`
936
+ width: 100%;
931
937
  min-width: 0;
932
938
  `;
933
- var MessageContent = styled4__default.default.div`
939
+ var MessageContent = styled8__default.default.div`
934
940
  /* Use solid color instead of backdrop-filter for performance during streaming */
935
941
  background-color: ${tokens.colors.surface.elevated};
936
- padding: ${tokens.spacing.sm} ${tokens.spacing.md};
942
+ padding: ${tokens.spacing.sm};
937
943
  border-radius: ${tokens.borderRadius.lg};
938
- border-top-left-radius: ${tokens.borderRadius.sm};
939
944
  color: ${tokens.colors.text.primary};
940
945
  font-size: ${tokens.typography.fontSize.sm};
941
946
  line-height: ${tokens.typography.lineHeight.normal};
@@ -945,17 +950,16 @@ var MessageContent = styled4__default.default.div`
945
950
  /* Optimize text rendering */
946
951
  text-rendering: optimizeSpeed;
947
952
  `;
948
- var LoadingDots3 = styled4__default.default.div`
953
+ var LoadingDots3 = styled8__default.default.div`
949
954
  display: flex;
950
955
  gap: ${tokens.spacing.xs};
951
- padding: ${tokens.spacing.sm} ${tokens.spacing.md};
956
+ padding: ${tokens.spacing.sm};
952
957
  /* Use solid color instead of backdrop-filter for performance */
953
958
  background-color: ${tokens.colors.surface.elevated};
954
959
  border-radius: ${tokens.borderRadius.lg};
955
- border-top-left-radius: ${tokens.borderRadius.sm};
956
960
  width: fit-content;
957
961
  `;
958
- var pulse2 = styled4.keyframes`
962
+ var pulse2 = styled8.keyframes`
959
963
  0%, 100% {
960
964
  opacity: 0.4;
961
965
  }
@@ -963,7 +967,7 @@ var pulse2 = styled4.keyframes`
963
967
  opacity: 1;
964
968
  }
965
969
  `;
966
- var LoadingDot = styled4__default.default.div`
970
+ var LoadingDot = styled8__default.default.div`
967
971
  width: ${tokens.spacing.sm};
968
972
  height: ${tokens.spacing.sm};
969
973
  border-radius: ${tokens.borderRadius.full};
@@ -972,7 +976,7 @@ var LoadingDot = styled4__default.default.div`
972
976
  animation: ${pulse2} 1.4s ease-in-out infinite;
973
977
  animation-delay: ${(props) => props.delay}s;
974
978
  `;
975
- var FileAttachmentContainer = styled4__default.default.div`
979
+ var FileAttachmentContainer = styled8__default.default.div`
976
980
  display: flex;
977
981
  align-items: center;
978
982
  gap: ${tokens.spacing.sm};
@@ -1008,7 +1012,7 @@ var FileAttachmentContainer = styled4__default.default.div`
1008
1012
  }
1009
1013
  `}
1010
1014
  `;
1011
- var FileIconContainer = styled4__default.default.div`
1015
+ var FileIconContainer = styled8__default.default.div`
1012
1016
  flex-shrink: 0;
1013
1017
  width: ${tokens.spacing.xl};
1014
1018
  height: ${tokens.spacing.xl};
@@ -1018,14 +1022,14 @@ var FileIconContainer = styled4__default.default.div`
1018
1022
  font-size: ${tokens.typography.fontSize["2xl"]};
1019
1023
  line-height: 1;
1020
1024
  `;
1021
- var FileInfo = styled4__default.default.div`
1025
+ var FileInfo = styled8__default.default.div`
1022
1026
  flex: 1;
1023
1027
  min-width: 0;
1024
1028
  display: flex;
1025
1029
  flex-direction: column;
1026
1030
  gap: 2px;
1027
1031
  `;
1028
- var FileTitle = styled4__default.default.div`
1032
+ var FileTitle = styled8__default.default.div`
1029
1033
  font-size: ${tokens.typography.fontSize.sm};
1030
1034
  font-weight: ${tokens.typography.fontWeight.medium};
1031
1035
  color: ${tokens.colors.text.primary};
@@ -1035,7 +1039,7 @@ var FileTitle = styled4__default.default.div`
1035
1039
  text-overflow: ellipsis;
1036
1040
  white-space: nowrap;
1037
1041
  `;
1038
- var FileMetadata = styled4__default.default.div`
1042
+ var FileMetadata = styled8__default.default.div`
1039
1043
  display: flex;
1040
1044
  align-items: center;
1041
1045
  gap: ${tokens.spacing.xs};
@@ -1045,7 +1049,7 @@ var FileMetadata = styled4__default.default.div`
1045
1049
  line-height: ${tokens.typography.lineHeight.tight};
1046
1050
  overflow: hidden;
1047
1051
  `;
1048
- var FileSubtitle = styled4__default.default.span`
1052
+ var FileSubtitle = styled8__default.default.span`
1049
1053
  color: ${tokens.colors.text.tertiary};
1050
1054
  white-space: nowrap;
1051
1055
  overflow: hidden;
@@ -1101,13 +1105,13 @@ var FileAttachment = ({
1101
1105
  }
1102
1106
  );
1103
1107
  };
1104
- var AttachmentsContainer = styled4__default.default.div`
1108
+ var AttachmentsContainer = styled8__default.default.div`
1105
1109
  display: flex;
1106
1110
  flex-direction: column;
1107
1111
  gap: ${tokens.spacing.sm};
1108
1112
  margin-top: ${tokens.spacing.sm};
1109
1113
  `;
1110
- var ActionButton = styled4__default.default.button`
1114
+ var ActionButton = styled8__default.default.button`
1111
1115
  display: inline-flex;
1112
1116
  align-items: center;
1113
1117
  gap: ${tokens.spacing.xs};
@@ -1131,19 +1135,19 @@ var ActionButton = styled4__default.default.button`
1131
1135
  transform: scale(0.98);
1132
1136
  }
1133
1137
  `;
1134
- var ActionsContainer2 = styled4__default.default.div`
1138
+ var ActionsContainer2 = styled8__default.default.div`
1135
1139
  display: flex;
1136
1140
  gap: ${tokens.spacing.xs};
1137
1141
  flex-wrap: wrap;
1138
1142
  margin-top: ${tokens.spacing.sm};
1139
1143
  `;
1140
- var MessageTime = styled4__default.default.time`
1144
+ var MessageTime = styled8__default.default.time`
1141
1145
  font-size: ${tokens.typography.fontSize.xs};
1142
1146
  color: ${tokens.colors.text.tertiary};
1143
1147
  margin-top: ${tokens.spacing.xs};
1144
1148
  display: block;
1145
1149
  `;
1146
- var StreamingIndicator = styled4__default.default.span`
1150
+ var StreamingIndicator = styled8__default.default.span`
1147
1151
  display: inline-block;
1148
1152
  width: ${tokens.spacing.xs};
1149
1153
  height: ${tokens.spacing.xs};
@@ -1207,7 +1211,10 @@ var AssistantMessageBase = ({
1207
1211
  ] });
1208
1212
  };
1209
1213
  return /* @__PURE__ */ jsxRuntime.jsxs(MessageContainer, { className, children: [
1210
- /* @__PURE__ */ jsxRuntime.jsx(AvatarContainer, { children: avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(Avatar2, { src: avatarUrl, alt: "Assistant avatar" }) : /* @__PURE__ */ jsxRuntime.jsx(AvatarInitials, { children: /* @__PURE__ */ jsxRuntime.jsx(Avatar2, { src: "/assets/avatar-transparent-bg.png", alt: "AI Assistant" }) }) }),
1214
+ /* @__PURE__ */ jsxRuntime.jsxs(AvatarContainer, { children: [
1215
+ avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx(Avatar2, { src: avatarUrl, alt: "Assistant avatar" }) : /* @__PURE__ */ jsxRuntime.jsx(AvatarInitials, { children: /* @__PURE__ */ jsxRuntime.jsx(Avatar2, { src: "/assets/avatar-transparent-bg.png", alt: "AI Assistant" }) }),
1216
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarLabel, { children: "Assistant" })
1217
+ ] }),
1211
1218
  /* @__PURE__ */ jsxRuntime.jsx(ContentContainer, { children: renderContent() })
1212
1219
  ] });
1213
1220
  };
@@ -1217,7 +1224,7 @@ var TOOL_CALL_MARKER_REGEX = /<!--TOOL_CALL:([^:]+):(.+?)-->/g;
1217
1224
  function stripToolCallMarkers(content) {
1218
1225
  return content.replace(TOOL_CALL_MARKER_REGEX, "").trim();
1219
1226
  }
1220
- var GenerativeUIContainer = styled4__default.default.div`
1227
+ var GenerativeUIContainer = styled8__default.default.div`
1221
1228
  margin-top: ${tokens.spacing.sm};
1222
1229
  margin-bottom: ${tokens.spacing.sm};
1223
1230
  `;
@@ -1266,7 +1273,53 @@ var AssistantMessageAdapterBase = ({
1266
1273
  };
1267
1274
  var AssistantMessageAdapter = react.memo(AssistantMessageAdapterBase);
1268
1275
  AssistantMessageAdapter.displayName = "AssistantMessageAdapter";
1269
- var ChatInputContainer = styled4__default.default.div`
1276
+ function createAssistantMessageAdapter(ThinkingIndicator, ToolCallsComponent) {
1277
+ const CustomAssistantMessageAdapter = ({
1278
+ message,
1279
+ isLoading,
1280
+ isGenerating,
1281
+ isCurrentMessage
1282
+ }) => {
1283
+ const showThinking = isLoading || isGenerating && !message?.content;
1284
+ const shouldShowToolCalls = isCurrentMessage && ToolCallsComponent;
1285
+ const rawContent = message?.content || "";
1286
+ const content = stripToolCallMarkers(rawContent);
1287
+ let generativeUIOutput = null;
1288
+ const msgWithUI = message;
1289
+ if (msgWithUI && typeof msgWithUI.generativeUI === "function") {
1290
+ try {
1291
+ generativeUIOutput = msgWithUI.generativeUI();
1292
+ } catch (e) {
1293
+ console.warn("[AssistantMessageAdapter] Error rendering generativeUI:", e);
1294
+ }
1295
+ }
1296
+ const attachments = [];
1297
+ if (showThinking) {
1298
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1299
+ ThinkingIndicator ? /* @__PURE__ */ jsxRuntime.jsx(ThinkingIndicator, { isLoading, isGenerating }) : /* @__PURE__ */ jsxRuntime.jsx(AssistantThinking, { message: "Thinking..." }),
1300
+ shouldShowToolCalls && /* @__PURE__ */ jsxRuntime.jsx(ToolCallsComponent, {})
1301
+ ] });
1302
+ }
1303
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1304
+ shouldShowToolCalls && /* @__PURE__ */ jsxRuntime.jsx(ToolCallsComponent, {}),
1305
+ generativeUIOutput && /* @__PURE__ */ jsxRuntime.jsx(GenerativeUIContainer, { children: generativeUIOutput }),
1306
+ content && /* @__PURE__ */ jsxRuntime.jsx(
1307
+ AssistantMessage,
1308
+ {
1309
+ content,
1310
+ avatarInitials: "AI",
1311
+ isLoading: false,
1312
+ isStreaming: isGenerating,
1313
+ attachments,
1314
+ enableMarkdown: true
1315
+ }
1316
+ )
1317
+ ] });
1318
+ };
1319
+ CustomAssistantMessageAdapter.displayName = "CustomAssistantMessageAdapter";
1320
+ return react.memo(CustomAssistantMessageAdapter);
1321
+ }
1322
+ var ChatInputContainer = styled8__default.default.div`
1270
1323
  display: flex;
1271
1324
  flex-direction: column;
1272
1325
  width: 100%;
@@ -1282,7 +1335,7 @@ var ChatInputContainer = styled4__default.default.div`
1282
1335
  padding: ${tokens.spacing.md};
1283
1336
  }
1284
1337
  `;
1285
- var SuggestionsWrapper = styled4__default.default.div`
1338
+ var SuggestionsWrapper = styled8__default.default.div`
1286
1339
  display: flex;
1287
1340
  flex-direction: row;
1288
1341
  flex-wrap: wrap;
@@ -1291,7 +1344,7 @@ var SuggestionsWrapper = styled4__default.default.div`
1291
1344
  width: 100%;
1292
1345
  box-sizing: border-box;
1293
1346
  `;
1294
- var SuggestionButton = styled4__default.default.button`
1347
+ var SuggestionButton = styled8__default.default.button`
1295
1348
  padding: ${tokens.spacing.sm} ${tokens.spacing.md};
1296
1349
  font-family: ${tokens.typography.fontFamily.primary};
1297
1350
  font-size: 13px;
@@ -1330,7 +1383,7 @@ var SuggestionButton = styled4__default.default.button`
1330
1383
  opacity: 0.4;
1331
1384
  }
1332
1385
  `;
1333
- var InputWrapper = styled4__default.default.div`
1386
+ var InputWrapper = styled8__default.default.div`
1334
1387
  display: flex;
1335
1388
  align-items: flex-end; /* Align button to bottom when textarea expands */
1336
1389
  gap: ${tokens.spacing.sm};
@@ -1348,7 +1401,7 @@ var InputWrapper = styled4__default.default.div`
1348
1401
  background-color: rgba(50, 50, 52, 0.6);
1349
1402
  }
1350
1403
  `;
1351
- var InputField = styled4__default.default.textarea`
1404
+ var InputField = styled8__default.default.textarea`
1352
1405
  flex: 1;
1353
1406
  border: none;
1354
1407
  outline: none;
@@ -1373,7 +1426,7 @@ var InputField = styled4__default.default.textarea`
1373
1426
  cursor: not-allowed;
1374
1427
  }
1375
1428
  `;
1376
- var SubmitButton = styled4__default.default.button`
1429
+ var SubmitButton = styled8__default.default.button`
1377
1430
  display: flex;
1378
1431
  align-items: center;
1379
1432
  justify-content: center;
@@ -1609,7 +1662,7 @@ var InputAdapter = ({
1609
1662
  );
1610
1663
  };
1611
1664
  InputAdapter.displayName = "InputAdapter";
1612
- var StyledUserMessage = styled4__default.default.button`
1665
+ var StyledUserMessage = styled8__default.default.button`
1613
1666
  /* Base styles */
1614
1667
  display: inline-flex;
1615
1668
  align-items: center;
@@ -1679,7 +1732,7 @@ var StyledUserMessage = styled4__default.default.button`
1679
1732
  }
1680
1733
  }
1681
1734
 
1682
- ${({ $isPressed }) => $isPressed && styled4.css`
1735
+ ${({ $isPressed }) => $isPressed && styled8.css`
1683
1736
  transform: translateY(0) scale(0.98);
1684
1737
  box-shadow: ${tokens.shadows.sm};
1685
1738
 
@@ -1745,7 +1798,7 @@ function UserMessageBase({
1745
1798
  }
1746
1799
  var UserMessage = react.memo(UserMessageBase);
1747
1800
  UserMessage.displayName = "UserMessage";
1748
- var UserMessageWrapper = styled4__default.default.div`
1801
+ var UserMessageWrapper = styled8__default.default.div`
1749
1802
  display: flex;
1750
1803
  justify-content: flex-end;
1751
1804
  width: 100%;
@@ -1765,7 +1818,7 @@ var UserMessageAdapterBase = ({
1765
1818
  };
1766
1819
  var UserMessageAdapter = react.memo(UserMessageAdapterBase);
1767
1820
  UserMessageAdapter.displayName = "UserMessageAdapter";
1768
- var pulse3 = styled4.keyframes`
1821
+ var pulse3 = styled8.keyframes`
1769
1822
  0%, 100% {
1770
1823
  opacity: 1;
1771
1824
  transform: scale(1);
@@ -1775,7 +1828,7 @@ var pulse3 = styled4.keyframes`
1775
1828
  transform: scale(1.1);
1776
1829
  }
1777
1830
  `;
1778
- var Container4 = styled4__default.default.div`
1831
+ var Container4 = styled8__default.default.div`
1779
1832
  display: inline-flex;
1780
1833
  align-items: center;
1781
1834
  gap: ${(props) => {
@@ -1791,7 +1844,7 @@ var Container4 = styled4__default.default.div`
1791
1844
  }};
1792
1845
  font-family: ${tokens.typography.fontFamily.primary};
1793
1846
  `;
1794
- var StatusDot = styled4__default.default.div`
1847
+ var StatusDot = styled8__default.default.div`
1795
1848
  width: ${(props) => {
1796
1849
  if (props.variant === "badge") {
1797
1850
  switch (props.size) {
@@ -1852,7 +1905,7 @@ var StatusDot = styled4__default.default.div`
1852
1905
  animation: ${(props) => props.status === "streaming" ? pulse3 : "none"} 2s ease-in-out infinite;
1853
1906
  flex-shrink: 0;
1854
1907
  `;
1855
- var Label = styled4__default.default.span`
1908
+ var Label = styled8__default.default.span`
1856
1909
  font-size: ${(props) => {
1857
1910
  if (props.variant === "badge") {
1858
1911
  switch (props.size) {
@@ -1879,7 +1932,7 @@ var Label = styled4__default.default.span`
1879
1932
  color: ${tokens.colors.text.secondary};
1880
1933
  line-height: ${tokens.typography.lineHeight.tight};
1881
1934
  `;
1882
- var BadgeContainer = styled4__default.default.div`
1935
+ var BadgeContainer = styled8__default.default.div`
1883
1936
  display: inline-flex;
1884
1937
  align-items: center;
1885
1938
  gap: ${(props) => {
@@ -1956,7 +2009,7 @@ var StreamStatusIndicator = ({
1956
2009
  return /* @__PURE__ */ jsxRuntime.jsx(Container4, { size, className, role: "status", "aria-label": getStatusLabel(status), children: content });
1957
2010
  };
1958
2011
  StreamStatusIndicator.displayName = "StreamStatusIndicator";
1959
- var HeaderContainer = styled4__default.default.header`
2012
+ var HeaderContainer = styled8__default.default.header`
1960
2013
  display: flex;
1961
2014
  align-items: center;
1962
2015
  justify-content: space-between;
@@ -1972,14 +2025,14 @@ var HeaderContainer = styled4__default.default.header`
1972
2025
  padding: ${tokens.spacing.sm} ${tokens.spacing.md};
1973
2026
  }
1974
2027
  `;
1975
- var HeaderContent = styled4__default.default.div`
2028
+ var HeaderContent = styled8__default.default.div`
1976
2029
  display: flex;
1977
2030
  flex-direction: column;
1978
2031
  gap: ${tokens.spacing.xs};
1979
2032
  flex: 1;
1980
2033
  min-width: 0;
1981
2034
  `;
1982
- var HeaderTitle = styled4__default.default.h1`
2035
+ var HeaderTitle = styled8__default.default.h1`
1983
2036
  margin: 0;
1984
2037
  font-size: ${tokens.typography.fontSize.base};
1985
2038
  font-weight: ${tokens.typography.fontWeight.semibold};
@@ -1990,7 +2043,7 @@ var HeaderTitle = styled4__default.default.h1`
1990
2043
  text-overflow: ellipsis;
1991
2044
  white-space: nowrap;
1992
2045
  `;
1993
- var HeaderSubtitle = styled4__default.default.p`
2046
+ var HeaderSubtitle = styled8__default.default.p`
1994
2047
  margin: 0;
1995
2048
  font-size: ${tokens.typography.fontSize.sm};
1996
2049
  color: ${tokens.colors.text.secondary};
@@ -2000,13 +2053,13 @@ var HeaderSubtitle = styled4__default.default.p`
2000
2053
  text-overflow: ellipsis;
2001
2054
  white-space: nowrap;
2002
2055
  `;
2003
- var HeaderActions = styled4__default.default.div`
2056
+ var HeaderActions = styled8__default.default.div`
2004
2057
  display: flex;
2005
2058
  align-items: center;
2006
2059
  gap: ${tokens.spacing.xs};
2007
2060
  margin-left: ${tokens.spacing.md};
2008
2061
  `;
2009
- var ActionButton2 = styled4__default.default.button`
2062
+ var ActionButton2 = styled8__default.default.button`
2010
2063
  display: inline-flex;
2011
2064
  align-items: center;
2012
2065
  justify-content: center;
@@ -2123,7 +2176,7 @@ var Header = ({
2123
2176
  ] });
2124
2177
  };
2125
2178
  Header.displayName = "Header";
2126
- var MessagesContainer = styled4__default.default.div`
2179
+ var MessagesContainer = styled8__default.default.div`
2127
2180
  display: flex;
2128
2181
  flex-direction: column;
2129
2182
  flex: 1;
@@ -2135,18 +2188,14 @@ var MessagesContainer = styled4__default.default.div`
2135
2188
  ${tokens.colors.background.darker},
2136
2189
  ${tokens.colors.background.darkest}
2137
2190
  );
2138
- padding: ${tokens.spacing.sm};
2139
- gap: ${tokens.spacing.md};
2191
+ /* Minimal horizontal padding to maximize message width */
2192
+ padding: ${tokens.spacing.sm} ${tokens.spacing.xs};
2193
+ gap: ${tokens.spacing.sm};
2140
2194
  box-sizing: border-box;
2141
2195
 
2142
2196
  /* Ensure proper scrolling behavior for child components */
2143
2197
  position: relative;
2144
2198
  min-height: 0;
2145
-
2146
- /* Desktop padding */
2147
- @media (min-width: ${tokens.breakpoints.mobile}px) {
2148
- padding: ${tokens.spacing.md};
2149
- }
2150
2199
  `;
2151
2200
  var Messages = ({
2152
2201
  children,
@@ -2156,7 +2205,7 @@ var Messages = ({
2156
2205
  return /* @__PURE__ */ jsxRuntime.jsx(MessagesContainer, { className, role: "region", "aria-label": ariaLabel, children });
2157
2206
  };
2158
2207
  Messages.displayName = "Messages";
2159
- var WindowContainer = styled4__default.default.div`
2208
+ var WindowContainer = styled8__default.default.div`
2160
2209
  display: flex;
2161
2210
  flex-direction: column;
2162
2211
  /* Glassmorphism effect */
@@ -2175,7 +2224,7 @@ var WindowContainer = styled4__default.default.div`
2175
2224
  height: ${({ $height }) => $height};
2176
2225
 
2177
2226
  /* Fullscreen state */
2178
- ${({ $isFullscreen }) => $isFullscreen && styled4.css`
2227
+ ${({ $isFullscreen }) => $isFullscreen && styled8.css`
2179
2228
  width: 100vw;
2180
2229
  height: 100vh;
2181
2230
  border-radius: 0;
@@ -2187,7 +2236,7 @@ var WindowContainer = styled4__default.default.div`
2187
2236
  `}
2188
2237
 
2189
2238
  /* Minimized state */
2190
- ${({ $isMinimized }) => $isMinimized && styled4.css`
2239
+ ${({ $isMinimized }) => $isMinimized && styled8.css`
2191
2240
  height: 60px;
2192
2241
  width: 300px;
2193
2242
  box-shadow: ${tokens.shadows.sm};
@@ -2206,7 +2255,7 @@ var WindowContainer = styled4__default.default.div`
2206
2255
 
2207
2256
  /* Responsive behavior for smaller screens */
2208
2257
  @media (max-width: ${tokens.breakpoints.tablet}px) {
2209
- ${({ $isFullscreen, $isMinimized }) => !$isFullscreen && !$isMinimized && styled4.css`
2258
+ ${({ $isFullscreen, $isMinimized }) => !$isFullscreen && !$isMinimized && styled8.css`
2210
2259
  width: 100vw;
2211
2260
  height: 100vh;
2212
2261
  border-radius: 0;
@@ -2249,7 +2298,7 @@ var Window = ({
2249
2298
  );
2250
2299
  };
2251
2300
  Window.displayName = "Window";
2252
- var GlobalSidebarStyles = styled4.createGlobalStyle`
2301
+ var GlobalSidebarStyles = styled8.createGlobalStyle`
2253
2302
  /* Override CopilotKit's default positioning - start off-screen */
2254
2303
  .copilotKitSidebar {
2255
2304
  position: fixed !important;
@@ -2357,7 +2406,7 @@ var GlobalSidebarStyles = styled4.createGlobalStyle`
2357
2406
  }
2358
2407
  }
2359
2408
  `;
2360
- var StyledChatButton = styled4__default.default.button`
2409
+ var StyledChatButton = styled8__default.default.button`
2361
2410
  position: fixed;
2362
2411
  bottom: 8px;
2363
2412
  right: 8px;
@@ -2409,7 +2458,7 @@ var CustomCopilotSidebar = ({
2409
2458
  };
2410
2459
  return /* @__PURE__ */ jsxRuntime.jsx(Header, { title: "AI Assistant", subtitle: "How can I help you today?", onClose: handleClose });
2411
2460
  };
2412
- const WindowAdapter = (props) => {
2461
+ const WindowAdapter2 = (props) => {
2413
2462
  return /* @__PURE__ */ jsxRuntime.jsx(Window, { children: props.children });
2414
2463
  };
2415
2464
  const MessagesAdapter = (props) => {
@@ -2465,7 +2514,7 @@ var CustomCopilotSidebar = ({
2465
2514
  UserMessage: UserMessageAdapter,
2466
2515
  Input: InputAdapter,
2467
2516
  Header: HeaderAdapter,
2468
- Window: WindowAdapter,
2517
+ Window: WindowAdapter2,
2469
2518
  Messages: MessagesAdapter,
2470
2519
  Button: CustomButton,
2471
2520
  instructions,
@@ -2487,12 +2536,12 @@ var CustomCopilotSidebar = ({
2487
2536
  ] });
2488
2537
  };
2489
2538
  CustomCopilotSidebar.displayName = "CustomCopilotSidebar";
2490
- var GlobalSidebarStyles2 = styled4.createGlobalStyle`
2539
+ var GlobalSidebarStyles2 = styled8.createGlobalStyle`
2491
2540
  /* Override CopilotKit's content wrapper to respect safe areas in landscape */
2492
2541
  @media (orientation: landscape) {
2493
2542
  .copilotKitSidebarContentWrapper {
2494
- right: env(safe-area-inset-right, 0px) !important;
2495
- left: env(safe-area-inset-left, 0px) !important;
2543
+ right: var(--safe-area-right, 0px) !important;
2544
+ left: var(--safe-area-left, 0px) !important;
2496
2545
  }
2497
2546
  }
2498
2547
 
@@ -2521,18 +2570,18 @@ var GlobalSidebarStyles2 = styled4.createGlobalStyle`
2521
2570
  /* Override CopilotKit defaults for mobile */
2522
2571
  position: fixed !important;
2523
2572
  /* TOP: Account for status bar safe area (Android notch/status bar) */
2524
- top: calc(${tokens.spacing.sm} + env(safe-area-inset-top, 0px)) !important;
2573
+ top: calc(${tokens.spacing.sm} + var(--safe-area-top, 0px)) !important;
2525
2574
  /* RIGHT: Account for landscape notch on right side */
2526
- right: calc(${tokens.spacing.sm} + env(safe-area-inset-right, 0px)) !important;
2575
+ right: calc(${tokens.spacing.sm} + var(--safe-area-right, 0px)) !important;
2527
2576
  /* BOTTOM: Account for horizontal navbar (52px) + safe area for Android nav buttons */
2528
- bottom: calc(52px + ${tokens.spacing.sm} + env(safe-area-inset-bottom, 0px)) !important;
2577
+ bottom: calc(52px + ${tokens.spacing.sm} + var(--safe-area-bottom, 0px)) !important;
2529
2578
  /* LEFT: Account for landscape notch on left side */
2530
- left: calc(${tokens.spacing.sm} + env(safe-area-inset-left, 0px)) !important;
2531
- width: calc(100vw - ${tokens.spacing.lg} - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)) !important;
2579
+ left: calc(${tokens.spacing.sm} + var(--safe-area-left, 0px)) !important;
2580
+ width: calc(100vw - ${tokens.spacing.lg} - var(--safe-area-left, 0px) - var(--safe-area-right, 0px)) !important;
2532
2581
  /* Adjust height to account for top, bottom safe areas, and navbar */
2533
- height: calc(100vh - ${tokens.spacing.lg} - env(safe-area-inset-top, 0px) - 52px - env(safe-area-inset-bottom, 0px)) !important;
2534
- max-width: calc(100vw - ${tokens.spacing.lg} - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)) !important;
2535
- max-height: calc(100vh - ${tokens.spacing.lg} - env(safe-area-inset-top, 0px) - 52px - env(safe-area-inset-bottom, 0px)) !important;
2582
+ height: calc(100vh - ${tokens.spacing.lg} - var(--safe-area-top, 0px) - 52px - var(--safe-area-bottom, 0px)) !important;
2583
+ max-width: calc(100vw - ${tokens.spacing.lg} - var(--safe-area-left, 0px) - var(--safe-area-right, 0px)) !important;
2584
+ max-height: calc(100vh - ${tokens.spacing.lg} - var(--safe-area-top, 0px) - 52px - var(--safe-area-bottom, 0px)) !important;
2536
2585
  margin: 0 !important;
2537
2586
  border-radius: ${tokens.borderRadius.xl} !important;
2538
2587
 
@@ -2569,17 +2618,17 @@ var GlobalSidebarStyles2 = styled4.createGlobalStyle`
2569
2618
  .copilotKitSidebar [role="dialog"] {
2570
2619
  inset: auto !important;
2571
2620
  /* TOP: Account for status bar safe area */
2572
- top: calc(${tokens.spacing.sm} + env(safe-area-inset-top, 0px)) !important;
2621
+ top: calc(${tokens.spacing.sm} + var(--safe-area-top, 0px)) !important;
2573
2622
  /* RIGHT: Account for landscape notch on right side */
2574
- right: calc(${tokens.spacing.sm} + env(safe-area-inset-right, 0px)) !important;
2623
+ right: calc(${tokens.spacing.sm} + var(--safe-area-right, 0px)) !important;
2575
2624
  /* BOTTOM: Account for horizontal navbar (52px) + safe area */
2576
- bottom: calc(52px + ${tokens.spacing.sm} + env(safe-area-inset-bottom, 0px)) !important;
2625
+ bottom: calc(52px + ${tokens.spacing.sm} + var(--safe-area-bottom, 0px)) !important;
2577
2626
  left: auto !important;
2578
2627
  width: 28rem !important;
2579
2628
  /* Adjust height to account for top, bottom safe areas, and navbar */
2580
- height: calc(100vh - ${tokens.spacing.lg} - env(safe-area-inset-top, 0px) - 52px - env(safe-area-inset-bottom, 0px)) !important;
2629
+ height: calc(100vh - ${tokens.spacing.lg} - var(--safe-area-top, 0px) - 52px - var(--safe-area-bottom, 0px)) !important;
2581
2630
  max-width: 28rem !important;
2582
- max-height: calc(100vh - ${tokens.spacing.lg} - env(safe-area-inset-top, 0px) - 52px - env(safe-area-inset-bottom, 0px)) !important;
2631
+ max-height: calc(100vh - ${tokens.spacing.lg} - var(--safe-area-top, 0px) - 52px - var(--safe-area-bottom, 0px)) !important;
2583
2632
  }
2584
2633
  }
2585
2634
 
@@ -2612,8 +2661,8 @@ var GlobalSidebarStyles2 = styled4.createGlobalStyle`
2612
2661
  left: auto !important;
2613
2662
  right: 1.5rem !important;
2614
2663
  /* Use top/bottom ONLY - let browser calculate height (more reliable than explicit height) */
2615
- top: env(safe-area-inset-top, 0px) !important;
2616
- bottom: calc(52px + env(safe-area-inset-bottom, 0px)) !important;
2664
+ top: var(--safe-area-top, 0px) !important;
2665
+ bottom: calc(52px + var(--safe-area-bottom, 0px)) !important;
2617
2666
  /* Remove explicit height - let top/bottom define it */
2618
2667
  height: auto !important;
2619
2668
  max-height: none !important;
@@ -2767,10 +2816,10 @@ var GlobalSidebarStyles2 = styled4.createGlobalStyle`
2767
2816
  box-shadow: none !important;
2768
2817
  }
2769
2818
  `;
2770
- var StyledChatButton2 = styled4__default.default.button`
2819
+ var StyledChatButton2 = styled8__default.default.button`
2771
2820
  position: fixed;
2772
- bottom: calc(${tokens.spacing.sm} + env(safe-area-inset-bottom, 0px));
2773
- right: calc(${tokens.spacing.sm} + env(safe-area-inset-right, 0px));
2821
+ bottom: calc(${tokens.spacing.sm} + var(--safe-area-bottom, 0px));
2822
+ right: calc(${tokens.spacing.sm} + var(--safe-area-right, 0px));
2774
2823
  width: 36px;
2775
2824
  height: 36px;
2776
2825
  border-radius: ${tokens.borderRadius.full};
@@ -2801,17 +2850,11 @@ var StyledChatButton2 = styled4__default.default.button`
2801
2850
  fill: ${tokens.colors.text.primary};
2802
2851
  }
2803
2852
  `;
2804
- function CustomCopilotSidebar2({
2805
- children,
2806
- defaultOpen = false,
2807
- onSetOpen,
2808
- instructions,
2809
- className,
2810
- disabled = false,
2811
- disabledReason = "Start a free trial to enable AI chat",
2812
- onError,
2813
- renderError
2814
- }) {
2853
+ var WindowAdapter = (props) => {
2854
+ return /* @__PURE__ */ jsxRuntime.jsx(Window, { children: props.children });
2855
+ };
2856
+ WindowAdapter.displayName = "WindowAdapter";
2857
+ function createHeaderAdapter(onSetOpen) {
2815
2858
  const HeaderAdapterWithClose = (_props) => {
2816
2859
  const { setOpen } = reactUi.useChatContext();
2817
2860
  const handleClose = () => {
@@ -2820,9 +2863,10 @@ function CustomCopilotSidebar2({
2820
2863
  };
2821
2864
  return /* @__PURE__ */ jsxRuntime.jsx(Header, { title: "AI Assistant", onClose: handleClose });
2822
2865
  };
2823
- const WindowAdapterLocal = (props) => {
2824
- return /* @__PURE__ */ jsxRuntime.jsx(Window, { children: props.children });
2825
- };
2866
+ HeaderAdapterWithClose.displayName = "HeaderAdapterWithClose";
2867
+ return HeaderAdapterWithClose;
2868
+ }
2869
+ function createButtonAdapter(disabled, disabledReason, onSetOpen) {
2826
2870
  const CustomButton = (_props) => {
2827
2871
  const { open, setOpen } = reactUi.useChatContext();
2828
2872
  const handleClick = () => {
@@ -2859,16 +2903,44 @@ function CustomCopilotSidebar2({
2859
2903
  }
2860
2904
  );
2861
2905
  };
2906
+ CustomButton.displayName = "CustomButton";
2907
+ return CustomButton;
2908
+ }
2909
+ function CustomCopilotSidebar2({
2910
+ children,
2911
+ defaultOpen = false,
2912
+ onSetOpen,
2913
+ instructions,
2914
+ className,
2915
+ disabled = false,
2916
+ disabledReason = "Start a free trial to enable AI chat",
2917
+ onError,
2918
+ renderError,
2919
+ ThinkingIndicator,
2920
+ ToolCallsComponent
2921
+ }) {
2922
+ const HeaderAdapterWithClose = react.useMemo(
2923
+ () => createHeaderAdapter(onSetOpen),
2924
+ [onSetOpen]
2925
+ );
2926
+ const CustomButton = react.useMemo(
2927
+ () => createButtonAdapter(disabled, disabledReason, onSetOpen),
2928
+ [disabled, disabledReason, onSetOpen]
2929
+ );
2930
+ const AssistantMessageAdapterMemo = react.useMemo(
2931
+ () => ThinkingIndicator || ToolCallsComponent ? createAssistantMessageAdapter(ThinkingIndicator, ToolCallsComponent) : AssistantMessageAdapter,
2932
+ [ThinkingIndicator, ToolCallsComponent]
2933
+ );
2862
2934
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2863
2935
  /* @__PURE__ */ jsxRuntime.jsx(GlobalSidebarStyles2, {}),
2864
2936
  /* @__PURE__ */ jsxRuntime.jsx(
2865
2937
  reactUi.CopilotSidebar,
2866
2938
  {
2867
- AssistantMessage: AssistantMessageAdapter,
2939
+ AssistantMessage: AssistantMessageAdapterMemo,
2868
2940
  UserMessage: UserMessageAdapter,
2869
2941
  Input: InputAdapter,
2870
2942
  Header: HeaderAdapterWithClose,
2871
- Window: WindowAdapterLocal,
2943
+ Window: WindowAdapter,
2872
2944
  Button: CustomButton,
2873
2945
  RenderActionExecutionMessage: ActionExecutionAdapter,
2874
2946
  instructions,
@@ -2889,7 +2961,7 @@ function CustomCopilotSidebar2({
2889
2961
  ] });
2890
2962
  }
2891
2963
  CustomCopilotSidebar2.displayName = "CustomCopilotSidebar";
2892
- var FooterContainer = styled4__default.default.footer`
2964
+ var FooterContainer = styled8__default.default.footer`
2893
2965
  display: flex;
2894
2966
  align-items: center;
2895
2967
  justify-content: center;
@@ -2898,7 +2970,7 @@ var FooterContainer = styled4__default.default.footer`
2898
2970
  border-top: 1px solid ${tokens.colors.border.default};
2899
2971
  min-height: 44px;
2900
2972
  `;
2901
- var FooterContent = styled4__default.default.div`
2973
+ var FooterContent = styled8__default.default.div`
2902
2974
  display: flex;
2903
2975
  align-items: center;
2904
2976
  justify-content: space-between;
@@ -2911,13 +2983,13 @@ var FooterContent = styled4__default.default.div`
2911
2983
  font-family: ${tokens.typography.fontFamily.primary};
2912
2984
  line-height: ${tokens.typography.lineHeight.tight};
2913
2985
  `;
2914
- var FooterBranding = styled4__default.default.div`
2986
+ var FooterBranding = styled8__default.default.div`
2915
2987
  display: flex;
2916
2988
  align-items: center;
2917
2989
  gap: ${tokens.spacing.xs};
2918
2990
  flex-shrink: 0;
2919
2991
  `;
2920
- var FooterStatus = styled4__default.default.div`
2992
+ var FooterStatus = styled8__default.default.div`
2921
2993
  display: flex;
2922
2994
  align-items: center;
2923
2995
  gap: ${tokens.spacing.xs};
@@ -2927,7 +2999,7 @@ var FooterStatus = styled4__default.default.div`
2927
2999
  font-size: ${tokens.typography.fontSize.xs};
2928
3000
  opacity: 0.8;
2929
3001
  `;
2930
- var FooterLink = styled4__default.default.a`
3002
+ var FooterLink = styled8__default.default.a`
2931
3003
  color: ${tokens.colors.primary};
2932
3004
  text-decoration: none;
2933
3005
  transition: opacity ${tokens.transitions.fast};
@@ -2975,13 +3047,13 @@ var Footer = ({
2975
3047
  ] }) });
2976
3048
  };
2977
3049
  Footer.displayName = "Footer";
2978
- var InputContainer = styled4__default.default.div`
3050
+ var InputContainer = styled8__default.default.div`
2979
3051
  display: flex;
2980
3052
  flex-direction: column;
2981
3053
  width: 100%;
2982
3054
  position: relative;
2983
3055
  `;
2984
- var InputWrapper2 = styled4__default.default.div`
3056
+ var InputWrapper2 = styled8__default.default.div`
2985
3057
  display: flex;
2986
3058
  align-items: flex-end;
2987
3059
  gap: ${tokens.spacing.sm};
@@ -3001,7 +3073,7 @@ var InputWrapper2 = styled4__default.default.div`
3001
3073
  border-color: ${tokens.colors.border.subtle};
3002
3074
  }
3003
3075
  `;
3004
- var TextArea = styled4__default.default.textarea`
3076
+ var TextArea = styled8__default.default.textarea`
3005
3077
  flex: 1;
3006
3078
  min-height: ${tokens.spacing.lg};
3007
3079
  max-height: ${(props) => `${(props.$maxRows || 5) * 24}px`};
@@ -3047,7 +3119,7 @@ var TextArea = styled4__default.default.textarea`
3047
3119
  background: ${tokens.colors.scrollbar.thumbHover};
3048
3120
  }
3049
3121
  `;
3050
- var SendButton = styled4__default.default.button`
3122
+ var SendButton = styled8__default.default.button`
3051
3123
  display: flex;
3052
3124
  align-items: center;
3053
3125
  justify-content: center;
@@ -3177,7 +3249,7 @@ var Input = ({
3177
3249
  )
3178
3250
  ] }) });
3179
3251
  };
3180
- var MessagesListContainer = styled4__default.default.div`
3252
+ var MessagesListContainer = styled8__default.default.div`
3181
3253
  display: flex;
3182
3254
  flex-direction: column;
3183
3255
  width: 100%;
@@ -3217,7 +3289,7 @@ var MessagesListContainer = styled4__default.default.div`
3217
3289
  /* Ensure proper rendering on mobile */
3218
3290
  -webkit-overflow-scrolling: touch;
3219
3291
  `;
3220
- var MessagesListContent = styled4__default.default.div`
3292
+ var MessagesListContent = styled8__default.default.div`
3221
3293
  display: flex;
3222
3294
  flex-direction: column;
3223
3295
  gap: ${tokens.spacing.sm};
@@ -3333,19 +3405,19 @@ var MessagesList = ({
3333
3405
  }
3334
3406
  );
3335
3407
  };
3336
- var StyledUserMessage2 = styled4__default.default.div`
3408
+ var StyledUserMessage2 = styled8__default.default.div`
3337
3409
  display: flex;
3338
3410
  justify-content: flex-end;
3339
3411
  align-items: flex-start;
3340
- margin: ${tokens.spacing.sm} 0;
3341
- padding: 0 ${tokens.spacing.md};
3412
+ margin: ${tokens.spacing.xs} 0;
3413
+ padding: 0;
3342
3414
  width: 100%;
3343
3415
  `;
3344
- var MessageBubble = styled4__default.default.div`
3416
+ var MessageBubble = styled8__default.default.div`
3345
3417
  display: flex;
3346
3418
  flex-direction: column;
3347
- max-width: 70%;
3348
- padding: ${tokens.spacing.sm} ${tokens.spacing.md};
3419
+ max-width: 85%;
3420
+ padding: ${tokens.spacing.sm};
3349
3421
  border-radius: ${tokens.borderRadius.lg};
3350
3422
 
3351
3423
  /* User message colors - dark blue from brand */
@@ -3368,7 +3440,7 @@ var MessageBubble = styled4__default.default.div`
3368
3440
  opacity: 0.9;
3369
3441
  }
3370
3442
  `;
3371
- var MessageContent2 = styled4__default.default.p`
3443
+ var MessageContent2 = styled8__default.default.p`
3372
3444
  margin: 0;
3373
3445
  font-size: ${tokens.typography.fontSize.sm};
3374
3446
  line-height: ${tokens.typography.lineHeight.normal};
@@ -3377,13 +3449,13 @@ var MessageContent2 = styled4__default.default.p`
3377
3449
  word-break: break-word;
3378
3450
  white-space: pre-wrap;
3379
3451
  `;
3380
- var MessageTime2 = styled4__default.default.time`
3452
+ var MessageTime2 = styled8__default.default.time`
3381
3453
  font-size: ${tokens.typography.fontSize.xs};
3382
3454
  opacity: 0.7;
3383
3455
  margin-top: ${tokens.spacing.xs};
3384
3456
  text-align: right;
3385
3457
  `;
3386
- var ActionButton3 = styled4__default.default.button`
3458
+ var ActionButton3 = styled8__default.default.button`
3387
3459
  display: inline-flex;
3388
3460
  align-items: center;
3389
3461
  gap: ${tokens.spacing.xs};
@@ -3407,12 +3479,12 @@ var ActionButton3 = styled4__default.default.button`
3407
3479
  transform: scale(0.98);
3408
3480
  }
3409
3481
  `;
3410
- var ActionsContainer3 = styled4__default.default.div`
3482
+ var ActionsContainer3 = styled8__default.default.div`
3411
3483
  display: flex;
3412
3484
  gap: ${tokens.spacing.xs};
3413
3485
  flex-wrap: wrap;
3414
3486
  `;
3415
- var StreamingIndicator2 = styled4__default.default.span`
3487
+ var StreamingIndicator2 = styled8__default.default.span`
3416
3488
  display: inline-block;
3417
3489
  width: ${tokens.spacing.xs};
3418
3490
  height: ${tokens.spacing.xs};
@@ -3433,7 +3505,7 @@ var StreamingIndicator2 = styled4__default.default.span`
3433
3505
  }
3434
3506
  }
3435
3507
  `;
3436
- var Avatar3 = styled4__default.default.img`
3508
+ var Avatar3 = styled8__default.default.img`
3437
3509
  width: ${tokens.spacing.xl};
3438
3510
  height: ${tokens.spacing.xl};
3439
3511
  border-radius: ${tokens.borderRadius.full};
@@ -3466,7 +3538,7 @@ var UserMessage2 = ({
3466
3538
  avatarUrl && /* @__PURE__ */ jsxRuntime.jsx(Avatar3, { src: avatarUrl, alt: username || "User" })
3467
3539
  ] });
3468
3540
  };
3469
- var ErrorContainer = styled4__default.default.div`
3541
+ var ErrorContainer = styled8__default.default.div`
3470
3542
  display: flex;
3471
3543
  align-items: flex-start;
3472
3544
  gap: ${tokens.spacing.sm};
@@ -3480,7 +3552,7 @@ var ErrorContainer = styled4__default.default.div`
3480
3552
  width: ${(props) => props.variant === "banner" ? "100%" : "auto"};
3481
3553
  max-width: ${(props) => props.variant === "banner" ? "100%" : "600px"};
3482
3554
  `;
3483
- var IconContainer = styled4__default.default.div`
3555
+ var IconContainer = styled8__default.default.div`
3484
3556
  flex-shrink: 0;
3485
3557
  width: 20px;
3486
3558
  height: 20px;
@@ -3497,29 +3569,29 @@ var ErrorIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
3497
3569
  children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" })
3498
3570
  }
3499
3571
  );
3500
- var Content2 = styled4__default.default.div`
3572
+ var Content2 = styled8__default.default.div`
3501
3573
  flex: 1;
3502
3574
  display: flex;
3503
3575
  flex-direction: column;
3504
3576
  gap: ${tokens.spacing.sm};
3505
3577
  `;
3506
- var ErrorMessage = styled4__default.default.div`
3578
+ var ErrorMessage = styled8__default.default.div`
3507
3579
  font-size: ${tokens.typography.fontSize.sm};
3508
3580
  line-height: ${tokens.typography.lineHeight.normal};
3509
3581
  color: ${tokens.colors.text.primary};
3510
3582
  `;
3511
- var ErrorDetails = styled4__default.default.div`
3583
+ var ErrorDetails = styled8__default.default.div`
3512
3584
  font-size: ${tokens.typography.fontSize.xs};
3513
3585
  line-height: 1.4;
3514
3586
  color: ${tokens.colors.text.secondary};
3515
3587
  margin-top: ${tokens.spacing.xs};
3516
3588
  `;
3517
- var Actions2 = styled4__default.default.div`
3589
+ var Actions2 = styled8__default.default.div`
3518
3590
  display: flex;
3519
3591
  gap: ${tokens.spacing.sm};
3520
3592
  margin-top: ${tokens.spacing.sm};
3521
3593
  `;
3522
- var Button2 = styled4__default.default.button`
3594
+ var Button2 = styled8__default.default.button`
3523
3595
  display: inline-flex;
3524
3596
  align-items: center;
3525
3597
  gap: ${tokens.spacing.xs};
@@ -3548,7 +3620,7 @@ var Button2 = styled4__default.default.button`
3548
3620
  cursor: not-allowed;
3549
3621
  }
3550
3622
  `;
3551
- var CloseButton = styled4__default.default.button`
3623
+ var CloseButton = styled8__default.default.button`
3552
3624
  flex-shrink: 0;
3553
3625
  width: 24px;
3554
3626
  height: 24px;
@@ -3607,7 +3679,7 @@ var StreamErrorMessage = ({
3607
3679
  ] });
3608
3680
  };
3609
3681
  StreamErrorMessage.displayName = "StreamErrorMessage";
3610
- var SuggestionsContainer = styled4__default.default.div`
3682
+ var SuggestionsContainer = styled8__default.default.div`
3611
3683
  display: flex;
3612
3684
  flex-wrap: nowrap; /* Single row */
3613
3685
  gap: ${tokens.spacing.sm};
@@ -3640,7 +3712,7 @@ var SuggestionsContainer = styled4__default.default.div`
3640
3712
  display: none; /* Chrome/Safari/Opera */
3641
3713
  }
3642
3714
  `;
3643
- var StyledSuggestion = styled4__default.default.button`
3715
+ var StyledSuggestion = styled8__default.default.button`
3644
3716
  /* Base styles */
3645
3717
  display: inline-flex;
3646
3718
  align-items: center;
@@ -3673,7 +3745,7 @@ var StyledSuggestion = styled4__default.default.button`
3673
3745
  box-shadow: none;
3674
3746
  }
3675
3747
 
3676
- ${({ $isPressed }) => $isPressed && styled4.css`
3748
+ ${({ $isPressed }) => $isPressed && styled8.css`
3677
3749
  transform: scale(0.98);
3678
3750
  `}
3679
3751