feat(dispatch): Phase 1 — LynkDispatch AI skeleton, mock data, routes, sidebar
- mockStore: add DISPATCH_LEADS (12), DISPATCH_REPS (5), DISPATCH_RECOMMENDATIONS (pre-baked AI scores + route paths for all 12 leads), dispatchLeads state, assignDispatchLead() action - LynkDispatchPage: 3-panel command center shell with storm banner, live badge, Storm Mode toggle, KPI bar with real unassigned count - App.jsx: routes /admin/dispatch and /owner/dispatch wired - Layout.jsx: LynkDispatch (Zap icon) added to ADMIN and OWNER sidebar nav
This commit is contained in:
+17
@@ -31,6 +31,7 @@ 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';
|
||||
|
||||
// ... (existing imports)
|
||||
const ProtectedRoute = ({ children, allowedRoles }) => {
|
||||
@@ -197,6 +198,22 @@ function App() {
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/admin/dispatch"
|
||||
element={
|
||||
<ProtectedRoute allowedRoles={['ADMIN', 'OWNER']}>
|
||||
<LynkDispatchPage />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/owner/dispatch"
|
||||
element={
|
||||
<ProtectedRoute allowedRoles={['OWNER']}>
|
||||
<LynkDispatchPage />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/admin/maps"
|
||||
element={
|
||||
|
||||
Reference in New Issue
Block a user