zhejiushizhuce %!s(int64=2) %!d(string=hai) anos
achega
b23e4f97ca
Modificáronse 100 ficheiros con 611 adicións e 0 borrados
  1. 25 0
      .gitignore
  2. 121 0
      README.md
  3. 7 0
      babel-plugin-macros.config.js
  4. 23 0
      craco.config.js
  5. 23 0
      jsconfig.json
  6. 104 0
      package.json
  7. BIN=BIN
      public/favicon.ico
  8. 17 0
      public/index.html
  9. 3 0
      public/robots.txt
  10. 199 0
      src/App.js
  11. 2 0
      src/Global.js
  12. 5 0
      src/api/config.js
  13. 69 0
      src/api/request.js
  14. 10 0
      src/app/store.js
  15. BIN=BIN
      src/assets/404dark.webp
  16. BIN=BIN
      src/assets/404light.webp
  17. BIN=BIN
      src/assets/activity/quests.png
  18. BIN=BIN
      src/assets/activity/rio_refer.png
  19. BIN=BIN
      src/assets/activity/rio_refer_f.png
  20. BIN=BIN
      src/assets/activity/spin_1.png
  21. BIN=BIN
      src/assets/activity/spin_2.png
  22. BIN=BIN
      src/assets/activity/spin_3.png
  23. 0 0
      src/assets/auth_shapes.json
  24. BIN=BIN
      src/assets/avatars/1.webp
  25. BIN=BIN
      src/assets/avatars/2.webp
  26. BIN=BIN
      src/assets/avatars/3.webp
  27. BIN=BIN
      src/assets/avatars/4.webp
  28. BIN=BIN
      src/assets/avatars/5.webp
  29. 0 0
      src/assets/ball.json
  30. BIN=BIN
      src/assets/ball.webp
  31. 3 0
      src/assets/bar.svg
  32. BIN=BIN
      src/assets/brand/1.webp
  33. BIN=BIN
      src/assets/brand/10.webp
  34. BIN=BIN
      src/assets/brand/2.webp
  35. BIN=BIN
      src/assets/brand/3.webp
  36. BIN=BIN
      src/assets/brand/4.webp
  37. BIN=BIN
      src/assets/brand/5.webp
  38. BIN=BIN
      src/assets/brand/6.webp
  39. BIN=BIN
      src/assets/brand/7.webp
  40. BIN=BIN
      src/assets/brand/8.webp
  41. BIN=BIN
      src/assets/brand/9.webp
  42. BIN=BIN
      src/assets/cart/1.webp
  43. BIN=BIN
      src/assets/cart/2.webp
  44. BIN=BIN
      src/assets/cart/3.webp
  45. BIN=BIN
      src/assets/cart/4.webp
  46. BIN=BIN
      src/assets/cart/5.webp
  47. BIN=BIN
      src/assets/cart/6.webp
  48. BIN=BIN
      src/assets/celtic/1.webp
  49. BIN=BIN
      src/assets/celtic/10.webp
  50. BIN=BIN
      src/assets/celtic/18.webp
  51. BIN=BIN
      src/assets/celtic/2.webp
  52. BIN=BIN
      src/assets/celtic/21.webp
  53. BIN=BIN
      src/assets/celtic/22.webp
  54. BIN=BIN
      src/assets/celtic/3.webp
  55. BIN=BIN
      src/assets/celtic/4.webp
  56. BIN=BIN
      src/assets/celtic/6.webp
  57. BIN=BIN
      src/assets/celtic/7.webp
  58. BIN=BIN
      src/assets/celtic/8.webp
  59. BIN=BIN
      src/assets/clubs/arsenal.webp
  60. BIN=BIN
      src/assets/clubs/asmonaco.webp
  61. BIN=BIN
      src/assets/clubs/asse.webp
  62. BIN=BIN
      src/assets/clubs/atalanta.webp
  63. BIN=BIN
      src/assets/clubs/athleticbilbao.webp
  64. BIN=BIN
      src/assets/clubs/atletico.webp
  65. BIN=BIN
      src/assets/clubs/barcelona.webp
  66. BIN=BIN
      src/assets/clubs/bayer.webp
  67. BIN=BIN
      src/assets/clubs/bayern.webp
  68. BIN=BIN
      src/assets/clubs/bordeaux.webp
  69. BIN=BIN
      src/assets/clubs/bundesliga.webp
  70. BIN=BIN
      src/assets/clubs/bvb.webp
  71. BIN=BIN
      src/assets/clubs/celtavigo.webp
  72. BIN=BIN
      src/assets/clubs/chelsea.webp
  73. BIN=BIN
      src/assets/clubs/eintracht.webp
  74. BIN=BIN
      src/assets/clubs/english_premier.webp
  75. BIN=BIN
      src/assets/clubs/everton.webp
  76. BIN=BIN
      src/assets/clubs/fiorentina.webp
  77. BIN=BIN
      src/assets/clubs/hamburger.webp
  78. BIN=BIN
      src/assets/clubs/hertha.webp
  79. BIN=BIN
      src/assets/clubs/juventus.webp
  80. BIN=BIN
      src/assets/clubs/koln.webp
  81. BIN=BIN
      src/assets/clubs/lacoruna.webp
  82. BIN=BIN
      src/assets/clubs/lazio.webp
  83. BIN=BIN
      src/assets/clubs/leeds.webp
  84. BIN=BIN
      src/assets/clubs/leicester.webp
  85. BIN=BIN
      src/assets/clubs/lille.webp
  86. BIN=BIN
      src/assets/clubs/liverpool.webp
  87. BIN=BIN
      src/assets/clubs/lyon.webp
  88. BIN=BIN
      src/assets/clubs/manchester.webp
  89. BIN=BIN
      src/assets/clubs/manchester_united.webp
  90. BIN=BIN
      src/assets/clubs/mhsc.webp
  91. BIN=BIN
      src/assets/clubs/milan.webp
  92. BIN=BIN
      src/assets/clubs/milano.webp
  93. BIN=BIN
      src/assets/clubs/nantes.webp
  94. BIN=BIN
      src/assets/clubs/napoli.webp
  95. BIN=BIN
      src/assets/clubs/newcastle.webp
  96. BIN=BIN
      src/assets/clubs/nice.webp
  97. BIN=BIN
      src/assets/clubs/olympique.webp
  98. BIN=BIN
      src/assets/clubs/psg.webp
  99. BIN=BIN
      src/assets/clubs/realbetis.webp
  100. BIN=BIN
      src/assets/clubs/realmadrid.webp

