Make Smart Summarizer fully responsive for all devices - mobile, tablet, desktop

#3
.vscode/settings.json ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ {
2
+ }
webapp/static/css/style.css CHANGED
@@ -65,6 +65,23 @@ body {
65
  font-size: 1.2rem;
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  .navbar-links {
69
  display: flex;
70
  gap: 2.5rem;
@@ -422,23 +439,488 @@ body {
422
  100% { transform: rotate(360deg); }
423
  }
424
 
425
- /* Responsive */
426
- @media (max-width: 1024px) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
  .cards-grid {
428
  grid-template-columns: 1fr;
 
 
 
 
 
 
 
 
 
429
  }
430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
431
  .content-grid {
432
  grid-template-columns: 1fr;
 
433
  }
434
 
435
- .hero-title, .hero-subtitle {
436
- font-size: 3rem;
437
  }
438
 
439
- .navbar-links {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
440
  gap: 1rem;
441
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
442
  }
443
 
444
  /* Comparison Page Styles */
 
65
  font-size: 1.2rem;
66
  }
67
 
68
+ /* Mobile Menu Toggle */
69
+ .mobile-menu-toggle {
70
+ display: none;
71
+ background: none;
72
+ border: none;
73
+ color: white;
74
+ font-size: 1.5rem;
75
+ cursor: pointer;
76
+ padding: 0.5rem;
77
+ border-radius: 4px;
78
+ transition: background-color 0.3s ease;
79
+ }
80
+
81
+ .mobile-menu-toggle:hover {
82
+ background: rgba(255, 255, 255, 0.1);
83
+ }
84
+
85
  .navbar-links {
86
  display: flex;
87
  gap: 2.5rem;
 
439
  100% { transform: rotate(360deg); }
440
  }
441
 
442
+ /* Responsive Design - Mobile First Approach */
443
+
444
+ /* Mobile Styles (320px - 768px) */
445
+ @media (max-width: 768px) {
446
+ /* Navigation */
447
+ .top-navbar {
448
+ padding: 1rem;
449
+ position: relative;
450
+ }
451
+
452
+ .mobile-menu-toggle {
453
+ display: block;
454
+ }
455
+
456
+ .navbar-links {
457
+ display: none;
458
+ position: absolute;
459
+ top: 100%;
460
+ left: 0;
461
+ right: 0;
462
+ background: var(--slate-blue);
463
+ flex-direction: column;
464
+ gap: 0;
465
+ padding: 1rem 0;
466
+ box-shadow: 0 4px 12px rgba(74, 74, 74, 0.2);
467
+ border-radius: 0 0 12px 12px;
468
+ }
469
+
470
+ .navbar-links.mobile-open {
471
+ display: flex;
472
+ }
473
+
474
+ .nav-item {
475
+ padding: 1rem 2rem;
476
+ width: 100%;
477
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
478
+ justify-content: flex-start;
479
+ }
480
+
481
+ .nav-item:last-child {
482
+ border-bottom: none;
483
+ }
484
+
485
+ .nav-item:hover {
486
+ background: rgba(255, 255, 255, 0.1);
487
+ }
488
+
489
+ /* Hero Section */
490
+ .hero-container {
491
+ padding: 3rem 1rem 2rem 1rem;
492
+ }
493
+
494
+ .hero-title, .hero-subtitle {
495
+ font-size: 2.5rem;
496
+ line-height: 1.2;
497
+ }
498
+
499
+ .hero-description {
500
+ font-size: 1rem;
501
+ padding: 0 1rem;
502
+ }
503
+
504
+ /* CTA Buttons */
505
+ .cta-container {
506
+ flex-direction: column;
507
+ align-items: center;
508
+ gap: 0.75rem;
509
+ margin: 2rem 0 3rem 0;
510
+ }
511
+
512
+ .btn-primary, .btn-secondary {
513
+ width: 100%;
514
+ max-width: 280px;
515
+ text-align: center;
516
+ padding: 1rem 1.5rem;
517
+ }
518
+
519
+ /* Model Cards */
520
+ .models-container {
521
+ padding: 0 1rem 3rem 1rem;
522
+ }
523
+
524
  .cards-grid {
525
  grid-template-columns: 1fr;
526
+ gap: 1.5rem;
527
+ }
528
+
529
+ .model-card {
530
+ padding: 2rem 1.5rem;
531
+ }
532
+
533
+ .model-name {
534
+ font-size: 1.4rem;
535
  }
536
 
537
+ /* Page Container */
538
+ .page-container {
539
+ padding: 2rem 1rem;
540
+ }
541
+
542
+ .page-title {
543
+ font-size: 2rem;
544
+ text-align: center;
545
+ }
546
+
547
+ .page-subtitle {
548
+ font-size: 1rem;
549
+ text-align: center;
550
+ margin-bottom: 2rem;
551
+ }
552
+
553
+ /* Content Grid */
554
  .content-grid {
555
  grid-template-columns: 1fr;
556
+ gap: 1.5rem;
557
  }
558
 
559
+ .input-section, .output-section {
560
+ padding: 1.5rem;
561
  }
562
 
563
+ .text-input, .output-text {
564
+ min-height: 200px;
565
+ font-size: 0.9rem;
566
+ }
567
+
568
+ /* Controls */
569
+ .controls-section {
570
+ flex-direction: column;
571
+ gap: 1rem;
572
+ align-items: stretch;
573
+ }
574
+
575
+ .model-select, .btn-generate {
576
+ width: 100%;
577
+ padding: 1rem;
578
+ font-size: 1rem;
579
+ }
580
+
581
+ /* Comparison Grid */
582
+ .comparison-grid {
583
+ grid-template-columns: 1fr;
584
+ gap: 1.5rem;
585
+ }
586
+
587
+ .comparison-header {
588
+ padding: 1rem;
589
+ }
590
+
591
+ .comparison-result {
592
+ padding: 1.5rem;
593
+ min-height: 200px;
594
+ }
595
+
596
+ .summary-metrics {
597
+ flex-direction: column;
598
  gap: 1rem;
599
  }
600
+
601
+ /* Evaluation Grid */
602
+ .evaluation-grid {
603
+ grid-template-columns: 1fr;
604
+ gap: 1.5rem;
605
+ }
606
+
607
+ .chart-section {
608
+ padding: 1.5rem;
609
+ }
610
+
611
+ /* Batch Processing */
612
+ .batch-controls {
613
+ flex-direction: column;
614
+ gap: 0.75rem;
615
+ }
616
+
617
+ .batch-table-container {
618
+ overflow-x: auto;
619
+ }
620
+
621
+ .batch-table {
622
+ min-width: 600px;
623
+ font-size: 0.8rem;
624
+ }
625
+
626
+ .batch-table th,
627
+ .batch-table td {
628
+ padding: 0.75rem 0.5rem;
629
+ }
630
+
631
+ .source-preview {
632
+ max-width: 150px;
633
+ }
634
+
635
+ .model-badges {
636
+ flex-direction: column;
637
+ gap: 0.25rem;
638
+ }
639
+
640
+ .action-buttons {
641
+ flex-direction: column;
642
+ gap: 0.25rem;
643
+ }
644
+
645
+ /* Footer */
646
+ .footer {
647
+ padding: 1.5rem 1rem;
648
+ flex-direction: column;
649
+ gap: 1rem;
650
+ text-align: center;
651
+ }
652
+
653
+ .footer-right {
654
+ gap: 1rem;
655
+ flex-wrap: wrap;
656
+ justify-content: center;
657
+ }
658
+
659
+ /* Input Tabs */
660
+ .input-tabs {
661
+ flex-wrap: wrap;
662
+ gap: 0.25rem;
663
+ }
664
+
665
+ .tab-btn {
666
+ flex: 1;
667
+ min-width: 120px;
668
+ text-align: center;
669
+ padding: 0.75rem 1rem;
670
+ font-size: 0.85rem;
671
+ }
672
+
673
+ /* Upload Area */
674
+ .upload-area {
675
+ padding: 2rem 1rem;
676
+ }
677
+
678
+ .upload-icon {
679
+ font-size: 2.5rem;
680
+ }
681
+
682
+ .file-info {
683
+ flex-direction: column;
684
+ gap: 1rem;
685
+ text-align: center;
686
+ }
687
+ }
688
+
689
+ /* Tablet Styles (769px - 1024px) */
690
+ @media (min-width: 769px) and (max-width: 1024px) {
691
+ /* Navigation */
692
+ .top-navbar {
693
+ padding: 1rem 2rem;
694
+ }
695
+
696
+ .navbar-links {
697
+ gap: 1.5rem;
698
+ }
699
+
700
+ /* Hero Section */
701
+ .hero-container {
702
+ padding: 4rem 2rem 3rem 2rem;
703
+ }
704
+
705
+ .hero-title, .hero-subtitle {
706
+ font-size: 3.5rem;
707
+ }
708
+
709
+ /* Model Cards */
710
+ .cards-grid {
711
+ grid-template-columns: repeat(2, 1fr);
712
+ gap: 1.5rem;
713
+ }
714
+
715
+ /* Content Grid */
716
+ .content-grid {
717
+ gap: 1.5rem;
718
+ }
719
+
720
+ /* Comparison Grid */
721
+ .comparison-grid {
722
+ grid-template-columns: repeat(2, 1fr);
723
+ gap: 1.5rem;
724
+ }
725
+
726
+ /* Evaluation Grid */
727
+ .evaluation-grid {
728
+ grid-template-columns: 1fr;
729
+ gap: 1.5rem;
730
+ }
731
+
732
+ /* Batch Table */
733
+ .batch-table {
734
+ font-size: 0.9rem;
735
+ }
736
+
737
+ .source-preview {
738
+ max-width: 300px;
739
+ }
740
+ }
741
+
742
+ /* Large Desktop Styles (1025px+) */
743
+ @media (min-width: 1025px) {
744
+ .cards-grid {
745
+ grid-template-columns: repeat(3, 1fr);
746
+ }
747
+
748
+ .comparison-grid {
749
+ grid-template-columns: repeat(3, 1fr);
750
+ }
751
+
752
+ .evaluation-grid {
753
+ grid-template-columns: 1fr 1fr;
754
+ }
755
+ }
756
+
757
+ /* Extra Small Mobile (320px - 480px) */
758
+ @media (max-width: 480px) {
759
+ .hero-title, .hero-subtitle {
760
+ font-size: 2rem;
761
+ }
762
+
763
+ .page-title {
764
+ font-size: 1.75rem;
765
+ }
766
+
767
+ .model-card {
768
+ padding: 1.5rem 1rem;
769
+ }
770
+
771
+ .input-section, .output-section {
772
+ padding: 1rem;
773
+ }
774
+
775
+ .text-input, .output-text {
776
+ min-height: 150px;
777
+ }
778
+
779
+ .comparison-result {
780
+ padding: 1rem;
781
+ min-height: 150px;
782
+ }
783
+
784
+ .chart-section {
785
+ padding: 1rem;
786
+ }
787
+
788
+ .batch-table {
789
+ font-size: 0.75rem;
790
+ }
791
+
792
+ .batch-table th,
793
+ .batch-table td {
794
+ padding: 0.5rem 0.25rem;
795
+ }
796
+ }
797
+
798
+ /* Landscape Mobile */
799
+ @media (max-width: 768px) and (orientation: landscape) {
800
+ .hero-container {
801
+ padding: 2rem 1rem;
802
+ }
803
+
804
+ .hero-title, .hero-subtitle {
805
+ font-size: 2.25rem;
806
+ }
807
+
808
+ .cta-container {
809
+ flex-direction: row;
810
+ justify-content: center;
811
+ margin: 1.5rem 0 2rem 0;
812
+ }
813
+
814
+ .btn-primary, .btn-secondary {
815
+ width: auto;
816
+ min-width: 140px;
817
+ }
818
+ }
819
+
820
+ /* High DPI Displays */
821
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
822
+ .logo-circle {
823
+ border: 0.5px solid rgba(255, 255, 255, 0.1);
824
+ }
825
+
826
+ .model-card {
827
+ border-width: 0.5px;
828
+ }
829
+
830
+ .input-section, .output-section {
831
+ border-width: 0.5px;
832
+ }
833
+ }
834
+
835
+ /* Touch Device Optimizations */
836
+ @media (hover: none) and (pointer: coarse) {
837
+ .btn-primary, .btn-secondary, .btn-generate {
838
+ min-height: 44px;
839
+ padding: 1rem 1.5rem;
840
+ }
841
+
842
+ .nav-item {
843
+ min-height: 44px;
844
+ display: flex;
845
+ align-items: center;
846
+ padding: 0.5rem;
847
+ }
848
+
849
+ .tab-btn {
850
+ min-height: 44px;
851
+ }
852
+
853
+ .model-select {
854
+ min-height: 44px;
855
+ }
856
+
857
+ .btn-icon {
858
+ min-height: 44px;
859
+ min-width: 44px;
860
+ }
861
+ }
862
+
863
+ /* Print Styles */
864
+ @media print {
865
+ .top-navbar,
866
+ .footer,
867
+ .controls-section,
868
+ .cta-container {
869
+ display: none;
870
+ }
871
+
872
+ .page-container {
873
+ max-width: none;
874
+ padding: 0;
875
+ }
876
+
877
+ .content-grid {
878
+ grid-template-columns: 1fr;
879
+ }
880
+
881
+ .model-card,
882
+ .input-section,
883
+ .output-section {
884
+ border: 1px solid #ccc;
885
+ break-inside: avoid;
886
+ }
887
+ }
888
+
889
+ /* Accessibility Improvements */
890
+ @media (prefers-reduced-motion: reduce) {
891
+ * {
892
+ animation-duration: 0.01ms !important;
893
+ animation-iteration-count: 1 !important;
894
+ transition-duration: 0.01ms !important;
895
+ }
896
+ }
897
+
898
+ @media (prefers-color-scheme: dark) {
899
+ /* Optional: Add dark mode support */
900
+ :root {
901
+ --charcoal: #e5e5e5;
902
+ --cool-gray: #6b7280;
903
+ --soft-ivory: #1f2937;
904
+ --slate-blue: #93c5fd;
905
+ --card-bg: #374151;
906
+ --white: #111827;
907
+ }
908
+
909
+ body {
910
+ background: var(--soft-ivory);
911
+ color: var(--charcoal);
912
+ }
913
+
914
+ .text-input, .output-text, .model-select {
915
+ background: #374151;
916
+ color: #e5e5e5;
917
+ border-color: #6b7280;
918
+ }
919
+
920
+ .input-section, .output-section, .model-card, .chart-section {
921
+ background: #374151;
922
+ border-color: #6b7280;
923
+ }
924
  }
