open-chat-studio-widget 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -500,23 +500,18 @@ video {
500
500
  display: none;
501
501
  }
502
502
  .starter-question {
503
- margin-left: 3rem;
504
503
  border-radius: 0.5rem;
505
- border-width: 1px;
506
- --tw-border-opacity: 1;
507
- border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
508
- padding: 0.75rem;
509
504
  text-align: left;
510
- --tw-text-opacity: 1;
511
- color: rgb(37 99 235 / var(--tw-text-opacity, 1));
512
505
  transition-duration: 200ms;
506
+ padding: var(--starter-question-padding, 0.75rem);
507
+ background-color: var(--starter-question-bg-color);
508
+ border: 1px solid var(--starter-question-border-color);
509
+ color: var(--starter-question-text-color);
513
510
  }
514
511
  .starter-question:hover {
515
- --tw-border-opacity: 1;
516
- border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));
517
- --tw-bg-opacity: 1;
518
- background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
519
- }
512
+ background-color: var(--starter-question-bg-hover-color);
513
+ border-color: var(--starter-question-border-hover-color);
514
+ }
520
515
  .chat-btn-text,
521
516
  .chat-btn-icon {
522
517
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -535,17 +530,6 @@ video {
535
530
  --tw-scale-y: 1.05;
536
531
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
537
532
  }
538
- .chat-btn-text:focus,
539
- .chat-btn-icon:focus {
540
- outline: 2px solid transparent;
541
- outline-offset: 2px;
542
- --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
543
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
544
- box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
545
- --tw-ring-opacity: 1;
546
- --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1));
547
- --tw-ring-offset-width: 2px;
548
- }
549
533
  .chat-btn-text,
