diff --git a/backend/pom.xml b/backend/pom.xml
index 1576d4b..9995b8f 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -27,7 +27,7 @@
- 21
+ 17
diff --git a/src/constants/index.ts b/src/constants/index.ts
index eb3d9d1..29b6017 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -44,7 +44,7 @@ export const FEATURES: Feature[] = [
icon: 'Map',
title: 'Campus Map',
description: 'Explore RIT campus interactively – find departments, labs, library, canteen, and facilities.',
- path: '/campus',
+ path: '/campus?tab=map',
color: '#10B981',
bgColor: '#ECFDF5',
},
@@ -53,7 +53,7 @@ export const FEATURES: Feature[] = [
icon: 'Bus',
title: 'Bus Routes',
description: 'View all campus bus routes, timings, and pickup locations at a glance.',
- path: '/campus',
+ path: '/campus?tab=bus',
color: '#3B82F6',
bgColor: '#EFF6FF',
},
@@ -62,7 +62,7 @@ export const FEATURES: Feature[] = [
icon: 'UserCheck',
title: 'Faculty Directory',
description: 'Find faculty contact details, department, designation, and office hours.',
- path: '/campus',
+ path: '/campus?tab=faculty',
color: '#EC4899',
bgColor: '#FDF2F8',
},
diff --git a/src/pages/Campus/Campus.tsx b/src/pages/Campus/Campus.tsx
index db2c0d6..53a60a1 100644
--- a/src/pages/Campus/Campus.tsx
+++ b/src/pages/Campus/Campus.tsx
@@ -7,12 +7,17 @@ import FacultyCard from '@/components/FacultyCard/FacultyCard';
import { StaggerContainer, StaggerItem } from '@/components/AnimatedContainer/AnimatedContainer';
import { FACULTY_DATA, CAMPUS_LOCATIONS, DEPARTMENTS } from '@/constants';
import * as LucideIcons from 'lucide-react';
+import { useLocation } from 'react-router-dom';
import type { BusRoute } from '@/types';
type Tab = 'map' | 'bus' | 'faculty';
export default function Campus() {
- const [activeTab, setActiveTab] = useState('map');
+ const location = useLocation();
+ const queryTab = new URLSearchParams(location.search).get('tab') as Tab;
+ const [activeTab, setActiveTab] = useState(
+ queryTab === 'map' || queryTab === 'bus' || queryTab === 'faculty' ? queryTab : 'map'
+ );
const [searchFaculty, setSearchFaculty] = useState('');
const [selectedDept, setSelectedDept] = useState('All Departments');
const [sortBy, setSortBy] = useState('Name A-Z');
@@ -20,6 +25,14 @@ export default function Campus() {
const [busRoutes, setBusRoutes] = useState([]);
const [loadingBus, setLoadingBus] = useState(true);
+ // Sync tab state when URL query parameter changes
+ useEffect(() => {
+ const qTab = new URLSearchParams(location.search).get('tab') as Tab;
+ if (qTab === 'map' || qTab === 'bus' || qTab === 'faculty') {
+ setActiveTab(qTab);
+ }
+ }, [location.search]);
+
useEffect(() => {
if (activeTab === 'bus' && busRoutes.length === 0) {
setLoadingBus(true);