summaryrefslogtreecommitdiff
path: root/src/router/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/router/index.ts')
-rw-r--r--src/router/index.ts71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..8165667
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,71 @@
+import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
+import Home from "../views/Home.vue";
+import NotFound from "../views/NotFound.vue";
+import redirects from "./redirects";
+
+const routes: Array<RouteRecordRaw> = [
+ {
+ path: "/",
+ name: "home",
+ component: Home,
+ },
+ {
+ path: "/news",
+ name: "news",
+ component: () => import(/* webpackChunkName: "news" */ "../views/NewsArchive.vue"),
+ },
+ {
+ path: "/about",
+ name: "about",
+ component: () => import(/* webpackChunkName: "about" */ "../views/About.vue"),
+ },
+ {
+ path: "/support",
+ name: "support",
+ component: () => import(/* webpackChunkName: "support" */ "../views/Support.vue"),
+ },
+ {
+ path: "/recover/password:emailToken(.*)",
+ alias: ["/recover/username:emailToken(.*)"],
+ name: "account recovery",
+ component: () => import(/* webpackChunkName: "recovery" */ "../views/AccountRecovery.vue"),
+ },
+ {
+ path: "/register",
+ name: "registration",
+ component: () => import(/* webpackChunkName: "registration" */ "../views/Registration.vue"),
+ },
+ {
+ path: "/404:pathMatch(.*)",
+ alias: "/:pathMatch(.*)",
+ name: "not found",
+ component: NotFound,
+ },
+ ...redirects,
+];
+
+const router = createRouter({
+ history: createWebHistory(process.env.BASE_URL),
+ routes,
+});
+
+router.afterEach((to,) => {
+ const mainTitle = document.querySelector("#app > .content > h1");
+
+ // scroll to the title if we're below it
+ if (mainTitle) {
+ mainTitle.scrollIntoView({
+ block: "nearest", // FIXME: weird behaviour in firefox!
+ inline: "nearest",
+ behavior: "smooth",
+ });
+ }
+
+ if (to.name && typeof to.name === "string" && to.path !== "/") {
+ document.title = `${process.env.VUE_APP_TITLE} - ${to.name[0].toUpperCase() + to.name.slice(1)}`;
+ } else {
+ document.title = process.env.VUE_APP_TITLE;
+ }
+});
+
+export default router;