173 lines
6.1 KiB
TypeScript
173 lines
6.1 KiB
TypeScript
import * as React from "react";
|
|
import * as ReactDOM from "react-dom";
|
|
import {
|
|
createBrowserRouter, NavLink,
|
|
RouterProvider,
|
|
} from "react-router-dom";
|
|
import StatusPage from "./components/StatusPage";
|
|
import reportWebVitals from "./reportWebVitals";
|
|
import "./index.css";
|
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
|
import UptimeCard from "./components/UptimeCard";
|
|
import Footer from "./components/Footer";
|
|
import {Nav, Navbar, NavbarBrand, NavDropdown} from "react-bootstrap";
|
|
import NWSLogo from "./static/images/NWS_Logo_Transparent.png";
|
|
import Blogs from "./components/Blogs";
|
|
import NotFoundPage from "./components/NotFoundPage";
|
|
import LoginPage from "./components/LoginPage";
|
|
import RegisterPage from "./components/RegisterPage";
|
|
import VerifyPage from "./components/VerifyPage";
|
|
import DashboardPage from "./components/DashboardPage";
|
|
import CreateCruisePage from "./components/CreateCruisePage";
|
|
import HomePage from "./components/HomePage";
|
|
import NavbarCollapse from "react-bootstrap/NavbarCollapse";
|
|
import NavbarOffcanvas from "react-bootstrap/NavbarOffcanvas";
|
|
|
|
function Layout (props: {children: any}) {
|
|
return (
|
|
<div>
|
|
<header className={"w-100 sticky-top"}>
|
|
<div className={"w-100"}>
|
|
<Navbar sticky={"top"} expand="lg" className={"row justify-content-center m-0 p-0"} style={{backgroundColor: "#eee"}}>
|
|
<div className={"row w-100"}>
|
|
<div className="row w-100 d-md-none d-sm-block">
|
|
<div className={"col-9"}>
|
|
<Navbar.Brand href="/">
|
|
<img src={NWSLogo} width={150}/>
|
|
</Navbar.Brand>
|
|
</div>
|
|
<div className={"col-2 ml-3 d-flex align-content-center justify-content-center"}>
|
|
<Navbar.Toggle className={"h-50 align-self-center"} aria-controls="basic-navbar-nav"/>
|
|
</div>
|
|
</div>
|
|
<div className={"d-md-block d-none col-2"}>
|
|
<Navbar.Brand href="/">
|
|
<img src={NWSLogo} width={150}/>
|
|
</Navbar.Brand>
|
|
</div>
|
|
<Navbar.Collapse id="basic-navbar-nav" className={"col-10"}>
|
|
<Nav className="row w-100 ml-5">
|
|
<div className="col-md-4 row">
|
|
<NavLink className="col-sm-12 col-md-3 nav-lnk align-self-center" to={"/"}>Home</NavLink>
|
|
<NavLink className="col-sm-12 col-md-3 nav-lnk align-self-center" to={"/status"}>Status</NavLink>
|
|
</div>
|
|
<div className="col-md-6"/>
|
|
<div className={"col-md-2 d-md-block d-none"}>
|
|
{ localStorage.getItem("session_key") === null &&
|
|
(
|
|
<NavLink className={"nav-lnk"} to={"/login"}>
|
|
Login
|
|
</NavLink>
|
|
|
|
)
|
|
}
|
|
{ localStorage.getItem("session_key") === null ||
|
|
(
|
|
<NavDropdown title={"Account"} className={"nav-lnk"}>
|
|
<NavLink className={"nav-lnk"} to={"/dashboard"}>
|
|
Dashboard
|
|
</NavLink>
|
|
<hr/>
|
|
<NavLink className={"nav-lnk"} to={"/login"} onClick={()=>{localStorage.removeItem("session_key")}}>
|
|
Logout
|
|
</NavLink>
|
|
</NavDropdown>
|
|
)
|
|
}
|
|
</div>
|
|
</Nav>
|
|
</Navbar.Collapse>
|
|
</div>
|
|
</Navbar>
|
|
</div>
|
|
</header>
|
|
<div style={{minHeight: "92vh"}}>
|
|
{props.children}
|
|
</div>
|
|
<Footer/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
const router = createBrowserRouter([
|
|
{
|
|
path: "/",
|
|
element:
|
|
<Layout>
|
|
<HomePage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "status",
|
|
element:
|
|
<Layout>
|
|
<StatusPage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "blog",
|
|
element:
|
|
<Layout>
|
|
<Blogs/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "blogs",
|
|
element:
|
|
<Layout>
|
|
<Blogs/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "login",
|
|
element:
|
|
<Layout>
|
|
<LoginPage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "verify",
|
|
element:
|
|
<Layout>
|
|
<VerifyPage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "dashboard",
|
|
element:
|
|
<Layout>
|
|
<DashboardPage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "register",
|
|
element:
|
|
<Layout>
|
|
<RegisterPage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "cruise/new",
|
|
element:
|
|
<Layout>
|
|
<CreateCruisePage/>
|
|
</Layout>
|
|
},
|
|
{
|
|
path: "*",
|
|
element:
|
|
<Layout>
|
|
<NotFoundPage/>
|
|
</Layout>
|
|
},
|
|
]);
|
|
|
|
// @ts-ignore
|
|
ReactDOM.createRoot(document.getElementById("root")).render(
|
|
<RouterProvider router={router} />
|
|
);
|
|
|
|
// If you want to start measuring performance in your app, pass a function
|
|
// to log results (for example: reportWebVitals(console.log))
|
|
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
|
reportWebVitals();
|