import React from 'react';
import { Routes, Route, Navigate, useLocation } from 'react-router-dom';
import { useAuth } from './context/AuthContext';
import Layout from './components/Layout';
import Login from './pages/Login';
import Landing from './pages/Landing';
import Dashboard from './pages/Dashboard';
import Maps from './pages/Maps';
import AdminSchedule from './pages/AdminSchedule';
import CustomerProfile from './pages/CustomerProfile';
import LeaderboardPage from './pages/LeaderboardPage';
import ErrorBoundary from './components/ErrorBoundary';
import SmoothScroll from './components/SmoothScroll';
import { Toaster } from 'sonner';
import NotFound from './pages/NotFound';
import OwnerSnapshot from './pages/owner/OwnerSnapshot';
import PeopleDirectory from './pages/owner/PeopleDirectory';
import VendorDirectory from './pages/owner/VendorDirectory';
import DocumentManagement from './pages/owner/DocumentManagement';
import OwnerProjectList from './pages/owner/OwnerProjectList';
import OwnerProjectDetail from './pages/owner/OwnerProjectDetail';
import OrgSettings from './pages/owner/OrgSettings';
import PlaceholderDashboard from './pages/PlaceholderDashboard';
import ProCanvas from './pages/ProCanvas';
import ProjectList from './pages/contractor/ProjectList';
import AiAssistantPage from './pages/AiAssistantPage';
import EstimateBuilder from './pages/EstimateBuilder';
// New Dashboards
import VendorDashboard from './pages/vendor/VendorDashboard';
import VendorOrders from './pages/vendor/VendorOrders';
import ContractorDashboard from './pages/contractor/ContractorDashboard';
import SubContractorDashboard from './pages/subcontractor/SubContractorDashboard';
import CreateLeadPage from './pages/CreateLeadPage';
import LeadsListPage from './pages/LeadsListPage';
import LynkDispatchPage from './pages/LynkDispatchPage';
import EstimatesPage from './pages/EstimatesPage';
import KanbanPage from './pages/KanbanPage';
import LeadProjectPage from './pages/LeadProjectPage';
// ... (existing imports)
const ProtectedRoute = ({ children, allowedRoles }) => {
const { user, isAuthenticated } = useAuth();
const location = useLocation();
if (!isAuthenticated) {
return ;
}
if (allowedRoles && !allowedRoles.includes(user.role)) {
// If user is employee but wrong role, go to their default dashboard
// For now, just redirect to home or show unauthorized
return ;
}
return children;
};
function App() {
return (
}>
{/* Public Routes */}
} />
} />
}
/>
{/* Protected Field Agent Routes */}
} />
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
{/* Owner Routes */}
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
{/* Protected Admin Routes — Owner has full admin access */}
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
{/* Contractor Routes */}
} />
} />
{/* Vendor Routes */}
} />
} />
{/* Subcontractor Routes */}
} />
} />
{/* Catch all */}
} />
);
}
export default App;