550
534
  .chat-btn-icon {
551
535
  background-color: var(--button-background-color, white);
@@ -555,11 +539,8 @@ video {
555
539
  .chat-btn-text {
556
540
  display: flex;
557
541
  align-items: center;
558
- gap: 0.5rem;
559
- padding-left: 0.75rem;
560
- padding-right: 0.75rem;
561
- padding-top: 0.75rem;
562
- padding-bottom: 0.75rem;
542
+ gap: 8px;
543
+ padding: var(--button-padding, 0.75rem);
563
544
  color: var(--button-text-color, #111827);
564
545
  }
565
546
  .chat-btn-text:hover {
@@ -567,23 +548,22 @@ video {
567
548
  }
568
549
  .chat-btn-text span {
569
550
  white-space: nowrap;
570
- font-size: 0.875rem;
571
- line-height: 1.25rem;
572
551
  font-weight: 500;
552
+ font-size: var(--button-font-size);
573
553
  }
574
554
  .chat-btn-text img {
575
- height: 1.5rem;
576
- width: 1.5rem;
577
555
  flex-shrink: 0;
578
556
  -o-object-fit: contain;
579
557
  object-fit: contain;
558
+ width: var(--button-icon-width, 1.5rem);
559
+ height: var(--button-icon-height, 1.5rem);
580
560
  }
581
561
  /* Icon-only button */
582
562
  .chat-btn-icon {
583
- padding: 0.75rem;
563
+ padding: var(--button-padding, 0.75rem);
584
564
  width: 56px;
585
565
  height: 56px;
586
- }
566
+ }
587
567
  .chat-btn-icon img {
588
568
  height: 100%;
589
569
  width: 100%;
@@ -594,104 +574,255 @@ video {
594
574
  .chat-btn-icon.round {
595
575
  border-radius: 9999px;
596
576
  }
597
- .pointer-events-none {
598
- pointer-events: none;
577
+ /* Error message styling */
578
+ .error-message {
579
+ padding: var(--error-message-padding, 0.5rem);
580
+ color: var(--error-text-color);
581
+ }
582
+ /* Chat window positioning classes */
583
+ .chat-window-fullscreen {
584
+ position: fixed;
585
+ inset: 0px;
586
+ z-index: 9999;
587
+ display: flex;
588
+ height: 100%;
589
+ max-height: 100%;
590
+ width: 100%;
591
+ max-width: 1024px;
592
+ flex-direction: column;
593
+ overflow: hidden;
594
+ border-radius: 0px;
595
+ border-width: 0px;
596
+ --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
597
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
598
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
599
+ transition-property: box-shadow;
600
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
601
+ transition-duration: 200ms;
602
+ background-color: var(--chat-window-bg-color);
603
+ font-size: var(--chat-window-font-size);
599
604
  }
600
- .visible {
601
- visibility: visible;
605
+ .chat-window-normal {
606
+ position: fixed;
607
+ display: flex;
608
+ height: 83.333333%;
609
+ width: 100%;
610
+ max-width: 1024px;
611
+ flex-direction: column;
612
+ overflow: hidden;
613
+ border-radius: 0.5rem;
602
614
  }
603
- .static {
604
- position: static;
615
+ @media (min-width: 640px) {
616
+
617
+ .chat-window-normal {
618
+ width: 450px;
619
+ }
605
620
  }
606
- .fixed {
607
- position: fixed;
621
+ .chat-window-normal {
622
+ background-color: var(--chat-window-bg-color);
623
+ border: 1px solid var(--chat-window-border-color);
624
+ }
625
+ .chat-window-dragging {
626
+ cursor: grabbing;
627
+ --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
628
+ --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
629
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
608
630
  }
609
- .relative {
610
- position: relative;
631
+ .chat-window-normal:not(.chat-window-dragging) {
632
+ --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
633
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
634
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
635
+ transition-property: box-shadow;
636
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
637
+ transition-duration: 200ms;
611
638
  }
612
- .inset-0 {
613
- inset: 0px;
639
+ /* Header/drag bar classes */
640
+ .chat-header {
641
+ display: flex;
642
+ align-items: center;
643
+ justify-content: space-between;
644
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
645
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
646
+ transition-duration: 150ms;
647
+ padding: var(--header-padding, 0.5rem);
648
+ background-color: var(--header-bg-color);
649
+ border-bottom: 1px solid var(--header-border-color);
614
650
  }
615
- .z-\[9999\] {
616
- z-index: 9999;
651
+ .chat-header:hover,
652
+ .chat-header:active {
653
+ background-color: var(--header-bg-hover-color);
654
+ }
655
+ .chat-header-draggable {
656
+ cursor: grab;
617
657
  }
618
- .ml-2 {
619
- margin-left: 0.5rem;
658
+ .chat-header-dragging {
659
+ cursor: grabbing;
620
660
  }
621
- .mt-1 {
622
- margin-top: 0.25rem;
661
+ .drag-indicator {
662
+ display: none;
623
663
  }
624
- .mt-2 {
625
- margin-top: 0.5rem;
664
+ @media (min-width: 640px) {
665
+
666
+ .drag-indicator {
667
+ display: flex;
668
+ }
626
669
  }
627
- .block {
628
- display: block;
670
+ .drag-dots {
671
+ pointer-events: none;
672
+ margin-left: 2px;
673
+ display: flex;
674
+ gap: 2px;
675
+ }
676
+ @media (min-width: 640px) {
677
+
678
+ .drag-spacer {
679
+ display: none;
680
+ }
629
681
  }
630
- .flex {
682
+ .header-buttons {
631
683
  display: flex;
684
+ align-items: center;
685
+ gap: 4px;
632
686
  }
633
- .table {
634
- display: table;
687
+ /* Header button classes */
688
+ .header-button {
689
+ border-radius: 0.375rem;
690
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
691
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
692
+ transition-duration: 200ms;
693
+ padding: var(--button-padding-sm, 0.375rem);
694
+ color: var(--header-button-text-color);
635
695
  }
636
- .hidden {
696
+ .header-button:hover {
697
+ background-color: var(--header-button-bg-hover-color);
698
+ }
699
+ .fullscreen-button {
637
700
  display: none;
638
701
  }
639
- .size-6 {
640
- width: 1.5rem;
641
- height: 1.5rem;
702
+ @media (min-width: 640px) {
703
+
704
+ .fullscreen-button {
705
+ display: block;
706
+ }
642
707
  }
643
- .h-1\.5 {
644
- height: 0.375rem;
708
+ /* Chat content area */
709
+ .chat-content {
710
+ display: flex;
711
+ flex-grow: 1;
712
+ flex-direction: column;
713
+ overflow: hidden;
645
714
  }
646
- .h-5\/6 {
647
- height: 83.333333%;
715
+ /* Loading state */
716
+ .loading-container {
717
+ display: flex;
718
+ flex-grow: 1;
719
+ align-items: center;
720
+ justify-content: center;
648
721
  }
649
- .h-full {
650
- height: 100%;
722
+ .loading-text {
723
+ margin-left: 2px;
724
+ color: var(--loading-text-color);
725
+ }
726
+ /* Messages container */
727
+ .messages-container {
728
+ flex-grow: 1;
651
729
  }
652
- .max-h-full {
653
- max-height: 100%;
730
+ .messages-container > :not([hidden]) ~ :not([hidden]) {
731
+ --tw-space-y-reverse: 0;
732
+ margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
733
+ margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
654
734
  }
655
- .w-full {
656
- width: 100%;
735
+ .messages-container {
736
+ overflow-y: auto;
657
737
  }
658
- .max-w-screen-lg {
659
- max-width: 1024px;
738
+ .messages-container::-webkit-scrollbar {
739
+ width: 0.375rem;
660
740
  }
661
- .max-w-xs {
662
- max-width: 20rem;
741
+ .messages-container::-webkit-scrollbar-track {
742
+ border-radius: 0.25rem;
743
+ background-color: var(--scrollbar-track-color);
663
744
  }
664
- .flex-grow {
665
- flex-grow: 1;
745
+ .messages-container::-webkit-scrollbar-thumb {
746
+ border-radius: 0.25rem;
747
+ background-color: var(--scrollbar-thumb-color);
666
748
  }
667
- .origin-left-right {
668
- transform-origin: 0% 50%;
749
+ .messages-container::-webkit-scrollbar-thumb:hover {
750
+ background-color: var(--scrollbar-thumb-hover-color);
669
751
  }
670
- .transform {
671
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
752
+ .messages-container {
753
+ padding: var(--container-padding, 1rem);
754
+ }
755
+ /* Message bubbles */
756
+ .message-row {
757
+ display: flex;
672
758
  }
673
- @keyframes dots {
759
+ .message-row-user {
760
+ justify-content: flex-end;
761
+ }
762
+ .message-row-assistant {
763
+ justify-content: flex-start;
764
+ }
765
+ .message-bubble {
766
+ max-width: 20rem;
767
+ border-radius: 0.5rem;
768
+ }
769
+ @media (min-width: 1024px) {
674
770
 
675
- 0%, 20% {
676
- color: rgba(0,0,0,0);
677
- text-shadow: .25em 0 0 rgba(0,0,0,0), .5em 0 0 rgba(0,0,0,0);
771
+ .message-bubble {
772
+ max-width: 28rem;
678
773
  }
679
-
680
- 40% {
681
- color: black;
682
- text-shadow: .25em 0 0 rgba(0,0,0,0), .5em 0 0 rgba(0,0,0,0);
774
+ }
775
+ .message-bubble {
776
+ padding: var(--message-padding-y, 0.5rem) var(--message-padding-x, 1rem);
683
777
  }
684
-
685
- 60% {
686
- text-shadow: .25em 0 0 black, .5em 0 0 rgba(0,0,0,0);
778
+ .message-bubble-user {
779
+ background-color: var(--message-user-bg-color);
780
+ color: var(--message-user-text-color);
687
781
  }
688
-
689
- 80%, 100% {
690
- text-shadow: .25em 0 0 black, .5em 0 0 black;
782
+ .message-bubble-assistant {
783
+ background-color: var(--message-assistant-bg-color);
784
+ color: var(--message-assistant-text-color);
691
785
  }
786
+ .message-bubble-system {
787
+ background-color: var(--message-system-bg-color);
788
+ color: var(--message-system-text-color);
789
+ }
790
+ .message-timestamp {
791
+ margin-top: 4px;
792
+ opacity: 0.7;
793
+ font-size: var(--chat-window-font-size-sm);
692
794
  }
693
- .animate-dots {
694
- animation: dots 1s steps(5, end) infinite;
795
+ .message-attachments {
796
+ margin-top: 8px;
797
+ }
798
+ .message-attachments > :not([hidden]) ~ :not([hidden]) {
799
+ --tw-space-y-reverse: 0;
800
+ margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
801
+ margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
802
+ }
803
+ .attachment-link {
804
+ display: block;
805
+ text-decoration-line: underline;
806
+ }
807
+ .attachment-link:hover {
808
+ text-decoration-line: none;
809
+ }
810
+ /* Welcome messages */
811
+ .welcome-messages > :not([hidden]) ~ :not([hidden]) {
812
+ --tw-space-y-reverse: 0;
813
+ margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
814
+ margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
815
+ }
816
+ /* Typing indicator */
817
+ .typing-indicator {
818
+ height: 0.375rem;
819
+ width: 100%;
820
+ overflow: hidden;
821
+ }
822
+ .typing-progress {
823
+ height: 100%;
824
+ width: 100%;
825
+ transform-origin: 0% 50%;
695
826
  }
696
827
  @keyframes progress {
697
828
 
@@ -715,233 +846,332 @@ video {
715
846
  transform: translateX(0) scaleX(0);
716
847
  }
717
848
  }
718
- .animate-progress {
849
+ .typing-progress {
719
850
  animation: progress 3s infinite linear;
851
+ border-radius: 0.5rem;
852
+ background-color: var(--typing-progress-bg-color);
720
853
  }
721
- .cursor-grab {
722
- cursor: grab;
723
- }
724
- .cursor-grabbing {
725
- cursor: grabbing;
726
- }
727
- .cursor-not-allowed {
728
- cursor: not-allowed;
729
- }
730
- .resize-none {
731
- resize: none;
732
- }
733
- .resize {
734
- resize: both;
735
- }
736
- .flex-col {
737
- flex-direction: column;
738
- }
739
- .items-center {
740
- align-items: center;
741
- }
742
- .justify-start {
743
- justify-content: flex-start;
744
- }
745
- .justify-end {
746
- justify-content: flex-end;
747
- }
748
- .justify-center {
854
+ .typing-text {
855
+ width: 100%;
749
856
  justify-content: center;
857
+ opacity: 0.7;
858
+ font-size: var(--chat-window-font-size-sm);
750
859
  }
751
- .justify-between {
752
- justify-content: space-between;
753
- }
754
- .gap-0\.5 {
755
- gap: 0.125rem;
756
- }
757
- .gap-1 {
758
- gap: 0.25rem;
860
+ @keyframes dots {
861
+
862
+ 0%, 20% {
863
+ color: rgba(0,0,0,0);
864
+ text-shadow: .25em 0 0 rgba(0,0,0,0), .5em 0 0 rgba(0,0,0,0);
865
+ }
866
+
867
+ 40% {
868
+ color: black;
869
+ text-shadow: .25em 0 0 rgba(0,0,0,0), .5em 0 0 rgba(0,0,0,0);
870
+ }
871
+
872
+ 60% {
873
+ text-shadow: .25em 0 0 black, .5em 0 0 rgba(0,0,0,0);
874
+ }
875
+
876
+ 80%, 100% {
877
+ text-shadow: .25em 0 0 black, .5em 0 0 black;
878
+ }
759
879
  }
760
- .gap-2 {
761
- gap: 0.5rem;
880
+ .typing-dots {
881
+ animation: dots 1s steps(5, end) infinite;
762
882
  }
763
- .space-y-1 > :not([hidden]) ~ :not([hidden]) {
764
- --tw-space-y-reverse: 0;
765
- margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
766
- margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
883
+ .typing-dots:after {
884
+ content: ' .';
767
885
  }
768
- .space-y-2 > :not([hidden]) ~ :not([hidden]) {
886
+ /* Starter questions */
887
+ .starter-questions > :not([hidden]) ~ :not([hidden]) {
769
888
  --tw-space-y-reverse: 0;
770
889
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
771
890
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
772
891
  }
773
- .overflow-hidden {
774
- overflow: hidden;
775
- }
776
- .overflow-y-auto {
777
- overflow-y: auto;
892
+ .starter-questions {
893
+ padding: var(--container-padding, 1rem);
894
+ font-size: var(--chat-window-font-size);
895
+ }
896
+ .starter-question-row {
897
+ display: flex;
898
+ justify-content: flex-end;
778
899
  }
779
- .rounded-lg {
780
- border-radius: 0.5rem;
900
+ /* Input area */
901
+ .input-area {
902
+ padding: var(--container-padding, 1rem);
903
+ background-color: var(--input-bg-color);
904
+ border-top: 1px solid var(--input-border-color);
905
+ font-size: var(--chat-window-font-size);
906
+ }
907
+ .input-container {
908
+ display: flex;
909
+ gap: 8px;
781
910
  }
782
- .rounded-md {
911
+ .message-textarea {
912
+ flex-grow: 1;
913
+ resize: none;
783
914
  border-radius: 0.375rem;
784
- }
785
- .rounded-none {
786
- border-radius: 0px;
787
- }
788
- .border {
789
915
  border-width: 1px;
790
- }
791
- .border-0 {
792
- border-width: 0px;
793
- }
794
- .border-b {
795
- border-bottom-width: 1px;
796
- }
797
- .border-t {
798
- border-top-width: 1px;
799
- }
800
- .border-gray-100 {
801
- --tw-border-opacity: 1;
802
- border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));
803
- }
804
- .border-gray-200 {
805
- --tw-border-opacity: 1;
806
- border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
807
- }
808
- .border-gray-300 {
809
916
  --tw-border-opacity: 1;
810
917
  border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
811
918
  }
812
- .bg-blue-200 {
813
- --tw-bg-opacity: 1;
814
- background-color: rgb(191 219 254 / var(--tw-bg-opacity, 1));
815
- }
816
- .bg-blue-500 {
817
- --tw-bg-opacity: 1;
818
- background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
819
- }
820
- .bg-gray-100 {
821
- --tw-bg-opacity: 1;
822
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
823
- }
824
- .bg-gray-200 {
825
- --tw-bg-opacity: 1;
826
- background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
827
- }
828
- .bg-gray-300 {
829
- --tw-bg-opacity: 1;
830
- background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
831
- }
832
- .bg-white {
833
- --tw-bg-opacity: 1;
834
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
919
+ .message-textarea:focus {
920
+ outline-color: #93c5fd;
835
921
  }
836
- .p-1\.5 {
837
- padding: 0.375rem;
838
- }
839
- .p-2 {
840
- padding: 0.5rem;
841
- }
842
- .p-4 {
843
- padding: 1rem;
844
- }
845
- .px-2 {
846
- padding-left: 0.5rem;
847
- padding-right: 0.5rem;
848
- }
849
- .px-3 {
850
- padding-left: 0.75rem;
851
- padding-right: 0.75rem;
852
- }
853
- .px-4 {
854
- padding-left: 1rem;
855
- padding-right: 1rem;
856
- }
857
- .py-2 {
858
- padding-top: 0.5rem;
859
- padding-bottom: 0.5rem;
860
- }
861
- .text-sm {
862
- font-size: 0.875rem;
863
- line-height: 1.25rem;
922
+ .message-textarea {
923
+ padding: var(--input-textarea-padding-y, 0.5rem) var(--input-textarea-padding-x, 0.75rem);
924
+ color: var(--input-text-color);
925
+ border: 1px solid var(--input-border-color);
926
+ }
927
+ .message-textarea:focus {
928
+ outline-color: var(--input-outline-focus-color);
929
+ }
930
+ .send-button {
931
+ border-radius: 0.375rem;
932
+ font-weight: 500;
933
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
934
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
935
+ transition-duration: 200ms;
936
+ padding: var(--send-button-padding-y, 0.5rem) var(--send-button-padding-x, 1rem);
937
+ font-size: var(--chat-window-font-size);
864
938
  }
865
- .text-xs {
866
- font-size: 0.75rem;
867
- line-height: 1rem;
939
+ .send-button-enabled {
940
+ background-color: var(--send-button-bg-color);
941
+ color: var(--send-button-text-color);
942
+ }
943
+ .send-button-enabled:hover {
944
+ background-color: var(--send-button-bg-hover-color);
945
+ }
946
+ .send-button-disabled {
947
+ cursor: not-allowed;
948
+ background-color: var(--send-button-bg-disabled-color);
949
+ color: var(--send-button-text-disabled-color);
868
950
  }
869
- .font-medium {
870
- font-weight: 500;
951
+ .visible {
952
+ visibility: visible;
871
953
  }
872
- .text-gray-500 {
873
- --tw-text-opacity: 1;
874
- color: rgb(107 114 128 / var(--tw-text-opacity, 1));
954
+ .static {
955
+ position: static;
875
956
  }
876
- .text-gray-600 {
877
- --tw-text-opacity: 1;
878
- color: rgb(75 85 99 / var(--tw-text-opacity, 1));
957
+ .relative {
958
+ position: relative;
879
959
  }
880
- .text-gray-800 {
881
- --tw-text-opacity: 1;
882
- color: rgb(31 41 55 / var(--tw-text-opacity, 1));
960
+ .table {
961
+ display: table;
883
962
  }
884
- .text-red-500 {
885
- --tw-text-opacity: 1;
886
- color: rgb(239 68 68 / var(--tw-text-opacity, 1));
963
+ .size-6 {
964
+ width: 1.5rem;
965
+ height: 1.5rem;
887
966
  }
888
- .text-white {
889
- --tw-text-opacity: 1;
890
- color: rgb(255 255 255 / var(--tw-text-opacity, 1));
967
+ .h-5\/6 {
968
+ height: 83.333333%;
891
969
  }
892
- .underline {
893
- text-decoration-line: underline;
970
+ .transform {
971
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
894
972
  }
895
- .opacity-70 {
896
- opacity: 0.7;
973
+ .resize {
974
+ resize: both;
897
975
  }
898
976
  .shadow {
899
977
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
900
978
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
901
979
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
902
980
  }
903
- .shadow-2xl {
904
- --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
905
- --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
906
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
907
- }
908
- .shadow-lg {
909
- --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
910
- --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
911
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
912
- }
913
- .transition-colors {
914
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
915
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
916
- transition-duration: 150ms;
917
- }
918
- .transition-shadow {
919
- transition-property: box-shadow;
920
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
921
- transition-duration: 150ms;
922
- }
923
- .duration-150 {
924
- transition-duration: 150ms;
925
- }
926
- .duration-200 {
927
- transition-duration: 200ms;
928
- }
929
981
  :host {
930
982
  /**
931
- * @prop --button-background-color: Button background color
932
- * @prop --button-background-color-hover: Button background color on hover
933
- * @prop --button-text-color: Button text color
934
- * @prop --button-text-color-hover: Button text color on hover
935
- * @prop --button-border-color: Button border color
936
- * @prop --button-border-color-hover: Button border color on hover
983
+ * Global Variables
984
+ * @prop --chat-z-index: Z-index for chat widget (50)
985
+ * @prop --container-padding: General container padding (1rem)
986
+ *
987
+ * Button Variables
988
+ * @prop --button-background-color: Button background color (#ffffff)
989
+ * @prop --button-background-color-hover: Button background color on hover (#f3f4f6)
990
+ * @prop --button-text-color: Button text color (#111827)
991
+ * @prop --button-text-color-hover: Button text color on hover (#1d4ed8)
992
+ * @prop --button-border-color: Button border color (#6b7280)
993
+ * @prop --button-border-color-hover: Button border color on hover (#374151)
994
+ * @prop --button-padding: Button padding (0.75rem)
995
+ * @prop --button-padding-sm: Small button padding (0.375rem)
996
+ * @prop --button-font-size: Button text font size (0.875rem)
997
+ * @prop --button-icon-width: Button icon width (1.5rem)
998
+ * @prop --button-icon-height: Button icon height (1.5rem)
999
+ *
1000
+ * Chat Window Variables
1001
+ * @prop --chat-window-bg-color: Chat window background color (#ffffff)
1002
+ * @prop --chat-window-border-color: Chat window border color (#d1d5db)
1003
+ * @prop --chat-window-shadow-color: Chat window shadow color (rgba(0, 0, 0, 0.1))
1004
+ * @prop --chat-window-font-size: Default font size for text in the chat window (0.875rem)
1005
+ * @prop --chat-window-font-size-sm: Font size for small text in the chat window (0.75rem)
1006
+ *
1007
+ * Header Variables
1008
+ * @prop --header-bg-color: Header background color (transparent)
1009
+ * @prop --header-bg-hover-color: Header background color on hover (#f9fafb)
1010
+ * @prop --header-border-color: Header border color (#f3f4f6)
1011
+ * @prop --header-button-text-color: Header button text color (#6b7280)
1012
+ * @prop --header-button-bg-hover-color: Header button background on hover (#f3f4f6)
1013
+ * @prop --header-padding: Header padding (0.5rem)
1014
+ *
1015
+ * Starter Question Variables
1016
+ * @prop --starter-question-bg-color: Starter question background color (transparent)
1017
+ * @prop --starter-question-bg-hover-color: Starter question background on hover (#eff6ff)
1018
+ * @prop --starter-question-text-color: Starter question text color (#3b82f6)
1019
+ * @prop --starter-question-border-color: Starter question border color (#3b82f6)
1020
+ * @prop --starter-question-border-hover-color: Starter question border on hover (#2563eb)
1021
+ * @prop --starter-question-padding: Starter question padding (0.75rem)
1022
+ *
1023
+ * Message Bubble Variables
1024
+ * @prop --message-user-bg-color: User message background color (#3b82f6)
1025
+ * @prop --message-user-text-color: User message text color (#ffffff)
1026
+ * @prop --message-assistant-bg-color: Assistant message background color (#e5e7eb)
1027
+ * @prop --message-assistant-text-color: Assistant message text color (#1f2937)
1028
+ * @prop --message-system-bg-color: System message background color (#f3f4f6)
1029
+ * @prop --message-system-text-color: System message text color (#4b5563)
1030
+ * @prop --message-timestamp-color: User message timestamp color (rgba(255, 255, 255, 0.7))
1031
+ * @prop --message-timestamp-assistant-color: Assistant message timestamp color (rgba(75, 85, 99, 0.7))
1032
+ * @prop --message-padding-x: Message horizontal padding (1rem)
1033
+ * @prop --message-padding-y: Message vertical padding (0.5rem)
1034
+ *
1035
+ * Input Area Variables
1036
+ * @prop --input-bg-color: Input area background color (transparent)
1037
+ * @prop --input-border-color: Input field border color (#d1d5db)
1038
+ * @prop --input-text-color: Input text color (#111827)
1039
+ * @prop --input-placeholder-color: Input placeholder text color (#6b7280)
1040
+ * @prop --input-outline-focus-color: Input field focus ring color (#3b82f6)
1041
+ * @prop --input-textarea-padding-x: Input textarea horizontal padding (0.75rem)
1042
+ * @prop --input-textarea-padding-y: Input textarea vertical padding (0.5rem)
1043
+ *
1044
+ * Send Button Variables
1045
+ * @prop --send-button-bg-color: Send button background color (#3b82f6)
1046
+ * @prop --send-button-bg-hover-color: Send button background on hover (#2563eb)
1047
+ * @prop --send-button-text-color: Send button text color (#ffffff)
1048
+ * @prop --send-button-bg-disabled-color: Send button background when disabled (#d1d5db)
1049
+ * @prop --send-button-text-disabled-color: Send button text when disabled (#6b7280)
1050
+ * @prop --send-button-padding-x: Send button horizontal padding (1rem)
1051
+ * @prop --send-button-padding-y: Send button vertical padding (0.5rem)
1052
+ *
1053
+ * Loading Variables
1054
+ * @prop --loading-text-color: Loading text color (#6b7280)
1055
+ * @prop --loading-spinner-track-color: Loading spinner track color (#e5e7eb)
1056
+ * @prop --loading-spinner-fill-color: Loading spinner fill color (#3b82f6)
1057
+ * @prop --loading-spinner-size: Loading spinner size (1.25rem)
1058
+ *
1059
+ * Typing Indicator Variables
1060
+ * @prop --typing-progress-bg-color: Typing progress bar background color (#ade3ff)
1061
+ *
1062
+ * Scrollbar Variables
1063
+ * @prop --scrollbar-track-color: Scrollbar track color (#f3f4f6)
1064
+ * @prop --scrollbar-thumb-color: Scrollbar thumb color (#d1d5db)
1065
+ * @prop --scrollbar-thumb-hover-color: Scrollbar thumb hover color (#9ca3af)
1066
+ *
1067
+ * Error Variables
1068
+ * @prop --error-text-color: Error text color (#ef4444)
1069
+ * @prop --error-message-padding: Error message padding (0.5rem)
1070
+ *
1071
+ * Markdown Code Variables
1072
+ * @prop --code-bg-user-color: Code background in user messages (rgba(59, 130, 246, 0.3))
1073
+ * @prop --code-text-user-color: Code text color in user messages (#dbeafe)
1074
+ * @prop --code-border-user-color: Code border in user messages (rgba(59, 130, 246, 0.6))
1075
+ * @prop --code-bg-assistant-color: Code background in assistant messages (#ffffff)
1076
+ * @prop --code-text-assistant-color: Code text color in assistant messages (#1f2937)
1077
+ * @prop --code-border-assistant-color: Code border in assistant messages (#d1d5db)
937
1078
  */
938
- --button-background-color: white;
1079
+ /* Global variables */
1080
+ --chat-z-index: 50;
1081
+ --container-padding: 1rem;
1082
+
1083
+ /* Button variables */
1084
+ --button-background-color: #ffffff;
939
1085
  --button-background-color-hover: #f3f4f6;
940
1086
  --button-text-color: #111827;
941
1087
  --button-text-color-hover: #1d4ed8;
942
1088
  --button-border-color: #6b7280;
943
1089
  --button-border-color-hover: #374151;
944
- --chat-z-index: 50;
1090
+ --button-padding: 0.75rem;
1091
+ --button-padding-sm: 0.375rem;
1092
+ --button-font-size: 0.875rem; /* text-sm */
1093
+ --button-icon-width: 1.5rem;
1094
+ --button-icon-height: 1.5rem;
1095
+
1096
+ /* Chat window variables */
1097
+ --chat-window-bg-color: #ffffff;
1098
+ --chat-window-border-color: #d1d5db;
1099
+ --chat-window-shadow-color: rgba(0, 0, 0, 0.1);
1100
+ --chat-window-font-size: 0.875rem; /* text-sm */
1101
+ --chat-window-font-size-sm: 0.75rem; /* text-xs */
1102
+
1103
+ /* Header variables */
1104
+ --header-bg-color: transparent;
1105
+ --header-bg-hover-color: #f9fafb;
1106
+ --header-border-color: #f3f4f6;
1107
+ --header-button-text-color: #6b7280;
1108
+ --header-button-bg-hover-color: #f3f4f6;
1109
+ --header-padding: 0.5rem;
1110
+
1111
+ /* Starter question variables */
1112
+ --starter-question-bg-color: transparent;
1113
+ --starter-question-bg-hover-color: #eff6ff;
1114
+ --starter-question-text-color: #3b82f6;
1115
+ --starter-question-border-color: #3b82f6;
1116
+ --starter-question-border-hover-color: #2563eb;
1117
+ --starter-question-padding: 0.75rem;
1118
+
1119
+ /* Message bubble variables */
1120
+ --message-user-bg-color: #3b82f6;
1121
+ --message-user-text-color: #ffffff;
1122
+ --message-assistant-bg-color: #e5e7eb;
1123
+ --message-assistant-text-color: #1f2937;
1124
+ --message-system-bg-color: #f3f4f6;
1125
+ --message-system-text-color: #4b5563;
1126
+ --message-timestamp-color: rgba(255, 255, 255, 0.7);
1127
+ --message-timestamp-assistant-color: rgba(75, 85, 99, 0.7);
1128
+ --message-padding-x: 1rem;
1129
+ --message-padding-y: 0.5rem;
1130
+
1131
+ /* Input area variables */
1132
+ --input-bg-color: transparent;
1133
+ --input-border-color: #d1d5db;
1134
+ --input-text-color: #111827;
1135
+ --input-placeholder-color: #6b7280;
1136
+ --input-outline-focus-color: #3b82f6;
1137
+ --input-textarea-padding-x: 0.75rem;
1138
+ --input-textarea-padding-y: 0.5rem;
1139
+
1140
+ /* Send button variables */
1141
+ --send-button-bg-color: #3b82f6;
1142
+ --send-button-bg-hover-color: #2563eb;
1143
+ --send-button-text-color: #ffffff;
1144
+ --send-button-bg-disabled-color: #d1d5db;
1145
+ --send-button-text-disabled-color: #6b7280;
1146
+ --send-button-padding-x: 1rem;
1147
+ --send-button-padding-y: 0.5rem;
1148
+
1149
+ /* Loading variables */
1150
+ --loading-text-color: #6b7280;
1151
+ --loading-spinner-track-color: #e5e7eb;
1152
+ --loading-spinner-fill-color: #3b82f6;
1153
+ --loading-spinner-size: 1.25rem;
1154
+
1155
+ /* Typing indicator variables */
1156
+ --typing-progress-bg-color: #ade3ff;
1157
+
1158
+ /* Scrollbar variables */
1159
+ --scrollbar-track-color: #f3f4f6;
1160
+ --scrollbar-thumb-color: #d1d5db;
1161
+ --scrollbar-thumb-hover-color: #9ca3af;
1162
+
1163
+ /* Error variables */
1164
+ --error-text-color: #ef4444;
1165
+ --error-message-padding: 0.5rem;
1166
+
1167
+ /* Markdown code variables */
1168
+ --code-bg-user-color: rgba(59, 130, 246, 0.3);
1169
+ --code-text-user-color: #dbeafe;
1170
+ --code-border-user-color: rgba(59, 130, 246, 0.6);
1171
+ --code-bg-assistant-color: #ffffff;
1172
+ --code-text-assistant-color: #1f2937;
1173
+ --code-border-assistant-color: #d1d5db;
1174
+
945
1175
  display: block;
946
1176
  position: fixed;
947
1177
  right: 20px;
@@ -961,21 +1191,14 @@ textarea::-webkit-scrollbar {
961
1191
  }
962
1192
  textarea::-webkit-scrollbar-track {
963
1193
  border-radius: 0.25rem;
964
- --tw-bg-opacity: 1;
965
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
1194
+ background-color: var(--scrollbar-track-color);
966
1195
  }
967
1196
  textarea::-webkit-scrollbar-thumb {
968
1197
  border-radius: 0.25rem;
969
- --tw-bg-opacity: 1;
970
- background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
1198
+ background-color: var(--scrollbar-thumb-color);
971
1199
  }
972
1200
  textarea::-webkit-scrollbar-thumb:hover {
973
- --tw-bg-opacity: 1;
974
- background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
975
- }
976
- .loading-spinner {
977
- height: 1.25rem;
978
- width: 1.25rem;
1201
+ background-color: var(--scrollbar-thumb-hover-color);
979
1202
  }
980
1203
  @keyframes spin {
981
1204
 
@@ -987,26 +1210,24 @@ textarea::-webkit-scrollbar-thumb:hover {
987
1210
  animation: spin 1s linear infinite;
988
1211
  border-radius: 9999px;
989
1212
  border-width: 2px;
990
- border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
991
- --tw-border-opacity: 1;
992
- border-top-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
1213
+ border-color: var(--loading-spinner-track-color);
1214
+ border-top-color: var(--loading-spinner-fill-color);
1215
+ width: var(--loading-spinner-size, 1.25rem);
1216
+ height: var(--loading-spinner-size, 1.25rem);
993
1217
  }
994
1218
  .overflow-y-auto::-webkit-scrollbar {
995
1219
  width: 0.375rem;
996
1220
  }
997
1221
  .overflow-y-auto::-webkit-scrollbar-track {
998
1222
  border-radius: 0.25rem;
999
- --tw-bg-opacity: 1;
1000
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
1223
+ background-color: var(--scrollbar-track-color);
1001
1224
  }
1002
1225
  .overflow-y-auto::-webkit-scrollbar-thumb {
1003
1226
  border-radius: 0.25rem;
1004
- --tw-bg-opacity: 1;
1005
- background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
1227
+ background-color: var(--scrollbar-thumb-color);
1006
1228
  }
1007
1229
  .overflow-y-auto::-webkit-scrollbar-thumb:hover {
1008
- --tw-bg-opacity: 1;
1009
- background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
1230
+ background-color: var(--scrollbar-thumb-hover-color);
1010
1231
  }
1011
1232
  /* Markdown content styling for chat messages */
1012
1233
  .chat-markdown {
@@ -1669,7 +1890,7 @@ textarea::-webkit-scrollbar-thumb:hover {
1669
1890
  margin-top: 0.1rem;
1670
1891
  margin-bottom: 0.1rem;
1671
1892
  }
1672
- .bg-blue-500 .chat-markdown {
1893
+ .message-bubble-user .chat-markdown {
1673
1894
  --tw-prose-body: var(--tw-prose-invert-body);
1674
1895
  --tw-prose-headings: var(--tw-prose-invert-headings);
1675
1896
  --tw-prose-lead: var(--tw-prose-invert-lead);
@@ -1689,85 +1910,22 @@ textarea::-webkit-scrollbar-thumb:hover {
1689
1910
  --tw-prose-th-borders: var(--tw-prose-invert-th-borders);
1690
1911
  --tw-prose-td-borders: var(--tw-prose-invert-td-borders);
1691
1912
  }
1692
- .bg-blue-500 .chat-markdown code {
1693
- background-color: rgb(96 165 250 / 0.5);
1694
- --tw-text-opacity: 1;
1695
- color: rgb(239 246 255 / var(--tw-text-opacity, 1));
1913
+ .message-bubble-user .chat-markdown code {
1914
+ background-color: var(--code-bg-user-color);
1915
+ color: var(--code-text-user-color);
1696
1916
  }
1697
- .bg-blue-500 .chat-markdown pre {
1698
- --tw-border-opacity: 1;
1699
- border-color: rgb(96 165 250 / var(--tw-border-opacity, 1));
1700
- background-color: rgb(96 165 250 / 0.5);
1917
+ .message-bubble-user .chat-markdown pre {
1918
+ background-color: var(--code-bg-user-color);
1919
+ border: 1px solid var(--code-border-user-color);
1701
1920
  }
1702
- .bg-gray-200 .chat-markdown code {
1703
- border-width: 1px;
1704
- --tw-border-opacity: 1;
1705
- border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
1706
- --tw-bg-opacity: 1;
1707
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
1921
+ .message-bubble-assistant .chat-markdown code {
1922
+ background-color: var(--code-bg-assistant-color);
1923
+ color: var(--code-text-assistant-color);
1708
1924
  }
1709
- .bg-gray-200 .chat-markdown pre {
1710
- border-width: 1px;
1711
- --tw-border-opacity: 1;
1712
- border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
1713
- --tw-bg-opacity: 1;
1714
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
1925
+ .message-bubble-assistant .chat-markdown pre {
1926
+ background-color: var(--code-bg-assistant-color);
1927
+ border: 1px solid var(--code-border-assistant-color);
1715
1928
  }
1716
1929
  .loading:after {
1717
1930
  content: ' .';
1718
1931
  }
1719
- .hover\:bg-blue-600:hover {
1720
- --tw-bg-opacity: 1;
1721
- background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));
1722
- }
1723
- .hover\:bg-gray-100:hover {
1724
- --tw-bg-opacity: 1;
1725
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
1726
- }
1727
- .hover\:no-underline:hover {
1728
- text-decoration-line: none;
1729
- }
1730
- .focus\:border-transparent:focus {
1731
- border-color: transparent;
1732
- }
1733
- .focus\:outline-none:focus {
1734
- outline: 2px solid transparent;
1735
- outline-offset: 2px;
1736
- }
1737
- .focus\:ring-2:focus {
1738
- --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1739
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1740
- box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1741
- }
1742
- .focus\:ring-blue-500:focus {
1743
- --tw-ring-opacity: 1;
1744
- --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1));
1745
- }
1746
- .active\:bg-gray-50:active {
1747
- --tw-bg-opacity: 1;
1748
- background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
1749
- }
1750
- @media (min-width: 640px) {
1751
-
1752
- .sm\:block {
1753
- display: block;
1754
- }
1755
-
1756
- .sm\:flex {
1757
- display: flex;
1758
- }
1759
-
1760
- .sm\:hidden {
1761
- display: none;
1762
- }
1763
-
1764
- .sm\:w-\[450px\] {
1765
- width: 450px;
1766
- }
1767
- }
1768
- @media (min-width: 1024px) {
1769
-
1770
- .lg\:max-w-md {
1771
- max-width: 28rem;
1772
- }
1773
- }