925
 
926
  /* Comparison Page Styles */
webapp/static/js/mobile-menu.js ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Mobile Menu Functionality for Smart Summarizer
3
+ * Handles responsive navigation menu toggle
4
+ */
5
+
6
+ function toggleMobileMenu() {
7
+ const navbarLinks = document.getElementById('navbarLinks');
8
+ const menuToggle = document.querySelector('.mobile-menu-toggle i');
9
+
10
+ if (!navbarLinks || !menuToggle) return;
11
+
12
+ navbarLinks.classList.toggle('mobile-open');
13
+
14
+ // Toggle hamburger/close icon
15
+ if (navbarLinks.classList.contains('mobile-open')) {
16
+ menuToggle.className = 'fas fa-times';
17
+ // Prevent body scroll when menu is open
18
+ document.body.style.overflow = 'hidden';
19
+ } else {
20
+ menuToggle.className = 'fas fa-bars';
21
+ document.body.style.overflow = '';
22
+ }
23
+ }
24
+
25
+ // Initialize mobile menu functionality when DOM is loaded
26
+ document.addEventListener('DOMContentLoaded', function() {
27
+ // Close mobile menu when clicking outside
28
+ document.addEventListener('click', function(event) {
29
+ const navbar = document.querySelector('.top-navbar');
30
+ const navbarLinks = document.getElementById('navbarLinks');
31
+ const menuToggle = document.querySelector('.mobile-menu-toggle');
32
+
33
+ if (!navbar || !navbarLinks || !menuToggle) return;
34
+
35
+ if (!navbar.contains(event.target) && navbarLinks.classList.contains('mobile-open')) {
36
+ navbarLinks.classList.remove('mobile-open');
37
+ menuToggle.querySelector('i').className = 'fas fa-bars';
38
+ document.body.style.overflow = '';
39
+ }
40
+ });
41
+
42
+ // Close mobile menu when window is resized to desktop
43
+ window.addEventListener('resize', function() {
44
+ const navbarLinks = document.getElementById('navbarLinks');
45
+ const menuToggle = document.querySelector('.mobile-menu-toggle i');
46
+
47
+ if (!navbarLinks || !menuToggle) return;
48
+
49
+ if (window.innerWidth > 768 && navbarLinks.classList.contains('mobile-open')) {
50
+ navbarLinks.classList.remove('mobile-open');
51
+ menuToggle.className = 'fas fa-bars';
52
+ document.body.style.overflow = '';
53
+ }
54
+ });
55
+
56
+ // Close mobile menu when clicking on nav items
57
+ const navItems = document.querySelectorAll('.nav-item');
58
+ navItems.forEach(item => {
59
+ item.addEventListener('click', function() {
60
+ const navbarLinks = document.getElementById('navbarLinks');
61
+ const menuToggle = document.querySelector('.mobile-menu-toggle i');
62
+
63
+ if (navbarLinks && menuToggle && navbarLinks.classList.contains('mobile-open')) {
64
+ navbarLinks.classList.remove('mobile-open');
65
+ menuToggle.className = 'fas fa-bars';
66
+ document.body.style.overflow = '';
67
+ }
68
+ });
69
+ });
70
+ });
71
+
72
+ // Touch gesture support for mobile menu
73
+ let touchStartX = 0;
74
+ let touchEndX = 0;
75
+
76
+ document.addEventListener('touchstart', function(event) {
77
+ touchStartX = event.changedTouches[0].screenX;
78
+ });
79
+
80
+ document.addEventListener('touchend', function(event) {
81
+ touchEndX = event.changedTouches[0].screenX;
82
+ handleSwipeGesture();
83
+ });
84
+
85
+ function handleSwipeGesture() {
86
+ const navbarLinks = document.getElementById('navbarLinks');
87
+ const menuToggle = document.querySelector('.mobile-menu-toggle i');
88
+
89
+ if (!navbarLinks || !menuToggle) return;
90
+
91
+ const swipeThreshold = 50;
92
+ const swipeDistance = touchEndX - touchStartX;
93
+
94
+ // Swipe right to open menu (only if menu is closed and swipe starts from left edge)
95
+ if (swipeDistance > swipeThreshold && touchStartX < 50 && !navbarLinks.classList.contains('mobile-open')) {
96
+ navbarLinks.classList.add('mobile-open');
97
+ menuToggle.className = 'fas fa-times';
98
+ document.body.style.overflow = 'hidden';
99
+ }
100
+
101
+ // Swipe left to close menu (only if menu is open)
102
+ if (swipeDistance < -swipeThreshold && navbarLinks.classList.contains('mobile-open')) {
103
+ navbarLinks.classList.remove('mobile-open');
104
+ menuToggle.className = 'fas fa-bars';
105
+ document.body.style.overflow = '';
106
+ }
107
+ }
108
+
109
+ // Keyboard accessibility
110
+ document.addEventListener('keydown', function(event) {
111
+ const navbarLinks = document.getElementById('navbarLinks');
112
+ const menuToggle = document.querySelector('.mobile-menu-toggle');
113
+
114
+ if (!navbarLinks || !menuToggle) return;
115
+
116
+ // Close menu with Escape key
117
+ if (event.key === 'Escape' && navbarLinks.classList.contains('mobile-open')) {
118
+ navbarLinks.classList.remove('mobile-open');
119
+ menuToggle.querySelector('i').className = 'fas fa-bars';
120
+ document.body.style.overflow = '';
121
+ menuToggle.focus(); // Return focus to menu button
122
+ }
123
+
124
+ // Toggle menu with Enter/Space when menu button is focused
125
+ if ((event.key === 'Enter' || event.key === ' ') && event.target === menuToggle) {
126
+ event.preventDefault();
127
+ toggleMobileMenu();
128
+ }
129
+ });
webapp/templates/batch.html CHANGED
@@ -14,7 +14,13 @@
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
- <div class="navbar-links">
 
 
 
 
 
 
18
  <a href="/" class="nav-item">
