zhejiushizhuce 2 tahun lalu
melakukan
b23e4f97ca
100 mengubah file dengan 611 tambahan dan 0 penghapusan
  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. TEMPAT SAMPAH
      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. TEMPAT SAMPAH
      src/assets/404dark.webp
  16. TEMPAT SAMPAH
      src/assets/404light.webp
  17. TEMPAT SAMPAH
      src/assets/activity/quests.png
  18. TEMPAT SAMPAH
      src/assets/activity/rio_refer.png
  19. TEMPAT SAMPAH
      src/assets/activity/rio_refer_f.png
  20. TEMPAT SAMPAH
      src/assets/activity/spin_1.png
  21. TEMPAT SAMPAH
      src/assets/activity/spin_2.png
  22. TEMPAT SAMPAH
      src/assets/activity/spin_3.png
  23. 0 0
      src/assets/auth_shapes.json
  24. TEMPAT SAMPAH
      src/assets/avatars/1.webp
  25. TEMPAT SAMPAH
      src/assets/avatars/2.webp
  26. TEMPAT SAMPAH
      src/assets/avatars/3.webp
  27. TEMPAT SAMPAH
      src/assets/avatars/4.webp
  28. TEMPAT SAMPAH
      src/assets/avatars/5.webp
  29. 0 0
      src/assets/ball.json
  30. TEMPAT SAMPAH
      src/assets/ball.webp
  31. 3 0
      src/assets/bar.svg
  32. TEMPAT SAMPAH
      src/assets/brand/1.webp
  33. TEMPAT SAMPAH
      src/assets/brand/10.webp
  34. TEMPAT SAMPAH
      src/assets/brand/2.webp
  35. TEMPAT SAMPAH
      src/assets/brand/3.webp
  36. TEMPAT SAMPAH
      src/assets/brand/4.webp
  37. TEMPAT SAMPAH
      src/assets/brand/5.webp
  38. TEMPAT SAMPAH
      src/assets/brand/6.webp
  39. TEMPAT SAMPAH
      src/assets/brand/7.webp
  40. TEMPAT SAMPAH
      src/assets/brand/8.webp
  41. TEMPAT SAMPAH
      src/assets/brand/9.webp
  42. TEMPAT SAMPAH
      src/assets/cart/1.webp
  43. TEMPAT SAMPAH
      src/assets/cart/2.webp
  44. TEMPAT SAMPAH
      src/assets/cart/3.webp
  45. TEMPAT SAMPAH
      src/assets/cart/4.webp
  46. TEMPAT SAMPAH
      src/assets/cart/5.webp
  47. TEMPAT SAMPAH
      src/assets/cart/6.webp
  48. TEMPAT SAMPAH
      src/assets/celtic/1.webp
  49. TEMPAT SAMPAH
      src/assets/celtic/10.webp
  50. TEMPAT SAMPAH
      src/assets/celtic/18.webp
  51. TEMPAT SAMPAH
      src/assets/celtic/2.webp
  52. TEMPAT SAMPAH
      src/assets/celtic/21.webp
  53. TEMPAT SAMPAH
      src/assets/celtic/22.webp
  54. TEMPAT SAMPAH
      src/assets/celtic/3.webp
  55. TEMPAT SAMPAH
      src/assets/celtic/4.webp
  56. TEMPAT SAMPAH
      src/assets/celtic/6.webp
  57. TEMPAT SAMPAH
      src/assets/celtic/7.webp
  58. TEMPAT SAMPAH
      src/assets/celtic/8.webp
  59. TEMPAT SAMPAH
      src/assets/clubs/arsenal.webp
  60. TEMPAT SAMPAH
      src/assets/clubs/asmonaco.webp
  61. TEMPAT SAMPAH
      src/assets/clubs/asse.webp
  62. TEMPAT SAMPAH
      src/assets/clubs/atalanta.webp
  63. TEMPAT SAMPAH
      src/assets/clubs/athleticbilbao.webp
  64. TEMPAT SAMPAH
      src/assets/clubs/atletico.webp
  65. TEMPAT SAMPAH
      src/assets/clubs/barcelona.webp
  66. TEMPAT SAMPAH
      src/assets/clubs/bayer.webp
  67. TEMPAT SAMPAH
      src/assets/clubs/bayern.webp
  68. TEMPAT SAMPAH
      src/assets/clubs/bordeaux.webp
  69. TEMPAT SAMPAH
      src/assets/clubs/bundesliga.webp
  70. TEMPAT SAMPAH
      src/assets/clubs/bvb.webp
  71. TEMPAT SAMPAH
      src/assets/clubs/celtavigo.webp
  72. TEMPAT SAMPAH
      src/assets/clubs/chelsea.webp
  73. TEMPAT SAMPAH
      src/assets/clubs/eintracht.webp
  74. TEMPAT SAMPAH
      src/assets/clubs/english_premier.webp
  75. TEMPAT SAMPAH
      src/assets/clubs/everton.webp
  76. TEMPAT SAMPAH
      src/assets/clubs/fiorentina.webp
  77. TEMPAT SAMPAH
      src/assets/clubs/hamburger.webp
  78. TEMPAT SAMPAH
      src/assets/clubs/hertha.webp
  79. TEMPAT SAMPAH
      src/assets/clubs/juventus.webp
  80. TEMPAT SAMPAH
      src/assets/clubs/koln.webp
  81. TEMPAT SAMPAH
      src/assets/clubs/lacoruna.webp
  82. TEMPAT SAMPAH
      src/assets/clubs/lazio.webp
  83. TEMPAT SAMPAH
      src/assets/clubs/leeds.webp
  84. TEMPAT SAMPAH
      src/assets/clubs/leicester.webp
  85. TEMPAT SAMPAH
      src/assets/clubs/lille.webp
  86. TEMPAT SAMPAH
      src/assets/clubs/liverpool.webp
  87. TEMPAT SAMPAH
      src/assets/clubs/lyon.webp
  88. TEMPAT SAMPAH
      src/assets/clubs/manchester.webp
  89. TEMPAT SAMPAH
      src/assets/clubs/manchester_united.webp
  90. TEMPAT SAMPAH
      src/assets/clubs/mhsc.webp
  91. TEMPAT SAMPAH
      src/assets/clubs/milan.webp
  92. TEMPAT SAMPAH
      src/assets/clubs/milano.webp
  93. TEMPAT SAMPAH
      src/assets/clubs/nantes.webp
  94. TEMPAT SAMPAH
      src/assets/clubs/napoli.webp
  95. TEMPAT SAMPAH
      src/assets/clubs/newcastle.webp
  96. TEMPAT SAMPAH
      src/assets/clubs/nice.webp
  97. TEMPAT SAMPAH
      src/assets/clubs/olympique.webp
  98. TEMPAT SAMPAH
      src/assets/clubs/psg.webp
  99. TEMPAT SAMPAH
      src/assets/clubs/realbetis.webp
  100. TEMPAT SAMPAH
      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"
