diff --git a/package-lock.json b/package-lock.json
index 4082a1b..47beec0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,7 +23,8 @@
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-i18next": "15.6.1",
- "react-number-format": "5.4.4"
+ "react-number-format": "5.4.4",
+ "react-router": "^7.7.1"
},
"devDependencies": {
"@eslint/js": "^9.30.1",
@@ -2526,6 +2527,15 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"license": "MIT"
},
+ "node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/cosmiconfig": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
@@ -4000,6 +4010,28 @@
"react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
+ "node_modules/react-router": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.7.1.tgz",
+ "integrity": "sha512-jVKHXoWRIsD/qS6lvGveckwb862EekvapdHJN/cGmzw40KnJH5gg53ujOJ4qX6EKIK9LSBfFed/xiQ5yeXNrUA==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie": "^1.0.1",
+ "set-cookie-parser": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
@@ -4087,6 +4119,12 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
+ "license": "MIT"
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
diff --git a/package.json b/package.json
index 6894c7f..f326154 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,8 @@
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-i18next": "15.6.1",
- "react-number-format": "5.4.4"
+ "react-number-format": "5.4.4",
+ "react-router": "^7.7.1"
},
"scripts": {
"dev": "vite",
diff --git a/src/App.jsx b/src/App.jsx
index 7d8bea5..907ff5e 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,6 +1,10 @@
import React from "react";
import { I18nextProvider } from "react-i18next";
+import {
+ createBrowserRouter,
+ RouterProvider,
+} from "react-router";
import { ThemeProvider, createTheme } from '@mui/material/styles';
import "./App.css";
@@ -32,7 +36,7 @@ const theme = createTheme({
},
});
-class App extends React.Component {
+class BaseApp extends React.Component {
componentDidCatch(error, info) {
gaErrorReport(error);
}
@@ -51,4 +55,17 @@ class App extends React.Component {
}
}
+const router = createBrowserRouter([
+ {
+ path: "/",
+ element: ,
+ },
+]);
+
+const App = () => {
+ return (
+
+ );
+};
+
export default App;