19
  <i class="fas fa-home"></i> Home
20
  </a>
@@ -32,6 +38,10 @@
32
  </a>
33
  </div>
34
  </nav>
 
 
 
 
35
 
36
  <!-- Page Content -->
37
  <div class="page-container">
@@ -90,5 +100,8 @@
90
  </footer>
91
 
92
  <script src="{{ url_for('static', filename='js/batch.js') }}"></script>
 
 
 
93
  </body>
94
  </html>
 
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
+
18
+ <!-- Mobile Menu Toggle -->
19
+ <button class="mobile-menu-toggle" onclick="toggleMobileMenu()">
20
+ <i class="fas fa-bars"></i>
21
+ </button>
22
+
23
+ <div class="navbar-links" id="navbarLinks">
24
  <a href="/" class="nav-item">
25
  <i class="fas fa-home"></i> Home
26
  </a>
 
38
  </a>
39
  </div>
40
  </nav>
41
+ <i class="fas fa-chart-bar"></i> Evaluation
42
+ </a>
43
+ </div>
44
+ </nav>
45
 
46
  <!-- Page Content -->
47
  <div class="page-container">
 
100
  </footer>
101
 
102
  <script src="{{ url_for('static', filename='js/batch.js') }}"></script>
103
+
104
+ <!-- Mobile Menu JavaScript -->
105
+ <script src="{{ url_for('static', filename='js/mobile-menu.js') }}"></script>
106
  </body>
