import { createRouter, createWebHistory } from "vue-router"; import EmptyLayout from "./layouts/EmptyLayout.vue"; import Layout from "./layouts/Layout.vue"; import Dashboard from "./pages/Dashboard.vue"; import DashboardHome from "./pages/DashboardHome.vue"; import Details from "./pages/Details.vue"; import EditMonitor from "./pages/EditMonitor.vue"; import EditMaintenance from "./pages/EditMaintenance.vue"; import List from "./pages/List.vue"; const Settings = () => import("./pages/Settings.vue"); import Setup from "./pages/Setup.vue"; import StatusPage from "./pages/StatusPage.vue"; import Entry from "./pages/Entry.vue"; import ManageStatusPage from "./pages/ManageStatusPage.vue"; import AddStatusPage from "./pages/AddStatusPage.vue"; import NotFound from "./pages/NotFound.vue"; import DockerHosts from "./components/settings/Docker.vue"; import MaintenanceDetails from "./pages/MaintenanceDetails.vue"; import ManageMaintenance from "./pages/ManageMaintenance.vue"; import APIKeys from "./components/settings/APIKeys.vue"; import SetupDatabase from "./pages/SetupDatabase.vue"; // Settings - Sub Pages import Appearance from "./components/settings/Appearance.vue"; import General from "./components/settings/General.vue"; const Notifications = () => import("./components/settings/Notifications.vue"); import ReverseProxy from "./components/settings/ReverseProxy.vue"; import Tags from "./components/settings/Tags.vue"; import MonitorHistory from "./components/settings/MonitorHistory.vue"; const Security = () => import("./components/settings/Security.vue"); import Proxies from "./components/settings/Proxies.vue"; import About from "./components/settings/About.vue"; import RemoteBrowsers from "./components/settings/RemoteBrowsers.vue"; const routes = [ { path: "/", component: Entry, }, { // If it is "/dashboard", the active link is not working // If it is "", it overrides the "/" unexpectedly // Give a random name to solve the problem. path: "/empty", component: Layout, children: [ { path: "", component: Dashboard, children: [ { name: "DashboardHome", path: "/dashboard", component: DashboardHome, children: [ { path: "/dashboard/:id", component: EmptyLayout, children: [ { path: "", component: Details, }, { path: "/edit/:id", component: EditMonitor, }, ], }, ], }, { path: "/add", component: EditMonitor, children: [ { path: "/clone/:id", component: EditMonitor, }, ] }, { path: "/list", component: List, }, { path: "/settings", component: Settings, children: [ { path: "general", component: General, }, { path: "appearance", component: Appearance, }, { path: "notifications", component: Notifications, }, { path: "reverse-proxy", component: ReverseProxy, }, { path: "tags", component: Tags, }, { path: "monitor-history", component: MonitorHistory, }, { path: "docker-hosts", component: DockerHosts, }, { path: "remote-browsers", component: RemoteBrowsers, }, { path: "security", component: Security, }, { path: "api-keys", component: APIKeys, }, { path: "proxies", component: Proxies, }, { path: "about", component: About, }, ] }, { path: "/manage-status-page", component: ManageStatusPage, }, { path: "/add-status-page", component: AddStatusPage, }, { path: "/maintenance", component: ManageMaintenance, }, { path: "/maintenance/:id", component: MaintenanceDetails, }, { path: "/add-maintenance", component: EditMaintenance, }, { path: "/maintenance/edit/:id", component: EditMaintenance, }, ], }, ], }, { path: "/setup", component: Setup, }, { path: "/setup-database", component: SetupDatabase, }, { path: "/status-page", component: StatusPage, }, { path: "/status", component: StatusPage, }, { path: "/status/:slug", component: StatusPage, }, { path: "/:pathMatch(.*)*", component: NotFound, }, ]; export const router = createRouter({ linkActiveClass: "active", history: createWebHistory(), routes, });