You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

69 lines
1.8 KiB

import React from 'react';
import { Layout } from 'antd';
import {
BrowserRouter,
Routes,
Route,
Navigate
} from "react-router-dom";
import Analytics from './common/Analytics';
import Cluar from './common/Cluar';
import Builder from './common/Builder';
import BaseCookies from './base/Cookies';
import BaseHeader from './base/Header';
import BaseFooter from './base/Footer';
import NotFound from './pages/NotFound';
import './styles/App.less';
const { Content } = Layout;
function App() {
const storageLocale = window.localStorage.getItem('locale');
if (storageLocale == null) {
window.localStorage.setItem('locale', Cluar.currentLanguage().locale);
} else {
Cluar.changeLanguage(storageLocale);
}
const routes = [];
for (const language of Cluar.languages()) {
if (!Cluar.pages()[language.code]) {
continue;
}
const subroutes = [];
for (const page of Cluar.pages()[language.code]) {
subroutes.push(
<Route key={`/${language.locale}${page.link}`} path={`/${language.locale}${page.link}`} exact element={<Builder page={page} />} />
);
}
routes.push(
<Route key={`/${language.locale}/`} path={`/${language.locale}/`}>
{subroutes}
</Route>
);
}
return (
<BrowserRouter>
{ Cluar.isGAEnabled() && <Route component={Analytics} />}
<div className="page">
<Layout>
<BaseHeader />
<Content>
<Routes>
<Route path="/" exact element={<Navigate to={`/${Cluar.currentLanguage().locale}/`} />} />
{routes}
<Route element={<NotFound />} />
</Routes>
</Content>
<BaseFooter />
<BaseCookies />
</Layout>
</div>
</BrowserRouter>
);
}
export default App;