import { Navigate, Outlet, Route, Routes, useLocation, useNavigate } from "react-router-dom"; import { Boxes, FileText, LayoutDashboard, Network, Paperclip, Settings, SlidersHorizontal, Train, Truck, Container, Package, //TrainTrack, } from "lucide-react"; import { FreightDashboardLayout, type SidebarItem, type SidebarSection } from "@/components/layout"; import LoadingScreen from "./components/LoadingScreen"; import { useAuth } from "./auth/useAuth"; import LoginPage from "./pages/auth/LoginPage"; import BookingContractPage from "./pages/bookings/BookingContractPage"; import BookingRequestDetailPage from "./pages/bookings/BookingRequestDetailPage"; import BookingRequestsPage from "./pages/bookings/BookingRequestsPage"; import DemoUser1Page from "./pages/dashboard/demo/DemoUser1Page"; import DemoUser2Page from "./pages/dashboard/demo/DemoUser2Page"; import OverviewPage from "./pages/dashboard/OverviewPage"; //import EmployeesPage from "./pages/dashboard/user-management/EmployeesPage"; import PermissionsPage from "./pages/dashboard/user-management/PermissionsPage"; import PositionTypesPage from "./pages/dashboard/user-management/PositionTypesPage"; import RolesPage from "./pages/dashboard/user-management/RolesPage"; import UserManagementPage from "./pages/dashboard/user-management/UserManagementPage"; import UsersPage from "./pages/dashboard/user-management/UsersPage"; import DropdownSettingsPage from "./pages/dropdown_settings/DropdownSettingsPage"; import FileUploadSettingsPage from "./pages/documents/FileUploadSettingsPage"; import RuleEngineLegacyRedirect from "./pages/ruleEngine/RuleEngineLegacyRedirect"; import RuleEngineResourcePage from "./pages/ruleEngine/RuleEngineResourcePage"; import TrainsPage from "./pages/trains/TrainsPage"; import { CargoesCrudPage, ContainersCrudPage, LocomotivesCrudPage, TrainMasterDataPage, WagonsCrudPage, } from "./pages/fleet/FleetCrudPages"; import { getCategorySidebarChildren } from "./pages/ruleEngine/config/resources"; import TrainDetailPage from "./pages/trains/TrainDetailPage"; import RoutesPage from "./pages/fleet/RoutesPage"; const buildSidebarSections = (demoItems: SidebarItem[]): SidebarSection[] => [ { title: "Main menu", mutedTitle: true, items: [ { label: "Overview", href: "/dashboard/overview", icon: , }, { label: "Booking requests", href: "/dashboard/booking-requests", icon: , }, ...demoItems, ], }, { title: "Operations", items: [ { label: "Train Schedules", href: "/dashboard/operations/train-scheduling", icon: , }, ], }, { title: "Fleet Management", items: [ { label: "Routes", href: "/dashboard/routes", icon: , }, { label: "Locomotives", href: "/dashboard/locomotives", icon: , }, { label: "Trains", href: "/dashboard/trains", icon: , }, { label: "Wagons", href: "/dashboard/wagons", icon: , }, { label: "Containers", href: "/dashboard/containers", icon: , }, { label: "Cargoes", href: "/dashboard/cargoes", icon: , }, ], }, { title: "Administration", items: [ { label: "User management", href: "/dashboard/user-management", icon: , children: [ { label: "Users", href: "/dashboard/user-management/users", }, { label: "Employees", href: "/dashboard/user-management/employees", }, { label: "Position Types", href: "/dashboard/user-management/position-types", }, { label: "Permissions", href: "/dashboard/user-management/permissions", }, { label: "Roles", href: "/dashboard/user-management/roles", }, ], }, { label: "File settings", href: "/dashboard/file-settings", icon: , }, { label: "Dropdown settings", href: "/dashboard/dropdown-settings", icon: , }, ], }, { title: "Freight configuration", mutedTitle: true, items: [ { label: "Configuration", href: "/dashboard/configuration", icon: , children: getCategorySidebarChildren("configuration"), }, { label: "Rules", href: "/dashboard/rules", icon: , children: getCategorySidebarChildren("rules"), }, ], }, ]; const hasPermission = ( user: ReturnType["user"], key: string, ) => { if (!user) return false; if (user.permissions?.some((p) => p.key === key)) return true; return (user.employee ?? []).some((emp) => (emp.positions ?? []).some((pos) => (pos.permissions ?? []).some((p) => p.key === key), ), ); }; const DashboardShell = () => { const navigate = useNavigate(); const location = useLocation(); const { user, logout } = useAuth(); const demoItems: SidebarItem[] = []; const sidebarSections = buildSidebarSections(demoItems); const displayName = user?.name?.en || user?.username || user?.email || "User"; return ( ); }; const App = () => { const { user, loading } = useAuth(); if (loading) { return ; } if (!user) { return ( } /> } /> ); } return ( } /> } /> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* } /> */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }; export default App;