zulfiqar001 commited on
Commit
1a0c316
·
verified ·
1 Parent(s): 84a03e0

Add 1 files

Browse files
Files changed (1) hide show
  1. index.html +733 -296
index.html CHANGED
@@ -532,7 +532,7 @@
532
 
533
  .calendar-day-header {
534
  text-align: center;
535
- font-weight: 600;
536
  padding: 10px;
537
  background-color: #f9f9f9;
538
  color: var(--primary);
@@ -817,308 +817,341 @@
817
  justify-content: center;
818
  gap: 15px;
819
  margin-bottom: 20px;
820
- }
821
-
822
- .social-btn {
823
- width: 40px;
824
- height: 40px;
825
- border-radius: 50%;
826
- display: flex;
827
- align-items: center;
828
- justify-content: center;
829
- color: white;
830
- cursor: pointer;
831
- }
832
-
833
- .social-btn.google {
834
- background-color: #DB4437;
835
- }
836
-
837
- .social-btn.facebook {
838
- background-color: #4267B2;
839
- }
840
-
841
- .divider {
842
- display: flex;
843
- align-items: center;
844
- margin: 20px 0;
845
- }
846
-
847
- .divider-line {
848
- flex-grow: 1;
849
- height: 1px;
850
- background-color: #eee;
851
- }
852
-
853
- .divider-text {
854
- padding: 0 10px;
855
- color: var(--gray);
856
- font-size: 14px;
857
- }
858
-
859
- .forgot-password {
860
- text-align: right;
861
- margin-bottom: 20px;
862
- }
863
-
864
- .forgot-password a {
865
- color: var(--secondary);
866
- font-size: 13px;
867
- text-decoration: none;
868
- }
869
-
870
- .login-footer {
871
- text-align: center;
872
- margin-top: 20px;
873
- font-size: 14px;
874
- color: var(--gray);
875
- }
876
-
877
- .login-footer a {
878
- color: var(--primary);
879
- text-decoration: none;
880
- font-weight: 500;
881
- }
882
-
883
- /* Modal */
884
- .modal {
885
- position: fixed;
886
- top: 0;
887
- left: 0;
888
- right: 0;
889
- bottom: 0;
890
- background-color: rgba(0, 0, 0, 0.5);
891
- display: flex;
892
- justify-content: center;
893
- align-items: center;
894
- z-index: 200;
895
- opacity: 0;
896
- visibility: hidden;
897
- transition: all 0.3s;
898
- }
899
-
900
- .modal.active {
901
- opacity: 1;
902
- visibility: visible;
903
- }
904
-
905
- .modal-content {
906
- background-color: white;
907
- border-radius: 10px;
908
- width: 90%;
909
- max-width: 500px;
910
- max-height: 90vh;
911
- overflow-y: auto;
912
- box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
913
- transform: translateY(20px);
914
- transition: transform 0.3s;
915
- }
916
-
917
- .modal.active .modal-content {
918
- transform: translateY(0);
919
- }
920
-
921
- .modal-header {
922
- display: flex;
923
- justify-content: space-between;
924
- align-items: center;
925
- padding: 20px;
926
- border-bottom: 1px solid #eee;
927
- }
928
-
929
- .modal-title {
930
- font-size: 18px;
931
- font-weight: 600;
932
- color: var(--primary);
933
- }
934
-
935
- .modal-close {
936
- background: none;
937
- border: none;
938
- font-size: 20px;
939
- cursor: pointer;
940
- color: var(--gray);
941
- }
942
-
943
- .modal-body {
944
- padding: 20px;
945
- }
946
-
947
- .modal-footer {
948
- padding: 20px;
949
- border-top: 1px solid #eee;
950
- display: flex;
951
- justify-content: flex-end;
952
- gap: 10px;
953
- }
954
-
955
- /* Date Picker */
956
- .date-range-picker {
957
- display: flex;
958
- gap: 10px;
959
- }
960
-
961
- .date-input {
962
- flex: 1;
963
- position: relative;
964
- }
965
-
966
- .date-input i {
967
- position: absolute;
968
- right: 10px;
969
- top: 50%;
970
- transform: translateY(-50%);
971
- color: var(--gray);
972
- }
973
-
974
- /* Guest Dashboard */
975
- .guest-dashboard {
976
- display: grid;
977
- grid-template-columns: 1fr;
978
- gap: 30px;
979
- }
980
-
981
- .guest-greeting {
982
- background: linear-gradient(135deg, var(--primary), var(--primary-light));
983
- color: white;
984
- padding: 30px;
985
- border-radius: 10px;
986
- margin-bottom: 30px;
987
- }
988
-
989
- .guest-greeting h2 {
990
- font-size: 24px;
991
- margin-bottom: 10px;
992
- }
993
-
994
- .guest-stats {
995
- display: grid;
996
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
997
- gap: 15px;
998
- }
999
-
1000
- .guest-stat {
1001
- background-color: rgba(255, 255, 255, 0.1);
1002
- padding: 15px;
1003
- border-radius: 5px;
1004
- text-align: center;
1005
- }
1006
-
1007
- .guest-stat-value {
1008
- font-size: 24px;
1009
- font-weight: 700;
1010
- margin-bottom: 5px;
1011
- }
1012
-
1013
- .guest-stat-label {
1014
- font-size: 12px;
1015
- opacity: 0.8;
1016
- }
1017
-
1018
- /* Room Availability */
1019
- .availability-container {
1020
- display: flex;
1021
- gap: 20px;
1022
- }
1023
-
1024
- .availability-filters {
1025
- width: 250px;
1026
- }
1027
-
1028
- .filter-card {
1029
- background-color: white;
1030
- border-radius: 10px;
1031
- padding: 20px;
1032
- margin-bottom: 20px;
1033
- }
1034
-
1035
- .filter-title {
1036
- font-weight: 600;
1037
- margin-bottom: 15px;
1038
- color: var(--primary);
1039
- }
1040
-
1041
- .checkbox-group {
1042
- margin-bottom: 15px;
1043
- }
1044
-
1045
- .checkbox-item {
1046
- margin-bottom: 10px;
1047
- display: flex;
1048
- align-items: center;
1049
- }
1050
-
1051
- .checkbox-item input {
1052
- margin-right: 10px;
1053
- }
1054
-
1055
- /* Responsive */
1056
- @media (max-width: 992px) {
1057
- .dashboard {
1058
- grid-template-columns: 1fr;
1059
  }
1060
- }
1061
 