+ 25 - 0
.gitignore

@@ -0,0 +1,25 @@
+.DS_Store
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+build
+yarn.lock

+ 121 - 0
README.md

@@ -0,0 +1,121 @@
+## Getting started
+
+#### Developed with:
+
+- [React](https://reactjs.org/) - 18.2.0
+- [Node.js](https://nodejs.org/en/) - 18.12.1
+
+First, install the dependencies using `npm install --legacy-peer-deps` or `yarn install`.
+
+Then, run the development server:
+
+```bash
+yarn start
+# OR
+npm run start
+```
+
+Then, open [http://localhost:3000](http://localhost:3000) with your browser to see the result (if it doesn't open automatically).
+
+You can start editing pages or components. The page auto-updates as you edit and save a file.
+
+To avoid any issues, please make sure you have the latest stable version of [Node.js](https://nodejs.org/en/) installed.
+
+If you need to have multiple versions of Node.js installed, you can use [nvm](https://github.com/nvm-sh/nvm).
+
+### List of available scripts:
+
+Liga Dashboard Template is based on [Create-React-App](https://create-react-app.dev) template.
+
+### `start`
+
+Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
+
+The page will reload when you make changes.\
+You may also see any lint errors in the console.
+
+### `build`
+
+Builds the app for production to the `build` folder.\
+It correctly bundles React in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.
+
+### `gzip`
+
+Builds the app for production to the `build` folder and compresses it with gzip and brotli.\
+If your server is configured to serve pre-compressed files, you can use this command to reduce the transfer size up to 70%.
+
+### `eject`
+
+**Note: this is a one-way operation. Once you `eject`, you can't go back!**
+
+If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
+
+Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them.
+
+### How to customize icon font
+
+You can import *selection.json* located in `src/fonts/icomoon` back to the [IcoMoon app](https://icomoon.io/app) using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve icon selection.
+
+### How to use Google Analytics
+
+To use Google Analytics, you need to create a new project in [Google Analytics](https://analytics.google.com/analytics/web/) and get the tracking ID.
+
+Then, create a new file called *.env.local* in the root directory of your project and add the following line to it:
+
+```bash
+REACT_APP_PUBLIC_GA=YOUR_TRACKING_ID
+```
+
+------
+
+## File structure
+
+    .
+    ├── public                  # static files
+    │   ├── favicon.ico
+    │   ├── index.html          # main HTML file
+    │   ├── robots.txt
+    ├── src                     # source files
+    │   ├── app                 # redux store
+    │   ├── assets              # static assets
+    │   ├── components          # reusable components shared across the app
+    │   ├── constants           
+    │   ├── contexts            # context providers
+    │   ├── db                  # fake database
+    │   ├── features            # redux features (slices)
+    │   ├── fonts               
+    │   ├── hooks               # custom hooks
+    │   ├── layout              # main layout components (header, sidebar, etc.)
+    │   ├── pages               
+    │   ├── styles              # global styles
+    │   ├── ui                  # reusable UI components
+    │   ├── utils               # helper functions
+    │   ├── widgets             # reusable widgets
+    │   ├── App.js              # main app component
+    │   ├── index.js            # app entry point
+    │   ├── layouts.js          # layout object for react-grid-layout
+    │   ├── style.scss          # global app styles
+    ├── .htaccess                       # htaccess file for Apache server
+    ├── babel-plugin-macros.config.js   # babel macros config (for styled-components)
+    ├── craco.config.js                 # custom CRA config
+    ├── jsconfig.json                   # jsconfig for IDE
+    ├── package.json            
+
+## Third-party libraries
+
+- [React-spring](https://www.react-spring.io/) - animation library
+- [Recharts](http://recharts.org/en-US/) - charts
+- [React-select](https://react-select.com/home)
+- [Swiper](https://swiperjs.com/react) - slider
+- [React-toastify](https://fkhadra.github.io/react-toastify/introduction) - toast notifications
+- [MUI](https://mui.com/) - material ui components
+- [styled-components](https://styled-components.com/) - css-in-js
+- [dnd-kit](https://dndkit.com/) - drag and drop
+- [React Redux](https://react-redux.js.org/) - state management
+- [React Router](https://reactrouter.com/) - routing
+- [React Grid Layout](https://react-grid-layout.github.io/react-grid-layout/examples/0-showcase.html) - layout
+- [React Hook Form](https://react-hook-form.com/) - form validation
+- [React Big Calendar](http://jquense.github.io/react-big-calendar/examples/index.html) - scheduler

+ 7 - 0
babel-plugin-macros.config.js

@@ -0,0 +1,7 @@
+const isDev = process.env.NODE_ENV !== 'production';
+module.exports = {
+    styledComponents: {
+        fileName: isDev,
+        displayName: isDev
+    }
+}

+ 23 - 0
craco.config.js

@@ -0,0 +1,23 @@
+const path = require('path');
+
+module.exports = {
+    webpack: {
+        alias: {
+            '@components': path.resolve(__dirname, 'src/components'),
+            '@ui': path.resolve(__dirname, 'src/ui'),
+            '@pages': path.resolve(__dirname, 'src/pages'),
+            '@assets': path.resolve(__dirname, 'src/assets'),
+            '@styles': path.resolve(__dirname, 'src/styles'),
+            '@db': path.resolve(__dirname, 'src/db'),
+            '@hooks': path.resolve(__dirname, 'src/hooks'),
+            '@layout': path.resolve(__dirname, 'src/layout'),
+            '@fonts': path.resolve(__dirname, 'src/fonts'),
+            '@utils': path.resolve(__dirname, 'src/utils'),
+            '@widgets': path.resolve(__dirname, 'src/widgets'),
+            '@contexts': path.resolve(__dirname, 'src/contexts'),
+            '@constants': path.resolve(__dirname, 'src/constants'),
+            '@features': path.resolve(__dirname, 'src/features'),
+            '@api':path.resolve(__dirname,'src/api'),
+        },
+    }
+};

+ 23 - 0
jsconfig.json

@@ -0,0 +1,23 @@
+{
+    "compilerOptions": {
+        "jsx": "react",
+        "baseUrl": "./src",
+        "paths": {
+            "@components/*": [ "components/*"],
+            "@ui/*": [ "ui/*" ],
+            "@pages/*": [ "pages/*" ],
+            "@assets/*": [ "assets/*" ],
+            "@styles/*": [ "styles/*" ],
+            "@db/*": [ "db/*" ],
+            "@hooks/*": [ "hooks/*" ],
+            "@layout/*": [ "layout/*" ],
+            "@fonts/*": [ "fonts/*" ],
+            "@utils/*": [ "utils/*" ],
+            "@widgets/*": [ "widgets/*" ],
+            "@contexts/*": [ "contexts/*" ],
+            "@constants/*": [ "constants/*" ],
+            "@features/*": [ "features/*" ],
+            "@api/*": ["api/*"]
+        }
+    }
+}

+ 104 - 0
package.json

@@ -0,0 +1,104 @@
+{
+  "name": "liga-soccer",
+  "version": "1.0.2",
+  "private": true,
+  "author": "merkulove <hello@merkulov.design> (https://1.envato.market/tf-merkulove)",
+  "contributors": [
+    {
+      "name": "Lilit L.",
+      "email": "lilit@merkulov.design"
+    }
+  ],
+  "copyright": "Merkulove ( https://merkulov.design/ ). All rights reserved.",
+  "support": "help@merkulov.design",
+  "license": "Envato License https://1.envato.market/KYbje",
+  "dependencies": {
+    "@dnd-kit/core": "^6.0.8",
+    "@dnd-kit/modifiers": "^6.0.1",
+    "@dnd-kit/sortable": "^7.0.2",
+    "@dnd-kit/utilities": "^3.2.1",
+    "@emotion/cache": "^11.10.5",
+    "@emotion/react": "^11.10.6",
+    "@emotion/styled": "^11.10.5",
+    "@loadable/component": "^5.15.3",
+    "@mui/base": "^5.0.0-beta.19",
+    "@mui/material": "^5.11.4",
+    "@mui/styled-engine-sc": "^5.11.0",
+    "@react-spring/web": "^9.7.1",
+    "@reduxjs/toolkit": "^1.9.3",
+    "@tanstack/react-table": "^8.7.9",
+    "axios": "^1.6.7",
+    "classnames": "^2.3.2",
+    "country-state-city": "^3.1.2",
+    "craco": "^0.0.3",
+    "dayjs": "^1.11.7",
+    "i18next": "^23.8.2",
+    "i18next-browser-languagedetector": "^7.2.0",
+    "lottie-react": "^2.4.0",
+    "moment": "^2.29.4",
+    "nanoid": "^4.0.1",
+    "prop-types": "^15.8.1",
+    "query-string": "^9.0.0",
+    "react": "^18.2.0",
+    "react-big-calendar": "^1.6.8",
+    "react-calendar": "^4.0.0",
+    "react-countup": "^6.4.1",
+    "react-dom": "^18.2.0",
+    "react-ga4": "^2.1.0",
+    "react-grid-layout": "^1.3.4",
+    "react-headroom": "^3.2.1",
+    "react-helmet": "^6.1.0",
+    "react-hook-form": "^7.43.3",
+    "react-i18next": "^14.0.5",
+    "react-intersection-observer": "^9.4.3",
+    "react-lazy-load-image-component": "^1.5.6",
+    "react-number-format": "^5.1.4",
+    "react-redux": "^8.0.5",
+    "react-router-dom": "^6.6.2",
+    "react-scripts": "5.0.1",
+    "react-select": "^5.7.0",
+    "react-select-country-list": "^2.2.3",
+    "react-sizeme": "^3.0.2",
+    "react-stickynode": "^4.1.0",
+    "react-toastify": "^9.1.1",
+    "react-truncate": "^2.4.0",
+    "react-use": "^17.4.0",
+    "react-use-measure": "^2.1.1",
+    "recharts": "^2.4.3",
+    "rtl-detect": "^1.0.4",
+    "sass": "^1.57.1",
+    "styled-components": "^5.3.6",
+    "styled-theming": "^2.2.0",
+    "stylis-plugin-rtl": "^2.1.1",
+    "swiper": "^8.4.6",
+    "use-gauge": "^0.5.0",
+    "use-mobile-detect-hook": "^1.0.5"
+  },
+  "scripts": {
+    "start": "craco start",
+    "build": "craco build",
+    "gzip": "craco build && compress-cra",
+    "eject": "react-scripts eject"
+  },
+  "eslintConfig": {
+    "extends": [
+      "react-app",
+      "react-app/jest"
+    ]
+  },
+  "browserslist": {
+    "production": [
+      ">0.2%",
+      "not dead",
+      "not op_mini all"
+    ],
+    "development": [
+      "last 1 chrome version",
+      "last 1 firefox version",
+      "last 1 safari version"
+    ]
+  },
+  "devDependencies": {
+    "compress-create-react-app": "^1.3.1"
+  }
+}

BIN=BIN
public/favicon.ico


+ 17 - 0
public/index.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <title>Liga Soccer React Dashboard Template</title>
+    <link rel="preconnect" href="https://fonts.googleapis.com">
+    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&family=Open+Sans:wght@400;600;700&display=swap" rel="stylesheet">
+    <meta name="description" content="Elevate your soccer management with Liga Soccer React Dashboard! Featuring live data, customizable widgets, and intuitive charts, our dashboard empowers you to effectively monitor player stats, team performance, and match schedules.">
+  </head>
+  <body>
+    <noscript>You need to enable JavaScript to run this app.</noscript>
+    <div id="root"></div>
+  </body>
+</html>

+ 3 - 0
public/robots.txt

@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:

+ 199 - 0
src/App.js

@@ -0,0 +1,199 @@
+
+// GA
+import ReactGA from 'react-ga4';
+
+// utils
+import {lazy, Suspense} from 'react';
+
+// styles
+import ThemeStyles from '@styles/theme';
+import './style.scss';
+
+// libs styles
+import 'react-toastify/dist/ReactToastify.min.css';
+import 'react-grid-layout/css/styles.css';
+import 'swiper/css';
+import 'swiper/css/effect-fade';
+import 'swiper/css/pagination';
+
+// fonts
+import '@fonts/icomoon/icomoon.woff';
+
+// contexts
+import {SidebarProvider, useSidebar} from '@contexts/sidebarContext';
+import {ThemeProvider} from 'styled-components';
+
+// hooks
+import {useThemeProvider} from '@contexts/themeContext';
+import {useEffect, useRef} from 'react';
+import {useWindowSize} from 'react-use';
+import useAuthRoute from '@hooks/useAuthRoute';
+
+// utils
+import {StyleSheetManager} from 'styled-components';
+import {ThemeProvider as MuiThemeProvider, createTheme} from '@mui/material/styles';
+import {preventDefault} from '@utils/helpers';
+import rtlPlugin from 'stylis-plugin-rtl';
+import {CacheProvider} from '@emotion/react';
+import createCache from '@emotion/cache';
+
+// components
+import {BrowserRouter, HashRouter, Route, Routes, useLocation} from 'react-router-dom';
+import {ToastContainer} from 'react-toastify';
+import LoadingScreen from '@components/LoadingScreen';
+import Sidebar from '@layout/Sidebar';
+import BottomNav from '@layout/BottomNav';
+import Navbar from '@layout/Navbar';
+import ShoppingCart from '@widgets/ShoppingCart';
+import ScrollToTop from '@components/ScrollToTop';
+import AppContainer from "@layout/AppContainer";
+import {APP_ROUTES} from "@api/config";
+import Http from "@api/request";
+import Layout from "@layout/Layout";
+
+// pages
+const ClubSummary = lazy(() => import('@pages/ClubSummary'));
+const GameSummary = lazy(() => import('@pages/GameSummary'));
+const Championships = lazy(() => import('@pages/Championships'));
+const LeagueOverview = lazy(() => import('@pages/LeagueOverview'));
+const FansCommunity = lazy(() => import('@pages/FansCommunity'));
+const Statistics = lazy(() => import('@pages/Statistics'));
+const PageNotFound = lazy(() => import('@pages/PageNotFound'));
+const MatchSummary = lazy(() => import('@pages/MatchSummary'));
+const MatchOverview = lazy(() => import('@pages/MatchOverview'));
+const PlayerProfile = lazy(() => import('@pages/PlayerProfile'));
+const Schedule = lazy(() => import('@pages/Schedule'));
+const Tickets = lazy(() => import('@pages/Tickets'));
+const FootballStore = lazy(() => import('@pages/FootballStore'));
+const BrandStore = lazy(() => import('@pages/BrandStore'));
+const Product = lazy(() => import('@pages/Product'));
+const Login = lazy(() => import('@pages/Login'));
+const SignUp = lazy(() => import('@pages/SignUp'));
+const Settings = lazy(() => import('@pages/Settings'));
+
+const App = () => {
+    const appRef = useRef(null);
+    const {theme, direction} = useThemeProvider();
+    const {width} = useWindowSize();
+    // const isAuthRoute = useAuthRoute();
+    const isAuthRoute = false;
+    const {pathname, search, hash} = useLocation();
+    // Google Analytics init
+    const gaKey = process.env.REACT_APP_PUBLIC_GA;
+    gaKey && ReactGA.initialize(gaKey);
+
+    // auto RTL support for Material-UI components and styled-components
+
+    const plugins = direction === 'rtl' ? [rtlPlugin] : [];
+
+    const muiTheme = createTheme({
+        direction: direction,
+    });
+
+    const cacheRtl = createCache({
+        key: 'css-rtl',
+        stylisPlugins: plugins,
+    });
+
+    useEffect(() => {
+        // scroll to top on route change
+        appRef.current && appRef.current.scrollTo(0, 0);
+        preventDefault();
+    }, []);
+    // return (
+    //     <CacheProvider value={cacheRtl}>
+    //         <MuiThemeProvider theme={muiTheme}>
+    //             <SidebarProvider>
+    //                 <ThemeProvider theme={{theme: theme}}>
+    //                     <ThemeStyles/>
+    //                     <ToastContainer theme={theme} autoClose={2500}
+    //                                     position={direction === 'ltr' ? 'top-right' : 'top-left'}/>
+    //                     <StyleSheetManager stylisPlugins={plugins}>
+    //                         <div className={`app ${isAuthRoute ? 'fluid' : ''}`} ref={appRef}>
+    //                             <ScrollToTop/>
+    //                             {
+    //                                 !isAuthRoute && (
+    //                                     <>
+    //                                         <Sidebar/>
+    //                                         <Navbar/>
+    //                                         {
+    //                                             // width < 768 && <Navbar/>
+    //                                         }
+    //                                         {
+    //                                             width < 768 && <BottomNav/>
+    //                                         }
+    //                                     </>
+    //                                 )
+    //                             }
+    //                             {/*<div className={`app_container ${true?'sidebar-open':'sidebar-close'}`}>*/}
+    //                             <AppContainer>
+    //                                 <div className="app_container-content d-flex flex-column flex-1">
+    //                                     <Suspense fallback={<LoadingScreen/>}>
+    //                                         <Routes>
+    //                                             <Route path="*" element={<PageNotFound/>}/>
+    //                                             <Route path="/" element={<ClubSummary/>}/>
+    //                                             <Route path="/game-summary" element={<GameSummary/>}/>
+    //                                             <Route path="/championships" element={<Championships/>}/>
+    //                                             <Route path="/league-overview" element={<LeagueOverview/>}/>
+    //                                             <Route path="/fans-community" element={<FansCommunity/>}/>
+    //                                             <Route path="/statistics" element={<Statistics/>}/>
+    //                                             <Route path="/match-summary" element={<MatchSummary/>}/>
+    //                                             <Route path="/match-overview" element={<MatchOverview/>}/>
+    //                                             <Route path="/player-profile" element={<PlayerProfile/>}/>
+    //                                             <Route path="/schedule" element={<Schedule/>}/>
+    //                                             <Route path="/tickets" element={<Tickets/>}/>
+    //                                             <Route path="/football-store" element={<FootballStore/>}/>
+    //                                             <Route path="/brand-store" element={<BrandStore/>}/>
+    //                                             <Route path="/product" element={<Product/>}/>
+    //                                         </Routes>
+    //                                         {
+    //                                             hash != '' ? (
+    //                                                 <Routes location={{
+    //                                                     pathname: (pathname + hash),
+    //                                                     search: search,
+    //                                                     hash: hash
+    //                                                 }}>
+    //                                                     <Route path={`${pathname}#/settings`} element={<div style={{
+    //                                                         backgroundColor: '#fff',
+    //                                                         zIndex: 2000,
+    //                                                         position: "fixed",
+    //                                                         width: '100px',
+    //                                                         height: '100px'
+    //                                                     }}/>}/>
+    //                                                     <Route path={`${pathname}#/sign-up`} element={<MatchSummary/>}/>
+    //                                                 </Routes>
+    //                                             ) : (<></>)
+    //                                         }
+    //
+    //                                     </Suspense>
+    //
+    //                                 </div>
+    //                                 {/*</div>*/}
+    //                             </AppContainer>
+    //                             <ShoppingCart isPopup/>
+    //                         </div>
+    //                     </StyleSheetManager>
+    //                 </ThemeProvider>
+    //             </SidebarProvider>
+    //         </MuiThemeProvider>
+    //     </CacheProvider>
+    // );
+    return (
+        <CacheProvider value={cacheRtl}>
+            <MuiThemeProvider theme={muiTheme}>
+                <SidebarProvider>
+                    <ThemeProvider theme={{theme: theme}}>
+                        <ThemeStyles/>
+                        <ToastContainer theme={theme} autoClose={2500}
+                                        position={direction === 'ltr' ? 'top-right' : 'top-left'}/>
+                        <StyleSheetManager stylisPlugins={plugins}>
+                            <Layout />
+                        </StyleSheetManager>
+                    </ThemeProvider>
+                </SidebarProvider>
+            </MuiThemeProvider>
+        </CacheProvider>
+    );
+}
+
+export default App

+ 2 - 0
src/Global.js

@@ -0,0 +1,2 @@
+import i18n from './locales/index';
+global.i18n=i18n;

+ 5 - 0
src/api/config.js

@@ -0,0 +1,5 @@
+// export const BASE_API="https://api.24680.com/";
+export const BASE_API="http://localhost:8899/";
+// export const APP_ROUTES="routes";
+export const APP_ROUTES="mobile/testHttp";
+

+ 69 - 0
src/api/request.js

@@ -0,0 +1,69 @@
+
+// Create axios instance
+import {BASE_API} from "./config";
+import axios from "axios";
+
+const service = axios.create({
+    baseURL: BASE_API,
+    timeout: 10000, // Request timeout
+});
+
+// Request intercepter
+service.interceptors.request.use(
+    config => {
+        return config;
+    },
+    error => {
+        // Do something with request error
+        // console.log(error); // for debug
+        Promise.reject(error);
+    }
+);
+
+// response pre-processing
+service.interceptors.response.use(
+    response => {
+
+        return response.data;
+    },
+    error => {
+        let message = error.message;
+        // console.log(error);
+
+        return Promise.reject(error);
+    }
+);
+
+
+const get=(params={})=>{
+    return service({
+        method: 'get',
+        ...params
+    });
+}
+const post=(params={})=>{
+
+    return service({
+        method: 'post',
+        ...params
+    });
+}
+const put=(params={})=>{
+    return service({
+        method: 'put',
+        ...params
+    });
+}
+const adelete=(params={})=>{
+    return service({
+        method: 'delete',
+        ...params
+    });
+}
+const Http={
+    get,
+    post,
+    put,
+    delete:adelete
+}
+export default Http;

+ 10 - 0
src/app/store.js

@@ -0,0 +1,10 @@
+import {configureStore} from '@reduxjs/toolkit';
+import TodosReducer from '../features/todos/todosSlice';
+import MainReducer from '@features/mainSlice';
+
+export default configureStore({
+    reducer: {
+        todos: TodosReducer,
+        main:MainReducer,
+    }
+});

BIN=BIN
src/assets/404dark.webp


BIN=BIN
src/assets/404light.webp


BIN=BIN
src/assets/activity/quests.png


BIN=BIN
src/assets/activity/rio_refer.png


BIN=BIN
src/assets/activity/rio_refer_f.png


BIN=BIN
src/assets/activity/spin_1.png


BIN=BIN
src/assets/activity/spin_2.png


BIN=BIN
src/assets/activity/spin_3.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
src/assets/auth_shapes.json


BIN=BIN
src/assets/avatars/1.webp


BIN=BIN
src/assets/avatars/2.webp


BIN=BIN
src/assets/avatars/3.webp


BIN=BIN
src/assets/avatars/4.webp


BIN=BIN
src/assets/avatars/5.webp


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
src/assets/ball.json


BIN=BIN
src/assets/ball.webp


+ 3 - 0
src/assets/bar.svg

@@ -0,0 +1,3 @@
+<svg width="53" height="6" viewBox="0 0 53 6" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.25" width="52.3333" height="6" rx="2" fill="currentColor"/>
+</svg>

BIN=BIN
src/assets/brand/1.webp


BIN=BIN
src/assets/brand/10.webp


BIN=BIN
src/assets/brand/2.webp


BIN=BIN
src/assets/brand/3.webp


BIN=BIN
src/assets/brand/4.webp


BIN=BIN
src/assets/brand/5.webp


BIN=BIN
src/assets/brand/6.webp


BIN=BIN
src/assets/brand/7.webp


BIN=BIN
src/assets/brand/8.webp


BIN=BIN
src/assets/brand/9.webp


BIN=BIN
src/assets/cart/1.webp


BIN=BIN
src/assets/cart/2.webp


BIN=BIN
src/assets/cart/3.webp


BIN=BIN
src/assets/cart/4.webp


BIN=BIN
src/assets/cart/5.webp


BIN=BIN
src/assets/cart/6.webp


BIN=BIN
src/assets/celtic/1.webp


BIN=BIN
src/assets/celtic/10.webp


BIN=BIN
src/assets/celtic/18.webp


BIN=BIN
src/assets/celtic/2.webp


BIN=BIN
src/assets/celtic/21.webp


BIN=BIN
src/assets/celtic/22.webp


BIN=BIN
src/assets/celtic/3.webp


BIN=BIN
src/assets/celtic/4.webp


BIN=BIN
src/assets/celtic/6.webp


BIN=BIN
src/assets/celtic/7.webp


BIN=BIN
src/assets/celtic/8.webp


BIN=BIN
src/assets/clubs/arsenal.webp


BIN=BIN
src/assets/clubs/asmonaco.webp


BIN=BIN
src/assets/clubs/asse.webp


BIN=BIN
src/assets/clubs/atalanta.webp


BIN=BIN
src/assets/clubs/athleticbilbao.webp


BIN=BIN
src/assets/clubs/atletico.webp


BIN=BIN
src/assets/clubs/barcelona.webp


BIN=BIN
src/assets/clubs/bayer.webp


BIN=BIN
src/assets/clubs/bayern.webp


BIN=BIN
src/assets/clubs/bordeaux.webp


BIN=BIN
src/assets/clubs/bundesliga.webp


BIN=BIN
src/assets/clubs/bvb.webp


BIN=BIN
src/assets/clubs/celtavigo.webp


BIN=BIN
src/assets/clubs/chelsea.webp


BIN=BIN
src/assets/clubs/eintracht.webp


BIN=BIN
src/assets/clubs/english_premier.webp


BIN=BIN
src/assets/clubs/everton.webp


BIN=BIN
src/assets/clubs/fiorentina.webp


BIN=BIN
src/assets/clubs/hamburger.webp


BIN=BIN
src/assets/clubs/hertha.webp


BIN=BIN
src/assets/clubs/juventus.webp


BIN=BIN
src/assets/clubs/koln.webp


BIN=BIN
src/assets/clubs/lacoruna.webp


BIN=BIN
src/assets/clubs/lazio.webp


BIN=BIN
src/assets/clubs/leeds.webp


BIN=BIN
src/assets/clubs/leicester.webp


BIN=BIN
src/assets/clubs/lille.webp


BIN=BIN
src/assets/clubs/liverpool.webp


BIN=BIN
src/assets/clubs/lyon.webp


BIN=BIN
src/assets/clubs/manchester.webp


BIN=BIN
src/assets/clubs/manchester_united.webp


BIN=BIN
src/assets/clubs/mhsc.webp


BIN=BIN
src/assets/clubs/milan.webp


BIN=BIN
src/assets/clubs/milano.webp


BIN=BIN
src/assets/clubs/nantes.webp


BIN=BIN
src/assets/clubs/napoli.webp


BIN=BIN
src/assets/clubs/newcastle.webp


BIN=BIN
src/assets/clubs/nice.webp


BIN=BIN
src/assets/clubs/olympique.webp


BIN=BIN
src/assets/clubs/psg.webp


BIN=BIN
src/assets/clubs/realbetis.webp


BIN=BIN
src/assets/clubs/realmadrid.webp


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio