+ const copyToClipboard = () => {
+ navigator.clipboard.writeText(meetingDetails.join_url);
+ alert('Link copied to clipboard!');
+ };
- {meetingDetails && (
-
-
Meeting ID: {meetingDetails.id}
-
- Join URL:{" "}
-
- {meetingDetails.join_url}
-
-
+ return (
+
+ {/* Header Bar */}
+
+
+ Somaiya Scheduler
+
+
+
+ {/* Navigation Bar */}
+
+
+ {/* Main Content */}
+
+
+
+
Generate Zoom Meeting
+
Create an instant Zoom meeting link to share with participants
+
+
+
+ {meetingDetails && (
+
+
+ ✓ Meeting Created Successfully!
+
+
+ Meeting ID
+ {meetingDetails.id}
+
+
+
+
+ )}
- )}
+
+
+ ← Back to Dashboard
+
+
);
};
diff --git a/frontend/src/Page4.css b/frontend/src/Page4.css
index 9ef79ae..3084577 100644
--- a/frontend/src/Page4.css
+++ b/frontend/src/Page4.css
@@ -1,137 +1,330 @@
-/*Page4.css*/
+/*Page4.css - Schedule Meeting Form*/
/* Container for the content area */
.content-area {
- width: 100%;
- max-width: 800px;
- margin: 0 auto;
- padding: 20px;
- background-color: #fff;
- border-radius: 10px;
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
- font-family: Arial, sans-serif;
+ width: 100%;
+ max-width: 900px;
+ margin: 40px auto;
+ padding: 40px;
+ background-color: var(--white);
+ border-radius: var(--border-radius-lg);
+ box-shadow: var(--shadow-lg);
+ font-family: var(--font-primary);
+}
+
+/* Heading Style */
+.content-area h1 {
+ font-size: 28px;
+ font-weight: 700;
+ color: var(--primary-red);
+ margin-bottom: 30px;
+ text-align: center;
+ position: relative;
+ padding-bottom: 15px;
+}
+
+.content-area h1::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 60px;
+ height: 4px;
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ border-radius: 2px;
+}
+
+/* Form Section */
+.form-section {
+ margin-bottom: 30px;
+ padding-bottom: 25px;
+ border-bottom: 1px solid var(--medium-gray);
+}
+
+.form-section:last-of-type {
+ border-bottom: none;
+ margin-bottom: 0;
+}
+
+.form-section h3 {
+ color: var(--primary-red);
+ font-size: 18px;
+ font-weight: 600;
+ margin-bottom: 20px;
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+/* Label Styling */
+.content-area label {
+ font-size: 15px;
+ font-weight: 600;
+ color: var(--darker-gray);
+ margin-bottom: 8px;
+ display: block;
+}
+
+/* Input Fields and Select Styling */
+.content-area input[type="text"],
+.content-area input[type="email"],
+.content-area input[type="date"],
+.content-area input[type="time"],
+.content-area select,
+.content-area textarea {
+ width: 100%;
+ padding: 14px 18px;
+ margin-top: 6px;
+ margin-bottom: 20px;
+ border: 2px solid var(--medium-gray);
+ border-radius: var(--border-radius);
+ font-size: 15px;
+ color: var(--black);
+ background-color: var(--off-white);
+ transition: var(--transition);
+}
+
+.content-area input:focus,
+.content-area select:focus,
+.content-area textarea:focus {
+ border-color: var(--primary-red);
+ background-color: var(--white);
+ box-shadow: 0 0 0 4px rgba(183, 32, 46, 0.1);
+}
+
+.content-area input::placeholder,
+.content-area textarea::placeholder {
+ color: var(--dark-gray);
+}
+
+/* Select Dropdown */
+.content-area select {
+ cursor: pointer;
+ appearance: none;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23757575' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: right 16px center;
+ padding-right: 45px;
+}
+
+/* Textarea Specific Styling */
+.content-area textarea {
+ min-height: 140px;
+ resize: vertical;
+ line-height: 1.6;
+}
+
+/* Row Layout for Date/Time */
+.form-row {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 20px;
+}
+
+.form-row .form-group {
+ margin-bottom: 0;
+}
+
+/* Agenda and Recipients Section Styling */
+.content-area .agenda-item,
+.content-area .recipient-item {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ margin-bottom: 12px;
+ animation: fadeIn 0.3s ease;
+}
+
+@keyframes fadeIn {
+ from { opacity: 0; transform: translateY(-10px); }
+ to { opacity: 1; transform: translateY(0); }
+}
+
+.content-area .agenda-item input,
+.content-area .recipient-item input {
+ flex: 1;
+ margin-bottom: 0;
+}
+
+/* Remove Button for Items */
+.content-area .remove-btn,
+.content-area .FaTimes {
+ color: var(--white);
+ background-color: #dc3545;
+ border: none;
+ width: 36px;
+ height: 36px;
+ border-radius: 50%;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: var(--transition);
+ flex-shrink: 0;
+}
+
+.content-area .remove-btn:hover,
+.content-area .FaTimes:hover {
+ background-color: #c82333;
+ transform: scale(1.1);
+}
+
+/* Primary Button Styling */
+.content-area button {
+ padding: 14px 28px;
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ color: var(--white);
+ font-size: 15px;
+ font-weight: 600;
+ border: none;
+ border-radius: var(--border-radius);
+ cursor: pointer;
+ transition: var(--transition);
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+}
+
+.content-area button:hover {
+ background: linear-gradient(135deg, var(--dark-red), #6d1219);
+ transform: translateY(-2px);
+ box-shadow: 0 6px 20px rgba(183, 32, 46, 0.35);
+}
+
+.content-area button:active {
+ transform: translateY(0);
+}
+
+/* Secondary/Add Button */
+.content-area .add-btn,
+.content-area button.secondary {
+ background: var(--light-gray);
+ color: var(--darker-gray);
+ padding: 12px 20px;
+ font-size: 14px;
+ margin-bottom: 20px;
+}
+
+.content-area .add-btn:hover,
+.content-area button.secondary:hover {
+ background: var(--medium-gray);
+ color: var(--black);
+ box-shadow: none;
+}
+
+/* Submit Button Full Width */
+.content-area button[type="submit"],
+.content-area .submit-btn {
+ width: 100%;
+ padding: 16px;
+ font-size: 16px;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ margin-top: 20px;
+}
+
+/* Attachments Input Styling */
+.content-area input[type="file"] {
+ padding: 12px;
+ margin-top: 6px;
+ margin-bottom: 20px;
+ border: 2px dashed var(--medium-gray);
+ border-radius: var(--border-radius);
+ background-color: var(--off-white);
+ cursor: pointer;
+ transition: var(--transition);
+}
+
+.content-area input[type="file"]:hover {
+ border-color: var(--primary-red);
+ background-color: rgba(183, 32, 46, 0.05);
+}
+
+/* Button Group */
+.button-group {
+ display: flex;
+ gap: 15px;
+ flex-wrap: wrap;
+ margin-top: 30px;
+}
+
+.button-group button {
+ flex: 1;
+ min-width: 150px;
+}
+
+/* Success/Error Messages */
+.message {
+ padding: 14px 20px;
+ border-radius: var(--border-radius);
+ margin-bottom: 20px;
+ font-weight: 500;
+}
+
+.message.success {
+ background-color: #d4edda;
+ color: #155724;
+ border-left: 4px solid #28a745;
+}
+
+.message.error {
+ background-color: #f8d7da;
+ color: #721c24;
+ border-left: 4px solid #dc3545;
+}
+
+/* Responsiveness */
+@media (max-width: 768px) {
+ .content-area {
+ margin: 20px;
+ padding: 30px 25px;
}
-
- /* Heading Style */
+
.content-area h1 {
- font-size: 30px;
- font-weight: 600;
- color: #B7202E;
- margin-bottom: 20px;
- text-align: center;
+ font-size: 24px;
}
-
- /* Label Styling */
- .content-area label {
- font-size: 16px;
- font-weight: 500;
- color: #333;
- margin-top: 10px;
- display: block;
+
+ .form-row {
+ grid-template-columns: 1fr;
}
-
- /* Input Fields and Select Styling */
- .content-area input[type="text"],
- .content-area input[type="email"],
- .content-area input[type="date"],
- .content-area input[type="time"],
+
+ .content-area input,
.content-area select,
.content-area textarea {
- width: 100%;
- padding: 12px;
- margin-top: 8px;
- margin-bottom: 12px;
- border: 1px solid #ccc;
- border-radius: 5px;
- font-size: 16px;
- box-sizing: border-box;
- outline: none;
- transition: border-color 0.3s ease;
+ font-size: 16px; /* Prevents zoom on iOS */
}
-
- /* Focus effect for input fields */
- .content-area input:focus,
- .content-area select:focus,
- .content-area textarea:focus {
- border-color: #B7202E;
+
+ .content-area button {
+ font-size: 14px;
+ padding: 12px 20px;
}
-
- /* Textarea Specific Styling */
- .content-area textarea {
- height: 150px;
- resize: vertical;
+}
+
+@media (max-width: 480px) {
+ .content-area {
+ margin: 15px;
+ padding: 25px 20px;
}
-
- /* Agenda and Recipients Section Styling */
+
.content-area .agenda-item,
.content-area .recipient-item {
- display: flex;
- align-items: center;
- margin-top: 10px;
+ flex-direction: column;
+ align-items: stretch;
}
-
- .content-area .agenda-item input,
- .content-area .recipient-item input {
- flex: 1;
- margin-right: 10px;
- }
-
- .content-area button {
+
+ .content-area .remove-btn {
width: 100%;
- padding: 12px;
- background-color: #B7202E;
- color: white;
- font-size: 16px;
- border: none;
- border-radius: 5px;
- cursor: pointer;
- transition: background-color 0.3s ease;
- margin-bottom: 10px;
+ border-radius: var(--border-radius);
}
-
- .content-area button:hover {
- background-color: #B7202E;
+
+ .button-group {
+ flex-direction: column;
}
-
- /* Remove Button Styling for Agenda & Recipients */
- .content-area .FaTimes {
- color: red;
- cursor: pointer;
- margin-left: 10px;
- }
-
- /* Attachments Input Styling */
- .content-area input[type="file"] {
- padding: 8px;
- margin-top: 8px;
- margin-bottom: 12px;
- }
-
- /* Margin for buttons */
- .content-area button:not(:last-child) {
- margin-bottom: 10px;
- }
-
- /* Responsiveness */
- @media (max-width: 768px) {
- .content-area {
- padding: 15px;
- }
-
- .content-area h1 {
- font-size: 24px;
- }
-
- .content-area label,
- .content-area input,
- .content-area select,
- .content-area textarea {
- font-size: 14px;
- }
-
- .content-area button {
- font-size: 14px;
- padding: 10px;
- }
+
+ .button-group button {
+ width: 100%;
}
+}
\ No newline at end of file
diff --git a/frontend/src/Page5.css b/frontend/src/Page5.css
index 535f61d..9791056 100644
--- a/frontend/src/Page5.css
+++ b/frontend/src/Page5.css
@@ -1,33 +1,19 @@
-/*Page5.css*/
-
-/* Base Styles */
-:root {
- --primary-red: #B7202E;
- --dark-red: #8a0000;
- --light-red: #d32f2f;
- --white: #ffffff;
- --light-gray: #f5f5f5;
- --medium-gray: #e0e0e0;
- --dark-gray: #757575;
- --black: #212121;
- --shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- --transition: all 0.3s ease;
-}
+/*Page5.css - Meeting Database*/
/* Page Container */
.page-container {
display: flex;
flex-direction: column;
min-height: 100vh;
- background-color: #f4f4f4;
+ background-color: var(--off-white);
}
html, body {
margin: 0;
padding: 0;
- height: auto; /* Let height grow naturally */
- overflow-x: hidden; /* Hide only horizontal scroll */
- overflow-y: auto; /* Allow vertical scroll */
+ height: auto;
+ overflow-x: hidden;
+ overflow-y: auto;
}
/* Header Bar */
@@ -35,29 +21,35 @@ html, body {
display: flex;
justify-content: space-between;
align-items: center;
- padding: 15px 20px;
+ padding: 15px 40px;
background-color: var(--white);
- box-shadow: var(--shadow);
+ box-shadow: var(--shadow-sm);
position: sticky;
top: 0;
z-index: 100;
+ gap: 20px;
}
.leftlogo, .rightlogo {
- height: 50px;
+ height: 55px;
width: auto;
+ flex-shrink: 0;
}
.college-name {
color: var(--primary-red);
- font-size: 1.5rem;
+ font-size: clamp(18px, 3vw, 26px);
+ font-weight: 700;
margin: 0;
+ text-align: center;
+ letter-spacing: -0.5px;
}
/* Navigation Bar */
.navbar {
- background-color: var(--primary-red);
- padding: 0 20px;
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ padding: 0 40px;
+ box-shadow: var(--shadow-sm);
}
.navbar ul {
@@ -67,46 +59,84 @@ html, body {
display: flex;
justify-content: center;
flex-wrap: wrap;
+ gap: 5px;
}
.navbar li {
- padding: 15px 20px;
+ padding: 0;
}
.navbar a {
+ display: block;
color: var(--white);
text-decoration: none;
font-weight: 500;
+ padding: 16px 24px;
transition: var(--transition);
+ position: relative;
}
-.navbar a:hover, .navbar a.active {
- color: var(--white);
- text-decoration: underline;
- text-underline-offset: 5px;
+.navbar a::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ width: 0;
+ height: 3px;
+ background-color: var(--white);
+ transition: var(--transition);
+ transform: translateX(-50%);
+}
+
+.navbar a:hover::after,
+.navbar a.active::after {
+ width: calc(100% - 48px);
+}
+
+.navbar a:hover {
+ background-color: rgba(255, 255, 255, 0.1);
}
/* Main Content */
.meetings-page-container {
flex: 1;
- padding: 30px;
+ padding: 40px;
max-width: 1400px;
- margin: 40px auto 0 auto; /* 40px top margin to separate from navbar */
+ margin: 0 auto;
width: 100%;
}
.page-title {
text-align: center;
color: var(--primary-red);
- margin-bottom: 30px;
+ margin-bottom: 40px;
font-size: 2rem;
+ font-weight: 700;
+ position: relative;
+ padding-bottom: 15px;
+}
+
+.page-title::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 80px;
+ height: 4px;
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ border-radius: 2px;
}
.no-meetings {
text-align: center;
color: var(--dark-gray);
font-size: 1.2rem;
- margin-top: 40px;
+ margin-top: 60px;
+ padding: 40px;
+ background-color: var(--white);
+ border-radius: var(--border-radius-lg);
+ box-shadow: var(--shadow-sm);
}
/* Meetings Grid Container */
@@ -117,54 +147,63 @@ html, body {
.meetings-grid {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
- gap: 25px;
+ grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
+ gap: 30px;
padding: 10px;
}
+/* Soft Delete Button */
.soft-delete-button {
- background-color: #d9534f;
- color: white;
- padding: 8px 14px;
+ background: linear-gradient(135deg, #dc3545, #c82333);
+ color: var(--white);
+ padding: 10px 18px;
border: none;
- border-radius: 4px;
+ border-radius: var(--border-radius);
cursor: pointer;
- margin-top: 10px;
+ margin-top: 15px;
+ font-weight: 600;
+ font-size: 14px;
+ transition: var(--transition);
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
}
.soft-delete-button:hover {
- background-color: #c9302c;
+ background: linear-gradient(135deg, #c82333, #a71d2a);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(220, 53, 69, 0.4);
}
-
/* Meeting Cards */
.meeting-card {
background-color: var(--white);
- border-radius: 8px;
- box-shadow: var(--shadow);
- border-left: 4px solid var(--primary-red);
+ border-radius: var(--border-radius-lg);
+ box-shadow: var(--shadow-md);
+ border-left: 5px solid var(--primary-red);
overflow: hidden;
transition: var(--transition);
display: flex;
flex-direction: column;
- min-height: 150px;
+ min-height: 180px;
}
.meeting-card:hover {
- transform: translateY(-5px);
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
+ transform: translateY(-8px);
+ box-shadow: var(--shadow-hover);
}
.card-summary {
- padding: 20px;
+ padding: 25px;
cursor: pointer;
}
.meeting-title {
color: var(--black);
font-size: 1.2rem;
- margin: 0 0 10px 0;
- line-height: 1.3;
+ font-weight: 600;
+ margin: 0 0 12px 0;
+ line-height: 1.4;
}
.meeting-meta {
@@ -172,34 +211,54 @@ html, body {
justify-content: space-between;
color: var(--dark-gray);
font-size: 0.9rem;
- margin-bottom: 8px;
+ margin-bottom: 10px;
+ flex-wrap: wrap;
+ gap: 10px;
}
.meeting-department {
color: var(--primary-red);
- font-weight: 500;
+ font-weight: 600;
font-size: 0.9rem;
+ background-color: rgba(183, 32, 46, 0.1);
+ padding: 4px 12px;
+ border-radius: var(--border-radius-xl);
+ display: inline-block;
}
.card-details {
- padding: 20px;
+ padding: 25px;
background-color: var(--light-gray);
border-top: 1px solid var(--medium-gray);
flex: 1;
+ animation: slideDown 0.3s ease;
+}
+
+@keyframes slideDown {
+ from {
+ opacity: 0;
+ max-height: 0;
+ }
+ to {
+ opacity: 1;
+ max-height: 1000px;
+ }
}
.detail-row {
display: flex;
- margin-bottom: 10px;
- line-height: 1.4;
+ margin-bottom: 12px;
+ line-height: 1.5;
}
.detail-label {
font-weight: 600;
color: var(--primary-red);
- min-width: 100px;
+ min-width: 110px;
+ flex-shrink: 0;
}
+
.detail-section {
margin: 20px 0;
}
@@ -207,9 +266,10 @@ html, body {
.detail-section h3 {
color: var(--primary-red);
font-size: 1.1rem;
- margin-bottom: 10px;
- border-bottom: 1px solid var(--medium-gray);
- padding-bottom: 5px;
+ font-weight: 600;
+ margin-bottom: 12px;
+ border-bottom: 2px solid var(--medium-gray);
+ padding-bottom: 8px;
}
.agenda-list, .attachments-list {
@@ -218,107 +278,154 @@ html, body {
}
.agenda-list li, .attachments-list li {
- margin-bottom: 8px;
- line-height: 1.4;
+ margin-bottom: 10px;
+ line-height: 1.5;
+ color: var(--darker-gray);
}
.attachments-list a {
color: var(--primary-red);
text-decoration: none;
- transition: var(--transition);
+ font-weight: 500;
+ transition: var(--transition-fast);
}
.attachments-list a:hover {
+ color: var(--dark-red);
text-decoration: underline;
}
.recipients-list {
word-break: break-all;
+ color: var(--darker-gray);
+ line-height: 1.6;
}
/* Calendar Button */
.calendar-button {
display: block;
- background-color: var(--primary-red);
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
color: var(--white) !important;
text-align: center;
- padding: 10px;
- border-radius: 5px;
+ padding: 12px 20px;
+ border-radius: var(--border-radius);
margin-top: 20px;
text-decoration: none;
+ font-weight: 600;
transition: var(--transition);
}
.calendar-button:hover {
- background-color: var(--dark-red);
+ background: linear-gradient(135deg, var(--dark-red), #6d1219);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(183, 32, 46, 0.35);
}
/* Footer */
footer {
- background-color: var(--primary-red);
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
color: var(--white);
- padding: 20px;
+ padding: 25px 40px;
text-align: center;
+ margin-top: auto;
}
.terms {
display: flex;
justify-content: center;
align-items: center;
- gap: 20px;
+ gap: 30px;
+ flex-wrap: wrap;
}
.terms a {
color: var(--white);
text-decoration: none;
+ font-weight: 500;
+ padding: 8px 16px;
+ border-radius: var(--border-radius-sm);
+ transition: var(--transition);
+}
+
+.terms a:hover {
+ background-color: rgba(255, 255, 255, 0.15);
}
.footer-image {
height: 30px;
+ margin-top: 15px;
}
/* Responsive Design */
@media (max-width: 1024px) {
.meetings-grid {
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
+ }
+
+ .header-bar,
+ .navbar,
+ .meetings-page-container {
+ padding-left: 20px;
+ padding-right: 20px;
}
}
@media (max-width: 768px) {
.header-bar {
flex-direction: column;
- padding: 10px;
+ padding: 15px;
+ gap: 10px;
}
.college-name {
- margin: 10px 0;
font-size: 1.2rem;
+ order: -1;
}
.navbar li {
- padding: 10px 15px;
+ padding: 12px 16px;
+ }
+
+ .navbar a {
+ padding: 12px 16px;
+ font-size: 14px;
}
.meetings-page-container {
- padding: 20px 15px;
+ padding: 25px 15px;
+ }
+
+ .page-title {
+ font-size: 1.6rem;
}
}
@media (max-width: 480px) {
.meetings-grid {
grid-template-columns: 1fr;
+ gap: 20px;
}
.detail-row {
flex-direction: column;
+ gap: 5px;
}
.detail-label {
- margin-bottom: 5px;
+ margin-bottom: 0;
+ min-width: auto;
}
.meeting-meta {
flex-direction: column;
- gap: 5px;
+ gap: 8px;
+ }
+
+ .card-summary {
+ padding: 20px;
+ }
+
+ .card-details {
+ padding: 20px;
}
}
\ No newline at end of file
diff --git a/frontend/src/Page6.css b/frontend/src/Page6.css
index 53d3724..9902efd 100644
--- a/frontend/src/Page6.css
+++ b/frontend/src/Page6.css
@@ -1,23 +1,11 @@
-/*Page6.css*/
-
-/* Root Variables (optional, for consistency) */
-:root {
- --primary-red: #B7202E;
- --dark-red: #8a0000;
- --white: #ffffff;
- --light-gray: #f5f5f5;
- --medium-gray: #e0e0e0;
- --dark-gray: #757575;
- --shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- --transition: all 0.3s ease;
-}
+/*Page6.css - Edit Database*/
/* Page Container */
.page-container {
display: flex;
flex-direction: column;
min-height: 100vh;
- background-color: #f4f4f4;
+ background-color: var(--off-white);
}
/* Header Bar */
@@ -25,30 +13,35 @@
display: flex;
justify-content: space-between;
align-items: center;
- padding: 15px 20px;
+ padding: 15px 40px;
background-color: var(--white);
- box-shadow: var(--shadow);
+ box-shadow: var(--shadow-sm);
position: sticky;
top: 0;
z-index: 100;
+ gap: 20px;
}
.leftlogo, .rightlogo {
- height: 50px;
+ height: 55px;
width: auto;
+ flex-shrink: 0;
}
.college-name {
color: var(--primary-red);
- font-size: 1.5rem;
+ font-size: clamp(18px, 3vw, 26px);
+ font-weight: 700;
margin: 0;
text-align: center;
+ letter-spacing: -0.5px;
}
/* Navbar */
.navbar {
- background-color: var(--primary-red);
- padding: 0 20px;
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ padding: 0 40px;
+ box-shadow: var(--shadow-sm);
}
.navbar ul {
@@ -58,28 +51,48 @@
flex-wrap: wrap;
margin: 0;
padding: 0;
+ gap: 5px;
}
.navbar li {
- padding: 15px 20px;
+ padding: 0;
}
.navbar a {
+ display: block;
color: var(--white);
text-decoration: none;
font-weight: 500;
+ padding: 16px 24px;
transition: var(--transition);
+ position: relative;
}
-.navbar a:hover, .navbar a.active {
- text-decoration: underline;
- text-underline-offset: 5px;
+.navbar a::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ width: 0;
+ height: 3px;
+ background-color: var(--white);
+ transition: var(--transition);
+ transform: translateX(-50%);
+}
+
+.navbar a:hover::after,
+.navbar a.active::after {
+ width: calc(100% - 48px);
+}
+
+.navbar a:hover {
+ background-color: rgba(255, 255, 255, 0.1);
}
/* Main Content */
.email-management-container {
flex: 1;
- padding: 30px;
+ padding: 40px;
max-width: 1400px;
margin: 0 auto;
width: 100%;
@@ -88,134 +101,212 @@
.email-management-container h1 {
text-align: center;
color: var(--primary-red);
- margin-bottom: 30px;
+ margin-bottom: 40px;
font-size: 2rem;
+ font-weight: 700;
+ position: relative;
+ padding-bottom: 15px;
+}
+
+.email-management-container h1::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 80px;
+ height: 4px;
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ border-radius: 2px;
}
/* Search Bar */
.search-bar {
- margin-bottom: 20px;
+ margin-bottom: 30px;
}
.search-bar input {
width: 100%;
- padding: 10px;
- border: 1px solid #ccc;
- border-radius: 4px;
+ padding: 14px 20px;
+ border: 2px solid var(--medium-gray);
+ border-radius: var(--border-radius-xl);
font-size: 16px;
+ background-color: var(--white);
+ transition: var(--transition);
+}
+
+.search-bar input:focus {
+ border-color: var(--primary-red);
+ box-shadow: 0 0 0 4px rgba(183, 32, 46, 0.1);
+}
+
+.search-bar input::placeholder {
+ color: var(--dark-gray);
}
/* Grid Layout */
.departments-list {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
- gap: 25px;
+ grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
+ gap: 30px;
padding: 10px;
}
/* Department Card Style */
.department-card {
background-color: var(--white);
- border-radius: 8px;
- box-shadow: var(--shadow);
- border-left: 4px solid var(--primary-red);
- padding: 20px;
+ border-radius: var(--border-radius-lg);
+ box-shadow: var(--shadow-md);
+ border-left: 5px solid var(--primary-red);
+ padding: 25px;
transition: var(--transition);
display: flex;
flex-direction: column;
justify-content: space-between;
- min-height: 150px;
+ min-height: 180px;
}
.department-card:hover {
- transform: translateY(-5px);
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
+ transform: translateY(-8px);
+ box-shadow: var(--shadow-hover);
}
.department-card h3 {
- margin-top: 0;
+ margin: 0 0 15px 0;
color: var(--primary-red);
- font-size: 1.1rem;
- border-bottom: 1px solid var(--medium-gray);
- padding-bottom: 8px;
+ font-size: 1.15rem;
+ font-weight: 600;
+ border-bottom: 2px solid var(--medium-gray);
+ padding-bottom: 12px;
}
.department-card ul {
list-style: none;
padding-left: 0;
- margin-bottom: 10px;
+ margin-bottom: 15px;
+ flex: 1;
}
.department-card li {
- padding: 5px 0;
- border-bottom: 1px solid var(--medium-gray);
- color: var(--dark-gray);
+ padding: 8px 0;
+ border-bottom: 1px solid var(--light-gray);
+ color: var(--darker-gray);
font-size: 0.95rem;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.department-card li:last-child {
+ border-bottom: none;
+}
+
+.department-card li::before {
+ content: '✉';
+ color: var(--primary-red);
+ font-size: 12px;
}
/* Actions */
.department-actions {
display: flex;
- gap: 10px;
- margin-top: 10px;
+ gap: 12px;
+ margin-top: 15px;
+ padding-top: 15px;
+ border-top: 1px solid var(--light-gray);
}
.edit-btn, .delete-btn, .add-department-btn, .save-btn, .cancel-btn {
- display: flex;
+ display: inline-flex;
align-items: center;
- gap: 5px;
- padding: 8px 12px;
+ justify-content: center;
+ gap: 6px;
+ padding: 10px 18px;
border: none;
- border-radius: 4px;
+ border-radius: var(--border-radius);
cursor: pointer;
font-size: 14px;
+ font-weight: 600;
+ transition: var(--transition);
}
.edit-btn {
- background-color: #4CAF50;
- color: white;
+ background: linear-gradient(135deg, #4CAF50, #45a049);
+ color: var(--white);
+ flex: 1;
+}
+
+.edit-btn:hover {
+ background: linear-gradient(135deg, #45a049, #3d8b40);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(76, 175, 80, 0.4);
}
.delete-btn {
- background-color: #f44336;
- color: white;
+ background: linear-gradient(135deg, #f44336, #d32f2f);
+ color: var(--white);
+ flex: 1;
+}
+
+.delete-btn:hover {
+ background: linear-gradient(135deg, #d32f2f, #b71c1c);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(244, 67, 54, 0.4);
}
.add-department-btn {
- background-color: #2196F3;
- color: white;
- margin-bottom: 20px;
+ background: linear-gradient(135deg, #2196F3, #1976D2);
+ color: var(--white);
+ margin-bottom: 30px;
+ padding: 14px 28px;
+ font-size: 15px;
+}
+
+.add-department-btn:hover {
+ background: linear-gradient(135deg, #1976D2, #1565C0);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(33, 150, 243, 0.4);
}
/* Edit Form */
.edit-form {
- background-color: var(--light-gray);
- padding: 20px;
- border-radius: 8px;
- margin-bottom: 20px;
+ background-color: var(--white);
+ padding: 30px;
+ border-radius: var(--border-radius-lg);
+ margin-bottom: 30px;
+ box-shadow: var(--shadow-md);
+ border-left: 5px solid #2196F3;
}
.form-group {
- margin-bottom: 15px;
+ margin-bottom: 20px;
}
.form-group label {
display: block;
- margin-bottom: 5px;
- font-weight: bold;
+ margin-bottom: 8px;
+ font-weight: 600;
+ color: var(--darker-gray);
}
.form-group input {
width: 100%;
- padding: 8px;
- border: 1px solid var(--medium-gray);
- border-radius: 4px;
+ padding: 12px 16px;
+ border: 2px solid var(--medium-gray);
+ border-radius: var(--border-radius);
+ font-size: 15px;
+ transition: var(--transition);
+}
+
+.form-group input:focus {
+ border-color: var(--primary-red);
+ box-shadow: 0 0 0 4px rgba(183, 32, 46, 0.1);
}
.email-input-group {
display: flex;
- gap: 10px;
- margin-bottom: 10px;
+ gap: 12px;
+ margin-bottom: 12px;
align-items: center;
}
@@ -228,80 +319,169 @@
border: none;
color: #f44336;
cursor: pointer;
- font-size: 16px;
+ font-size: 18px;
+ padding: 8px;
+ transition: var(--transition);
+ border-radius: 50%;
+}
+
+.remove-email:hover {
+ background-color: rgba(244, 67, 54, 0.1);
+ transform: scale(1.1);
}
.add-email {
- background-color: #2196F3;
- color: white;
+ background: linear-gradient(135deg, #2196F3, #1976D2);
+ color: var(--white);
border: none;
- padding: 8px 12px;
- border-radius: 4px;
+ padding: 10px 18px;
+ border-radius: var(--border-radius);
cursor: pointer;
- display: flex;
+ display: inline-flex;
align-items: center;
- gap: 5px;
+ gap: 6px;
+ font-weight: 600;
+ transition: var(--transition);
+}
+
+.add-email:hover {
+ background: linear-gradient(135deg, #1976D2, #1565C0);
+ transform: translateY(-2px);
}
.form-actions {
display: flex;
- gap: 10px;
- margin-top: 20px;
+ gap: 15px;
+ margin-top: 25px;
+}
+
+.save-btn {
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
+ color: var(--white);
+ flex: 1;
+}
+
+.save-btn:hover {
+ background: linear-gradient(135deg, var(--dark-red), #6d1219);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(183, 32, 46, 0.4);
+}
+
+.cancel-btn {
+ background: var(--medium-gray);
+ color: var(--darker-gray);
+ flex: 1;
+}
+
+.cancel-btn:hover {
+ background: var(--dark-gray);
+ color: var(--white);
+ transform: translateY(-2px);
}
/* Footer */
footer {
- background-color: var(--primary-red);
+ background: linear-gradient(135deg, var(--primary-red), var(--dark-red));
color: var(--white);
- padding: 20px;
+ padding: 25px 40px;
text-align: center;
+ margin-top: auto;
}
.terms {
display: flex;
justify-content: center;
align-items: center;
- gap: 20px;
+ gap: 30px;
+ flex-wrap: wrap;
}
.terms a {
color: var(--white);
text-decoration: none;
+ font-weight: 500;
+ padding: 8px 16px;
+ border-radius: var(--border-radius-sm);
+ transition: var(--transition);
+}
+
+.terms a:hover {
+ background-color: rgba(255, 255, 255, 0.15);
}
.footer-image {
height: 30px;
+ margin-top: 15px;
}
/* Responsive */
@media (max-width: 1024px) {
.departments-list {
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
+ }
+
+ .header-bar,
+ .navbar,
+ .email-management-container {
+ padding-left: 20px;
+ padding-right: 20px;
}
}
@media (max-width: 768px) {
.header-bar {
flex-direction: column;
- padding: 10px;
+ padding: 15px;
+ gap: 10px;
}
.college-name {
- margin: 10px 0;
font-size: 1.2rem;
+ order: -1;
}
.navbar li {
- padding: 10px 15px;
+ padding: 12px 16px;
+ }
+
+ .navbar a {
+ padding: 12px 16px;
+ font-size: 14px;
}
.email-management-container {
- padding: 20px 15px;
+ padding: 25px 15px;
+ }
+
+ .email-management-container h1 {
+ font-size: 1.6rem;
+ }
+
+ .edit-form {
+ padding: 20px;
+ }
+
+ .department-actions {
+ flex-direction: column;
}
}
@media (max-width: 480px) {
.departments-list {
grid-template-columns: 1fr;
+ gap: 20px;
+ }
+
+ .email-input-group {
+ flex-direction: column;
+ align-items: stretch;
+ }
+
+ .remove-email {
+ align-self: flex-end;
+ }
+
+ .form-actions {
+ flex-direction: column;
}
}
diff --git a/frontend/src/index.css b/frontend/src/index.css
index ec2585e..6fd0cd9 100644
--- a/frontend/src/index.css
+++ b/frontend/src/index.css
@@ -1,13 +1,122 @@
-body {
+/* Global CSS Variables */
+:root {
+ --primary-red: #B7202E;
+ --dark-red: #8a1a24;
+ --light-red: #d63447;
+ --accent-red: #ff4757;
+ --white: #ffffff;
+ --off-white: #fafafa;
+ --light-gray: #f5f5f5;
+ --medium-gray: #e0e0e0;
+ --dark-gray: #757575;
+ --darker-gray: #424242;
+ --black: #212121;
+ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
+ --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
+ --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
+ --shadow-hover: 0 12px 40px rgba(183, 32, 46, 0.2);
+ --transition-fast: all 0.2s ease;
+ --transition: all 0.3s ease;
+ --transition-slow: all 0.4s ease;
+ --border-radius-sm: 6px;
+ --border-radius: 10px;
+ --border-radius-lg: 16px;
+ --border-radius-xl: 24px;
+ --font-primary: 'Segoe UI', 'Roboto', -apple-system, BlinkMacSystemFont, 'Oxygen',
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
+}
+
+/* CSS Reset */
+*, *::before, *::after {
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
- sans-serif;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
+body {
+ font-family: var(--font-primary);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
+ background-color: var(--off-white);
+ color: var(--black);
+ line-height: 1.6;
+ min-height: 100vh;
}
code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
- monospace;
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
+}
+
+/* Global Link Styles */
+a {
+ text-decoration: none;
+ color: inherit;
+ transition: var(--transition-fast);
+}
+
+/* Global Button Reset */
+button {
+ font-family: inherit;
+ cursor: pointer;
+ border: none;
+ outline: none;
+ transition: var(--transition);
+}
+
+button:focus-visible {
+ outline: 2px solid var(--primary-red);
+ outline-offset: 2px;
+}
+
+/* Global Input Styles */
+input, select, textarea {
+ font-family: inherit;
+ font-size: inherit;
+ outline: none;
+ border: 1px solid var(--medium-gray);
+ transition: var(--transition-fast);
+}
+
+input:focus, select:focus, textarea:focus {
+ border-color: var(--primary-red);
+ box-shadow: 0 0 0 3px rgba(183, 32, 46, 0.1);
+}
+
+/* Utility Classes */
+.text-center { text-align: center; }
+.text-primary { color: var(--primary-red); }
+.mt-1 { margin-top: 0.5rem; }
+.mt-2 { margin-top: 1rem; }
+.mt-3 { margin-top: 1.5rem; }
+.mb-1 { margin-bottom: 0.5rem; }
+.mb-2 { margin-bottom: 1rem; }
+.mb-3 { margin-bottom: 1.5rem; }
+
+/* Scrollbar Styling */
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: var(--light-gray);
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--medium-gray);
+ border-radius: 4px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: var(--dark-gray);
+}
+
+/* Selection Color */
+::selection {
+ background-color: var(--primary-red);
+ color: var(--white);
}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..1a2bf65
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6 @@
+{
+ "name": "BOS-React-",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+}