1062
- @media (max-width: 768px) {
1063
- .navbar {
1064
- flex-direction: column;
1065
- gap: 15px;
 
 
 
 
 
1066
  }
1067
 
1068
- .nav-links {
1069
- justify-content: center;
1070
  }
1071
 
1072
- .user-menu {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1073
  justify-content: center;
 
 
 
 
 
1074
  }
1075
 
1076
- .stats-cards {
1077
- grid-template-columns: 1fr 1fr;
 
1078
  }
1079
 
1080
- .form-row {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1081
  grid-template-columns: 1fr;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1082
  }
1083
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1084
  .availability-container {
1085
- flex-direction: column;
 
1086
  }
1087
 
1088
  .availability-filters {
1089
- width: 100%;
1090
  }
1091
- }
1092
-
1093
- @media (max-width: 576px) {
1094
- .stats-cards {
1095
- grid-template-columns: 1fr;
 
1096
  }
1097
 
1098
- .date-range-picker {
1099
- flex-direction: column;
 
 
1100
  }
1101
- }
1102
-
1103
- /* Animation */
1104
- @keyframes fadeIn {
1105
- from {
1106
- opacity: 0;
1107
  }
1108
- to {
1109
- opacity: 1;
 
 
 
1110
  }
1111
- }
1112
-
1113
- .fade-in {
1114
- animation: fadeIn 0.5s ease-in-out;
1115
- }
1116
- </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1117
  </head>
1118
  <body>
1119
- <!-- Loading Screen (Would be shown while checking authentication) -->
1120
  <div id="loading-screen" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: white; display: flex; justify-content: center; align-items: center; z-index: 1000;">
1121
- <div class="loading-spinner" style="width: 50px; height: 50px; border: 5px solid #f3f3f3; border-top: 5px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite;"></div>
1122
  </div>
1123
 
1124
  <!-- Global Notification Container -->
@@ -1132,6 +1165,8 @@
1132
  <p class="login-subtitle">Hotel Management System</p>
1133
  </div>
1134
 
 
 
1135
  <form id="login-form">
1136
  <div class="form-group">
1137
  <label for="login-email" class="form-label">Email Address</label>
@@ -1147,7 +1182,7 @@
1147
  <a href="#" id="forgot-password-link">Forgot password?</a>
1148
  </div>
1149
 
1150
- <button type="submit" class="btn btn-primary" style="width: 100%;">Login</button>
1151
  </form>
1152
 
1153
  <div class="divider">
@@ -1165,13 +1200,99 @@
1165
  </div>
1166
  </div>
1167
 
1168
- <div class="login-footer">
1169
  Don't have an account? <a href="#" id="register-link">Register here</a>
1170
  </div>
 
 
 
 
1171
  </div>
1172
  </div>
1173
 
1174
- <!-- Main Application (Shown after login) -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1175
  <div id="app-container" style="display: none;">
1176
  <!-- Header -->
1177
  <header>
@@ -1183,8 +1304,9 @@
1183
  <a href="#" class="active" data-section="dashboard">Dashboard</a>
1184
  <a href="#" data-section="bookings">Bookings</a>
1185
  <a href="#" data-section="rooms">Rooms</a>
1186
- <a href="#" data-section="guests">Guests</a>
1187
- <a href="#" data-section="reports">Reports</a>
 
1188
  </div>
1189
 
1190
  <div class="user-menu">
@@ -1192,31 +1314,346 @@
1192
  <i class="fas fa-bell"></i>
1193
  <div class="badge">3</div>
1194
  </div>
1195
- <div class="avatar">AD</div>
1196
  </div>
1197
  </nav>
1198
  </div>
1199
  </header>
1200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1201
  <!-- Main Content -->
1202
  <main class="main">
1203
  <div class="container">
1204
- <!-- Dashboard Content -->
1205
- <div id="dashboard-section" class="dashboard-section" style="display: none;">
1206
  <div class="dashboard">
1207
  <div class="sidebar">
