Ali2206 commited on
Commit
e57552a
Β·
verified Β·
1 Parent(s): a83d68b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +268 -122
app.py CHANGED
@@ -472,188 +472,279 @@ Patient Record (Chunk {chunk_idx}/{len(chunks)}):
472
  def create_interface(self):
473
  """Create Gradio interface with refined ChatGPT-like design"""
474
  css = """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
475
  body, .gradio-container {
476
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
477
  background: var(--background);
478
  color: var(--text-color);
479
- transition: all 0.4s ease;
 
 
480
  }
 
 
481
  .gradio-container {
482
- max-width: 800px;
483
  margin: 0 auto;
484
- padding: 24px;
 
 
 
485
  }
 
486
  .chat-container {
487
  background: var(--chat-bg);
488
- border-radius: 16px;
489
- padding: 24px;
490
- height: 80vh;
 
491
  overflow-y: auto;
492
- box-shadow: 0 4px 12px rgba(0,0,0,0.15);
493
  position: relative;
 
494
  }
495
- .message {
496
- margin: 12px 0;
497
- padding: 12px 16px;
498
- border-radius: 12px;
499
- max-width: 80%;
500
- transition: all 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
501
  background: var(--message-bg);
502
- position: relative;
503
  animation: messageFade 0.3s ease;
504
  }
505
- .message:hover {
 
506
  transform: translateY(-2px);
507
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
508
  }
509
- .message.user {
510
- background: linear-gradient(135deg, #007bff, #0056b3);
 
511
  color: white;
512
  margin-left: auto;
513
  }
514
- .message.assistant {
 
515
  background: var(--message-bg);
516
  color: var(--text-color);
517
  }
518
- .message-timestamp {
519
- font-size: 0.75em;
 
520
  opacity: 0.7;
521
- margin-top: 4px;
522
  text-align: right;
523
  }
 
524
  .input-container {
525
  display: flex;
526
  align-items: center;
527
- margin-top: 24px;
528
  background: var(--chat-bg);
529
- padding: 12px 24px;
530
- border-radius: 30px;
531
- box-shadow: 0 4px 8px rgba(0,0,0,0.15);
532
  position: sticky;
533
- bottom: 0;
 
534
  }
 
535
  .input-textbox {
536
  flex-grow: 1;
537
  border: none;
538
  background: transparent;
539
  color: var(--text-color);
540
  outline: none;
541
- font-size: 1em;
542
  }
 
543
  .input-textbox:focus {
544
- border-bottom: 2px solid #007bff;
545
  }
 
546
  .send-btn {
547
- background: linear-gradient(135deg, #007bff, #0056b3);
548
  color: white;
549
  border: none;
550
- border-radius: 20px;
551
- padding: 10px 20px;
552
- margin-left: 12px;
553
- transition: transform 0.2s ease;
554
  }
 
555
  .send-btn:hover {
556
  transform: scale(1.05);
557
  }
 
558
  .send-btn:active {
559
  animation: glow 0.3s ease;
560
  }
 
561
  .sidebar {
562
  background: var(--sidebar-bg);
563
- padding: 24px;
564
- border-radius: 16px;
565
- margin-top: 24px;
566
- box-shadow: 0 4px 12px rgba(0,0,0,0.15);
567
- transition: transform 0.4s ease;
568
- transform: translateX(0);
569
  position: fixed;
570
- right: 0;
571
- top: 100px;
572
- width: 300px;
 
 
573
  z-index: 1000;
574
- backdrop-filter: blur(10px);
575
- background: rgba(241, 243, 245, 0.8);
576
  }
 
577
  .sidebar-hidden {
578
  transform: translateX(100%);
 
579
  }
 
580
  .sidebar-backdrop {
581
  position: fixed;
582
  top: 0;
583
  left: 0;
584
  width: 100%;
585
  height: 100%;
586
- background: rgba(0,0,0,0.3);
587
  z-index: 999;
588
- display: none;
 
 
589
  }
 
590
  .sidebar:not(.sidebar-hidden) ~ .sidebar-backdrop {
 
 
 
 
 
591
  display: block;
 
592
  }
593
- .header {
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  text-align: center;
595
- margin-bottom: 24px;
 
596
  }
 
597
  .theme-toggle {
598
- position: absolute;
599
- top: 24px;
600
- right: 24px;
601
- background: linear-gradient(135deg, #007bff, #0056b3);
602
  color: white;
603
  border: none;
604
- border-radius: 20px;
605
- padding: 8px 16px;
 
 
 
 
 
606
  display: flex;
607
  align-items: center;
608
- gap: 8px;
609
  }
610
- .tooltip {
611
- position: relative;
 
 
 
 
 
 
 
612
  }
613
- .tooltip:hover::after {
614
- content: attr(data-tip);
615
- position: absolute;
616
- bottom: 100%;
617
- left: 50%;
618
- transform: translateX(-50%);
619
- background: #333;
620
  color: white;
621
- padding: 6px 12px;
622
- border-radius: 6px;
623
- font-size: 0.85em;
624
- white-space: nowrap;
625
- z-index: 1000;
626
- animation: fadeIn 0.3s ease;
627
- }
628
- .markdown-tooltip, .file-tooltip {
629
- display: block;
630
  }
 
631
  .loading-spinner {
632
  position: absolute;
633
- bottom: 80px;
634
  left: 50%;
635
  transform: translateX(-50%);
636
- font-size: 1.2em;
637
  animation: glow 1.5s ease infinite;
638
  }
 
639
  .typing-indicator {
640
  display: none;
641
- font-size: 0.9em;
642
  color: var(--text-color);
643
  opacity: 0.7;
644
- margin: 12px;
645
  }
 
646
  .typing-indicator.active {
647
  display: block;
648
  animation: blink 1s step-end infinite;
649
  }
 
650
  .progress-text {
651
  position: relative;
652
- padding: 8px;
653
  background: var(--message-bg);
654
- border-radius: 8px;
655
- margin-top: 12px;
 
656
  }
 
657
  .progress-text::before {
658
  content: '';
659
  position: absolute;
@@ -661,66 +752,122 @@ Patient Record (Chunk {chunk_idx}/{len(chunks)}):
661
  left: 0;
662
  height: 100%;
663
  width: 0;
664
- background: #007bff;
665
- opacity: 0.2;
666
- animation: progress 2s linear infinite;
667
  }
 
 
668
  @keyframes glow {
669
- 0%, 100% { transform: translateX(-50%) scale(1); opacity: 1; color: #007bff; }
670
- 50% { transform: translateX(-50%) scale(1.2); opacity: 0.7; color: #0056b3; }
671
  }
 
672
  @keyframes blink {
673
  50% { opacity: 0.3; }
674
  }
 
675
  @keyframes fadeIn {
676
  from { opacity: 0; }
677
  to { opacity: 1; }
678
  }
679
- @keyframes progress {
680
- 0% { width: 0; }
681
- 50% { width: 50%; }
682
- 100% { width: 0; }
683
- }
684
- @keyframes messageFade {
685
- from { opacity: 0; transform: translateY(10px); }
686
  to { opacity: 1; transform: translateY(0); }
687
  }
688
- :root {
689
- --background: #ffffff;
690
- --text-color: #333333;
691
- --chat-bg: #f9fafb;
692
- --message-bg: #e5e5ea;
693
- --sidebar-bg: #f1f3f5;
694
  }
695
- [data-theme="dark"] {
696
- --background: #1e2a44;
697
- --text-color: #ffffff;
698
- --chat-bg: #2d3b55;
699
- --message-bg: #3e4c6a;
700
- --sidebar-bg: #2a3650;
701
  }
702
- @media (max-width: 600px) {
 
 
703
  .gradio-container {
704
- padding: 12px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
705
  }
 
 
 
706
  .chat-container {
707
- height: 70vh;
 
708
  }
 
709
  .input-container {
710
  flex-direction: column;
711
- gap: 12px;
712
- padding: 12px;
713
  }
 
 
 
 
 
714
  .send-btn {
715
  width: 100%;
716
- margin-left: 0;
 
 
 
 
 
 
717
  }
 
 
 
 
 
 
 
 
 
718
  .sidebar {
719
- width: 100%;
720
- top: 80px;
 
721
  }
722
- .sidebar-hidden {
723
- transform: translateX(100%);
 
 
 
724
  }
725
  }
726
  """
