frontPanel/src/index.tsx

82 lines
2.5 KiB
TypeScript
Raw Normal View History

2024-02-20 08:04:32 +00:00
import { CssBaseline, ThemeProvider, Button } from "@mui/material";
2023-10-09 12:33:45 +00:00
import { LocalizationProvider } from "@mui/x-date-pickers";
2024-05-17 02:52:53 +00:00
import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment";
2023-12-31 02:53:25 +00:00
import { ruRU } from "@mui/x-date-pickers/locales";
2023-11-08 12:51:40 +00:00
import App from "./App";
2024-02-20 08:04:32 +00:00
import { SnackbarProvider, closeSnackbar } from "notistack";
2023-11-08 12:51:40 +00:00
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
import { createRoot } from "react-dom/client";
import "./index.css";
import lightTheme from "./utils/themes/light";
2023-11-13 18:04:51 +00:00
import { SWRConfig } from "swr";
2023-12-31 02:53:25 +00:00
import { BrowserRouter } from "react-router-dom";
import moment from "moment";
2024-02-16 21:19:35 +00:00
import { polyfillCountryFlagEmojis } from "country-flag-emoji-polyfill";
2024-02-20 08:04:32 +00:00
import CloseIcon from "@icons/CloseBold";
import type { SnackbarKey } from "notistack";
2024-04-12 21:05:15 +00:00
import { CheckFastlink } from "@ui_kit/CheckFastlink";
import { ErrorBoundary } from "react-error-boundary";
import { handleComponentError } from "./utils/handleComponentError";
2023-10-09 12:33:45 +00:00
moment.locale("ru");
2024-02-16 21:19:35 +00:00
polyfillCountryFlagEmojis();
2023-12-31 02:53:25 +00:00
const localeText =
ruRU.components.MuiLocalizationProvider.defaultProps.localeText;
2023-04-23 08:39:34 +00:00
2024-02-20 08:04:32 +00:00
const snackbarAction = (snackbarId: SnackbarKey) => (
<Button
onClick={() => closeSnackbar(snackbarId)}
sx={{
minWidth: "auto",
padding: "0px",
"&:hover": { backgroundColor: "transparent" },
}}
>
<CloseIcon />
</Button>
);
const ApologyPage = () => <div><p>Что-то пошло не так</p></div>
2023-08-11 07:25:28 +00:00
const root = createRoot(document.getElementById("root")!);
root.render(
2023-12-31 02:53:25 +00:00
<SWRConfig
value={{
revalidateOnFocus: false,
shouldRetryOnError: false,
}}
>
<DndProvider backend={HTML5Backend}>
<LocalizationProvider
2024-05-17 02:52:53 +00:00
dateAdapter={AdapterMoment}
2023-12-31 02:53:25 +00:00
adapterLocale="ru"
localeText={localeText}
>
<ThemeProvider theme={lightTheme}>
<BrowserRouter>
<SnackbarProvider
2024-02-20 08:10:03 +00:00
SnackbarProps={{ onTouchStart: () => closeSnackbar() }}
2024-02-20 08:04:32 +00:00
action={snackbarAction}
2023-12-31 02:53:25 +00:00
preventDuplicate={true}
style={{ backgroundColor: lightTheme.palette.brightPurple.main }}
>
<CssBaseline />
<ErrorBoundary
FallbackComponent={ApologyPage}
onError={handleComponentError}
>
<App />
</ErrorBoundary>
2024-04-12 21:05:15 +00:00
<CheckFastlink />
2023-12-31 02:53:25 +00:00
</SnackbarProvider>
</BrowserRouter>
</ThemeProvider>
</LocalizationProvider>
</DndProvider>
</SWRConfig>,
2022-12-03 21:37:21 +00:00
);