1208
- <h3 class="sidebar-title">Management</h3>
1209
- <ul class="sidebar-menu">
1210
- <li><a href="#" class="active" data-subsection="overview"><i class="fas fa-chart-line"></i> Overview</a></li>
1211
- <li><a href="#" data-subsection="bookings"><i class="fas fa-calendar-alt"></i> Bookings</a></li>
1212
- <li><a href="#" data-subsection="rooms"><i class="fas fa-bed"></i> Rooms</a></li>
1213
- <li><a href="#" data-subsection="staff"><i class="fas fa-users"></i> Staff</a></li>
1214
- <li><a href="#" data-subsection="inventory"><i class="fas fa-boxes"></i> Inventory</a></li>
1215
- <li><a href="#" data-subsection="reports"><i class="fas fa-chart-pie"></i> Reports</a></li>
1216
  </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1217
 
1218
- <h3 class="sidebar-title" style="margin-top: 30px;">Settings</h3>
1219
- <ul class="sidebar-menu">
1220
- <li><a href="#" data-subsection="settings"><i class="fas fa-cog"></i> System Settings</a></li>
1221
-
 
 
 
 
 
 
 
 
 
 
 
 
1222
  </html>
 
532
 
533
  .calendar-day-header {
534
  text-align: center;
535
+ font-weight: 6z00;
536
  padding: 10px;
537
  background-color: #f9f9f9;
538
  color: var(--primary);
 
817
  justify-content: center;
818
  gap: 15px;
819
  margin-bottom: 20px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
  }
 
821
 
822
+ .social-btn {
823
+ width: 40px;
824
+ height: 40px;
825
+ border-radius: 50%;
826
+ display: flex;
827
+ align-items: center;
828
+ justify-content: center;
829
+ color: white;
830
+ cursor: pointer;
831
  }
832
 
833
+ .social-btn.google {
834
+ background-color: #DB4437;
835
  }
836
 
837
+ .social-btn.facebook {
838
+ background-color: #4267B2;
839
+ }
840
+
841
+ .divider {
842
+ display: flex;
843
+ align-items: center;
844
+ margin: 20px 0;
845
+ }
846
+
847
+ .divider-line {
848
+ flex-grow: 1;
849
+ height: 1px;
850
+ background-color: #eee;
851
+ }
852
+
853
+ .divider-text {
854
+ padding: 0 10px;
855
+ color: var(--gray);
856
+ font-size: 14px;
857
+ }
858
+
859
+ .forgot-password {
860
+ text-align: right;
861
+ margin-bottom: 20px;
862
+ }
863
+
864
+ .forgot-password a {
865
+ color: var(--secondary);
866
+ font-size: 13px;
867
+ text-decoration: none;
868
+ }
869
+
870
+ .login-footer {
871
+ text-align: center;
872
+ margin-top: 20px;
873
+ font-size: 14px;
874
+ color: var(--gray);
875
+ }
876
+
877
+ .login-footer a {
878
+ color: var(--primary);
879
+ text-decoration: none;
880
+ font-weight: 500;
881
+ }
882
+
883
+ /* Modal */
884
+ .modal {
885
+ position: fixed;
886
+ top: 0;
887
+ left: 0;
888
+ right: 0;
889
+ bottom: 0;
890
+ background-color: rgba(0, 0, 0, 0.5);
891
+ display: flex;
892
  justify-content: center;
893
+ align-items: center;
894
+ z-index: 200;
895
+ opacity: 0;
896
+ visibility: hidden;
897
+ transition: all 0.3s;
898
  }
899
 
900
+ .modal.active {
901
+ opacity: 1;
902
+ visibility: visible;
903
  }
904
 
905
+ .modal-content {
906
+ background-color: white;
907
+ border-radius: 10px;
908
+ width: 90%;
909
+ max-width: 500px;
910
+ max-height: 90vh;
911
+ overflow-y: auto;
912
+ box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
913
+ transform: translateY(20px);
914
+ transition: transform 0.3s;
915
+ }
916
+
917
+ .modal.active .modal-content {
918
+ transform: translateY(0);
919
+ }
920
+
921
+ .modal-header {
922
+ display: flex;
923
+ justify-content: space-between;
924
+ align-items: center;
925
+ padding: 20px;
926
+ border-bottom: 1px solid #eee;
927
+ position: sticky;
928
+ top: 0;
929
+ background-color: white;
930
+ }
931
+
932
+ .modal-title {
933
+ font-size: 18px;
934
+ font-weight: 600;
935
+ color: var(--primary);
936
+ }
937
+
938
+ .modal-close {
939
+ background: none;
940
+ border: none;
941
+ font-size: 20px;
942
+ cursor: pointer;
943
+ color: var(--gray);
944
+ }
945
+
946
+ .modal-body {
947
+ padding: 20px;
948
+ }
949
+
950
+ .modal-footer {
951
+ padding: 20px;
952
+ border-top: 1px solid #eee;
953
+ display: flex;
954
+ justify-content: flex-end;
955
+ gap: 10px;
956
+ position: sticky;
957
+ bottom: 0;
958
+ background-color: white;
959
+ }
960
+
961
+ /* Date Picker */
962
+ .date-range-picker {
963
+ display: flex;
964
+ gap: 10px;
965
+ }
966
+
967
+ .date-input {
968
+ flex: 1;
969
+ position: relative;
970
+ }
971
+
972
+ .date-input i {
973
+ position: absolute;
974
+ right: 10px;
975
+ top: 50%;
976
+ transform: translateY(-50%);
977
+ color: var(--gray);
978
+ }
979
+
980
+ /* Guest Dashboard */
981
+ .guest-dashboard {
982
+ display: grid;
983
  grid-template-columns: 1fr;
984
+ gap: 30px;
985
+ }
986
+
987
+ .guest-greeting {
988
+ background: linear-gradient(135deg, var(--primary), var(--primary-light));
989
+ color: white;
990
+ padding: 30px;
991
+ border-radius: 10px;
992
+ margin-bottom: 30px;
993
+ }
994
+
995
+ .guest-greeting h2 {
996
+ font-size: 24px;
997
+ margin-bottom: 10px;
998
  }
999
 
1000
+ .guest-stats {
1001
+ display: grid;
1002
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
1003
+ gap: 15px;
1004
+ }
1005
+
1006
+ .guest-stat {
1007
+ background-color: rgba(255, 255, 255, 0.1);
1008
+ padding: 15px;
1009
+ border-radius: 5px;
1010
+ text-align: center;
1011
+ }
1012
+
1013
+ .guest-stat-value {
1014
+ font-size: 24px;
1015
+ font-weight: 700;
1016
+ margin-bottom: 5px;
1017
+ }
1018
+
1019
+ .guest-stat-label {
1020
+ font-size: 12px;
1021
+ opacity: 0.8;
1022
+ }
1023
+
1024
+ /* Room Availability */
1025
  .availability-container {
1026
+ display: flex;
1027
+ gap: 20px;
1028
  }
1029
 
1030
  .availability-filters {
1031
+ width: 250px;
1032
  }
1033
+
1034
+ .filter-card {
1035
+ background-color: white;
1036
+ border-radius: 10px;
1037
+ padding: 20px;
1038
+ margin-bottom: 20px;
1039
  }
1040
 
1041
+ .filter-title {
1042
+ font-weight: 600;
1043
+ margin-bottom: 15px;
1044
+ color: var(--primary);
1045
  }
1046
+
1047
+ .checkbox-group {
1048
+ margin-bottom: 15px;
 
 
 
1049
  }
1050
+
1051
+ .checkbox-item {
1052
+ margin-bottom: 10px;
1053
+ display: flex;
1054
+ align-items: center;
1055
  }
1056
+
1057
+ .checkbox-item input {
1058
+ margin-right: 10px;
1059
+ }
1060
+
1061
+ /* Responsive */
1062
+ @media (max-width: 992px) {
1063
+ .dashboard {
1064
+ grid-template-columns: 1fr;
1065
+ }
1066
+ }
1067
+
1068
+ @media (max-width: 768px) {
1069
+ .navbar {
1070
+ flex-direction: column;
1071
+ gap: 15px;
1072
+ }
1073
+
1074
+ .nav-links {
1075
+ justify-content: center;
1076
+ flex-wrap: wrap;
1077
+ }
1078
+
1079
+ .user-menu {
1080
+ justify-content: center;
1081
+ }
1082
+
1083
+ .stats-cards {
1084
+ grid-template-columns: 1fr 1fr;
1085
+ }
1086
+
1087
+ .form-row {
1088
+ grid-template-columns: 1fr;
1089
+ }
1090
+
1091
+ .availability-container {
1092
+ flex-direction: column;
1093
+ }
1094
+
1095
+ .availability-filters {
1096
+ width: 100%;
1097
+ }
1098
+
1099
+ .payment-methods {
1100
+ flex-direction: column;
1101
+ }
1102
+
1103
+ .rooms-grid {
1104
+ grid-template-columns: 1fr;
1105
+ }
1106
+ }
1107
+
1108
+ @media (max-width: 576px) {
1109
+ .stats-cards {
1110
+ grid-template-columns: 1fr;
1111
+ }
1112
+
1113
+ .date-range-picker {
1114
+ flex-direction: column;
1115
+ }
1116
+
1117
+ .invoice-header {
1118
+ flex-direction: column;
1119
+ gap: 20px;
1120
+ }
1121
+
1122
+ .invoice-row {
1123
+ grid-template-columns: 1fr;
1124
+ }
1125
+
1126
+ .modal-content {
1127
+ width: 95%;
1128
+ }
1129
+ }
1130
+
1131
+ /* Animation */
1132
+ @keyframes fadeIn {
1133
+ from {
1134
+ opacity: 0;
1135
+ }
1136
+ to {
1137
+ opacity: 1;
1138
+ }
1139
+ }
1140
+
1141
+ .fade-in {
1142
+ animation: fadeIn 0.5s ease-in-out;
1143
+ }
1144
+
1145
+ @keyframes spin {
1146
+ 0% { transform: rotate(0deg); }
1147
+ 100% { transform: rotate(360deg); }
1148
+ }
1149
+ </style>
1150
  </head>
1151
  <body>
1152
+ <!-- Loading Screen -->
1153
  <div id="loading-screen" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: white; display: flex; justify-content: center; align-items: center; z-index: 1000;">
1154
+ <div class="loading-spinner" style="width: 50px; height: 50px; border: 5px solid #f3f3f3; border-top: 5px solid var(--primary); border-radius: 50%; animation: spin 1s linear infinite;"></div>
1155
  </div>
1156
 
1157
  <!-- Global Notification Container -->
 
1165
  <p class="login-subtitle">Hotel Management System</p>
1166
  </div>
1167
 