+  }
+}

TEMPAT SAMPAH
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,
+    }
+});

TEMPAT SAMPAH
src/assets/404dark.webp


TEMPAT SAMPAH
src/assets/404light.webp


TEMPAT SAMPAH
src/assets/activity/quests.png


TEMPAT SAMPAH
src/assets/activity/rio_refer.png


TEMPAT SAMPAH
src/assets/activity/rio_refer_f.png


TEMPAT SAMPAH
src/assets/activity/spin_1.png


TEMPAT SAMPAH
src/assets/activity/spin_2.png


TEMPAT SAMPAH
src/assets/activity/spin_3.png


File diff ditekan karena terlalu besar
+ 0 - 0
src/assets/auth_shapes.json


TEMPAT SAMPAH
src/assets/avatars/1.webp


TEMPAT SAMPAH
src/assets/avatars/2.webp


TEMPAT SAMPAH
src/assets/avatars/3.webp


TEMPAT SAMPAH
src/assets/avatars/4.webp


TEMPAT SAMPAH
src/assets/avatars/5.webp


File diff ditekan karena terlalu besar
+ 0 - 0
src/assets/ball.json


TEMPAT SAMPAH
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>

TEMPAT SAMPAH
src/assets/brand/1.webp


TEMPAT SAMPAH
src/assets/brand/10.webp


TEMPAT SAMPAH
src/assets/brand/2.webp


TEMPAT SAMPAH
src/assets/brand/3.webp


TEMPAT SAMPAH
src/assets/brand/4.webp


TEMPAT SAMPAH
src/assets/brand/5.webp


TEMPAT SAMPAH
src/assets/brand/6.webp


TEMPAT SAMPAH
src/assets/brand/7.webp


TEMPAT SAMPAH
src/assets/brand/8.webp


TEMPAT SAMPAH
src/assets/brand/9.webp


TEMPAT SAMPAH
src/assets/cart/1.webp


TEMPAT SAMPAH
src/assets/cart/2.webp


TEMPAT SAMPAH
src/assets/cart/3.webp


TEMPAT SAMPAH
src/assets/cart/4.webp


TEMPAT SAMPAH
src/assets/cart/5.webp


TEMPAT SAMPAH
src/assets/cart/6.webp


TEMPAT SAMPAH
src/assets/celtic/1.webp


TEMPAT SAMPAH
src/assets/celtic/10.webp


TEMPAT SAMPAH
src/assets/celtic/18.webp


TEMPAT SAMPAH
src/assets/celtic/2.webp


TEMPAT SAMPAH
src/assets/celtic/21.webp


TEMPAT SAMPAH
src/assets/celtic/22.webp


TEMPAT SAMPAH
src/assets/celtic/3.webp


TEMPAT SAMPAH
src/assets/celtic/4.webp


TEMPAT SAMPAH
src/assets/celtic/6.webp


TEMPAT SAMPAH
src/assets/celtic/7.webp


TEMPAT SAMPAH
src/assets/celtic/8.webp


TEMPAT SAMPAH
src/assets/clubs/arsenal.webp


TEMPAT SAMPAH
src/assets/clubs/asmonaco.webp


TEMPAT SAMPAH
src/assets/clubs/asse.webp


TEMPAT SAMPAH
src/assets/clubs/atalanta.webp


TEMPAT SAMPAH
src/assets/clubs/athleticbilbao.webp


TEMPAT SAMPAH
src/assets/clubs/atletico.webp


TEMPAT SAMPAH
src/assets/clubs/barcelona.webp


TEMPAT SAMPAH
src/assets/clubs/bayer.webp


TEMPAT SAMPAH
src/assets/clubs/bayern.webp


TEMPAT SAMPAH
src/assets/clubs/bordeaux.webp


TEMPAT SAMPAH
src/assets/clubs/bundesliga.webp


TEMPAT SAMPAH
src/assets/clubs/bvb.webp


TEMPAT SAMPAH
src/assets/clubs/celtavigo.webp


TEMPAT SAMPAH
src/assets/clubs/chelsea.webp


TEMPAT SAMPAH
src/assets/clubs/eintracht.webp


TEMPAT SAMPAH
src/assets/clubs/english_premier.webp


TEMPAT SAMPAH
src/assets/clubs/everton.webp


TEMPAT SAMPAH
src/assets/clubs/fiorentina.webp


TEMPAT SAMPAH
src/assets/clubs/hamburger.webp


TEMPAT SAMPAH
src/assets/clubs/hertha.webp


TEMPAT SAMPAH
src/assets/clubs/juventus.webp


TEMPAT SAMPAH
src/assets/clubs/koln.webp


TEMPAT SAMPAH
src/assets/clubs/lacoruna.webp


TEMPAT SAMPAH
src/assets/clubs/lazio.webp


TEMPAT SAMPAH
src/assets/clubs/leeds.webp


TEMPAT SAMPAH
src/assets/clubs/leicester.webp


TEMPAT SAMPAH
src/assets/clubs/lille.webp


TEMPAT SAMPAH
src/assets/clubs/liverpool.webp


TEMPAT SAMPAH
src/assets/clubs/lyon.webp


TEMPAT SAMPAH
src/assets/clubs/manchester.webp


TEMPAT SAMPAH
src/assets/clubs/manchester_united.webp


TEMPAT SAMPAH
src/assets/clubs/mhsc.webp


TEMPAT SAMPAH
src/assets/clubs/milan.webp


TEMPAT SAMPAH
src/assets/clubs/milano.webp


TEMPAT SAMPAH
src/assets/clubs/nantes.webp


TEMPAT SAMPAH
src/assets/clubs/napoli.webp


TEMPAT SAMPAH
src/assets/clubs/newcastle.webp


TEMPAT SAMPAH
src/assets/clubs/nice.webp


TEMPAT SAMPAH
src/assets/clubs/olympique.webp


TEMPAT SAMPAH
src/assets/clubs/psg.webp


TEMPAT SAMPAH
src/assets/clubs/realbetis.webp


TEMPAT SAMPAH
src/assets/clubs/realmadrid.webp


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini