import React, { ReactComponentElement } from "react"; import { MainPage } from "@/pages/main"; import { RouteProps } from "react-router-dom"; import { InternshipProposalFormPage, InternshipProposalPreviewPage } from "@/pages/internship/proposal"; import { NotFoundPage } from "@/pages/errors/not-found"; import SubmitPlanPage from "@/pages/internship/plan"; type Route = { name?: string; content: () => ReactComponentElement, } & RouteProps; export const routes: Route[] = [ { name: "home", path: "/", exact: true, content: () => }, { name: "internship_proposal", path: "/internship/proposal", exact: true, content: () => }, { name: "internship_proposal_preview", path: "/internship/preview/proposal", exact: true, content: () => }, { name: "internship_plan", path: "/internship/plan", exact: true, content: () => }, // fallback route for 404 pages { name: "fallback", path: "*", content: () => } ] const routeNameMap = new Map(routes.filter(({ name }) => !!name).map(({ name, path }) => [name, path instanceof Array ? path[0] : path])) as Map export function route(name: string, params: { [param: string]: string } = {}) { const url = routeNameMap.get(name) || ""; return Object.entries(params).reduce((url, [name, value]) => url.replace(`:${ name }`, value), url); }