@@ -781,11 +928,11 @@ Patient Record (Chunk {chunk_idx}/{len(chunks)}):
781
  gr.HTML("<div class='typing-indicator'>Typing...</div>")
782
 
783
  with gr.Row():
784
- tools_button = gr.Button("πŸ“‚ Tools", variant="secondary")
785
 
786
  with gr.Column(elem_classes="sidebar"):
787
  gr.Markdown(
788
- "<div class='tooltip' data-tip='Upload patient records'>### πŸ“Ž Upload Records</div>",
789
  elem_classes="markdown-tooltip"
790
  )
791
  gr.HTML(
@@ -799,15 +946,15 @@ Patient Record (Chunk {chunk_idx}/{len(chunks)}):
799
  )
800
  gr.HTML("</div>")
801
  gr.Markdown(
802
- "<div class='tooltip' data-tip='Summary of findings'>### πŸ“ Analysis Summary</div>",
803
  elem_classes="markdown-tooltip"
804
  )
805
  final_summary = gr.Markdown(
806
- "<div class='tooltip' data-tip='View analysis results'>Analysis results will appear here...</div>",
807
  elem_classes="markdown-tooltip"
808
  )
809
  gr.Markdown(
810
- "<div class='tooltip' data-tip='Download full report'>### πŸ“„ Full Report</div>",
811
  elem_classes="markdown-tooltip"
812
  )
813
  gr.HTML(
@@ -859,7 +1006,6 @@ Patient Record (Chunk {chunk_idx}/{len(chunks)}):
859
  fn=self.toggle_theme,
860
  inputs=[theme_state],
861
  outputs=[theme_state, theme_button]
862
-
863
  )
864
 
865
  # Sidebar toggle handler
@@ -918,7 +1064,7 @@ Patient Record (Chunk {chunk_idx}/{len(chunks)}):
918
 
919
  app.load(
920
  fn=lambda: [
921
- [], None, "<div class='tooltip' data-tip='View analysis results'>Analysis results will appear here...</div>",
922
  "", None, {"visible": False}, "light", False, "πŸŒ™ Dark Mode"
923
  ],
924
  outputs=[chatbot, download_output, final_summary, msg_input, file_upload, progress_text, theme_state, sidebar_state, theme_button],
 
472
  def create_interface(self):
473
  """Create Gradio interface with refined ChatGPT-like design"""
474
  css = """
475
+ /* ==================== BASE STYLES ==================== */
476
+ :root {
477
+ --primary-color: #007bff;
478
+ --primary-dark: #0056b3;
479
+ --border-radius: 12px;
480
+ --transition: all 0.3s ease;
481
+ --shadow: 0 4px 12px rgba(0,0,0,0.15);
482
+ --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
483
+ --background: #ffffff;
484
+ --text-color: #333333;
485
+ --chat-bg: #f9fafb;
486
+ --message-bg: #e5e5ea;
487
+ --sidebar-bg: rgba(241, 243, 245, 0.9);
488
+ --sidebar-dark-bg: rgba(42, 54, 80, 0.9);
489
+ }
490
+
491
+ [data-theme="dark"] {
492
+ --background: #1e2a44;
493
+ --text-color: #ffffff;
494
+ --chat-bg: #2d3b55;
495
+ --message-bg: #3e4c6a;
496
+ --sidebar-bg: var(--sidebar-dark-bg);
497
+ }
498
+
499
  body, .gradio-container {
500
+ font-family: var(--font-family);
501
  background: var(--background);
502
  color: var(--text-color);
503
+ margin: 0;
504
+ padding: 0;
505
+ transition: var(--transition);
506
  }
507
+
508
+ /* ==================== LAYOUT ==================== */
509
  .gradio-container {
510
+ max-width: 900px;
511
  margin: 0 auto;
512
+ padding: 1.5rem;
513
+ display: flex;
514
+ flex-direction: column;
515
+ gap: 1.5rem;
516
  }
517
+
518
  .chat-container {
519
  background: var(--chat-bg);
520
+ border-radius: var(--border-radius);
521
+ padding: 1.5rem;
522
+ min-height: 60vh;
523
+ max-height: 80vh;
524
  overflow-y: auto;
525
+ box-shadow: var(--shadow);
526
  position: relative;
527
+ margin-bottom: 5rem; /* Space for sticky input */
528
  }
529
+
530
+ .header {
531
+ text-align: center;
532
+ margin-bottom: 1.5rem;
533
+ }
534
+
535
+ .header h1 {
536
+ font-size: 1.8rem;
537
+ margin: 0.5rem 0;
538
+ }
539
+
540
+ .header p {
541
+ font-size: 1rem;
542
+ opacity: 0.7;
543
+ }
544
+
545
+ /* ==================== COMPONENTS ==================== */
546
+ .chat__message {
547
+ margin: 0.75rem 0;
548
+ padding: 0.75rem 1rem;
549
+ border-radius: var(--border-radius);
550
+ max-width: 85%;
551
+ transition: var(--transition);
552
  background: var(--message-bg);
553
+ border: 1px solid rgba(0,0,0,0.05);
554
  animation: messageFade 0.3s ease;
555
  }
556
+
557
+ .chat__message:hover {
558
  transform: translateY(-2px);
559
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
560
  }
561
+
562
+ .chat__message.user {
563
+ background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
564
  color: white;
565
  margin-left: auto;
566
  }
567
+
568
+ .chat__message.assistant {
569
  background: var(--message-bg);
570
  color: var(--text-color);
571
  }
572
+
573
+ .chat__message-timestamp {
574
+ font-size: 0.75rem;
575
  opacity: 0.7;
576
+ margin-top: 0.25rem;
577
  text-align: right;
578
  }
579
+
580
  .input-container {
581
  display: flex;
582
  align-items: center;
583
+ gap: 0.75rem;
584
  background: var(--chat-bg);
585
+ padding: 0.75rem 1rem;
586
+ border-radius: 1.5rem;
587
+ box-shadow: var(--shadow);
588
  position: sticky;
589
+ bottom: 1rem;
590
+ z-index: 10;
591
  }
592
+
593
  .input-textbox {
594
  flex-grow: 1;
595
  border: none;
596
  background: transparent;
597
  color: var(--text-color);
598
  outline: none;
599
+ font-size: 1rem;
600
  }
601
+
602
  .input-textbox:focus {
603
+ border-bottom: 2px solid var(--primary-color);
604
  }
605
+
606
  .send-btn {
607
+ background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
608
  color: white;
609
  border: none;
610
+ border-radius: 1rem;
611
+ padding: 0.5rem 1.25rem;
612
+ font-size: 0.9rem;
613
+ transition: var(--transition);
614
  }
615
+
616
  .send-btn:hover {
617
  transform: scale(1.05);
618
  }
619
+
620
  .send-btn:active {
621
  animation: glow 0.3s ease;
622
  }
623
+
624
  .sidebar {
625
  background: var(--sidebar-bg);
626
+ padding: 1.5rem;
627
+ border-radius: var(--border-radius);
628
+ box-shadow: var(--shadow);
629
+ transition: transform 0.4s ease, opacity 0.4s ease;
 
 
630
  position: fixed;
631
+ right: 1rem;
632
+ top: 5rem;
633
+ width: 320px;
634
+ max-height: calc(100vh - 6rem);
635
+ overflow-y: auto;
636
  z-index: 1000;
637
+ animation: fadeInUp 0.4s ease;
 
638
  }
639
+
640
  .sidebar-hidden {
641
  transform: translateX(100%);
642
+ opacity: 0;
643
  }
644
+
645
  .sidebar-backdrop {
646
  position: fixed;
647
  top: 0;
648
  left: 0;
649
  width: 100%;
650
  height: 100%;
651
+ background: rgba(0,0,0,0.4);
652
  z-index: 999;
653
+ opacity: 0;
654
+ transition: opacity 0.4s ease;
655
+ pointer-events: none;
656
  }
657
+
658
  .sidebar:not(.sidebar-hidden) ~ .sidebar-backdrop {
659
+ opacity: 1;
660
+ pointer-events: auto;
661
+ }
662
+
663
+ .sidebar__tooltip, .file-tooltip {
664
  display: block;
665
+ margin-bottom: 1rem;
666
  }
667
+
668
+ .sidebar__tooltip:hover::after, .file-tooltip:hover::after {
669
+ content: attr(data-tip);
670
+ position: absolute;
671
+ top: -2.5rem;
672
+ left: 50%;
673
+ transform: translateX(-50%);
674
+ background: #333;
675
+ color: white;
676
+ padding: 0.4rem 0.8rem;
677
+ border-radius: 0.4rem;
678
+ font-size: 0.85rem;
679
+ max-width: 200px;
680
+ white-space: normal;
681
  text-align: center;
682
+ z-index: 1000;
683
+ animation: fadeIn 0.3s ease;
684
  }
685
+
686
  .theme-toggle {
687
+ background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
 
 
 
688
  color: white;
689
  border: none;
690
+ border-radius: 1rem;
691
+ padding: 0.5rem 1rem;
692
+ font-size: 0.9rem;
693
+ position: fixed;
694
+ top: 1rem;
695
+ right: 1rem;
696
+ z-index: 100;
697
  display: flex;
698
  align-items: center;
699
+ gap: 0.5rem;
700
  }
701
+
702
+ .tools-button {
703
+ background: var(--message-bg);
704
+ color: var(--text-color);
705
+ border: none;
706
+ border-radius: 1rem;
707
+ padding: 0.5rem 1.25rem;
708
+ font-size: 0.9rem;
709
+ transition: var(--transition);
710
  }
711
+
712
+ .tools-button:hover {
713
+ background: var(--primary-color);
 
 
 
 
714
  color: white;
 
 
 
 
 
 
 
 
 
715
  }
716
+
717
  .loading-spinner {
718
  position: absolute;
719
+ bottom: 4rem;
720
  left: 50%;
721
  transform: translateX(-50%);
722
+ font-size: 1.2rem;
723
  animation: glow 1.5s ease infinite;
724
  }
725
+
726
  .typing-indicator {
727
  display: none;
728
+ font-size: 0.9rem;
729
  color: var(--text-color);
730
  opacity: 0.7;
731
+ margin: 0.75rem;
732
  }
733
+
734
  .typing-indicator.active {
735
  display: block;
736
  animation: blink 1s step-end infinite;
737
  }
738
+
739
  .progress-text {
740
  position: relative;
741
+ padding: 0.5rem;
742
  background: var(--message-bg);
743
+ border-radius: var(--border-radius);
744
+ margin-top: 0.75rem;
745
+ overflow: hidden;
746
  }
747
+
748
  .progress-text::before {
749
  content: '';
750
  position: absolute;
 
752
  left: 0;
753
  height: 100%;
754
  width: 0;
755
+ background: linear-gradient(to right, var(--primary-color), var(--primary-dark));
756
+ opacity: 0.3;
757
+ animation: progress 2s ease-in-out infinite;
758
  }
759
+
760
+ /* ==================== ANIMATIONS ==================== */
761
  @keyframes glow {
762
+ 0%, 100% { transform: translateX(-50%) scale(1); opacity: 1; color: var(--primary-color); }
763
+ 50% { transform: translateX(-50%) scale(1.2); opacity: 0.7; color: var(--primary-dark); }
764
  }
765
+
766
  @keyframes blink {
767
  50% { opacity: 0.3; }
768
  }
769
+
770
  @keyframes fadeIn {
771
  from { opacity: 0; }
772
  to { opacity: 1; }
773
  }
774
+
775
+ @keyframes fadeInUp {
776
+ from { opacity: 0; transform: translateY(20px); }
 
 
 
 
777
  to { opacity: 1; transform: translateY(0); }
778
  }
779
+
780
+ @keyframes messageFade {
781
+ from { opacity: 0; transform: translateY(10px) scale(0.95); }
782
+ to { opacity: 1; transform: translateY(0) scale(1); }
 
 
783
  }
784
+
785
+ @keyframes progress {
786
+ 0% { width: 0; }
787
+ 50% { width: 60%; }
788
+ 100% { width: 0; }
 
789
  }
790
+
791
+ /* ==================== MEDIA QUERIES ==================== */
792
+ @media (max-width: 768px) {
793
  .gradio-container {
794
+ padding: 1rem;
795
+ }
796
+
797
+ .chat-container {
798
+ min-height: 50vh;
799
+ max-height: 70vh;
800
+ margin-bottom: 4rem;
801
+ }
802
+
803
+ .sidebar {
804
+ width: 100%;
805
+ right: 0;
806
+ top: 4rem;
807
+ max-height: calc(100vh - 4rem);
808
+ }
809
+
810
+ .theme-toggle {
811
+ top: 0.5rem;
812
+ right: 0.5rem;
813
+ padding: 0.4rem 0.8rem;
814
+ font-size: 0.85rem;
815
+ }
816
+
817
+ .input-container {
818
+ gap: 0.5rem;
819
+ padding: 0.5rem;
820
+ }
821
+
822
+ .send-btn {
823
+ padding: 0.4rem 1rem;
824
  }
825
+ }
826
+
827
+ @media (max-width: 480px) {
828
  .chat-container {
829
+ padding: 1rem;
830
+ margin-bottom: 3.5rem;
831
  }
832
+
833
  .input-container {
834
  flex-direction: column;
835
+ padding: 0.5rem;
 
836
  }
837
+
838
+ .input-textbox {
839
+ font-size: 0.9rem;
840
+ }
841
+
842
  .send-btn {
843
  width: 100%;
844
+ padding: 0.5rem;
845
+ font-size: 0.85rem;
846
+ }
847
+
848
+ .chat__message {
849
+ max-width: 90%;
850
+ padding: 0.5rem 0.75rem;
851
  }
852
+
853
+ .header h1 {
854
+ font-size: 1.5rem;
855
+ }
856
+
857
+ .header p {
858
+ font-size: 0.9rem;
859
+ }
860
+
861
  .sidebar {
862
+ top: 3.5rem;
863
+ max-height: calc(100vh - 3.5rem);
864
+ animation: fadeInUp 0.4s ease;
865
  }
866
+
867
+ .sidebar__tooltip:hover::after, .file-tooltip:hover::after {
868
+ top: auto;
869
+ bottom: -2.5rem;
870
+ max-width: 80vw;
871
  }
872
  }
873
  """
 
928
  gr.HTML("<div class='typing-indicator'>Typing...</div>")
929
 
930
  with gr.Row():
931
+ tools_button = gr.Button("πŸ“‚ Tools", variant="secondary", elem_classes="tools-button")
932
 
933
  with gr.Column(elem_classes="sidebar"):
934
  gr.Markdown(
935
+ "<div class='sidebar__tooltip' data-tip='Upload patient records'>### πŸ“Ž Upload Records</div>",
936
  elem_classes="markdown-tooltip"
937
  )
938
  gr.HTML(
 
946
  )
947
  gr.HTML("</div>")
948
  gr.Markdown(
949
+ "<div class='sidebar__tooltip' data-tip='Summary of findings'>### πŸ“ Analysis Summary</div>",
950
  elem_classes="markdown-tooltip"
951
  )
952
  final_summary = gr.Markdown(
953
+ "<div class='sidebar__tooltip' data-tip='View analysis results'>Analysis results will appear here...</div>",
954
  elem_classes="markdown-tooltip"
955
  )
956
  gr.Markdown(
957
+ "<div class='sidebar__tooltip' data-tip='Download full report'>### πŸ“„ Full Report</div>",
958
  elem_classes="markdown-tooltip"
959
  )
960
  gr.HTML(
 
1006
  fn=self.toggle_theme,
1007
  inputs=[theme_state],
1008
  outputs=[theme_state, theme_button]
 
1009
  )
1010
 
1011
  # Sidebar toggle handler
 
1064
 
1065
  app.load(
1066
  fn=lambda: [
1067
+ [], None, "<div class='sidebar__tooltip' data-tip='View analysis results'>Analysis results will appear here...</div>",
1068
  "", None, {"visible": False}, "light", False, "πŸŒ™ Dark Mode"
1069
  ],
1070
  outputs=[chatbot, download_output, final_summary, msg_input, file_upload, progress_text, theme_state, sidebar_state, theme_button],