107
  </html>
webapp/templates/comparison.html CHANGED
@@ -14,7 +14,13 @@
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
- <div class="navbar-links">
 
 
 
 
 
 
18
  <a href="/" class="nav-item">
19
  <i class="fas fa-home"></i> Home
20
  </a>
@@ -32,6 +38,10 @@
32
  </a>
33
  </div>
34
  </nav>
 
 
 
 
35
 
36
  <!-- Page Content -->
37
  <div class="page-container">
@@ -187,5 +197,8 @@
187
  }
188
  });
189
  </script>
 
 
 
190
  </body>
191
  </html>
 
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
+
18
+ <!-- Mobile Menu Toggle -->
19
+ <button class="mobile-menu-toggle" onclick="toggleMobileMenu()">
20
+ <i class="fas fa-bars"></i>
21
+ </button>
22
+
23
+ <div class="navbar-links" id="navbarLinks">
24
  <a href="/" class="nav-item">
25
  <i class="fas fa-home"></i> Home
26
  </a>
 
38
  </a>
39
  </div>
40
  </nav>
41
+ <i class="fas fa-chart-bar"></i> Evaluation
42
+ </a>
43
+ </div>
44
+ </nav>
45
 
46
  <!-- Page Content -->
47
  <div class="page-container">
 