1168
+ <div id="login-error" style="color: var(--danger); margin-bottom: 15px; display: none;"></div>
1169
+
1170
  <form id="login-form">
1171
  <div class="form-group">
1172
  <label for="login-email" class="form-label">Email Address</label>
 
1182
  <a href="#" id="forgot-password-link">Forgot password?</a>
1183
  </div>
1184
 
1185
+ <button type="submit" class="btn btn-primary" style="width: 100%; margin-bottom: 15px;">Login</button>
1186
  </form>
1187
 
1188
  <div class="divider">
 
1200
  </div>
1201
  </div>
1202
 
1203
+ <div id="switch-to-register" class="login-footer">
1204
  Don't have an account? <a href="#" id="register-link">Register here</a>
1205
  </div>
1206
+
1207
+ <div id="switch-to-login" class="login-footer" style="display: none;">
1208
+ Already have an account? <a href="#" id="login-link">Sign in</a>
1209
+ </div>
1210
  </div>
1211
  </div>
1212
 
1213
+ <!-- Registration Form (Hidden Initially) -->
1214
+ <div id="register-page" class="login-container" style="display: none;">
1215
+ <div class="login-card">
1216
+ <div class="login-header">
1217
+ <h1 class="login-title">Create Account</h1>
1218
+ <p class="login-subtitle">Join our hotel management system</p>
1219
+ </div>
1220
+
1221
+ <div id="register-error" style="color: var(--danger); margin-bottom: 15px; display: none;"></div>
1222
+
1223
+ <form id="register-form">
1224
+ <div class="form-row">
1225
+ <div class="form-group">
1226
+ <label for="register-firstname" class="form-label">First Name</label>
1227
+ <input type="text" id="register-firstname" class="form-control" placeholder="First name" required>
1228
+ </div>
1229
+
1230
+ <div class="form-group">
1231
+ <label for="register-lastname" class="form-label">Last Name</label>
1232
+ <input type="text" id="register-lastname" class="form-control" placeholder="Last name" required>
1233
+ </div>
1234
+ </div>
1235
+
1236
+ <div class="form-group">
1237
+ <label for="register-email" class="form-label">Email Address</label>
1238
+ <input type="email" id="register-email" class="form-control" placeholder="Email address" required>
1239
+ </div>
1240
+
1241
+ <div class="form-group">
1242
+ <label for="register-password" class="form-label">Password</label>
1243
+ <input type="password" id="register-password" class="form-control" placeholder="Create password" required>
1244
+ </div>
1245
+
1246
+ <div class="form-group">
1247
+ <label for="register-confirm" class="form-label">Confirm Password</label>
1248
+ <input type="password" id="register-confirm" class="form-control" placeholder="Confirm password" required>
1249
+ </div>
1250
+
1251
+ <div class="form-group">
1252
+ <label for="register-role" class="form-label">I am a</label>
1253
+ <select id="register-role" class="form-control" required>
1254
+ <option value="">Select role</option>
1255
+ <option value="guest">Guest</option>
1256
+ <option value="staff">Staff Member</option>
1257
+ </select>
1258
+ </div>
1259
+
1260
+ <button type="submit" class="btn btn-primary" style="width: 100%; margin-bottom: 15px;">Register</button>
1261
+ </form>
1262
+
1263
+ <div class="login-footer">
1264
+ Already have an account? <a href="#" id="back-to-login">Sign in</a>
1265
+ </div>
1266
+ </div>
1267
+ </div>
1268
+
1269
+ <!-- Password Reset Form (Hidden Initially) -->
1270
+ <div id="reset-password-page" class="login-container" style="display: none;">
1271
+ <div class="login-card">
1272
+ <div class="login-header">
1273
+ <h1 class="login-title">Reset Password</h1>
1274
+ <p class="login-subtitle">We'll send you a reset link</p>
1275
+ </div>
1276
+
1277
+ <div id="reset-error" style="color: var(--danger); margin-bottom: 15px; display: none;"></div>
1278
+ <div id="reset-success" style="color: var(--success); margin-bottom: 15px; display: none;"></div>
1279
+
1280
+ <form id="reset-password-form">
1281
+ <div class="form-group">
1282
+ <label for="reset-email" class="form-label">Email Address</label>
1283
+ <input type="email" id="reset-email" class="form-control" placeholder="Enter your email" required>
1284
+ </div>
1285
+
1286
+ <button type="submit" class="btn btn-primary" style="width: 100%; margin-bottom: 15px;">Send Reset Link</button>
1287
+ </form>
1288
+
1289
+ <div class="login-footer">
1290
+ Remember your password? <a href="#" id="back-to-login-from-reset">Sign in</a>
1291
+ </div>
1292
+ </div>
1293
+ </div>
1294
+
1295
+ <!-- Main Application (Hidden Initially) -->
1296
  <div id="app-container" style="display: none;">
1297
  <!-- Header -->
1298
  <header>
 
1304
  <a href="#" class="active" data-section="dashboard">Dashboard</a>
1305
  <a href="#" data-section="bookings">Bookings</a>
1306
  <a href="#" data-section="rooms">Rooms</a>
1307
+ <a href="#" data-section="guests" class="staff-only admin-only">Guests</a>
1308
+ <a href="#" data-section="reports" class="admin-only">Reports</a>
1309
+ <a href="#" data-section="staff" class="admin-only">Staff</a>
1310
  </div>
1311
 
