Skip to content
Snippets Groups Projects
App.tsx 2.46 KiB
Newer Older
import React, { FC, useEffect, useState } from 'react';
fmazzini's avatar
fmazzini committed
import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';
Defendi Alberto's avatar
Defendi Alberto committed
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
Defendi Alberto's avatar
Defendi Alberto committed
import { AuthUser } from 'components/AuthUser/AuthUser';
import { LandingPage } from 'components/NonAuthUser/LandingPage/LandingPage';
import { PrivateRoute } from 'api/PrivateRoute/PrivateRoute';
import { AuthRoutes, NonAuthRoutes } from 'api/routes';
import { NotFound } from 'components/NonAuthUser/NotFound/NotFound';
import { ProfilePage } from 'components/AuthUser/ProfilePage/ProfilePage';
import { Roles } from 'api/userRoles';
import { Unauthorized } from 'components/NonAuthUser/Unauthorized/Unauthorized';
import { ReservationPage } from 'components/AuthUser/ReservationPage/ReservationPage';
import { HomePage } from 'components/AuthUser/HomePage/HomePage';
import { SignInForm } from 'components/AuthUser/SignInForm/SignInForm';
import { AuthContext } from 'components/AuthUser/AuthContext';
Defendi Alberto's avatar
Defendi Alberto committed

fmazzini's avatar
fmazzini committed
const theme = createMuiTheme({
  palette: {
    primary: {
      main: '#5e5ce4',
    },
    secondary: {
      main: '#e2e45c',
    },
  },

  typography: {
    fontSize: 16,
  },

  overrides: {
    MuiTabs: {
      indicator: {
        backgroundColor: 'white',
      },
    },
fmazzini's avatar
fmazzini committed
    MuiTab: {
      wrapper: {
        flexDirection: 'row',
      },
    },
fmazzini's avatar
fmazzini committed
  },
});
Defendi Alberto's avatar
Defendi Alberto committed

export const App: FC = () => {
  const [role, setRole] = useState('');
  const value = { role, setRole };

  return (
    <ThemeProvider theme={theme}>
      <Router>
        <div data-testid="App">
          <Switch>
            <Route exact path={NonAuthRoutes.home} component={LandingPage} />
            <AuthContext.Provider value={value}>
              <Route path={NonAuthRoutes.auth} component={AuthUser} />
              <PrivateRoute
                path={AuthRoutes.dashboard}
                Component={HomePage}
                requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
              />
              <PrivateRoute
                path={AuthRoutes.profile}
                Component={ProfilePage}
                requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
              />
            </AuthContext.Provider>
            <Route path={AuthRoutes.reservation} component={ReservationPage} />
            <Route path={NonAuthRoutes.unauthorized} component={Unauthorized} />
            <Route component={NotFound} />
          </Switch>
        </div>
      </Router>
    </ThemeProvider>