197
  }
198
  });
199
  </script>
200
+
201
+ <!-- Mobile Menu JavaScript -->
202
+ <script src="{{ url_for('static', filename='js/mobile-menu.js') }}"></script>
203
  </body>
204
  </html>
webapp/templates/evaluation.html CHANGED
@@ -15,7 +15,13 @@
15
  <div class="logo-circle">S</div>
16
  <span>Smart Summarizer</span>
17
  </a>
18
- <div class="navbar-links">
 
 
 
 
 
 
19
  <a href="/" class="nav-item">
20
  <i class="fas fa-home"></i> Home
21
  </a>
@@ -33,6 +39,11 @@
33
  </a>
34
  </div>
35
  </nav>
 
 
 
 
 
36
 
37
  <!-- Page Content -->
38
  <div class="page-container">
@@ -100,5 +111,8 @@
100
  </footer>
101
 
102
  <script src="{{ url_for('static', filename='js/evaluation.js') }}"></script>
 
 
 
103
  </body>
104
  </html>
 
15
  <div class="logo-circle">S</div>
16
  <span>Smart Summarizer</span>
17
  </a>
18
+
19
+ <!-- Mobile Menu Toggle -->
20
+ <button class="mobile-menu-toggle" onclick="toggleMobileMenu()">
21
+ <i class="fas fa-bars"></i>
22
+ </button>
23
+
24
+ <div class="navbar-links" id="navbarLinks">
25
  <a href="/" class="nav-item">
26
  <i class="fas fa-home"></i> Home
27
  </a>
 
39
  </a>
40
  </div>
41
  </nav>
42
+ <a href="/evaluation" class="nav-item active">
43
+ <i class="fas fa-chart-bar"></i> Evaluation
44
+ </a>
45
+ </div>
46
+ </nav>
47
 
48
  <!-- Page Content -->
49
  <div class="page-container">
 
111
  </footer>
112
 
113
  <script src="{{ url_for('static', filename='js/evaluation.js') }}"></script>
114
+
115
+ <!-- Mobile Menu JavaScript -->
116
+ <script src="{{ url_for('static', filename='js/mobile-menu.js') }}"></script>
117
  </body>
118
  </html>
webapp/templates/home.html CHANGED
@@ -14,7 +14,13 @@
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
- <div class="navbar-links">
 
 
 
 
 
 
18
  <a href="/" class="nav-item active">
19
  <i class="fas fa-home"></i> Home
20
  </a>
@@ -93,5 +99,8 @@
93
  </a>
94
  </div>
95
  </footer>
 
 
 
96
  </body>
97
  </html>
 
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
+
18
+ <!-- Mobile Menu Toggle -->
19
+ <button class="mobile-menu-toggle" onclick="toggleMobileMenu()">
20
+ <i class="fas fa-bars"></i>
21
+ </button>
22
+
23
+ <div class="navbar-links" id="navbarLinks">
24
  <a href="/" class="nav-item active">
