@agentiffai/design 0.1.4 → 0.1.6
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-CukhSS8T.d.cts → StreamStatusIndicator-DM5n4MI1.d.cts} +141 -4
- package/dist/{Window-CukhSS8T.d.ts → StreamStatusIndicator-DM5n4MI1.d.ts} +141 -4
- package/dist/copilotkit/index.cjs +937 -206
- package/dist/copilotkit/index.cjs.map +1 -1
- package/dist/copilotkit/index.d.cts +1 -1
- package/dist/copilotkit/index.d.ts +1 -1
- package/dist/copilotkit/index.js +935 -207
- package/dist/copilotkit/index.js.map +1 -1
- package/dist/index.cjs +1819 -164
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -3
- package/dist/index.d.ts +17 -3
- package/dist/index.js +1812 -165
- package/dist/index.js.map +1 -1
- package/dist/layout/index.cjs +85 -50
- package/dist/layout/index.cjs.map +1 -1
- package/dist/layout/index.d.cts +10 -3
- package/dist/layout/index.d.ts +10 -3
- package/dist/layout/index.js +85 -50
- package/dist/layout/index.js.map +1 -1
- package/dist/theme/index.cjs +6 -1
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.d.cts +8 -0
- package/dist/theme/index.d.ts +8 -0
- package/dist/theme/index.js +6 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/workflow/index.cjs +995 -0
- package/dist/workflow/index.cjs.map +1 -0
- package/dist/workflow/index.d.cts +168 -0
- package/dist/workflow/index.d.ts +168 -0
- package/dist/workflow/index.js +986 -0
- package/dist/workflow/index.js.map +1 -0
- package/package.json +16 -3
- package/public/assets/bg-set/brand-logos/Google.svg +1 -0
- package/public/assets/bg-set/brand-logos/Google2.svg +1 -0
- package/public/assets/bg-set/brand-logos/Microsoft.svg +1 -0
- package/public/assets/bg-set/brand-logos/Microsoft2.svg +1 -0
- package/public/assets/bg-set/brand-logos/Slack.svg +1 -0
- package/public/assets/bg-set/brand-logos/Slack2.svg +1 -0
- package/public/assets/bg-set/brand-logos/YouTube.svg +1 -0
- package/public/assets/bg-set/brand-logos/YouTube2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=lg, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=md, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=sm, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=xl, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=xs, Type=Waves Rays2.svg +1 -0
- package/public/assets/icon-set/Icon-add-circle-fill.svg +1 -0
- package/public/assets/icon-set/Icon-arrow-left-fill.svg +1 -0
- package/public/assets/icon-set/Icon-calendar-fill.svg +1 -0
- package/public/assets/icon-set/Icon-chat-1-fill.svg +1 -0
- package/public/assets/icon-set/Icon-check-fill.svg +3 -0
- package/public/assets/icon-set/Icon-close-fill.svg +3 -0
- package/public/assets/icon-set/Icon-download-2-fill.svg +1 -0
- package/public/assets/icon-set/Icon-home-fill.svg +1 -0
- package/public/assets/icon-set/Icon-hourglass-line.svg +3 -0
- package/public/assets/icon-set/Icon-loader-2-line.svg +3 -0
- package/public/assets/icon-set/Icon-mic-fill.svg +1 -0
- package/public/assets/icon-set/Icon-radio-button-line.svg +3 -0
- package/public/assets/icon-set/Icon-settings-3-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-line.svg +1 -0
- package/public/assets/icon-set/Icon-shield-check-fill.svg +3 -0
- package/public/assets/icon-set/Icon-shield-cross-fill.svg +3 -0
- package/public/assets/icon-set/logout-box-fill.svg +1 -0
package/dist/copilotkit/index.js
CHANGED
|
@@ -458,6 +458,20 @@ var MessageContainer = styled4.div`
|
|
|
458
458
|
align-items: flex-start;
|
|
459
459
|
padding: 8px 0;
|
|
460
460
|
max-width: 100%;
|
|
461
|
+
|
|
462
|
+
/* Fade in and slide up animation */
|
|
463
|
+
animation: fadeInSlideUp 0.4s ease-out;
|
|
464
|
+
|
|
465
|
+
@keyframes fadeInSlideUp {
|
|
466
|
+
from {
|
|
467
|
+
opacity: 0;
|
|
468
|
+
transform: translateY(10px);
|
|
469
|
+
}
|
|
470
|
+
to {
|
|
471
|
+
opacity: 1;
|
|
472
|
+
transform: translateY(0);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
461
475
|
`;
|
|
462
476
|
var AvatarContainer = styled4.div`
|
|
463
477
|
flex-shrink: 0;
|
|
@@ -473,7 +487,7 @@ var AvatarInitials = styled4.div`
|
|
|
473
487
|
width: 32px;
|
|
474
488
|
height: 32px;
|
|
475
489
|
border-radius: 50%;
|
|
476
|
-
background: linear-gradient(135deg, #
|
|
490
|
+
background: linear-gradient(135deg, #2CB0AB 0%, #459FB9 100%);
|
|
477
491
|
color: white;
|
|
478
492
|
display: flex;
|
|
479
493
|
align-items: center;
|
|
@@ -493,11 +507,13 @@ var ContentContainer = styled4.div`
|
|
|
493
507
|
min-width: 0;
|
|
494
508
|
`;
|
|
495
509
|
var MessageContent = styled4.div`
|
|
496
|
-
background-color:
|
|
510
|
+
background-color: rgba(45, 45, 61, 0.7); /* Semi-transparent dark gray with 70% opacity */
|
|
511
|
+
backdrop-filter: blur(10px);
|
|
512
|
+
-webkit-backdrop-filter: blur(10px);
|
|
497
513
|
padding: 12px 16px;
|
|
498
|
-
border-radius:
|
|
514
|
+
border-radius: 12px; /* Match design tokens */
|
|
499
515
|
border-top-left-radius: 4px;
|
|
500
|
-
color: #
|
|
516
|
+
color: #FFFFFF; /* White text from design tokens */
|
|
501
517
|
font-size: 14px;
|
|
502
518
|
line-height: 1.5;
|
|
503
519
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
@@ -509,8 +525,10 @@ var LoadingDots2 = styled4.div`
|
|
|
509
525
|
display: flex;
|
|
510
526
|
gap: 6px;
|
|
511
527
|
padding: 12px 16px;
|
|
512
|
-
background-color:
|
|
513
|
-
|
|
528
|
+
background-color: rgba(45, 45, 61, 0.7); /* Match MessageContent with transparency */
|
|
529
|
+
backdrop-filter: blur(10px);
|
|
530
|
+
-webkit-backdrop-filter: blur(10px);
|
|
531
|
+
border-radius: 12px; /* Match design tokens */
|
|
514
532
|
border-top-left-radius: 4px;
|
|
515
533
|
width: fit-content;
|
|
516
534
|
`;
|
|
@@ -661,20 +679,136 @@ var FileAttachment = ({
|
|
|
661
679
|
}
|
|
662
680
|
);
|
|
663
681
|
};
|
|
682
|
+
var Container = styled4.div`
|
|
683
|
+
font-family: ${(props) => props.variant === "code" ? '"SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace' : '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'};
|
|
684
|
+
white-space: pre-wrap;
|
|
685
|
+
word-break: break-word;
|
|
686
|
+
line-height: 1.5;
|
|
687
|
+
`;
|
|
688
|
+
var Cursor = styled4.span`
|
|
689
|
+
display: inline-block;
|
|
690
|
+
width: 2px;
|
|
691
|
+
height: 1em;
|
|
692
|
+
background-color: currentColor;
|
|
693
|
+
margin-left: 2px;
|
|
694
|
+
vertical-align: text-bottom;
|
|
695
|
+
animation: blink 1s infinite;
|
|
696
|
+
|
|
697
|
+
@keyframes blink {
|
|
698
|
+
0%,
|
|
699
|
+
49% {
|
|
700
|
+
opacity: 1;
|
|
701
|
+
}
|
|
702
|
+
50%,
|
|
703
|
+
100% {
|
|
704
|
+
opacity: 0;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
`;
|
|
708
|
+
var StreamingText2 = ({
|
|
709
|
+
content,
|
|
710
|
+
isStreaming = false,
|
|
711
|
+
typingSpeed: _typingSpeed = 50,
|
|
712
|
+
// Not used - streaming shows chunks as they arrive
|
|
713
|
+
cursor = true,
|
|
714
|
+
variant = "default",
|
|
715
|
+
onStreamComplete,
|
|
716
|
+
className
|
|
717
|
+
}) => {
|
|
718
|
+
const [displayedText, setDisplayedText] = useState("");
|
|
719
|
+
useEffect(() => {
|
|
720
|
+
if (isStreaming) {
|
|
721
|
+
setDisplayedText(content);
|
|
722
|
+
return;
|
|
723
|
+
}
|
|
724
|
+
if (!isStreaming && displayedText !== content) {
|
|
725
|
+
setDisplayedText(content);
|
|
726
|
+
if (onStreamComplete) {
|
|
727
|
+
onStreamComplete();
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
}, [content, isStreaming, onStreamComplete, displayedText]);
|
|
731
|
+
const showCursor = isStreaming && cursor;
|
|
732
|
+
return /* @__PURE__ */ jsxs(Container, { variant, className, children: [
|
|
733
|
+
displayedText,
|
|
734
|
+
showCursor && /* @__PURE__ */ jsx(Cursor, {})
|
|
735
|
+
] });
|
|
736
|
+
};
|
|
737
|
+
StreamingText2.displayName = "StreamingText";
|
|
664
738
|
var AttachmentsContainer = styled4.div`
|
|
665
739
|
display: flex;
|
|
666
740
|
flex-direction: column;
|
|
667
741
|
gap: 8px;
|
|
668
742
|
margin-top: 12px;
|
|
669
743
|
`;
|
|
744
|
+
var ActionButton = styled4.button`
|
|
745
|
+
display: inline-flex;
|
|
746
|
+
align-items: center;
|
|
747
|
+
gap: 4px;
|
|
748
|
+
padding: 4px 8px;
|
|
749
|
+
font-size: 12px;
|
|
750
|
+
font-weight: 500;
|
|
751
|
+
color: #9CA3AF;
|
|
752
|
+
background: rgba(255, 255, 255, 0.05);
|
|
753
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
754
|
+
border-radius: 6px;
|
|
755
|
+
cursor: pointer;
|
|
756
|
+
transition: all 0.15s ease-in-out;
|
|
757
|
+
|
|
758
|
+
&:hover {
|
|
759
|
+
background: rgba(255, 255, 255, 0.1);
|
|
760
|
+
border-color: rgba(255, 255, 255, 0.2);
|
|
761
|
+
color: #FFFFFF;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
&:active {
|
|
765
|
+
transform: scale(0.98);
|
|
766
|
+
}
|
|
767
|
+
`;
|
|
768
|
+
var ActionsContainer2 = styled4.div`
|
|
769
|
+
display: flex;
|
|
770
|
+
gap: 6px;
|
|
771
|
+
flex-wrap: wrap;
|
|
772
|
+
margin-top: 8px;
|
|
773
|
+
`;
|
|
774
|
+
var MessageTime = styled4.time`
|
|
775
|
+
font-size: 11px;
|
|
776
|
+
color: #6B7280;
|
|
777
|
+
margin-top: 4px;
|
|
778
|
+
display: block;
|
|
779
|
+
`;
|
|
780
|
+
var StreamingIndicator = styled4.span`
|
|
781
|
+
display: inline-block;
|
|
782
|
+
width: 4px;
|
|
783
|
+
height: 4px;
|
|
784
|
+
margin-left: 4px;
|
|
785
|
+
background-color: #459FB9;
|
|
786
|
+
border-radius: 50%;
|
|
787
|
+
animation: pulse 1.5s ease-in-out infinite;
|
|
788
|
+
|
|
789
|
+
@keyframes pulse {
|
|
790
|
+
0%,
|
|
791
|
+
100% {
|
|
792
|
+
opacity: 0.3;
|
|
793
|
+
transform: scale(0.8);
|
|
794
|
+
}
|
|
795
|
+
50% {
|
|
796
|
+
opacity: 1;
|
|
797
|
+
transform: scale(1.2);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
`;
|
|
670
801
|
var AssistantMessage = ({
|
|
671
802
|
content = "",
|
|
672
803
|
avatarUrl,
|
|
673
804
|
avatarInitials: _avatarInitials = "AI",
|
|
674
805
|
isLoading = false,
|
|
806
|
+
isStreaming = false,
|
|
675
807
|
className,
|
|
676
808
|
attachments = [],
|
|
677
|
-
enableMarkdown
|
|
809
|
+
enableMarkdown = false,
|
|
810
|
+
timestamp,
|
|
811
|
+
actions = []
|
|
678
812
|
}) => {
|
|
679
813
|
const renderContent = () => {
|
|
680
814
|
if (isLoading) {
|
|
@@ -685,8 +819,25 @@ var AssistantMessage = ({
|
|
|
685
819
|
] });
|
|
686
820
|
}
|
|
687
821
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
688
|
-
content && /* @__PURE__ */
|
|
689
|
-
|
|
822
|
+
content && /* @__PURE__ */ jsxs(MessageContent, { children: [
|
|
823
|
+
/* @__PURE__ */ jsx(
|
|
824
|
+
StreamingText2,
|
|
825
|
+
{
|
|
826
|
+
content,
|
|
827
|
+
isStreaming,
|
|
828
|
+
typingSpeed: 30,
|
|
829
|
+
cursor: false,
|
|
830
|
+
variant: enableMarkdown ? "markdown" : "default"
|
|
831
|
+
}
|
|
832
|
+
),
|
|
833
|
+
isStreaming && /* @__PURE__ */ jsx(StreamingIndicator, {})
|
|
834
|
+
] }),
|
|
835
|
+
attachments.length > 0 && /* @__PURE__ */ jsx(AttachmentsContainer, { children: attachments.map((attachment, index) => /* @__PURE__ */ jsx(FileAttachment, { ...attachment }, `${attachment.title}-${index}`)) }),
|
|
836
|
+
timestamp && /* @__PURE__ */ jsx(MessageTime, { children: timestamp }),
|
|
837
|
+
actions.length > 0 && /* @__PURE__ */ jsx(ActionsContainer2, { children: actions.map((action, index) => /* @__PURE__ */ jsxs(ActionButton, { onClick: action.onClick, children: [
|
|
838
|
+
action.icon,
|
|
839
|
+
action.label
|
|
840
|
+
] }, index)) })
|
|
690
841
|
] });
|
|
691
842
|
};
|
|
692
843
|
return /* @__PURE__ */ jsxs(MessageContainer, { className, children: [
|
|
@@ -704,11 +855,40 @@ var dotPulse3 = keyframes`
|
|
|
704
855
|
transform: scale(1);
|
|
705
856
|
}
|
|
706
857
|
`;
|
|
707
|
-
var
|
|
858
|
+
var pulse = keyframes`
|
|
859
|
+
0%, 100% {
|
|
860
|
+
opacity: 0.5;
|
|
861
|
+
transform: scale(1);
|
|
862
|
+
}
|
|
863
|
+
50% {
|
|
864
|
+
opacity: 1;
|
|
865
|
+
transform: scale(1.2);
|
|
866
|
+
}
|
|
867
|
+
`;
|
|
868
|
+
var wave = keyframes`
|
|
869
|
+
0%, 40%, 100% {
|
|
870
|
+
transform: translateY(0);
|
|
871
|
+
}
|
|
872
|
+
20% {
|
|
873
|
+
transform: translateY(-8px);
|
|
874
|
+
}
|
|
875
|
+
`;
|
|
876
|
+
var getSizeValue = (size = "md") => {
|
|
877
|
+
switch (size) {
|
|
878
|
+
case "sm":
|
|
879
|
+
return { padding: "8px 12px", avatar: "32px", icon: "16px", fontSize: "12px", dotSize: "4px" };
|
|
880
|
+
case "lg":
|
|
881
|
+
return { padding: "16px 20px", avatar: "48px", icon: "24px", fontSize: "16px", dotSize: "8px" };
|
|
882
|
+
case "md":
|
|
883
|
+
default:
|
|
884
|
+
return { padding: "12px 16px", avatar: "40px", icon: "20px", fontSize: "14px", dotSize: "6px" };
|
|
885
|
+
}
|
|
886
|
+
};
|
|
887
|
+
var Container2 = styled4.div`
|
|
708
888
|
display: inline-flex;
|
|
709
889
|
align-items: center;
|
|
710
890
|
gap: 12px;
|
|
711
|
-
padding:
|
|
891
|
+
padding: ${(props) => getSizeValue(props.size).padding};
|
|
712
892
|
background-color: #2c2c2e;
|
|
713
893
|
border-radius: 16px;
|
|
714
894
|
box-shadow: none;
|
|
@@ -718,19 +898,19 @@ var Container = styled4.div`
|
|
|
718
898
|
margin: 0 auto;
|
|
719
899
|
`;
|
|
720
900
|
var Avatar2 = styled4.div`
|
|
721
|
-
width:
|
|
722
|
-
height:
|
|
901
|
+
width: ${(props) => getSizeValue(props.size).avatar};
|
|
902
|
+
height: ${(props) => getSizeValue(props.size).avatar};
|
|
723
903
|
border-radius: 50%;
|
|
724
|
-
background: linear-gradient(135deg, #
|
|
904
|
+
background: linear-gradient(135deg, #1e5a6b 0%, #2a7a8f 100%); /* Darker teal gradient */
|
|
725
905
|
display: flex;
|
|
726
906
|
align-items: center;
|
|
727
907
|
justify-content: center;
|
|
728
908
|
flex-shrink: 0;
|
|
729
|
-
box-shadow: 0 2px 8px rgba(
|
|
909
|
+
box-shadow: 0 2px 8px rgba(44, 176, 171, 0.3); /* Teal shadow */
|
|
730
910
|
`;
|
|
731
911
|
var HeadphonesIcon = styled4.svg`
|
|
732
|
-
width:
|
|
733
|
-
height:
|
|
912
|
+
width: ${(props) => getSizeValue(props.size).icon};
|
|
913
|
+
height: ${(props) => getSizeValue(props.size).icon};
|
|
734
914
|
color: #FFFFFF;
|
|
735
915
|
`;
|
|
736
916
|
var Content = styled4.div`
|
|
@@ -741,18 +921,29 @@ var Content = styled4.div`
|
|
|
741
921
|
var LoadingDots3 = styled4.div`
|
|
742
922
|
display: flex;
|
|
743
923
|
align-items: center;
|
|
744
|
-
gap: 4px;
|
|
924
|
+
gap: ${(props) => props.variant === "wave" ? "2px" : "4px"};
|
|
745
925
|
padding: 0 4px;
|
|
746
926
|
`;
|
|
747
927
|
var Dot2 = styled4.span`
|
|
748
|
-
width:
|
|
749
|
-
height:
|
|
928
|
+
width: ${(props) => getSizeValue(props.size).dotSize};
|
|
929
|
+
height: ${(props) => getSizeValue(props.size).dotSize};
|
|
750
930
|
border-radius: 50%;
|
|
751
931
|
background-color: #8e8e93;
|
|
752
|
-
animation: ${
|
|
932
|
+
animation: ${(props) => {
|
|
933
|
+
switch (props.variant) {
|
|
934
|
+
case "pulse":
|
|
935
|
+
return pulse;
|
|
936
|
+
case "wave":
|
|
937
|
+
return wave;
|
|
938
|
+
case "dots":
|
|
939
|
+
default:
|
|
940
|
+
return dotPulse3;
|
|
941
|
+
}
|
|
942
|
+
}}
|
|
943
|
+
1.4s ease-in-out infinite;
|
|
753
944
|
`;
|
|
754
945
|
var Message2 = styled4.span`
|
|
755
|
-
font-size:
|
|
946
|
+
font-size: ${(props) => getSizeValue(props.size).fontSize};
|
|
756
947
|
color: #e5e5e7;
|
|
757
948
|
font-weight: 400;
|
|
758
949
|
line-height: 1.5;
|
|
@@ -761,26 +952,50 @@ var Message2 = styled4.span`
|
|
|
761
952
|
function AssistantThinking({
|
|
762
953
|
message = "Analyzing data, please wait...",
|
|
763
954
|
className,
|
|
764
|
-
ariaLabel = "Assistant is thinking"
|
|
955
|
+
ariaLabel = "Assistant is thinking",
|
|
956
|
+
variant = "dots",
|
|
957
|
+
size = "md"
|
|
765
958
|
}) {
|
|
766
959
|
const containerRef = useRef(null);
|
|
960
|
+
const renderLoadingIndicator = () => {
|
|
961
|
+
switch (variant) {
|
|
962
|
+
case "dots":
|
|
963
|
+
return /* @__PURE__ */ jsxs(LoadingDots3, { "aria-hidden": "true", size, children: [
|
|
964
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "0ms" }, size }),
|
|
965
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "150ms" }, size }),
|
|
966
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "300ms" }, size })
|
|
967
|
+
] });
|
|
968
|
+
case "pulse":
|
|
969
|
+
return /* @__PURE__ */ jsx(LoadingDots3, { "aria-hidden": "true", size, variant: "pulse", children: /* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "0ms" }, size, variant: "pulse" }) });
|
|
970
|
+
case "wave":
|
|
971
|
+
return /* @__PURE__ */ jsxs(LoadingDots3, { "aria-hidden": "true", size, variant: "wave", children: [
|
|
972
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "0ms" }, size, variant: "wave" }),
|
|
973
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "100ms" }, size, variant: "wave" }),
|
|
974
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "200ms" }, size, variant: "wave" }),
|
|
975
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "300ms" }, size, variant: "wave" }),
|
|
976
|
+
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "400ms" }, size, variant: "wave" })
|
|
977
|
+
] });
|
|
978
|
+
case "text":
|
|
979
|
+
return null;
|
|
980
|
+
// Just show the message with no indicator
|
|
981
|
+
default:
|
|
982
|
+
return null;
|
|
983
|
+
}
|
|
984
|
+
};
|
|
767
985
|
return /* @__PURE__ */ jsxs(
|
|
768
|
-
|
|
986
|
+
Container2,
|
|
769
987
|
{
|
|
770
988
|
ref: containerRef,
|
|
771
989
|
className,
|
|
772
990
|
role: "status",
|
|
773
991
|
"aria-live": "polite",
|
|
774
992
|
"aria-label": ariaLabel,
|
|
993
|
+
size,
|
|
775
994
|
children: [
|
|
776
|
-
/* @__PURE__ */ jsx(Avatar2, { "aria-hidden": "true", children: /* @__PURE__ */ jsx(HeadphonesIcon, { viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M17 13a4 4 0 0 1 0 8c-2.142 0-4-1.79-4-4h-2a4 4 0 1 1-.535-2h3.07A4 4 0 0 1 17 13M2 12v-2h2V7a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v3h2v2z" }) }) }),
|
|
995
|
+
/* @__PURE__ */ jsx(Avatar2, { "aria-hidden": "true", size, children: /* @__PURE__ */ jsx(HeadphonesIcon, { viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M17 13a4 4 0 0 1 0 8c-2.142 0-4-1.79-4-4h-2a4 4 0 1 1-.535-2h3.07A4 4 0 0 1 17 13M2 12v-2h2V7a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v3h2v2z" }) }) }),
|
|
777
996
|
/* @__PURE__ */ jsxs(Content, { children: [
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "150ms" } }),
|
|
781
|
-
/* @__PURE__ */ jsx(Dot2, { style: { animationDelay: "300ms" } })
|
|
782
|
-
] }),
|
|
783
|
-
/* @__PURE__ */ jsx(Message2, { children: message })
|
|
997
|
+
renderLoadingIndicator(),
|
|
998
|
+
/* @__PURE__ */ jsx(Message2, { size, children: message })
|
|
784
999
|
] })
|
|
785
1000
|
]
|
|
786
1001
|
}
|
|
@@ -800,12 +1015,9 @@ var AssistantMessageAdapter = ({
|
|
|
800
1015
|
// markdownTagRenderers,
|
|
801
1016
|
// ImageRenderer,
|
|
802
1017
|
}) => {
|
|
803
|
-
if (isLoading) {
|
|
1018
|
+
if (isLoading || isGenerating && !message?.content) {
|
|
804
1019
|
return /* @__PURE__ */ jsx(AssistantThinking, { message: "Thinking..." });
|
|
805
1020
|
}
|
|
806
|
-
if (isGenerating && !message?.content) {
|
|
807
|
-
return /* @__PURE__ */ jsx(AssistantThinking, { message: "Generating response..." });
|
|
808
|
-
}
|
|
809
1021
|
const content = message?.content || "";
|
|
810
1022
|
const attachments = [];
|
|
811
1023
|
return /* @__PURE__ */ jsx(
|
|
@@ -813,7 +1025,8 @@ var AssistantMessageAdapter = ({
|
|
|
813
1025
|
{
|
|
814
1026
|
content,
|
|
815
1027
|
avatarInitials: "AI",
|
|
816
|
-
isLoading:
|
|
1028
|
+
isLoading: false,
|
|
1029
|
+
isStreaming: isGenerating,
|
|
817
1030
|
attachments,
|
|
818
1031
|
enableMarkdown: true
|
|
819
1032
|
}
|
|
@@ -831,7 +1044,6 @@ var StyledUserMessage = styled4.button`
|
|
|
831
1044
|
font-size: 14px;
|
|
832
1045
|
font-weight: 400;
|
|
833
1046
|
line-height: 1.4;
|
|
834
|
-
color: #ffffff;
|
|
835
1047
|
border: none;
|
|
836
1048
|
cursor: default;
|
|
837
1049
|
user-select: none;
|
|
@@ -840,34 +1052,37 @@ var StyledUserMessage = styled4.button`
|
|
|
840
1052
|
position: relative;
|
|
841
1053
|
text-align: left;
|
|
842
1054
|
|
|
843
|
-
/*
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
1055
|
+
/* Force override CopilotKit's default user message styles */
|
|
1056
|
+
&& {
|
|
1057
|
+
background: #1C3A4E !important; /* Darker brand blue - darker than secondary */
|
|
1058
|
+
color: #FFFFFF !important; /* White text on dark blue background */
|
|
1059
|
+
border-radius: 999px !important; /* Pill shape - fully rounded ends */
|
|
1060
|
+
}
|
|
848
1061
|
|
|
849
|
-
/* Subtle shadow and glow effect */
|
|
1062
|
+
/* Subtle shadow and glow effect - darker blue */
|
|
850
1063
|
box-shadow:
|
|
851
|
-
0 2px 8px rgba(
|
|
852
|
-
0 1px 3px rgba(
|
|
1064
|
+
0 2px 8px rgba(28, 58, 78, 0.25),
|
|
1065
|
+
0 1px 3px rgba(28, 58, 78, 0.15);
|
|
853
1066
|
|
|
854
1067
|
/* Smooth transitions */
|
|
855
1068
|
transition: all 0.2s ease-in-out;
|
|
856
1069
|
|
|
857
|
-
/* Speech bubble tail */
|
|
1070
|
+
/* Speech bubble tail - darker blue to match bubble */
|
|
858
1071
|
&::after {
|
|
859
1072
|
content: '';
|
|
860
1073
|
position: absolute;
|
|
861
|
-
bottom: -
|
|
862
|
-
right:
|
|
863
|
-
width:
|
|
864
|
-
height:
|
|
865
|
-
background: #
|
|
1074
|
+
bottom: -6px;
|
|
1075
|
+
right: 12px;
|
|
1076
|
+
width: 14px;
|
|
1077
|
+
height: 14px;
|
|
1078
|
+
background: #1C3A4E !important; /* Force override - darker blue */
|
|
866
1079
|
transform: rotate(45deg);
|
|
867
|
-
border-radius: 0 0
|
|
1080
|
+
border-radius: 0 0 4px 0;
|
|
1081
|
+
clip-path: polygon(0 0, 100% 100%, 0 100%);
|
|
868
1082
|
box-shadow:
|
|
869
|
-
2px 2px 4px rgba(
|
|
1083
|
+
2px 2px 4px rgba(28, 58, 78, 0.15);
|
|
870
1084
|
transition: all 0.2s ease-in-out;
|
|
1085
|
+
z-index: -1;
|
|
871
1086
|
}
|
|
872
1087
|
|
|
873
1088
|
/* Hover state - only for button elements */
|
|
@@ -875,12 +1090,12 @@ var StyledUserMessage = styled4.button`
|
|
|
875
1090
|
transform: translateY(-1px);
|
|
876
1091
|
cursor: pointer;
|
|
877
1092
|
box-shadow:
|
|
878
|
-
0 4px 12px rgba(
|
|
879
|
-
0 2px 6px rgba(
|
|
1093
|
+
0 4px 12px rgba(28, 58, 78, 0.35),
|
|
1094
|
+
0 2px 6px rgba(28, 58, 78, 0.25);
|
|
880
1095
|
|
|
881
1096
|
&::after {
|
|
882
1097
|
box-shadow:
|
|
883
|
-
3px 3px 6px rgba(
|
|
1098
|
+
3px 3px 6px rgba(28, 58, 78, 0.2);
|
|
884
1099
|
}
|
|
885
1100
|
}
|
|
886
1101
|
|
|
@@ -888,24 +1103,24 @@ var StyledUserMessage = styled4.button`
|
|
|
888
1103
|
&[role="button"]:active:not(:disabled) {
|
|
889
1104
|
transform: translateY(0);
|
|
890
1105
|
box-shadow:
|
|
891
|
-
0 1px 4px rgba(
|
|
892
|
-
0 1px 2px rgba(
|
|
1106
|
+
0 1px 4px rgba(28, 58, 78, 0.2),
|
|
1107
|
+
0 1px 2px rgba(28, 58, 78, 0.1);
|
|
893
1108
|
|
|
894
1109
|
&::after {
|
|
895
1110
|
box-shadow:
|
|
896
|
-
1px 1px 2px rgba(
|
|
1111
|
+
1px 1px 2px rgba(28, 58, 78, 0.1);
|
|
897
1112
|
}
|
|
898
1113
|
}
|
|
899
1114
|
|
|
900
1115
|
${({ $isPressed }) => $isPressed && css`
|
|
901
1116
|
transform: translateY(0) scale(0.98);
|
|
902
1117
|
box-shadow:
|
|
903
|
-
0 1px 4px rgba(
|
|
904
|
-
0 1px 2px rgba(
|
|
1118
|
+
0 1px 4px rgba(28, 58, 78, 0.2),
|
|
1119
|
+
0 1px 2px rgba(28, 58, 78, 0.1);
|
|
905
1120
|
|
|
906
1121
|
&::after {
|
|
907
1122
|
box-shadow:
|
|
908
|
-
1px 1px 2px rgba(
|
|
1123
|
+
1px 1px 2px rgba(28, 58, 78, 0.1);
|
|
909
1124
|
}
|
|
910
1125
|
`}
|
|
911
1126
|
|
|
@@ -915,12 +1130,12 @@ var StyledUserMessage = styled4.button`
|
|
|
915
1130
|
}
|
|
916
1131
|
|
|
917
1132
|
&:focus-visible {
|
|
918
|
-
outline: 2px solid #
|
|
1133
|
+
outline: 2px solid #1C3A4E;
|
|
919
1134
|
outline-offset: 3px;
|
|
920
1135
|
box-shadow:
|
|
921
|
-
0 4px 12px rgba(
|
|
922
|
-
0 2px 6px rgba(
|
|
923
|
-
0 0 0 3px rgba(
|
|
1136
|
+
0 4px 12px rgba(28, 58, 78, 0.35),
|
|
1137
|
+
0 2px 6px rgba(28, 58, 78, 0.25),
|
|
1138
|
+
0 0 0 3px rgba(28, 58, 78, 0.1);
|
|
924
1139
|
}
|
|
925
1140
|
|
|
926
1141
|
/* Disabled state */
|
|
@@ -982,6 +1197,20 @@ var UserMessageWrapper = styled4.div`
|
|
|
982
1197
|
justify-content: flex-end;
|
|
983
1198
|
width: 100%;
|
|
984
1199
|
padding: 8px 0;
|
|
1200
|
+
|
|
1201
|
+
/* Fade in and slide up animation */
|
|
1202
|
+
animation: fadeInSlideUp 0.3s ease-out;
|
|
1203
|
+
|
|
1204
|
+
@keyframes fadeInSlideUp {
|
|
1205
|
+
from {
|
|
1206
|
+
opacity: 0;
|
|
1207
|
+
transform: translateY(10px);
|
|
1208
|
+
}
|
|
1209
|
+
to {
|
|
1210
|
+
opacity: 1;
|
|
1211
|
+
transform: translateY(0);
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
985
1214
|
`;
|
|
986
1215
|
var UserMessageAdapter = ({
|
|
987
1216
|
message,
|
|
@@ -1005,7 +1234,9 @@ var ChatInputContainer = styled4.div`
|
|
|
1005
1234
|
flex-direction: column;
|
|
1006
1235
|
width: 100%;
|
|
1007
1236
|
padding: 8px;
|
|
1008
|
-
background:
|
|
1237
|
+
background-color: rgba(25, 25, 25, 0.6);
|
|
1238
|
+
backdrop-filter: blur(10px);
|
|
1239
|
+
-webkit-backdrop-filter: blur(10px);
|
|
1009
1240
|
border-radius: 0;
|
|
1010
1241
|
box-shadow: none;
|
|
1011
1242
|
box-sizing: border-box;
|
|
@@ -1068,16 +1299,16 @@ var InputWrapper = styled4.div`
|
|
|
1068
1299
|
align-items: center;
|
|
1069
1300
|
gap: 10px;
|
|
1070
1301
|
padding: 10px 14px;
|
|
1071
|
-
background-color:
|
|
1072
|
-
border: 1px solid
|
|
1302
|
+
background-color: rgba(25, 25, 25, 0.4);
|
|
1303
|
+
border: 1px solid rgba(58, 58, 60, 0.3);
|
|
1073
1304
|
border-radius: 12px;
|
|
1074
1305
|
transition: all 0.2s ease;
|
|
1075
1306
|
width: 100%;
|
|
1076
1307
|
box-sizing: border-box;
|
|
1077
1308
|
|
|
1078
1309
|
&:focus-within {
|
|
1079
|
-
border-color: #
|
|
1080
|
-
background-color:
|
|
1310
|
+
border-color: #2CB0AB; /* Teal brand color */
|
|
1311
|
+
background-color: rgba(50, 50, 52, 0.6);
|
|
1081
1312
|
}
|
|
1082
1313
|
`;
|
|
1083
1314
|
var InputField = styled4.input`
|
|
@@ -1164,6 +1395,9 @@ var ChatInput = ({
|
|
|
1164
1395
|
},
|
|
1165
1396
|
inputRef
|
|
1166
1397
|
);
|
|
1398
|
+
const handleDirectChange = (e) => {
|
|
1399
|
+
setValue(e.target.value);
|
|
1400
|
+
};
|
|
1167
1401
|
const handleKeyDown = (e) => {
|
|
1168
1402
|
if (e.key === "Enter") {
|
|
1169
1403
|
e.preventDefault();
|
|
@@ -1180,8 +1414,6 @@ var ChatInput = ({
|
|
|
1180
1414
|
const handleSuggestionClick = (suggestionText) => {
|
|
1181
1415
|
if (onSuggestionSelect && !isDisabled && !isReadOnly) {
|
|
1182
1416
|
onSuggestionSelect(suggestionText);
|
|
1183
|
-
setValue(suggestionText);
|
|
1184
|
-
inputRef.current?.focus();
|
|
1185
1417
|
}
|
|
1186
1418
|
};
|
|
1187
1419
|
const canSubmit = currentValue.trim().length > 0 && !isDisabled && !isReadOnly;
|
|
@@ -1204,9 +1436,11 @@ var ChatInput = ({
|
|
|
1204
1436
|
type: "text",
|
|
1205
1437
|
placeholder,
|
|
1206
1438
|
onKeyDown: handleKeyDown,
|
|
1439
|
+
onChange: handleDirectChange,
|
|
1207
1440
|
autoFocus,
|
|
1208
1441
|
disabled: isDisabled,
|
|
1209
|
-
readOnly: isReadOnly
|
|
1442
|
+
readOnly: isReadOnly,
|
|
1443
|
+
value: currentValue
|
|
1210
1444
|
}
|
|
1211
1445
|
),
|
|
1212
1446
|
/* @__PURE__ */ jsx(
|
|
@@ -1283,11 +1517,39 @@ var InputAdapter = ({
|
|
|
1283
1517
|
isVisible = true
|
|
1284
1518
|
}) => {
|
|
1285
1519
|
const [value, setValue] = useState("");
|
|
1520
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
1286
1521
|
const handleSubmit = async (message) => {
|
|
1287
|
-
if (!message.trim()
|
|
1288
|
-
|
|
1289
|
-
|
|
1522
|
+
if (!message.trim()) {
|
|
1523
|
+
console.log("[InputAdapter] handleSubmit: empty message, ignoring");
|
|
1524
|
+
return;
|
|
1525
|
+
}
|
|
1526
|
+
setIsSubmitting(true);
|
|
1527
|
+
try {
|
|
1528
|
+
await onSend(message);
|
|
1529
|
+
setValue("");
|
|
1530
|
+
} catch (error) {
|
|
1531
|
+
console.error("[InputAdapter] Error sending message:", error);
|
|
1532
|
+
} finally {
|
|
1533
|
+
setIsSubmitting(false);
|
|
1534
|
+
}
|
|
1290
1535
|
};
|
|
1536
|
+
const handleSuggestionSelect = async (suggestion) => {
|
|
1537
|
+
if (!suggestion.trim()) {
|
|
1538
|
+
return;
|
|
1539
|
+
}
|
|
1540
|
+
if (inProgress || isSubmitting) {
|
|
1541
|
+
return;
|
|
1542
|
+
}
|
|
1543
|
+
setIsSubmitting(true);
|
|
1544
|
+
try {
|
|
1545
|
+
await onSend(suggestion);
|
|
1546
|
+
} catch (error) {
|
|
1547
|
+
console.error("[InputAdapter] Error sending suggestion:", error);
|
|
1548
|
+
} finally {
|
|
1549
|
+
setIsSubmitting(false);
|
|
1550
|
+
}
|
|
1551
|
+
};
|
|
1552
|
+
const shouldDisableInput = isSubmitting;
|
|
1291
1553
|
return /* @__PURE__ */ jsx(
|
|
1292
1554
|
ChatInput,
|
|
1293
1555
|
{
|
|
@@ -1295,7 +1557,7 @@ var InputAdapter = ({
|
|
|
1295
1557
|
onChange: setValue,
|
|
1296
1558
|
onSubmit: handleSubmit,
|
|
1297
1559
|
placeholder: "Ask, write or search for anything...",
|
|
1298
|
-
isDisabled:
|
|
1560
|
+
isDisabled: shouldDisableInput,
|
|
1299
1561
|
autoFocus: isVisible,
|
|
1300
1562
|
"aria-label": "Chat message input",
|
|
1301
1563
|
suggestions: [
|
|
@@ -1303,10 +1565,7 @@ var InputAdapter = ({
|
|
|
1303
1565
|
{ text: "Identify actionable tasks" },
|
|
1304
1566
|
{ text: "Summarize key points" }
|
|
1305
1567
|
],
|
|
1306
|
-
onSuggestionSelect:
|
|
1307
|
-
setValue(suggestion);
|
|
1308
|
-
handleSubmit(suggestion);
|
|
1309
|
-
}
|
|
1568
|
+
onSuggestionSelect: handleSuggestionSelect
|
|
1310
1569
|
}
|
|
1311
1570
|
);
|
|
1312
1571
|
};
|
|
@@ -1315,14 +1574,16 @@ var HeaderContainer = styled4.header`
|
|
|
1315
1574
|
display: flex;
|
|
1316
1575
|
align-items: center;
|
|
1317
1576
|
justify-content: space-between;
|
|
1318
|
-
padding: 8px;
|
|
1319
|
-
background-color:
|
|
1320
|
-
|
|
1321
|
-
|
|
1577
|
+
padding: 6px 8px;
|
|
1578
|
+
background-color: rgba(25, 25, 25, 0.6);
|
|
1579
|
+
backdrop-filter: blur(10px);
|
|
1580
|
+
-webkit-backdrop-filter: blur(10px);
|
|
1581
|
+
border-bottom: 1px solid rgba(58, 58, 60, 0.3);
|
|
1582
|
+
min-height: 44px;
|
|
1322
1583
|
box-sizing: border-box;
|
|
1323
1584
|
|
|
1324
1585
|
@media (min-width: 640px) {
|
|
1325
|
-
padding: 12px;
|
|
1586
|
+
padding: 8px 12px;
|
|
1326
1587
|
}
|
|
1327
1588
|
`;
|
|
1328
1589
|
var HeaderContent = styled4.div`
|
|
@@ -1361,7 +1622,7 @@ var HeaderActions = styled4.div`
|
|
|
1361
1622
|
gap: ${({ theme }) => theme?.spacing?.xs ?? "4px"};
|
|
1362
1623
|
margin-left: ${({ theme }) => theme?.spacing?.md ?? "16px"};
|
|
1363
1624
|
`;
|
|
1364
|
-
var
|
|
1625
|
+
var ActionButton2 = styled4.button`
|
|
1365
1626
|
display: inline-flex;
|
|
1366
1627
|
align-items: center;
|
|
1367
1628
|
justify-content: center;
|
|
@@ -1431,7 +1692,7 @@ var Header = ({
|
|
|
1431
1692
|
subtitle && /* @__PURE__ */ jsx(HeaderSubtitle, { children: subtitle })
|
|
1432
1693
|
] }),
|
|
1433
1694
|
/* @__PURE__ */ jsxs(HeaderActions, { children: [
|
|
1434
|
-
onMinimize && /* @__PURE__ */ jsx(
|
|
1695
|
+
onMinimize && /* @__PURE__ */ jsx(ActionButton2, { ref: minimizeRef, ...minimizeProps, "data-action": "minimize", children: /* @__PURE__ */ jsxs(
|
|
1435
1696
|
"svg",
|
|
1436
1697
|
{
|
|
1437
1698
|
width: "16",
|
|
@@ -1446,7 +1707,7 @@ var Header = ({
|
|
|
1446
1707
|
]
|
|
1447
1708
|
}
|
|
1448
1709
|
) }),
|
|
1449
|
-
onClose && /* @__PURE__ */ jsx(
|
|
1710
|
+
onClose && /* @__PURE__ */ jsx(ActionButton2, { ref: closeRef, ...closeProps, "data-action": "close", children: /* @__PURE__ */ jsxs(
|
|
1450
1711
|
"svg",
|
|
1451
1712
|
{
|
|
1452
1713
|
width: "16",
|
|
@@ -1466,41 +1727,18 @@ var Header = ({
|
|
|
1466
1727
|
] });
|
|
1467
1728
|
};
|
|
1468
1729
|
Header.displayName = "Header";
|
|
1469
|
-
var MessagesContainer = styled4.div`
|
|
1470
|
-
display: flex;
|
|
1471
|
-
flex-direction: column;
|
|
1472
|
-
flex: 1;
|
|
1473
|
-
overflow: hidden;
|
|
1474
|
-
background-color: #1c1c1e;
|
|
1475
|
-
padding: 8px;
|
|
1476
|
-
gap: 12px;
|
|
1477
|
-
box-sizing: border-box;
|
|
1478
|
-
|
|
1479
|
-
/* Ensure proper scrolling behavior for child components */
|
|
1480
|
-
position: relative;
|
|
1481
|
-
min-height: 0;
|
|
1482
|
-
|
|
1483
|
-
/* Desktop padding */
|
|
1484
|
-
@media (min-width: 640px) {
|
|
1485
|
-
padding: 12px;
|
|
1486
|
-
}
|
|
1487
|
-
`;
|
|
1488
|
-
var Messages = ({
|
|
1489
|
-
children,
|
|
1490
|
-
className,
|
|
1491
|
-
ariaLabel = "Messages"
|
|
1492
|
-
}) => {
|
|
1493
|
-
return /* @__PURE__ */ jsx(MessagesContainer, { className, role: "region", "aria-label": ariaLabel, children });
|
|
1494
|
-
};
|
|
1495
|
-
Messages.displayName = "Messages";
|
|
1496
1730
|
var WindowContainer = styled4.div`
|
|
1497
1731
|
display: flex;
|
|
1498
1732
|
flex-direction: column;
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1733
|
+
/* Glassmorphism effect */
|
|
1734
|
+
background: transparent;
|
|
1735
|
+
backdrop-filter: blur(3.8px);
|
|
1736
|
+
-webkit-backdrop-filter: blur(3.8px);
|
|
1737
|
+
border: 1px solid rgba(255, 255, 255, 0.25);
|
|
1738
|
+
border-radius: 16px;
|
|
1739
|
+
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
|
|
1502
1740
|
overflow: hidden;
|
|
1503
|
-
transition: all
|
|
1741
|
+
transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1504
1742
|
position: relative;
|
|
1505
1743
|
|
|
1506
1744
|
/* Default dimensions */
|
|
@@ -1583,67 +1821,84 @@ var Window = ({
|
|
|
1583
1821
|
};
|
|
1584
1822
|
Window.displayName = "Window";
|
|
1585
1823
|
var GlobalSidebarStyles = createGlobalStyle`
|
|
1586
|
-
/* Override CopilotKit's default positioning -
|
|
1824
|
+
/* Override CopilotKit's default positioning - keep sidebar container in place */
|
|
1587
1825
|
.copilotKitSidebar {
|
|
1588
1826
|
position: fixed !important;
|
|
1589
|
-
|
|
1827
|
+
top: 0 !important;
|
|
1828
|
+
right: 0 !important;
|
|
1590
1829
|
bottom: 0 !important;
|
|
1591
|
-
|
|
1830
|
+
left: 0 !important;
|
|
1831
|
+
width: 100vw !important;
|
|
1832
|
+
height: 100vh !important;
|
|
1833
|
+
pointer-events: none !important;
|
|
1834
|
+
z-index: 1001 !important;
|
|
1592
1835
|
}
|
|
1593
1836
|
|
|
1594
|
-
/*
|
|
1837
|
+
/* Keep sidebar container always visible (the window inside will animate) */
|
|
1595
1838
|
.copilotKitSidebarContentWrapper.sidebarExpanded .copilotKitSidebar {
|
|
1596
|
-
|
|
1839
|
+
pointer-events: auto !important;
|
|
1597
1840
|
}
|
|
1598
1841
|
|
|
1599
|
-
/* Mobile-first:
|
|
1600
|
-
|
|
1842
|
+
/* Mobile-first: Glassmorphism sidebar with rounded corners */
|
|
1843
|
+
/* Target the actual dialog element that gets rendered */
|
|
1844
|
+
.copilotKitSidebar [role="dialog"] {
|
|
1601
1845
|
/* Override CopilotKit defaults for mobile */
|
|
1602
1846
|
position: fixed !important;
|
|
1603
|
-
top:
|
|
1604
|
-
right:
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1847
|
+
top: 10px !important;
|
|
1848
|
+
right: 10px !important;
|
|
1849
|
+
/* Reserve space for Android nav buttons - matches NavHorizontal approach */
|
|
1850
|
+
bottom: max(90px, env(safe-area-inset-bottom, 90px)) !important;
|
|
1851
|
+
left: 10px !important;
|
|
1852
|
+
width: calc(100vw - 20px) !important;
|
|
1853
|
+
/* Adjust height to account for bottom safe area */
|
|
1854
|
+
height: calc(100vh - 20px - max(80px, env(safe-area-inset-bottom, 80px))) !important;
|
|
1855
|
+
max-width: calc(100vw - 20px) !important;
|
|
1856
|
+
max-height: calc(100vh - 20px - max(80px, env(safe-area-inset-bottom, 80px))) !important;
|
|
1611
1857
|
margin: 0 !important;
|
|
1612
|
-
border-radius:
|
|
1858
|
+
border-radius: 16px !important;
|
|
1613
1859
|
z-index: 1001 !important;
|
|
1614
1860
|
|
|
1615
|
-
/*
|
|
1861
|
+
/* Glassmorphism effect */
|
|
1862
|
+
background: rgba(255, 255, 255, 0.26) !important;
|
|
1863
|
+
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1) !important;
|
|
1864
|
+
backdrop-filter: blur(11.1px) !important;
|
|
1865
|
+
-webkit-backdrop-filter: blur(11.1px) !important;
|
|
1866
|
+
border: 1px solid rgba(255, 255, 255, 0.3) !important;
|
|
1867
|
+
|
|
1868
|
+
/* Smooth slide transition */
|
|
1869
|
+
transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;
|
|
1870
|
+
}
|
|
1871
|
+
|
|
1872
|
+
/* Hidden by default */
|
|
1873
|
+
.copilotKitSidebarContentWrapper:not(.sidebarExpanded) .copilotKitSidebar [role="dialog"] {
|
|
1616
1874
|
transform: translateX(100%) !important;
|
|
1617
1875
|
visibility: hidden !important;
|
|
1618
1876
|
pointer-events: none !important;
|
|
1619
1877
|
opacity: 0 !important;
|
|
1620
|
-
display: none !important;
|
|
1621
|
-
|
|
1622
|
-
/* Smooth slide transition */
|
|
1623
|
-
transition: transform 0.3s ease, visibility 0.3s ease, opacity 0.3s ease !important;
|
|
1624
1878
|
}
|
|
1625
1879
|
|
|
1626
|
-
/*
|
|
1627
|
-
.
|
|
1628
|
-
display: flex !important;
|
|
1880
|
+
/* Visible when expanded */
|
|
1881
|
+
.copilotKitSidebarContentWrapper.sidebarExpanded .copilotKitSidebar [role="dialog"] {
|
|
1629
1882
|
transform: translateX(0) !important;
|
|
1630
1883
|
visibility: visible !important;
|
|
1631
1884
|
pointer-events: auto !important;
|
|
1632
1885
|
opacity: 1 !important;
|
|
1633
1886
|
}
|
|
1634
1887
|
|
|
1635
|
-
/* Desktop: Sidebar panel on the right (640px = CopilotKit's breakpoint) */
|
|
1888
|
+
/* Desktop: Sidebar panel on the right with glassmorphism (640px = CopilotKit's breakpoint) */
|
|
1636
1889
|
@media (min-width: 640px) {
|
|
1637
|
-
.copilotKitSidebar
|
|
1890
|
+
.copilotKitSidebar [role="dialog"] {
|
|
1638
1891
|
inset: auto !important;
|
|
1639
|
-
top:
|
|
1640
|
-
right:
|
|
1641
|
-
|
|
1892
|
+
top: 10px !important;
|
|
1893
|
+
right: 10px !important;
|
|
1894
|
+
/* Reserve space for Android nav buttons on desktop too */
|
|
1895
|
+
bottom: max(90px, env(safe-area-inset-bottom, 90px)) !important;
|
|
1642
1896
|
left: auto !important;
|
|
1643
1897
|
width: 28rem !important;
|
|
1644
|
-
height
|
|
1898
|
+
/* Adjust height to account for bottom safe area */
|
|
1899
|
+
height: calc(100vh - 20px - max(80px, env(safe-area-inset-bottom, 80px))) !important;
|
|
1645
1900
|
max-width: 28rem !important;
|
|
1646
|
-
max-height: 100vh !important;
|
|
1901
|
+
max-height: calc(100vh - 20px - max(80px, env(safe-area-inset-bottom, 80px))) !important;
|
|
1647
1902
|
}
|
|
1648
1903
|
}
|
|
1649
1904
|
|
|
@@ -1662,17 +1917,74 @@ var GlobalSidebarStyles = createGlobalStyle`
|
|
|
1662
1917
|
display: flex !important;
|
|
1663
1918
|
}
|
|
1664
1919
|
}
|
|
1920
|
+
|
|
1921
|
+
/* Fix messages container background */
|
|
1922
|
+
.copilotKitMessages {
|
|
1923
|
+
background-color: transparent !important;
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
/* Fade-in animation for new messages */
|
|
1927
|
+
@keyframes messagesFadeIn {
|
|
1928
|
+
from {
|
|
1929
|
+
opacity: 0;
|
|
1930
|
+
transform: translateY(8px);
|
|
1931
|
+
}
|
|
1932
|
+
to {
|
|
1933
|
+
opacity: 1;
|
|
1934
|
+
transform: translateY(0);
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
.copilotKitMessage {
|
|
1939
|
+
animation: messagesFadeIn 0.3s ease-out;
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
/* Override CopilotKit suggestions to be single-row with horizontal scroll */
|
|
1943
|
+
div[role="list"][aria-label*="Suggested"] {
|
|
1944
|
+
display: flex !important;
|
|
1945
|
+
flex-wrap: nowrap !important; /* Force single row */
|
|
1946
|
+
gap: 8px !important;
|
|
1947
|
+
padding: 4px 0 !important;
|
|
1948
|
+
|
|
1949
|
+
/* Horizontal scrolling */
|
|
1950
|
+
overflow-x: auto !important;
|
|
1951
|
+
overflow-y: hidden !important;
|
|
1952
|
+
|
|
1953
|
+
/* Smooth scrolling */
|
|
1954
|
+
-webkit-overflow-scrolling: touch;
|
|
1955
|
+
scroll-behavior: smooth;
|
|
1956
|
+
|
|
1957
|
+
/* Fixed height for one suggestion */
|
|
1958
|
+
max-height: 40px !important;
|
|
1959
|
+
min-height: 40px !important;
|
|
1960
|
+
align-items: center !important;
|
|
1961
|
+
|
|
1962
|
+
/* Hide scrollbar */
|
|
1963
|
+
scrollbar-width: none !important;
|
|
1964
|
+
-ms-overflow-style: none !important;
|
|
1965
|
+
|
|
1966
|
+
&::-webkit-scrollbar {
|
|
1967
|
+
display: none !important;
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1971
|
+
/* Ensure suggestion buttons don't wrap or shrink */
|
|
1972
|
+
div[role="list"][aria-label*="Suggested"] button {
|
|
1973
|
+
flex-shrink: 0 !important;
|
|
1974
|
+
white-space: nowrap !important;
|
|
1975
|
+
}
|
|
1665
1976
|
`;
|
|
1666
1977
|
var StyledChatButton = styled4.button`
|
|
1667
1978
|
position: fixed;
|
|
1668
|
-
bottom
|
|
1979
|
+
/* Position above the bottom nav bar - matches NavHorizontal safe area */
|
|
1980
|
+
bottom: max(88px, calc(env(safe-area-inset-bottom, 80px) + 8px));
|
|
1669
1981
|
right: 8px;
|
|
1670
1982
|
width: 36px;
|
|
1671
1983
|
height: 36px;
|
|
1672
1984
|
border-radius: 18px;
|
|
1673
1985
|
border: none;
|
|
1674
|
-
background: linear-gradient(135deg, #
|
|
1675
|
-
box-shadow: 0 4px 12px rgba(
|
|
1986
|
+
background: linear-gradient(135deg, #2CB0AB 0%, #459FB9 100%);
|
|
1987
|
+
box-shadow: 0 4px 12px rgba(44, 176, 171, 0.4);
|
|
1676
1988
|
display: flex;
|
|
1677
1989
|
align-items: center;
|
|
1678
1990
|
justify-content: center;
|
|
@@ -1682,7 +1994,7 @@ var StyledChatButton = styled4.button`
|
|
|
1682
1994
|
|
|
1683
1995
|
&:hover {
|
|
1684
1996
|
transform: scale(1.05);
|
|
1685
|
-
box-shadow: 0 6px 16px rgba(
|
|
1997
|
+
box-shadow: 0 6px 16px rgba(44, 176, 171, 0.5);
|
|
1686
1998
|
}
|
|
1687
1999
|
|
|
1688
2000
|
&:active {
|
|
@@ -1708,23 +2020,11 @@ function CustomCopilotSidebar({
|
|
|
1708
2020
|
setOpen(false);
|
|
1709
2021
|
onSetOpen?.(false);
|
|
1710
2022
|
};
|
|
1711
|
-
return /* @__PURE__ */ jsx(Header, { title: "AI Assistant",
|
|
2023
|
+
return /* @__PURE__ */ jsx(Header, { title: "AI Assistant", onClose: handleClose });
|
|
1712
2024
|
};
|
|
1713
2025
|
const WindowAdapterLocal = (props) => {
|
|
1714
2026
|
return /* @__PURE__ */ jsx(Window, { children: props.children });
|
|
1715
2027
|
};
|
|
1716
|
-
const MessagesAdapter = (props) => {
|
|
1717
|
-
return /* @__PURE__ */ jsx(Messages, { children: props.messages.map((message, index) => /* @__PURE__ */ jsx(
|
|
1718
|
-
props.RenderMessage,
|
|
1719
|
-
{
|
|
1720
|
-
message,
|
|
1721
|
-
inProgress: props.inProgress,
|
|
1722
|
-
index,
|
|
1723
|
-
isCurrentMessage: index === props.messages.length - 1
|
|
1724
|
-
},
|
|
1725
|
-
message.id || `message-${index}`
|
|
1726
|
-
)) });
|
|
1727
|
-
};
|
|
1728
2028
|
const CustomButton = (_props) => {
|
|
1729
2029
|
const { open, setOpen } = useChatContext();
|
|
1730
2030
|
const handleClick = () => {
|
|
@@ -1767,7 +2067,6 @@ function CustomCopilotSidebar({
|
|
|
1767
2067
|
Input: InputAdapter,
|
|
1768
2068
|
Header: HeaderAdapterWithClose,
|
|
1769
2069
|
Window: WindowAdapterLocal,
|
|
1770
|
-
Messages: MessagesAdapter,
|
|
1771
2070
|
Button: CustomButton,
|
|
1772
2071
|
instructions,
|
|
1773
2072
|
labels: {
|
|
@@ -1882,18 +2181,20 @@ var InputWrapper2 = styled4.div`
|
|
|
1882
2181
|
align-items: flex-end;
|
|
1883
2182
|
gap: 8px;
|
|
1884
2183
|
padding: 12px;
|
|
1885
|
-
background-color:
|
|
1886
|
-
|
|
2184
|
+
background-color: rgba(25, 25, 25, 0.6);
|
|
2185
|
+
backdrop-filter: blur(10px);
|
|
2186
|
+
-webkit-backdrop-filter: blur(10px);
|
|
2187
|
+
border: 1px solid rgba(58, 58, 60, 0.3);
|
|
1887
2188
|
border-radius: 12px;
|
|
1888
2189
|
transition: all 0.2s ease;
|
|
1889
2190
|
|
|
1890
2191
|
&:focus-within {
|
|
1891
|
-
border-color: #
|
|
1892
|
-
box-shadow: 0 0 0 3px rgba(
|
|
2192
|
+
border-color: #2CB0AB;
|
|
2193
|
+
box-shadow: 0 0 0 3px rgba(44, 176, 171, 0.1);
|
|
1893
2194
|
}
|
|
1894
2195
|
|
|
1895
2196
|
&:hover:not(:focus-within) {
|
|
1896
|
-
border-color:
|
|
2197
|
+
border-color: rgba(58, 58, 60, 0.5);
|
|
1897
2198
|
}
|
|
1898
2199
|
`;
|
|
1899
2200
|
var TextArea = styled4.textarea`
|
|
@@ -1908,12 +2209,12 @@ var TextArea = styled4.textarea`
|
|
|
1908
2209
|
'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
|
1909
2210
|
font-size: 14px;
|
|
1910
2211
|
line-height: 24px;
|
|
1911
|
-
color: #
|
|
2212
|
+
color: #FFFFFF;
|
|
1912
2213
|
background: transparent;
|
|
1913
2214
|
overflow-y: auto;
|
|
1914
2215
|
|
|
1915
2216
|
&::placeholder {
|
|
1916
|
-
color: #
|
|
2217
|
+
color: #8e8e93;
|
|
1917
2218
|
}
|
|
1918
2219
|
|
|
1919
2220
|
&:disabled {
|
|
@@ -1952,14 +2253,14 @@ var SendButton = styled4.button`
|
|
|
1952
2253
|
padding: 0;
|
|
1953
2254
|
border: none;
|
|
1954
2255
|
border-radius: 8px;
|
|
1955
|
-
background-color: ${(props) => props.disabled ? "
|
|
1956
|
-
color: ${(props) => props.disabled ? "#
|
|
2256
|
+
background-color: ${(props) => props.disabled ? "rgba(229, 231, 235, 0.3)" : "#2CB0AB"};
|
|
2257
|
+
color: ${(props) => props.disabled ? "#6B7280" : "#ffffff"};
|
|
1957
2258
|
cursor: ${(props) => props.disabled ? "not-allowed" : "pointer"};
|
|
1958
2259
|
transition: all 0.2s ease;
|
|
1959
2260
|
flex-shrink: 0;
|
|
1960
2261
|
|
|
1961
2262
|
&:hover:not(:disabled) {
|
|
1962
|
-
background-color: #
|
|
2263
|
+
background-color: #459FB9;
|
|
1963
2264
|
transform: translateY(-1px);
|
|
1964
2265
|
}
|
|
1965
2266
|
|
|
@@ -1968,7 +2269,7 @@ var SendButton = styled4.button`
|
|
|
1968
2269
|
}
|
|
1969
2270
|
|
|
1970
2271
|
&:focus-visible {
|
|
1971
|
-
outline: 2px solid #
|
|
2272
|
+
outline: 2px solid #2CB0AB;
|
|
1972
2273
|
outline-offset: 2px;
|
|
1973
2274
|
}
|
|
1974
2275
|
|
|
@@ -2073,6 +2374,34 @@ var Input = ({
|
|
|
2073
2374
|
)
|
|
2074
2375
|
] }) });
|
|
2075
2376
|
};
|
|
2377
|
+
var MessagesContainer = styled4.div`
|
|
2378
|
+
display: flex;
|
|
2379
|
+
flex-direction: column;
|
|
2380
|
+
flex: 1;
|
|
2381
|
+
overflow: hidden;
|
|
2382
|
+
/* Gradient background with subtle purple accent */
|
|
2383
|
+
background-image: linear-gradient(to right bottom, #302c4c, #26273d, #1e202d, #191a1e, #171a21, #141a24, #0f1b27, #081b2a, #081b2a, #081b2a);
|
|
2384
|
+
padding: 8px;
|
|
2385
|
+
gap: 12px;
|
|
2386
|
+
box-sizing: border-box;
|
|
2387
|
+
|
|
2388
|
+
/* Ensure proper scrolling behavior for child components */
|
|
2389
|
+
position: relative;
|
|
2390
|
+
min-height: 0;
|
|
2391
|
+
|
|
2392
|
+
/* Desktop padding */
|
|
2393
|
+
@media (min-width: 640px) {
|
|
2394
|
+
padding: 12px;
|
|
2395
|
+
}
|
|
2396
|
+
`;
|
|
2397
|
+
var Messages = ({
|
|
2398
|
+
children,
|
|
2399
|
+
className,
|
|
2400
|
+
ariaLabel = "Messages"
|
|
2401
|
+
}) => {
|
|
2402
|
+
return /* @__PURE__ */ jsx(MessagesContainer, { className, role: "region", "aria-label": ariaLabel, children });
|
|
2403
|
+
};
|
|
2404
|
+
Messages.displayName = "Messages";
|
|
2076
2405
|
var MessagesListContainer = styled4.div`
|
|
2077
2406
|
display: flex;
|
|
2078
2407
|
flex-direction: column;
|
|
@@ -2242,22 +2571,15 @@ var MessageBubble = styled4.div`
|
|
|
2242
2571
|
flex-direction: column;
|
|
2243
2572
|
max-width: 70%;
|
|
2244
2573
|
padding: 12px 16px;
|
|
2245
|
-
border-radius:
|
|
2574
|
+
border-radius: 12px; /* Consistent rounded corners, no tail */
|
|
2246
2575
|
|
|
2247
|
-
/* User message colors -
|
|
2248
|
-
background
|
|
2249
|
-
color: #FFFFFF;
|
|
2250
|
-
|
|
2251
|
-
/* Box shadow for depth */
|
|
2252
|
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
2576
|
+
/* User message colors - dark blue from brand */
|
|
2577
|
+
background: #264E68; /* Deep Blue from brand tokens */
|
|
2578
|
+
color: #FFFFFF; /* White text for better contrast on dark background */
|
|
2253
2579
|
|
|
2254
2580
|
/* Smooth transitions */
|
|
2255
2581
|
transition: all 0.2s ease-in-out;
|
|
2256
2582
|
|
|
2257
|
-
&:hover {
|
|
2258
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
|
|
2259
|
-
}
|
|
2260
|
-
|
|
2261
2583
|
/* Username styling */
|
|
2262
2584
|
strong {
|
|
2263
2585
|
font-size: 12px;
|
|
@@ -2273,40 +2595,127 @@ var MessageContent2 = styled4.p`
|
|
|
2273
2595
|
word-wrap: break-word;
|
|
2274
2596
|
white-space: pre-wrap;
|
|
2275
2597
|
`;
|
|
2276
|
-
var
|
|
2598
|
+
var MessageTime2 = styled4.time`
|
|
2277
2599
|
font-size: 11px;
|
|
2278
2600
|
opacity: 0.7;
|
|
2279
2601
|
margin-top: 4px;
|
|
2280
2602
|
text-align: right;
|
|
2281
2603
|
`;
|
|
2604
|
+
var ActionButton3 = styled4.button`
|
|
2605
|
+
display: inline-flex;
|
|
2606
|
+
align-items: center;
|
|
2607
|
+
gap: 4px;
|
|
2608
|
+
padding: 4px 8px;
|
|
2609
|
+
margin-top: 8px;
|
|
2610
|
+
font-size: 12px;
|
|
2611
|
+
font-weight: 500;
|
|
2612
|
+
color: rgba(0, 0, 0, 0.7);
|
|
2613
|
+
background: rgba(255, 255, 255, 0.3);
|
|
2614
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
2615
|
+
border-radius: 6px;
|
|
2616
|
+
cursor: pointer;
|
|
2617
|
+
transition: all 0.15s ease-in-out;
|
|
2618
|
+
|
|
2619
|
+
&:hover {
|
|
2620
|
+
background: rgba(255, 255, 255, 0.5);
|
|
2621
|
+
border-color: rgba(0, 0, 0, 0.2);
|
|
2622
|
+
}
|
|
2623
|
+
|
|
2624
|
+
&:active {
|
|
2625
|
+
transform: scale(0.98);
|
|
2626
|
+
}
|
|
2627
|
+
`;
|
|
2628
|
+
var ActionsContainer3 = styled4.div`
|
|
2629
|
+
display: flex;
|
|
2630
|
+
gap: 6px;
|
|
2631
|
+
flex-wrap: wrap;
|
|
2632
|
+
`;
|
|
2633
|
+
var StreamingIndicator2 = styled4.span`
|
|
2634
|
+
display: inline-block;
|
|
2635
|
+
width: 4px;
|
|
2636
|
+
height: 4px;
|
|
2637
|
+
margin-left: 4px;
|
|
2638
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
2639
|
+
border-radius: 50%;
|
|
2640
|
+
animation: pulse 1.5s ease-in-out infinite;
|
|
2641
|
+
|
|
2642
|
+
@keyframes pulse {
|
|
2643
|
+
0%,
|
|
2644
|
+
100% {
|
|
2645
|
+
opacity: 0.3;
|
|
2646
|
+
transform: scale(0.8);
|
|
2647
|
+
}
|
|
2648
|
+
50% {
|
|
2649
|
+
opacity: 1;
|
|
2650
|
+
transform: scale(1.2);
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2653
|
+
`;
|
|
2654
|
+
var Avatar3 = styled4.img`
|
|
2655
|
+
width: 32px;
|
|
2656
|
+
height: 32px;
|
|
2657
|
+
border-radius: 50%;
|
|
2658
|
+
margin-left: 8px;
|
|
2659
|
+
object-fit: cover;
|
|
2660
|
+
border: 2px solid rgba(216, 180, 254, 0.3);
|
|
2661
|
+
`;
|
|
2282
2662
|
var UserMessage2 = ({
|
|
2283
2663
|
content,
|
|
2284
2664
|
timestamp,
|
|
2285
2665
|
className,
|
|
2286
2666
|
avatarUrl,
|
|
2287
|
-
username
|
|
2667
|
+
username,
|
|
2668
|
+
isStreaming = false,
|
|
2669
|
+
actions = []
|
|
2288
2670
|
}) => {
|
|
2289
2671
|
return /* @__PURE__ */ jsxs(StyledUserMessage2, { className, children: [
|
|
2290
2672
|
/* @__PURE__ */ jsxs(MessageBubble, { children: [
|
|
2291
2673
|
username && /* @__PURE__ */ jsx("strong", { children: username }),
|
|
2292
|
-
/* @__PURE__ */
|
|
2293
|
-
|
|
2674
|
+
/* @__PURE__ */ jsxs(MessageContent2, { children: [
|
|
2675
|
+
content,
|
|
2676
|
+
isStreaming && /* @__PURE__ */ jsx(StreamingIndicator2, {})
|
|
2677
|
+
] }),
|
|
2678
|
+
timestamp && /* @__PURE__ */ jsx(MessageTime2, { children: timestamp }),
|
|
2679
|
+
actions.length > 0 && /* @__PURE__ */ jsx(ActionsContainer3, { children: actions.map((action, index) => /* @__PURE__ */ jsxs(ActionButton3, { onClick: action.onClick, children: [
|
|
2680
|
+
action.icon,
|
|
2681
|
+
action.label
|
|
2682
|
+
] }, index)) })
|
|
2294
2683
|
] }),
|
|
2295
|
-
avatarUrl && /* @__PURE__ */ jsx(
|
|
2296
|
-
"img",
|
|
2297
|
-
{
|
|
2298
|
-
src: avatarUrl,
|
|
2299
|
-
alt: username || "User",
|
|
2300
|
-
style: { width: "32px", height: "32px", borderRadius: "50%", marginLeft: "8px" }
|
|
2301
|
-
}
|
|
2302
|
-
)
|
|
2684
|
+
avatarUrl && /* @__PURE__ */ jsx(Avatar3, { src: avatarUrl, alt: username || "User" })
|
|
2303
2685
|
] });
|
|
2304
2686
|
};
|
|
2305
2687
|
var SuggestionsContainer = styled4.div`
|
|
2306
2688
|
display: flex;
|
|
2307
|
-
flex-wrap:
|
|
2689
|
+
flex-wrap: nowrap; /* Single row */
|
|
2308
2690
|
gap: ${({ theme }) => theme?.spacing?.sm ?? "8px"};
|
|
2309
|
-
|
|
2691
|
+
|
|
2692
|
+
/* Reduced padding for tighter height */
|
|
2693
|
+
padding: ${({ theme }) => theme?.spacing?.xs ?? "4px"} 0;
|
|
2694
|
+
|
|
2695
|
+
/* Horizontal scrolling */
|
|
2696
|
+
overflow-x: auto;
|
|
2697
|
+
overflow-y: hidden;
|
|
2698
|
+
|
|
2699
|
+
/* Smooth scrolling on mobile */
|
|
2700
|
+
-webkit-overflow-scrolling: touch;
|
|
2701
|
+
scroll-behavior: smooth;
|
|
2702
|
+
|
|
2703
|
+
/* Align items to ensure single-row height */
|
|
2704
|
+
align-items: center;
|
|
2705
|
+
|
|
2706
|
+
/* Constrain to exact height of buttons + minimal padding */
|
|
2707
|
+
/* Button height: ~14px font + 16px padding + 2px border = ~32px */
|
|
2708
|
+
/* Add small padding: 8px total = 40px */
|
|
2709
|
+
max-height: 40px;
|
|
2710
|
+
min-height: 40px;
|
|
2711
|
+
|
|
2712
|
+
/* Hide scrollbar but keep functionality */
|
|
2713
|
+
scrollbar-width: none; /* Firefox */
|
|
2714
|
+
-ms-overflow-style: none; /* IE/Edge */
|
|
2715
|
+
|
|
2716
|
+
&::-webkit-scrollbar {
|
|
2717
|
+
display: none; /* Chrome/Safari/Opera */
|
|
2718
|
+
}
|
|
2310
2719
|
`;
|
|
2311
2720
|
var StyledSuggestion = styled4.button`
|
|
2312
2721
|
/* Base styles */
|
|
@@ -2325,6 +2734,7 @@ var StyledSuggestion = styled4.button`
|
|
|
2325
2734
|
transition: all 0.2s ease-in-out;
|
|
2326
2735
|
white-space: nowrap;
|
|
2327
2736
|
user-select: none;
|
|
2737
|
+
flex-shrink: 0; /* Prevent shrinking to maintain size */
|
|
2328
2738
|
|
|
2329
2739
|
/* Hover state */
|
|
2330
2740
|
&:hover:not(:disabled) {
|
|
@@ -2380,6 +2790,324 @@ function SuggestionChip({ suggestion, onSelect }) {
|
|
|
2380
2790
|
return /* @__PURE__ */ jsx(StyledSuggestion, { ...buttonProps, ref, $isPressed: isPressed, role: "listitem", children: suggestion });
|
|
2381
2791
|
}
|
|
2382
2792
|
Suggestions.displayName = "Suggestions";
|
|
2793
|
+
var ErrorContainer = styled4.div`
|
|
2794
|
+
display: flex;
|
|
2795
|
+
align-items: flex-start;
|
|
2796
|
+
gap: 12px;
|
|
2797
|
+
padding: ${(props) => props.variant === "banner" ? "16px" : "12px 16px"};
|
|
2798
|
+
background-color: ${(props) => props.variant === "banner" ? "rgba(239, 68, 68, 0.1)" : "rgba(239, 68, 68, 0.05)"};
|
|
2799
|
+
border: 1px solid rgba(239, 68, 68, 0.3);
|
|
2800
|
+
border-radius: ${(props) => props.variant === "banner" ? "8px" : "12px"};
|
|
2801
|
+
color: #FFFFFF;
|
|
2802
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
|
|
2803
|
+
'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
|
2804
|
+
margin: 8px 0;
|
|
2805
|
+
width: ${(props) => props.variant === "banner" ? "100%" : "auto"};
|
|
2806
|
+
max-width: ${(props) => props.variant === "banner" ? "100%" : "600px"};
|
|
2807
|
+
`;
|
|
2808
|
+
var IconContainer = styled4.div`
|
|
2809
|
+
flex-shrink: 0;
|
|
2810
|
+
width: 20px;
|
|
2811
|
+
height: 20px;
|
|
2812
|
+
color: #EF4444;
|
|
2813
|
+
`;
|
|
2814
|
+
var ErrorIcon = () => /* @__PURE__ */ jsx(
|
|
2815
|
+
"svg",
|
|
2816
|
+
{
|
|
2817
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2818
|
+
viewBox: "0 0 24 24",
|
|
2819
|
+
fill: "currentColor",
|
|
2820
|
+
width: "20",
|
|
2821
|
+
height: "20",
|
|
2822
|
+
children: /* @__PURE__ */ 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" })
|
|
2823
|
+
}
|
|
2824
|
+
);
|
|
2825
|
+
var Content2 = styled4.div`
|
|
2826
|
+
flex: 1;
|
|
2827
|
+
display: flex;
|
|
2828
|
+
flex-direction: column;
|
|
2829
|
+
gap: 8px;
|
|
2830
|
+
`;
|
|
2831
|
+
var ErrorMessage = styled4.div`
|
|
2832
|
+
font-size: 14px;
|
|
2833
|
+
line-height: 1.5;
|
|
2834
|
+
color: #FFFFFF;
|
|
2835
|
+
`;
|
|
2836
|
+
var ErrorDetails = styled4.div`
|
|
2837
|
+
font-size: 12px;
|
|
2838
|
+
line-height: 1.4;
|
|
2839
|
+
color: #9CA3AF;
|
|
2840
|
+
margin-top: 4px;
|
|
2841
|
+
`;
|
|
2842
|
+
var Actions2 = styled4.div`
|
|
2843
|
+
display: flex;
|
|
2844
|
+
gap: 8px;
|
|
2845
|
+
margin-top: 8px;
|
|
2846
|
+
`;
|
|
2847
|
+
var Button2 = styled4.button`
|
|
2848
|
+
display: inline-flex;
|
|
2849
|
+
align-items: center;
|
|
2850
|
+
gap: 6px;
|
|
2851
|
+
padding: 6px 12px;
|
|
2852
|
+
font-size: 13px;
|
|
2853
|
+
font-weight: 500;
|
|
2854
|
+
color: ${(props) => props.variant === "primary" ? "#FFFFFF" : "#9CA3AF"};
|
|
2855
|
+
background: ${(props) => props.variant === "primary" ? "#EF4444" : "rgba(255, 255, 255, 0.05)"};
|
|
2856
|
+
border: 1px solid
|
|
2857
|
+
${(props) => props.variant === "primary" ? "#EF4444" : "rgba(255, 255, 255, 0.1)"};
|
|
2858
|
+
border-radius: 6px;
|
|
2859
|
+
cursor: pointer;
|
|
2860
|
+
transition: all 0.15s ease-in-out;
|
|
2861
|
+
|
|
2862
|
+
&:hover {
|
|
2863
|
+
background: ${(props) => props.variant === "primary" ? "#DC2626" : "rgba(255, 255, 255, 0.1)"};
|
|
2864
|
+
border-color: ${(props) => props.variant === "primary" ? "#DC2626" : "rgba(255, 255, 255, 0.2)"};
|
|
2865
|
+
}
|
|
2866
|
+
|
|
2867
|
+
&:active {
|
|
2868
|
+
transform: scale(0.98);
|
|
2869
|
+
}
|
|
2870
|
+
|
|
2871
|
+
&:disabled {
|
|
2872
|
+
opacity: 0.5;
|
|
2873
|
+
cursor: not-allowed;
|
|
2874
|
+
}
|
|
2875
|
+
`;
|
|
2876
|
+
var CloseButton = styled4.button`
|
|
2877
|
+
flex-shrink: 0;
|
|
2878
|
+
width: 24px;
|
|
2879
|
+
height: 24px;
|
|
2880
|
+
padding: 0;
|
|
2881
|
+
display: flex;
|
|
2882
|
+
align-items: center;
|
|
2883
|
+
justify-content: center;
|
|
2884
|
+
background: transparent;
|
|
2885
|
+
border: none;
|
|
2886
|
+
color: #9CA3AF;
|
|
2887
|
+
cursor: pointer;
|
|
2888
|
+
border-radius: 4px;
|
|
2889
|
+
transition: all 0.15s ease-in-out;
|
|
2890
|
+
|
|
2891
|
+
&:hover {
|
|
2892
|
+
background: rgba(255, 255, 255, 0.1);
|
|
2893
|
+
color: #FFFFFF;
|
|
2894
|
+
}
|
|
2895
|
+
|
|
2896
|
+
&:active {
|
|
2897
|
+
transform: scale(0.95);
|
|
2898
|
+
}
|
|
2899
|
+
`;
|
|
2900
|
+
var CloseIcon = () => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) });
|
|
2901
|
+
var StreamErrorMessage = ({
|
|
2902
|
+
error,
|
|
2903
|
+
variant = "inline",
|
|
2904
|
+
retryable = false,
|
|
2905
|
+
onRetry,
|
|
2906
|
+
onDismiss,
|
|
2907
|
+
details,
|
|
2908
|
+
className
|
|
2909
|
+
}) => {
|
|
2910
|
+
const errorMessage = typeof error === "string" ? error : error.message;
|
|
2911
|
+
return /* @__PURE__ */ jsxs(ErrorContainer, { variant, className, role: "alert", "aria-live": "assertive", children: [
|
|
2912
|
+
/* @__PURE__ */ jsx(IconContainer, { "aria-hidden": "true", children: /* @__PURE__ */ jsx(ErrorIcon, {}) }),
|
|
2913
|
+
/* @__PURE__ */ jsxs(Content2, { children: [
|
|
2914
|
+
/* @__PURE__ */ jsx(ErrorMessage, { children: errorMessage }),
|
|
2915
|
+
details && /* @__PURE__ */ jsx(ErrorDetails, { children: details }),
|
|
2916
|
+
(retryable || onDismiss) && /* @__PURE__ */ jsxs(Actions2, { children: [
|
|
2917
|
+
retryable && onRetry && /* @__PURE__ */ jsx(Button2, { variant: "primary", onClick: onRetry, children: "Retry" }),
|
|
2918
|
+
onDismiss && /* @__PURE__ */ jsx(Button2, { variant: "secondary", onClick: onDismiss, children: "Dismiss" })
|
|
2919
|
+
] })
|
|
2920
|
+
] }),
|
|
2921
|
+
onDismiss && /* @__PURE__ */ jsx(CloseButton, { onClick: onDismiss, "aria-label": "Dismiss error", children: /* @__PURE__ */ jsx(CloseIcon, {}) })
|
|
2922
|
+
] });
|
|
2923
|
+
};
|
|
2924
|
+
StreamErrorMessage.displayName = "StreamErrorMessage";
|
|
2925
|
+
var pulse2 = keyframes`
|
|
2926
|
+
0%, 100% {
|
|
2927
|
+
opacity: 1;
|
|
2928
|
+
transform: scale(1);
|
|
2929
|
+
}
|
|
2930
|
+
50% {
|
|
2931
|
+
opacity: 0.6;
|
|
2932
|
+
transform: scale(1.1);
|
|
2933
|
+
}
|
|
2934
|
+
`;
|
|
2935
|
+
var Container3 = styled4.div`
|
|
2936
|
+
display: inline-flex;
|
|
2937
|
+
align-items: center;
|
|
2938
|
+
gap: ${(props) => {
|
|
2939
|
+
switch (props.size) {
|
|
2940
|
+
case "sm":
|
|
2941
|
+
return "4px";
|
|
2942
|
+
case "lg":
|
|
2943
|
+
return "8px";
|
|
2944
|
+
case "md":
|
|
2945
|
+
default:
|
|
2946
|
+
return "6px";
|
|
2947
|
+
}
|
|
2948
|
+
}};
|
|
2949
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
|
|
2950
|
+
'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
|
2951
|
+
`;
|
|
2952
|
+
var StatusDot = styled4.div`
|
|
2953
|
+
width: ${(props) => {
|
|
2954
|
+
if (props.variant === "badge") {
|
|
2955
|
+
switch (props.size) {
|
|
2956
|
+
case "sm":
|
|
2957
|
+
return "6px";
|
|
2958
|
+
case "lg":
|
|
2959
|
+
return "10px";
|
|
2960
|
+
case "md":
|
|
2961
|
+
default:
|
|
2962
|
+
return "8px";
|
|
2963
|
+
}
|
|
2964
|
+
}
|
|
2965
|
+
switch (props.size) {
|
|
2966
|
+
case "sm":
|
|
2967
|
+
return "6px";
|
|
2968
|
+
case "lg":
|
|
2969
|
+
return "12px";
|
|
2970
|
+
case "md":
|
|
2971
|
+
default:
|
|
2972
|
+
return "8px";
|
|
2973
|
+
}
|
|
2974
|
+
}};
|
|
2975
|
+
height: ${(props) => {
|
|
2976
|
+
if (props.variant === "badge") {
|
|
2977
|
+
switch (props.size) {
|
|
2978
|
+
case "sm":
|
|
2979
|
+
return "6px";
|
|
2980
|
+
case "lg":
|
|
2981
|
+
return "10px";
|
|
2982
|
+
case "md":
|
|
2983
|
+
default:
|
|
2984
|
+
return "8px";
|
|
2985
|
+
}
|
|
2986
|
+
}
|
|
2987
|
+
switch (props.size) {
|
|
2988
|
+
case "sm":
|
|
2989
|
+
return "6px";
|
|
2990
|
+
case "lg":
|
|
2991
|
+
return "12px";
|
|
2992
|
+
case "md":
|
|
2993
|
+
default:
|
|
2994
|
+
return "8px";
|
|
2995
|
+
}
|
|
2996
|
+
}};
|
|
2997
|
+
border-radius: 50%;
|
|
2998
|
+
background-color: ${(props) => {
|
|
2999
|
+
switch (props.status) {
|
|
3000
|
+
case "connected":
|
|
3001
|
+
return "#10B981";
|
|
3002
|
+
// Green
|
|
3003
|
+
case "streaming":
|
|
3004
|
+
return "#3B82F6";
|
|
3005
|
+
// Blue
|
|
3006
|
+
case "disconnected":
|
|
3007
|
+
return "#EF4444";
|
|
3008
|
+
// Red
|
|
3009
|
+
case "reconnecting":
|
|
3010
|
+
return "#F59E0B";
|
|
3011
|
+
}
|
|
3012
|
+
}};
|
|
3013
|
+
animation: ${(props) => props.status === "streaming" ? pulse2 : "none"} 2s ease-in-out infinite;
|
|
3014
|
+
flex-shrink: 0;
|
|
3015
|
+
`;
|
|
3016
|
+
var Label = styled4.span`
|
|
3017
|
+
font-size: ${(props) => {
|
|
3018
|
+
if (props.variant === "badge") {
|
|
3019
|
+
switch (props.size) {
|
|
3020
|
+
case "sm":
|
|
3021
|
+
return "11px";
|
|
3022
|
+
case "lg":
|
|
3023
|
+
return "15px";
|
|
3024
|
+
case "md":
|
|
3025
|
+
default:
|
|
3026
|
+
return "13px";
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
switch (props.size) {
|
|
3030
|
+
case "sm":
|
|
3031
|
+
return "12px";
|
|
3032
|
+
case "lg":
|
|
3033
|
+
return "16px";
|
|
3034
|
+
case "md":
|
|
3035
|
+
default:
|
|
3036
|
+
return "14px";
|
|
3037
|
+
}
|
|
3038
|
+
}};
|
|
3039
|
+
font-weight: ${(props) => props.variant === "badge" ? "500" : "400"};
|
|
3040
|
+
color: #9CA3AF;
|
|
3041
|
+
line-height: 1.4;
|
|
3042
|
+
`;
|
|
3043
|
+
var BadgeContainer = styled4.div`
|
|
3044
|
+
display: inline-flex;
|
|
3045
|
+
align-items: center;
|
|
3046
|
+
gap: ${(props) => {
|
|
3047
|
+
switch (props.size) {
|
|
3048
|
+
case "sm":
|
|
3049
|
+
return "4px";
|
|
3050
|
+
case "lg":
|
|
3051
|
+
return "8px";
|
|
3052
|
+
case "md":
|
|
3053
|
+
default:
|
|
3054
|
+
return "6px";
|
|
3055
|
+
}
|
|
3056
|
+
}};
|
|
3057
|
+
padding: ${(props) => {
|
|
3058
|
+
switch (props.size) {
|
|
3059
|
+
case "sm":
|
|
3060
|
+
return "4px 8px";
|
|
3061
|
+
case "lg":
|
|
3062
|
+
return "8px 16px";
|
|
3063
|
+
case "md":
|
|
3064
|
+
default:
|
|
3065
|
+
return "6px 12px";
|
|
3066
|
+
}
|
|
3067
|
+
}};
|
|
3068
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
3069
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
3070
|
+
border-radius: ${(props) => {
|
|
3071
|
+
switch (props.size) {
|
|
3072
|
+
case "sm":
|
|
3073
|
+
return "4px";
|
|
3074
|
+
case "lg":
|
|
3075
|
+
return "8px";
|
|
3076
|
+
case "md":
|
|
3077
|
+
default:
|
|
3078
|
+
return "6px";
|
|
3079
|
+
}
|
|
3080
|
+
}};
|
|
3081
|
+
`;
|
|
3082
|
+
var getStatusLabel = (status) => {
|
|
3083
|
+
switch (status) {
|
|
3084
|
+
case "connected":
|
|
3085
|
+
return "Connected";
|
|
3086
|
+
case "streaming":
|
|
3087
|
+
return "Streaming";
|
|
3088
|
+
case "disconnected":
|
|
3089
|
+
return "Disconnected";
|
|
3090
|
+
case "reconnecting":
|
|
3091
|
+
return "Reconnecting...";
|
|
3092
|
+
}
|
|
3093
|
+
};
|
|
3094
|
+
var StreamStatusIndicator = ({
|
|
3095
|
+
status,
|
|
3096
|
+
variant = "dot",
|
|
3097
|
+
size = "md",
|
|
3098
|
+
showLabel = false,
|
|
3099
|
+
className
|
|
3100
|
+
}) => {
|
|
3101
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3102
|
+
/* @__PURE__ */ jsx(StatusDot, { status, size, variant, "aria-hidden": "true" }),
|
|
3103
|
+
showLabel && /* @__PURE__ */ jsx(Label, { size, variant, children: getStatusLabel(status) })
|
|
3104
|
+
] });
|
|
3105
|
+
if (variant === "badge") {
|
|
3106
|
+
return /* @__PURE__ */ jsx(BadgeContainer, { size, className, role: "status", "aria-label": getStatusLabel(status), children: content });
|
|
3107
|
+
}
|
|
3108
|
+
return /* @__PURE__ */ jsx(Container3, { size, className, role: "status", "aria-label": getStatusLabel(status), children: content });
|
|
3109
|
+
};
|
|
3110
|
+
StreamStatusIndicator.displayName = "StreamStatusIndicator";
|
|
2383
3111
|
var GlobalSidebarStyles2 = createGlobalStyle`
|
|
2384
3112
|
/* Override CopilotKit's default positioning - start off-screen */
|
|
2385
3113
|
.copilotKitSidebar {
|
|
@@ -2619,6 +3347,6 @@ var CustomCopilotSidebar2 = ({
|
|
|
2619
3347
|
};
|
|
2620
3348
|
CustomCopilotSidebar2.displayName = "CustomCopilotSidebar";
|
|
2621
3349
|
|
|
2622
|
-
export { Actions, AgentState, AssistantMessage, AssistantMessageAdapter, Button, CustomCopilotSidebar, FileAttachment, Footer, Header, Input, InputAdapter, CustomCopilotSidebar2 as IntegratedSidebar, Messages, MessagesList, MessagesListContainer, MessagesListContent, Response, Suggestions, UserMessage2 as UserMessage, UserMessageAdapter, Window };
|
|
3350
|
+
export { Actions, AgentState, AssistantMessage, AssistantMessageAdapter, Button, CustomCopilotSidebar, FileAttachment, Footer, Header, Input, InputAdapter, CustomCopilotSidebar2 as IntegratedSidebar, Messages, MessagesList, MessagesListContainer, MessagesListContent, Response, StreamErrorMessage, StreamStatusIndicator, StreamingText2 as StreamingText, Suggestions, UserMessage2 as UserMessage, UserMessageAdapter, Window };
|
|
2623
3351
|
//# sourceMappingURL=index.js.map
|
|
2624
3352
|
//# sourceMappingURL=index.js.map
|