1312
  <div class="user-menu">
 
1314
  <i class="fas fa-bell"></i>
1315
  <div class="badge">3</div>
1316
  </div>
1317
+ <div class="avatar" id="user-avatar">AD</div>
1318
  </div>
1319
  </nav>
1320
  </div>
1321
  </header>
1322
 
1323
+ <!-- User Dropdown (Hidden Initially) -->
1324
+ <div id="user-dropdown" style="display: none; position: absolute; right: 20px; top: 70px; background-color: white; border-radius: 5px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); z-index: 100; width: 200px; padding: 10px 0;">
1325
+ <div style="padding: 10px 15px; border-bottom: 1px solid #eee; font-weight: 500;" id="dropdown-user-name">Admin User</div>
1326
+ <div style="padding: 10px 15px; border-bottom: 1px solid #eee; font-size: 13px; color: var(--gray);" id="dropdown-user-email">[email protected]</div>
1327
+ <a href="#" style="display: block; padding: 10px 15px; color: var(--dark); text-decoration: none; transition: background-color 0.3s;" id="profile-link">My Profile</a>
1328
+ <a href="#" style="display: block; padding: 10px 15px; color: var(--dark); text-decoration: none; transition: background-color 0.3s;" id="settings-link">Settings</a>
1329
+ <a href="#" style="display: block; padding: 10px 15px; color: var(--danger); text-decoration: none; transition: background-color 0.3s;" id="logout-link">Logout</a>
1330
+ </div>
1331
+
1332
+ <!-- Notification Center (Hidden Initially) -->
1333
+ <div id="notification-center" style="display: none; position: absolute; right: 20px; top: 70px; background-color: white; border-radius: 5px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); z-index: 100; width: 350px; max-height: 400px; overflow-y: auto;">
1334
+ <div style="padding: 15px; border-bottom: 1px solid #eee; font-weight: 500; display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; background-color: white;">
1335
+ <span>Notifications</span>
1336
+ <span style="font-size: 12px; color: var(--gray); cursor: pointer;" id="mark-all-read">Mark all as read</span>
1337
+ </div>
1338
+ <div id="notification-list">
1339
+ <!-- Notifications will be added here dynamically -->
1340
+ </div>
1341
+ </div>
1342
+
1343
  <!-- Main Content -->
1344
  <main class="main">
1345
  <div class="container">
1346
+ <!-- Dashboard Section (Default View) -->
1347
+ <div id="dashboard-section" class="dashboard-section">
1348
  <div class="dashboard">
1349
  <div class="sidebar">
1350
+ <h3 class="sidebar-title" id="sidebar-title">Dashboard</h3>
1351
+ <ul class="sidebar-menu" id="dashboard-menu">
1352
+ <!-- Menu items will be loaded dynamically based on user role -->
 
 
 
 
 
1353
  </ul>
1354
+ </div>
1355
+
1356
+ <div class="dashboard-content">
1357
+ <div id="dashboard-overview">
1358
+ <div class="dashboard-header">
1359
+ <h2 class="dashboard-title" id="greeting-text">Welcome back, Admin</h2>
1360
+ <button class="btn btn-secondary" id="quick-booking-btn">
1361
+ <i class="fas fa-plus"></i> Quick Booking
1362
+ </button>
1363
+ </div>
1364
+
1365
+ <!-- Stats Cards for Dashboard Overview -->
1366
+ <div class="stats-cards">
1367
+ <div class="stat-card">
1368
+ <div class="stat-card-title">Current Occupancy</div>
1369
+ <div class="stat-card-value" id="occupancy-rate">75%</div>
1370
+ <div class="stat-card-change up">
1371
+ <i class="fas fa-arrow-up"></i> 5% from last week
1372
+ </div>
1373
+ </div>
1374
+
1375
+ <div class="stat-card success">
1376
+ <div class="stat-card-title">Available Rooms</div>
1377
+ <div class="stat-card-value" id="available-rooms">42</div>
1378
+ <div class="stat-card-change down">
1379
+ <i class="fas fa-arrow-down"></i> 8 from yesterday
1380
+ </div>
1381
+ </div>
1382
+
1383
+ <div class="stat-card warning" id="today-checkins-card">
1384
+ <div class="stat-card-title">Today's Check-ins</div>
1385
+ <div class="stat-card-value" id="today-checkins">12</div>
1386
+ <div class="stat-card-change up">
1387
+ <i class="fas fa-arrow-up"></i> 3 from estimated
1388
+ </div>
1389
+ </div>
1390
+
1391
+ <div class="stat-card danger" id="pending-payments-card">
1392
+ <div class="stat-card-title">Pending Payments</div>
1393
+ <div class="stat-card-value" id="pending-payments">5</div>
1394
+ <div class="stat-card-change down">
1395
+ <i class="fas fa-arrow-down"></i> 2 resolved today
1396
+ </div>
1397
+ </div>
1398
+ </div>
1399
+
1400
+ <!-- Recent Bookings Table -->
1401
+ <div class="dashboard-header" style="margin-top: 30px;">
1402
+ <h3 class="dashboard-title">Recent Bookings</h3>
1403
+ <a href="#" class="btn btn-outline" data-section="bookings">View All</a>
1404
+ </div>
1405
+
1406
+ <table class="data-table">
1407
+ <thead>
1408
+ <tr>
1409
+ <th>Booking ID</th>
1410
+ <th>Guest Name</th>
1411
+ <th>Room</th>
1412
+ <th>Dates</th>
1413
+ <th>Status</th>
1414
+ <th>Actions</th>
1415
+ </tr>
1416
+ </thead>
1417
+ <tbody id="recent-bookings-table">
1418
+ <!-- Recent bookings will be loaded here -->
1419
+ </tbody>
1420
+ </table>
1421
+
1422
+ <!-- Calendar for Current Month -->
1423
+ <div class="calendar">
1424
+ <div class="calendar-header">
1425
+ <h3 class="calendar-title" id="month-year-display">March 2023</h3>
1426
+ <div>
1427
+ <button class="btn btn-outline" id="prev-month">
1428
+ <i class="fas fa-chevron-left"></i>
1429
+ </button>
1430
+ <button class="btn btn-outline" id="next-month">
1431
+ <i class="fas fa-chevron-right"></i>
1432
+ </button>
1433
+ </div>
1434
+ </div>
1435
+
1436
+ <div class="calendar-grid" id="calendar-grid">
1437
+ <!-- Calendar days will be generated here -->
1438
+ </div>
1439
+ </div>
1440
+ </div>
1441
+
1442
+ <!-- Bookings Section (Hidden Initially) -->
1443
+ <div id="dashboard-bookings" style="display: none;">
1444
+ <div class="dashboard-header">
1445
+ <h2 class="dashboard-title">Manage Bookings</h2>
1446
+ <button class="btn btn-primary" id="new-booking-btn">
1447
+ <i class="fas fa-plus"></i> New Booking
1448
+ </button>
1449
+ </div>
1450
+
1451
+ <div class="booking-search">
1452
+ <div class="form-row">
1453
+ <div class="form-group">
1454
+ <label for="booking-search" class="form-label">Search Bookings</label>
1455
+ <input type="text" id="booking-search" class="form-control" placeholder="Search by guest name, room, ID...">
1456
+ </div>
1457
+ <div class="form-group">
1458
+ <label for="booking-status" class="form-label">Filter by Status</label>
1459
+ <select id="booking-status" class="form-control">
1460
+ <option value="">All Statuses</option>
1461
+ <option value="confirmed">Confirmed</option>
1462
+ <option value="pending">Pending Payment</option>
1463
+ <option value="cancelled">Cancelled</option>
1464
+ <option value="completed">Completed</option>
1465
+ </select>
1466
+ </div>
1467
+ </div>
1468
+ </div>
1469
+
1470
+ <table class="data-table">
1471
+ <thead>
1472
+ <tr>
1473
+ <th>Booking ID</th>
1474
+ <th>Guest</th>
1475
+ <th>Room</th>
1476
+ <th>Check-in</th>
1477
+ <th>Check-out</th>
1478
+ <th>Amount</th>
1479
+ <th>Status</th>
1480
+ <th>Actions</th>
1481
+ </tr>
1482
+ </thead>
1483
+ <tbody id="all-bookings-table">
1484
+ <!-- All bookings will be loaded here -->
1485
+ </tbody>
1486
+ </table>
1487
+ </div>
1488
+
1489
+ <!-- Rooms Section (Hidden Initially) -->
1490
+ <div id="dashboard-rooms" style="display: none;">
1491
+ <div class="dashboard-header">
1492
+ <h2 class="dashboard-title">Manage Rooms</h2>
1493
+ <button class="btn btn-primary" id="add-room-btn">
1494
+ <i class="fas fa-plus"></i> Add Room
1495
+ </button>
1496
+ </div>
1497
+
1498
+ <!-- Tabs for Room Types -->
1499
+ <div class="tabs">
1500
+ <div class="tab active" data-room-type="all">All Rooms</div>
1501
+ <div class="tab" data-room-type="standard">Standard</div>
1502
+ <div class="tab" data-room-type="deluxe">Deluxe</div>
1503
+ <div class="tab" data-room-type="suite">Suite</div>
1504
+ </div>
1505
+
1506
+ <!-- Rooms Grid View -->
1507
+ <div class="rooms-grid" id="rooms-grid-view" style="display: none;">
1508
+ <!-- Room cards will be loaded here -->
1509
+ </div>
1510
+
1511
+ <!-- Rooms Table View -->
1512
+ <div class="rooms-table-view" id="rooms-table-view">
1513
+ <table class="data-table">
1514
+ <thead>
1515
+ <tr>
1516
+ <th>Room #</th>
1517
+ <th>Type</th>
1518
+ <th>Capacity</th>
1519
+ <th>Price (Night)</th>
1520
+ <th>Status</th>
1521
+ <th>Actions</th>
1522
+ </tr>
1523
+ </thead>
1524
+ <tbody id="rooms-table">
1525
+ <!-- Rooms will be loaded here -->
1526
+ </tbody>
1527
+ </table>
1528
+ </div>
1529
+ </div>
1530
+
1531
+ <!-- Guests Section (Hidden Initially) -->
1532
+ <div id="dashboard-guests" style="display: none;">
1533
+ <div class="dashboard-header">
1534
+ <h2 class="dashboard-title">Guest Management</h2>
1535
+ <button class="btn btn-outline" id="export-guests-btn">
1536
+ <i class="fas fa-download"></i> Export Data
1537
+ </button>
1538
+ </div>
1539
+
1540
+ <div class="form-row">
1541
+ <div class="form-group">
1542
+ <label for="guest-search" class="form-label">Search Guests</label>
1543
+ <input type="text" id="guest-search" class="form-control" placeholder="Search by name, email...">
1544
+ </div>
1545
+ <div class="form-group">
1546
+ <label for="guest-filter" class="form-label">Filter by</label>
1547
+ <select id="guest-filter" class="form-control">
1548
+ <option value="">All Guests</option>
1549
+ <option value="current">Current Guests</option>
1550
+ <option value="loyal">Loyalty Members</option>
1551
+ </select>
1552
+ </div>
1553
+ </div>
1554
+
1555
+ <table class="data-table">
1556
+ <thead>
1557
+ <tr>
1558
+ <th>Name</th>
1559
+ <th>Email</th>
1560
+ <th>Phone</th>
1561
+ <th>Bookings</th>
1562
+ <th>Last Stay</th>
1563
+ <th>Actions</th>
1564
+ </tr>
1565
+ </thead>
1566
+ <tbody id="guests-table">
1567
+ <!-- Guests will be loaded here -->
1568
+ </tbody>
1569
+ </table>
1570
+ </div>
1571
+
1572
+ <!-- Reports Section (Hidden Initially) -->
1573
+ <div id="dashboard-reports" style="display: none;">
1574
+ <div class="dashboard-header">
1575
+ <h2 class="dashboard-title">Reports & Analytics</h2>
1576
+ <div>
1577
+ <select id="report-period" class="form-control" style="display: inline-block; width: auto;">
1578
+ <option value="week">This Week</option>
1579
+ <option value="month" selected>This Month</option>
1580
+ <option value="quarter">This Quarter</option>
1581
+ <option value="year">This Year</option>
1582
+ </select>
1583
+ </div>
1584
+ </div>
1585
+
1586
+ <div class="stats-cards">
1587
+ <div class="stat-card">
1588
+ <div class="stat-card-title">Total Revenue</div>
1589
+ <div class="stat-card-value" id="total-revenue">$42,850</div>
1590
+ <div class="stat-card-change up">
1591
+ <i class="fas fa-arrow-up"></i> 12% from last period
1592
+ </div>
1593
+ </div>
1594
+
1595
+ <div class="stat-card success">
1596
+ <div class="stat-card-title">Occupancy Rate</div>
1597
+ <div class="stat-card-value" id="period-occupancy">78%</div>
1598
+ <div class="stat-card-change up">
1599
+ <i class="fas fa-arrow-up"></i> 4% from last period
1600
+ </div>
1601
+ </div>
1602
+
1603
+ <div class="stat-card warning">
1604
+ <div class="stat-card-title">Average Daily Rate</div>
1605
+ <div class="stat-card-value" id="average-rate">$120</div>
1606
+ <div class="stat-card-change down">
1607
+ <i class="fas fa-arrow-down"></i> 2.5% from last period
1608
+ </div>
1609
+ </div>
1610
+ </div>
1611
+
1612
+ <div class="form-row" style="margin-top: 30px;">
1613
+ <div class="form-group">
1614
+ <label for="report-type" class="form-label">Report Type</label>
1615
+ <select id="report-type" class="form-control">
1616
+ <option value="revenue">Revenue</option>
1617
+ <option value="occupancy">Occupancy</option>
1618
+ <option value="guests">Guest Demographics</option>
1619
+ <option value="rooms">Room Performance</option>
1620
+ </select>
1621
+ </div>
1622
+ <div class="form-group">
1623
+ <label for="export-format" class="form-label">Export As</label>
1624
+ <select id="export-format" class="form-control">
1625
+ <option value="">Select format</option>
1626
+ <option value="pdf">PDF</option>
1627
+ <option value="csv">CSV</option>
1628
+ <option value="excel">Excel</option>
1629
+ </select>
1630
+ </div>
1631
+ </div>
1632
+
1633
+ <div id="report-content" style="margin-top: 30px;">
1634
+ <!-- Report visualization will be displayed here -->
1635
+ <div style="background-color: #f9f9f9; border-radius: 8px; padding: 30px; text-align: center; color: var(--gray);">
1636
+ <i class="fas fa-chart-bar" style="font-size: 50px; margin-bottom: 15px; color: var(--primary-light);"></i>
1637
+ <h3 style="margin-bottom: 10px;">Revenue Report - March 2023</h3>
1638
+ <p>Select filters above to generate detailed reports</p>
1639
+ </div>
1640
+ </div>
1641
+ </div>
1642
 
1643
+ <!-- Staff Section (Hidden Initially) -->
1644
+ <div id="dashboard-staff" style="display: none;">
1645
+ <div class="dashboard-header">
1646
+ <h2 class="dashboard-title">Staff Management</h2>
1647
+ <button class="btn btn-primary" id="add-staff-btn">
1648
+ <i class="fas fa-plus"></i> Add Staff
1649
+ </button>
1650
+ </div>
1651
+
1652
+ <div class="form-row">
1653
+ <div class="form-group">
1654
+ <label for="staff-search" class="form-label">Search Staff</label>
1655
+ <input type="text" id="staff-search" class="form-control" placeholder="Search by name, role...">
1656
+ </div>
1657
+ <div class="form-group">
1658
+ <label for="staff-department"
1659
  </html>