25
  <i class="fas fa-home"></i> Home
26
  </a>
 
99
  </a>
100
  </div>
101
  </footer>
102
+
103
+ <!-- Mobile Menu JavaScript -->
104
+ <script src="{{ url_for('static', filename='js/mobile-menu.js') }}"></script>
105
  </body>
106
  </html>
webapp/templates/single_summary.html CHANGED
@@ -14,7 +14,13 @@
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
- <div class="navbar-links">
 
 
 
 
 
 
18
  <a href="/" class="nav-item">
19
  <i class="fas fa-home"></i> Home
20
  </a>
@@ -32,6 +38,10 @@
32
  </a>
33
  </div>
34
  </nav>
 
 
 
 
35
 
36
  <!-- Page Content -->
37
  <div class="page-container">
@@ -283,5 +293,8 @@
283
  }
284
  });
285
  </script>
 
 
 
286
  </body>
287
  </html>
 
14
  <div class="logo-circle">S</div>
15
  <span>Smart Summarizer</span>
16
  </a>
17
+
18
+ <!-- Mobile Menu Toggle -->
19
+ <button class="mobile-menu-toggle" onclick="toggleMobileMenu()">
20
+ <i class="fas fa-bars"></i>
21
+ </button>
22
+
23
+ <div class="navbar-links" id="navbarLinks">
24
  <a href="/" class="nav-item">
25
  <i class="fas fa-home"></i> Home
26
  </a>
 
38
  </a>
39
  </div>
40
  </nav>
41
+ <i class="fas fa-chart-bar"></i> Evaluation
42
+ </a>
43
+ </div>
44
+ </nav>
45
 
46
  <!-- Page Content -->
47
  <div class="page-container">
 
293
  }
294
  });
295
  </script>
296
+
297
+ <!-- Mobile Menu JavaScript -->
298
+ <script src="{{ url_for('static', filename='js/mobile-menu.js') }}"></script>
299
  </body>
300
  </html>