├── src
├── App.css
├── assets
│ ├── images
│ │ ├── SVG.png
│ │ ├── Button.png
│ │ ├── Link (1).png
│ │ ├── Frame (5).png
│ │ ├── flag-uk.svg fill.png
│ │ ├── iconly-glass-chart.svg.png
│ │ ├── iconly-glass-tick.svg.png
│ │ ├── iconly-glass-discount.svg.png
│ │ ├── Nav → List → Item → Link → SVG.png
│ │ └── Nav → List → Item → Link → SVG (1).png
│ └── react.svg
├── index.css
├── pages
│ ├── Account.jsx
│ ├── Crypto.jsx
│ ├── ECommerce.css
│ ├── ECommerce.jsx
│ ├── Analytics.css
│ └── Analytics.jsx
├── main.jsx
├── ui
│ ├── Ecommerce2.jsx
│ ├── Chart2.jsx
│ ├── TrafficUI.jsx
│ ├── Chart1.jsx
│ ├── Ecommerce1.jsx
│ └── SalesPIE.jsx
├── App.jsx
└── components
│ ├── materials
│ ├── SalesMap.jsx
│ ├── SalesMap.css
│ ├── TopSellings.jsx
│ └── Table.jsx
│ └── layout
│ ├── Sidebar.css
│ └── Sidebar.jsx
├── vite.config.js
├── .gitignore
├── index.html
├── README.md
├── eslint.config.js
├── package.json
└── public
└── vite.svg
/src/App.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/SVG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/SVG.png
--------------------------------------------------------------------------------
/src/assets/images/Button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/Button.png
--------------------------------------------------------------------------------
/src/assets/images/Link (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/Link (1).png
--------------------------------------------------------------------------------
/src/assets/images/Frame (5).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/Frame (5).png
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | *{
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | text-decoration: none;
6 | font-family: cursive;
7 | }
--------------------------------------------------------------------------------
/src/assets/images/flag-uk.svg fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/flag-uk.svg fill.png
--------------------------------------------------------------------------------
/src/assets/images/iconly-glass-chart.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/iconly-glass-chart.svg.png
--------------------------------------------------------------------------------
/src/assets/images/iconly-glass-tick.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/iconly-glass-tick.svg.png
--------------------------------------------------------------------------------
/src/assets/images/iconly-glass-discount.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/iconly-glass-discount.svg.png
--------------------------------------------------------------------------------
/src/assets/images/Nav → List → Item → Link → SVG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/Nav → List → Item → Link → SVG.png
--------------------------------------------------------------------------------
/src/assets/images/Nav → List → Item → Link → SVG (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Muhammadsiddiq-code/CRM-WEBSITE-REACT/HEAD/src/assets/images/Nav → List → Item → Link → SVG (1).png
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vite.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------
/src/pages/Account.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const Account = () => {
4 | return (
5 |
6 |
Account
7 |
8 | );
9 | }
10 |
11 | export default Account
12 |
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import { StrictMode } from 'react'
2 | import { createRoot } from 'react-dom/client'
3 | import './index.css'
4 | import App from './App.jsx'
5 |
6 | createRoot(document.getElementById('root')).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | MuhammadSiddiq + React
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/ui/Ecommerce2.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { LineChart } from "recharts";
3 |
4 | const Ecommerce2 = () => {
5 | return (
6 |
7 |
8 |
16 |
17 | )
18 | }
19 |
20 | export default Ecommerce2
21 |
--------------------------------------------------------------------------------
/src/ui/Chart2.jsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { PieChart } from '@mui/x-charts/PieChart';
3 |
4 | const data = [
5 | { label: 'Group B', value: 400, color: 'blue' },
6 | { label: 'Group A', value: 400, color: '#FFBB28' },
7 | { label: 'Group C', value: 800, color: 'dodgerblue' },
8 | // { label: 'Group D', value: 200, color: '#FF8042' },
9 | ];
10 |
11 | const settings = {
12 | margin: { right: 5 },
13 | width: 200,
14 | height: 200,
15 | hideLegend: true,
16 | };
17 |
18 | export default function Chart2() {
19 | return (
20 |
24 | );
25 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React + Vite
2 |
3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4 |
5 | Currently, two official plugins are available:
6 |
7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9 |
10 | ## Expanding the ESLint configuration
11 |
12 | If you are developing a production application, we recommend using TypeScript and enable type-aware lint rules. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
13 |
--------------------------------------------------------------------------------
/eslint.config.js:
--------------------------------------------------------------------------------
1 | import js from '@eslint/js'
2 | import globals from 'globals'
3 | import reactHooks from 'eslint-plugin-react-hooks'
4 | import reactRefresh from 'eslint-plugin-react-refresh'
5 |
6 | export default [
7 | { ignores: ['dist'] },
8 | {
9 | files: ['**/*.{js,jsx}'],
10 | languageOptions: {
11 | ecmaVersion: 2020,
12 | globals: globals.browser,
13 | parserOptions: {
14 | ecmaVersion: 'latest',
15 | ecmaFeatures: { jsx: true },
16 | sourceType: 'module',
17 | },
18 | },
19 | plugins: {
20 | 'react-hooks': reactHooks,
21 | 'react-refresh': reactRefresh,
22 | },
23 | rules: {
24 | ...js.configs.recommended.rules,
25 | ...reactHooks.configs.recommended.rules,
26 | 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
27 | 'react-refresh/only-export-components': [
28 | 'warn',
29 | { allowConstantExport: true },
30 | ],
31 | },
32 | },
33 | ]
34 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "crm-web-site",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "lint": "eslint .",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@emotion/react": "^11.14.0",
14 | "@emotion/styled": "^11.14.1",
15 | "@mui/material": "^7.2.0",
16 | "@mui/x-charts": "^8.9.0",
17 | "chart.js": "^4.5.0",
18 | "react": "^19.0.0",
19 | "react-chartjs-2": "^5.3.0",
20 | "react-dom": "^19.0.0",
21 | "react-icons": "^5.5.0",
22 | "react-leaflet": "^5.0.0",
23 | "react-router-dom": "^7.7.1",
24 | "recharts": "^3.1.0"
25 | },
26 | "devDependencies": {
27 | "@eslint/js": "^9.21.0",
28 | "@types/react": "^19.0.10",
29 | "@types/react-dom": "^19.0.4",
30 | "@vitejs/plugin-react": "^4.3.4",
31 | "eslint": "^9.21.0",
32 | "eslint-plugin-react-hooks": "^5.1.0",
33 | "eslint-plugin-react-refresh": "^0.4.19",
34 | "globals": "^15.15.0",
35 | "vite": "^6.2.0"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/ui/TrafficUI.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Box, Typography, LinearProgress } from '@mui/material';
3 |
4 | const data = [
5 | { label: 'HTML', value: 75 },
6 | { label: 'CSS', value: 67 },
7 | { label: 'JavaScript', value: 55 },
8 | { label: 'React', value: 60 },
9 | { label: 'Node.js', value: 63 },
10 | { label: 'MongoDB', value: 63 },
11 | { label: 'Git', value: 70 },
12 | ];
13 |
14 | const TrafficUI = () => {
15 | return (
16 |
17 | {data.map((item, index) => (
18 |
19 |
20 | {item.label}
21 |
22 |
34 |
35 | ))}
36 |
37 | );
38 | };
39 |
40 | export default TrafficUI;
41 |
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | // App.js
2 | import React from "react";
3 | import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
4 | import Sidebar from "./components/layout/Sidebar";
5 | // import Overview from "./pages/Overview";
6 | import Analytics from "./pages/Analytics";
7 | import Ecommerce from "./pages/Ecommerce";
8 | import Crypto from "./pages/Crypto";
9 | import Account from "./pages/Account";
10 | import Chart1 from "./ui/Chart1";
11 | import SalesPIE from "./ui/SalesPIE";
12 | // qolgan sahifalar...
13 |
14 | const App = () => {
15 | return (
16 |
17 |
18 |
19 |
20 |
21 | {/* } /> */}
22 | } />
23 | } />
24 | } />
25 | } />
26 | {/* qolgan route'lar ham shu tarzda */}
27 |
28 |
29 |
30 |
31 |
32 | );
33 | };
34 |
35 | export default App;
36 |
--------------------------------------------------------------------------------
/src/pages/Crypto.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import img1 from "../assets/images/flag-uk.svg fill.png"
3 | import img2 from "../assets/images/Button.png";
4 | import { CiSearch } from 'react-icons/ci';
5 | import { FaRegBell } from 'react-icons/fa';
6 | import { IoPeopleOutline } from 'react-icons/io5';
7 | import { BsEnvelopePlusFill } from 'react-icons/bs';
8 | import Ecommerce2 from "../ui/Ecommerce2"
9 |
10 | const Crypto = () => {
11 | return (
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |

28 |
29 |
30 |
31 |
32 |
33 |
34 |
Crypto
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | );
44 | }
45 |
46 | export default Crypto
47 |
--------------------------------------------------------------------------------
/src/ui/Chart1.jsx:
--------------------------------------------------------------------------------
1 | // components/MiniChart.js
2 | import React from "react";
3 | import {
4 | // LineChart,
5 | // Line,
6 | ResponsiveContainer,
7 | Area,
8 | AreaChart,
9 | Tooltip,
10 | // defs,
11 | } from "recharts";
12 |
13 | const data = [
14 | { value: 20 },
15 | { value: 40 },
16 | { value: 25 },
17 | { value: 50 },
18 | { value: 45 },
19 | { value: 60 },
20 | { value: 30 },
21 | { value: 75 },
22 | { value: 10 },
23 | ];
24 |
25 | const Chart1 = () => {
26 | return (
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
45 |
46 |
47 |
48 | );
49 | };
50 |
51 | export default Chart1;
52 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/materials/SalesMap.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './SalesMap.css';
3 |
4 | const SalesMap = () => {
5 | const salesData = {
6 | total: '$152K',
7 | countries: [
8 | { name: 'United States', percentage: 60, color: '#3498db' },
9 | { name: 'Spain', percentage: 20, color: '#2ecc71' },
10 | { name: 'United Kingdom', percentage: 10, color: '#f1c40f' },
11 | { name: 'Germany', percentage: 5, color: '#e74c3c' },
12 | { name: 'Canada', percentage: 5, color: '#9b59b6' }
13 | ]
14 | };
15 |
16 | return (
17 |
18 |
Sales by Country
19 |
20 |
21 | Total
22 | {salesData.total}
23 |
24 |
25 |
26 | {salesData.countries.map((country, index) => (
27 |
28 |
{country.name}
29 |
30 |
39 |
40 |
{country.percentage}%
41 |
42 | ))}
43 |
44 |
45 | );
46 | };
47 |
48 | export default SalesMap;
--------------------------------------------------------------------------------
/src/pages/ECommerce.css:
--------------------------------------------------------------------------------
1 | header {
2 | width: 100%;
3 | height: 64px;
4 | display: flex;
5 | align-items: center;
6 | justify-content: space-between;
7 | padding: 0 25px;
8 | }
9 |
10 | header .card {
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 | gap: 25px;
15 | }
16 |
17 | header .card img {
18 | width: 40px;
19 | }
20 |
21 | .cards {
22 | width: 100%;
23 | display: flex;
24 | align-items: center;
25 | justify-content: space-between;
26 | padding: 0 25px;
27 | margin-bottom: 50px;
28 | }
29 |
30 |
31 | .cards button {
32 | padding: 10px 25px;
33 | background-color: rgba(99, 102, 241, 1);
34 | border-radius: 12px;
35 | border: none;
36 | font-weight: 600;
37 | font-size: 14px;
38 | color: rgba(255, 255, 255, 1);
39 | cursor: pointer
40 | }
41 |
42 | .cards button:hover {
43 | background-color: rgb(70, 73, 234);
44 | transition: .3s;
45 | }
46 |
47 | /* top */
48 |
49 | .ban{
50 | display: flex;
51 | align-items: center;
52 | gap: 15px;
53 | margin-bottom: 25px;
54 | }
55 | .as{
56 | width: 70%;
57 | }
58 |
59 | .as .top .card {
60 | width: 100%;
61 | display: flex;
62 | align-items: center;
63 | justify-content: space-between;
64 | gap: 25px;
65 | padding: 15px 10px;
66 | margin-bottom: 50px;
67 | box-shadow: 0 0 25px -15px black;
68 | border-radius: 10px;
69 | margin-top: 25px;
70 | }
71 |
72 | .as .top .card .icon {
73 | width: 250px;
74 | padding: 15px;
75 | display: flex;
76 | align-items: center;
77 | justify-content: center;
78 | gap: 25px;
79 | background-color: rgba(255, 250, 235, 1);
80 | }
--------------------------------------------------------------------------------
/src/components/layout/Sidebar.css:
--------------------------------------------------------------------------------
1 | .Main{
2 | width: 300px;
3 | height: 1500px;
4 | background-color: rgb(0, 19, 70)
5 | }
6 |
7 |
8 | .topHeader{
9 | width: 100%;
10 | height: 100px;
11 | display: flex;
12 | align-items: center;
13 | justify-content: space-between;
14 | padding: 25px;
15 | color: white;
16 | }
17 |
18 | .topHeader img{
19 | width: 50px;
20 |
21 | }
22 |
23 | .top{
24 | display: flex;
25 | align-items: center;
26 | justify-content: center;
27 | gap: 20px;
28 | }
29 |
30 | .topHeader h3{
31 | font-size: 25px;
32 | font-weight: 900;
33 | color: rgba(157, 164, 174, 1);
34 | }
35 |
36 | /* home */
37 |
38 | .home{
39 | width: 100%;
40 | height: auto;
41 | color: rgba(157, 164, 174, 1);
42 | font-family: cursive;
43 | display: flex;
44 | flex-direction: column;
45 | gap: 25px;
46 | }
47 |
48 | .home .div{
49 | display: flex;
50 | align-items: center;
51 | padding: 0 25px;
52 | gap: 10px;
53 | color: rgba(157, 164, 174, 1);
54 |
55 | }
56 |
57 |
58 | .home .div img{
59 | width: 30px;
60 | }
61 |
62 |
63 | .home .div h3{
64 | font-size: 30px;
65 | }
66 |
67 |
68 | .h1{
69 | color: rgba(157, 164, 174, 1);
70 | font-weight: 700;
71 | padding: 20px 25px;
72 | font-family: cursive;
73 | }
74 |
75 |
76 | .side{
77 | width: 100%;
78 | height: auto;
79 | display: flex;
80 |
81 | align-items: center;
82 | justify-content: space-between;
83 | padding: 10px 25px;
84 | }
85 |
86 | .side h3{
87 | font-size: 30px;
88 | color: rgba(157, 164, 174, 1);
89 | }
90 |
91 | .side p{
92 | color: rgba(157, 164, 174, 1);
93 | font-family: cursive;
94 | }
95 |
96 | .side h2{
97 | color: rgba(157, 164, 174, 1);
98 |
99 | }
100 |
101 | .dt{
102 | padding: 10px 70px;
103 | color: rgba(157, 164, 174, 1);
104 | font-family: cursive;
105 | }
106 |
107 | .dt p{
108 | padding: 7px 0;
109 | }
--------------------------------------------------------------------------------
/src/ui/Ecommerce1.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | Box,
4 | Typography,
5 | Paper,
6 | Divider,
7 | Table,
8 | TableBody,
9 | TableCell,
10 | TableContainer,
11 | TableHead,
12 | TableRow,
13 | useTheme
14 | } from '@mui/material';
15 |
16 | const Ecommerce = () => {
17 | const theme = useTheme();
18 |
19 | const data = [
20 | { channel: 'Strategy', value: '$14,859.00' },
21 | { channel: 'Outsourcing', value: '$35,690.00' },
22 | { channel: 'Marketing', value: '$45,120.00' },
23 | { channel: 'Other', value: '$25,486.00' }
24 | ];
25 |
26 | const total = data.reduce((sum, item) => {
27 | return sum + parseFloat(item.value.replace(/[^0-9.-]+/g,""));
28 | }, 0).toLocaleString('en-US', { style: 'currency', currency: 'USD' });
29 |
30 | return (
31 |
32 |
33 | Cost Breakdown
34 | Based on selected period
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | TOP CHANNELS
44 | VALUE
45 |
46 |
47 |
48 | {data.map((row, index) => (
49 |
50 | {row.channel}
51 | {row.value}
52 |
53 | ))}
54 |
55 | TOTAL
56 | {total}
57 |
58 |
59 |
60 |
61 |
62 | );
63 | };
64 |
65 | export default Ecommerce;
--------------------------------------------------------------------------------
/src/components/materials/SalesMap.css:
--------------------------------------------------------------------------------
1 | .sales-container {
2 | font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
3 | max-width: 500px;
4 | margin: 20px auto;
5 | padding: 25px;
6 | background-color: #ffffff;
7 | border-radius: 12px;
8 | box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
9 | }
10 |
11 | .sales-title {
12 | color: #2c3e50;
13 | text-align: center;
14 | margin-bottom: 25px;
15 | font-size: 22px;
16 | font-weight: 600;
17 | }
18 |
19 | .total-sales-box {
20 | text-align: center;
21 | margin-bottom: 30px;
22 | padding: 15px;
23 | background-color: #f8f9fa;
24 | border-radius: 8px;
25 | }
26 |
27 | .total-label {
28 | display: block;
29 | font-size: 16px;
30 | color: #7f8c8d;
31 | margin-bottom: 5px;
32 | }
33 |
34 | .total-amount {
35 | font-size: 28px;
36 | font-weight: 700;
37 | color: #2c3e50;
38 | }
39 |
40 | .countries-list {
41 | display: flex;
42 | flex-direction: column;
43 | gap: 18px;
44 | }
45 |
46 | .country-item {
47 | display: flex;
48 | align-items: center;
49 | gap: 12px;
50 | }
51 |
52 | .country-name {
53 | width: 140px;
54 | font-size: 15px;
55 | color: #34495e;
56 | font-weight: 500;
57 | }
58 |
59 | .progress-container {
60 | flex-grow: 1;
61 | height: 22px;
62 | background-color: #ecf0f1;
63 | border-radius: 11px;
64 | overflow: hidden;
65 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
66 | }
67 |
68 | .progress-bar {
69 | height: 100%;
70 | border-radius: 11px;
71 | transition: width 0.6s ease;
72 | position: relative;
73 | }
74 |
75 | .progress-bar::after {
76 | content: '';
77 | position: absolute;
78 | top: 0;
79 | left: 0;
80 | right: 0;
81 | bottom: 0;
82 | background: linear-gradient(to right, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0));
83 | }
84 |
85 | .percentage-value {
86 | width: 45px;
87 | text-align: right;
88 | font-size: 15px;
89 | color: #7f8c8d;
90 | font-weight: 500;
91 | }
92 |
93 |
94 |
95 | .progress-bar {
96 | /* ... oldingi stil lar ... */
97 | animation: progressAnimation 1.5s ease-in-out forwards;
98 | }
99 |
100 | @keyframes progressAnimation {
101 | from {
102 | width: 0;
103 | }
104 |
105 | to {
106 | width: var(--target-width);
107 | }
108 | }
--------------------------------------------------------------------------------
/src/components/materials/TopSellings.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const TopSellings = () => {
4 | const products = [
5 | {
6 | category: 'Healthcare',
7 | name: 'Erbology in Accessories',
8 | sales: '13,153 in sales',
9 | rank: '#1'
10 | },
11 | {
12 | category: 'Makeup Lancome',
13 | name: 'Rouge in Accessories',
14 | sales: '10,300 in sales',
15 | rank: '#2'
16 | },
17 | {
18 | category: 'Lounge Puff',
19 | name: 'Fabric Slipper in Accessories',
20 | sales: '5,300 in sales',
21 | rank: '#3'
22 | },
23 | {
24 | category: 'Skincare',
25 | name: 'Necessaire in Accessories',
26 | sales: '1,203 in sales',
27 | rank: '#4'
28 | },
29 | {
30 | category: 'Skincare Soja',
31 | name: 'CO in Accessories',
32 | sales: '254 in sales',
33 | rank: '#5'
34 | }
35 | ];
36 |
37 | return (
38 |
39 |
Top Selling Products
40 |
41 |
42 | {products.map((product, index) => (
43 |
44 |
45 |
{product.category}
46 |
{product.name}
47 |
{product.sales}
48 |
49 |
{product.rank}
50 |
51 | ))}
52 |
53 |
54 |
See All →
55 |
56 | );
57 | };
58 |
59 | const styles = {
60 | container: {
61 | fontFamily: 'Arial, sans-serif',
62 | maxWidth: '500px',
63 | margin: '0 auto',
64 | padding: '20px',
65 | backgroundColor: '#fff',
66 | borderRadius: '10px',
67 | boxShadow: '0 2px 10px rgba(0,0,0,0.1)'
68 | },
69 | title: {
70 | fontSize: '20px',
71 | fontWeight: '600',
72 | marginBottom: '20px',
73 | color: '#333'
74 | },
75 | productsContainer: {
76 | display: 'flex',
77 | flexDirection: 'column',
78 | gap: '15px'
79 | },
80 | productCard: {
81 | display: 'flex',
82 | justifyContent: 'space-between',
83 | alignItems: 'center',
84 | padding: '15px',
85 | backgroundColor: '#f9f9f9',
86 | borderRadius: '8px',
87 | transition: 'all 0.3s ease',
88 | ':hover': {
89 | backgroundColor: '#f0f0f0',
90 | transform: 'translateY(-2px)'
91 | }
92 | },
93 | productInfo: {
94 | flex: 1
95 | },
96 | productCategory: {
97 | fontSize: '14px',
98 | color: '#666',
99 | marginBottom: '5px'
100 | },
101 | productName: {
102 | fontSize: '16px',
103 | fontWeight: '500',
104 | marginBottom: '5px',
105 | color: '#333'
106 | },
107 | productSales: {
108 | fontSize: '14px',
109 | color: '#888'
110 | },
111 | productRank: {
112 | fontSize: '18px',
113 | fontWeight: 'bold',
114 | color: '#4CAF50',
115 | marginLeft: '15px'
116 | },
117 | seeAll: {
118 | marginTop: '20px',
119 | textAlign: 'left',
120 | color: '#4CAF50',
121 | fontWeight: '500',
122 | cursor: 'pointer',
123 | ':hover': {
124 | textDecoration: 'underline'
125 | }
126 | }
127 | };
128 |
129 | export default TopSellings;
--------------------------------------------------------------------------------
/src/pages/ECommerce.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import img1 from "../assets/images/flag-uk.svg fill.png"
3 | import img2 from "../assets/images/Button.png";
4 | import "./ECommerce.css"
5 | import { CiSearch } from 'react-icons/ci';
6 | import { FaRegBell } from 'react-icons/fa';
7 | import { IoPeopleOutline } from 'react-icons/io5';
8 | import { TfiReload } from 'react-icons/tfi';
9 | import img3 from "../assets//images/iconly-glass-chart.svg.png"
10 | import img4 from "../assets/images/iconly-glass-discount.svg.png"
11 | import img5 from "../assets/images/iconly-glass-tick.svg.png"
12 | import SalesPIE from '../ui/SalesPIE';
13 | import TopSellings from "../components/materials/TopSellings"
14 | import SalesMap from '../components/materials/SalesMap';
15 | import { ThemeProvider } from '@emotion/react';
16 | import Ecommerce from '../ui/Ecommerce1';
17 | import { createTheme } from '@mui/material';
18 |
19 | const ECommerce = () => {
20 | const theme = createTheme({
21 | components: {
22 | MuiTableCell: {
23 | styleOverrides: {
24 | head: {
25 | fontWeight: 'bold',
26 | backgroundColor: '#f5f5f5'
27 | },
28 | },
29 | },
30 | },
31 | });
32 | return (
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |

42 |
43 |
44 |
45 |
46 |
47 |
48 |

49 |
50 |
51 |
52 |
53 |
54 |
55 |
E-Commerce
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
Today's Stats
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |

76 |
77 |
78 |
Sales
79 |
$152k
80 |
81 |
82 |
83 |
84 |
85 |

86 |
87 |
88 |
Cost
89 |
$99.7k
90 |
91 |
92 |
93 |
94 |
95 |
96 |

97 |
98 |
99 |
Profit
100 |
$32.1k
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 | );
132 | }
133 |
134 | export default ECommerce
135 |
--------------------------------------------------------------------------------
/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/pages/Analytics.css:
--------------------------------------------------------------------------------
1 | header{
2 | width: 100%;
3 | height: 64px;
4 | display: flex;
5 | align-items: center;
6 | justify-content: space-between;
7 | padding: 0 25px;
8 | }
9 |
10 | header .card{
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 | gap: 25px;
15 | }
16 | header .card img{
17 | width: 40px;
18 | }
19 |
20 | .cards {
21 | width: 100%;
22 | display: flex;
23 | align-items: center;
24 | justify-content: space-between;
25 | padding: 0 25px;
26 | margin-bottom: 50px;
27 | }
28 |
29 |
30 | .cards button{
31 | padding: 10px 25px;
32 | background-color: rgba(99, 102, 241, 1);
33 | border-radius: 12px;
34 | border: none;
35 | font-weight: 600;
36 | font-size: 14px;
37 | color: rgba(255, 255, 255, 1);
38 | cursor: pointer
39 | }
40 |
41 | .cards button:hover{
42 | background-color: rgb(70, 73, 234);
43 | transition: .3s;
44 | }
45 |
46 | /* boxs */
47 |
48 | .boxs{
49 | width: 100%;
50 | display: flex;
51 | align-items: center;
52 | justify-content: space-between;
53 | padding: 0 25px;
54 | }
55 |
56 | .boxs .box{
57 | width: 350px;
58 | height: 200px;
59 | background-color: rgba(255, 255, 255, 1);
60 | border-radius: 12px;
61 | padding: 30px 40px;
62 | box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
63 | margin-bottom: 30px;
64 |
65 |
66 | }
67 |
68 | .boxs .box .char{
69 | display: flex;
70 | align-items: center;
71 | justify-content: center;
72 | gap: 10px;
73 | margin-bottom: 60px;
74 |
75 | }
76 |
77 | .chs{
78 | width: 100%;
79 | display: flex;
80 | align-items: center;
81 | margin-left: -20px;
82 | gap: 10px;
83 | }
84 |
85 | .chs button{
86 | padding: 8px 15px;
87 | background-color: rgba(17, 25, 39, 0.04);
88 | border: none;
89 | border-radius: 12px;
90 | display: flex;
91 | align-items: center;
92 | justify-content: center;
93 | gap: 8px;
94 | }
95 |
96 |
97 |
98 |
99 | /* traffic */
100 |
101 | .traffic{
102 | width: 100%;
103 | background-color: rgba(255, 255, 255, 1);
104 | border-radius: 12px;
105 | padding: 30px 40px;
106 | box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
107 | margin-bottom: 30px;
108 | display: flex;
109 | align-items: center;
110 | justify-content: space-between;
111 | padding: 10px 25px;
112 | }
113 |
114 | .traffic h1{
115 | margin-top: 25px;
116 | margin-bottom: 30px;
117 | }
118 |
119 | /*
120 |
121 | .traffic .card .visit .card{
122 | width: 400px;
123 | display: flex;
124 | align-items: center;
125 | justify-content: space-between;
126 | padding: 10px;
127 | }
128 |
129 |
130 |
131 |
132 | .coun .card{
133 | width: 100%;
134 | height: 35px;
135 | display: flex;
136 | align-items: center;
137 | justify-content: center;
138 | padding: 10px;
139 | gap: 10px;
140 | }
141 |
142 | .coun{
143 | width: 100%;
144 | display: flex;
145 | align-items: center;
146 | justify-content: space-between;
147 | background-color: rgba(248, 249, 250, 1);
148 | }
149 |
150 |
151 | .count .card {
152 | width: 100%;
153 | height: 35px;
154 | display: flex;
155 | align-items: center;
156 | justify-content: center;
157 | padding: 10px;
158 | gap: 10px;
159 | }
160 |
161 | .count {
162 | width: 100%;
163 | display: flex;
164 | align-items: center;
165 | justify-content: space-between;
166 | } */
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 | /* Table */
175 |
176 |
177 |
178 |
179 | .const{
180 | width: 100%;
181 | }
182 | .table1 {
183 | width: 100%;
184 | border-collapse: collapse;
185 | border: 1px solid #ddd;
186 | /* border-radius: 10px; */
187 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
188 | text-align: left;
189 | padding: 20px;
190 | }
191 |
192 | .table1 th, td {
193 | padding: 15px;
194 | border: 1px solid #ddd;
195 | border-radius: 5px;
196 | text-align: left;
197 | }
198 |
199 |
200 | .h3{
201 | width: 100%;
202 | display: flex;
203 | align-items: center;
204 | justify-content: space-between;
205 | margin-bottom: 25px;
206 | color: rgba(108, 115, 127, 1);
207 | }
208 |
209 |
210 | .char{
211 | width: 100%;
212 | display: flex;
213 | align-items: center;
214 | justify-content: space-between;
215 | padding: 0 25px;
216 | gap: 225px;
217 | }
--------------------------------------------------------------------------------
/src/ui/SalesPIE.jsx:
--------------------------------------------------------------------------------
1 | // import React from 'react';
2 |
3 | // const SalesPIE = () => {
4 | // // Sample data - replace with your actual data
5 | // const salesData = [
6 | // { date: '20 Jan', revenue: 120 },
7 | // { date: '21 Jan', revenue: 180 },
8 | // { date: '22 Jan', revenue: 150 },
9 | // { date: '23 Jan', revenue: 210 },
10 | // { date: '24 Jan', revenue: 90 },
11 | // { date: '25 Jan', revenue: 160 },
12 | // { date: '26 Jan', revenue: 200 },
13 | // { date: '27 Jan', revenue: 140 },
14 | // { date: '28 Jan', revenue: 170 },
15 | // { date: '29 Jan', revenue: 190 },
16 | // { date: '30 Jan', revenue: 130 },
17 | // { date: '31 Jan', revenue: 220 },
18 | // ];
19 |
20 | // // Find the maximum revenue for scaling
21 | // const maxRevenue = Math.max(...salesData.map(item => item.revenue));
22 |
23 | // // Container styles
24 | // const containerStyle = {
25 | // fontFamily: 'Arial, sans-serif',
26 | // maxWidth: '800px',
27 | // margin: '0 auto',
28 | // padding: '20px',
29 | // };
30 |
31 | // // Title styles
32 | // const titleStyle = {
33 | // textAlign: 'center',
34 | // marginBottom: '30px',
35 | // color: '#333',
36 | // };
37 |
38 | // // Chart styles
39 | // const chartStyle = {
40 | // display: 'flex',
41 | // justifyContent: 'space-between',
42 | // alignItems: 'flex-end',
43 | // height: '300px',
44 | // borderBottom: '1px solid #ccc',
45 | // paddingBottom: '20px',
46 | // };
47 |
48 | // // Column container styles
49 | // const columnContainerStyle = {
50 | // display: 'flex',
51 | // flexDirection: 'column',
52 | // alignItems: 'center',
53 | // width: '30px',
54 | // };
55 |
56 | // // Column styles
57 | // const columnStyle = {
58 | // width: '20px',
59 | // backgroundColor: '#4CAF50',
60 | // borderRadius: '3px 3px 0 0',
61 | // transition: 'height 0.3s ease',
62 | // marginBottom: '5px',
63 | // };
64 |
65 | // // Date label styles
66 | // const dateStyle = {
67 | // fontSize: '12px',
68 | // color: '#666',
69 | // textAlign: 'center',
70 | // };
71 |
72 | // return (
73 | //
74 | //
Sales Revenue
75 |
76 | //
77 | // {salesData.map((item, index) => (
78 | //
79 | //
86 | //
{item.date}
87 | //
88 | // ))}
89 | //
90 | //
91 | // );
92 | // };
93 |
94 | // export default SalesPIE;
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | import React from 'react';
108 | import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip } from 'chart.js';
109 | import { Bar } from 'react-chartjs-2';
110 |
111 | ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip);
112 |
113 | const SalePIE = () => {
114 | // Ma'lumotlar
115 | const data = {
116 | labels: ['20 Jan', '21 Jan', '22 Jan', '23 Jan', '24 Jan', '25 Jan', '26 Jan', '27 Jan', '28 Jan', '29 Jan', '30 Jan', '31 Jan'],
117 | datasets: [
118 | {
119 | label: 'Sales Revenue ($)',
120 | data: [120, 180, 150, 210, 90, 160, 200, 140, 170, 190, 130, 220],
121 | backgroundColor: 'rgba(75, 192, 192, 0.6)',
122 | borderColor: 'rgba(75, 192, 192, 1)',
123 | borderWidth: 1,
124 | },
125 | ],
126 | };
127 |
128 | // Chart sozlamalari
129 | const options = {
130 | responsive: true,
131 | plugins: {
132 | title: {
133 | display: true,
134 | text: 'Sales Revenue',
135 | font: {
136 | size: 18,
137 | },
138 | },
139 | tooltip: {
140 | callbacks: {
141 | label: function(context) {
142 | return `$${context.raw}`;
143 | }
144 | }
145 | }
146 | },
147 | scales: {
148 | y: {
149 | beginAtZero: true,
150 | ticks: {
151 | callback: function(value) {
152 | return `$${value}`;
153 | }
154 | }
155 | }
156 | }
157 | };
158 |
159 | return (
160 |
161 |
162 |
163 | );
164 | };
165 |
166 | export default SalePIE;
--------------------------------------------------------------------------------
/src/pages/Analytics.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import "./Analytics.css";
3 | import { CiSearch } from 'react-icons/ci';
4 | import img1 from "../assets/images/flag-uk.svg fill.png"
5 | import img2 from "../assets/images/Button.png";
6 | import { FaArrowRight, FaRegBell } from 'react-icons/fa';
7 | import { IoPeopleOutline } from 'react-icons/io5';
8 | import Chart1 from '../ui/Chart1';
9 | import TrafficUI from '../ui/TrafficUI';
10 | import { CgDanger } from 'react-icons/cg';
11 | import Table from "../components/materials/Table"
12 | import { BsSend } from 'react-icons/bs';
13 | import Chart2 from '../ui/Chart2';
14 |
15 | const Analytics = () => {
16 | return (
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |

26 |
27 |
28 |
29 |
30 |
31 |
32 |

33 |
34 |
35 |
36 |
37 |
38 |
Analytics
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | - Impressions
60 | - 36,6K
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
See sources
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | - Engagements
80 | - 19K
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
See traffic
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | - Spent
99 | - $41.2K
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
Traffic Sources
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | {/* Most Visited Pages */}
137 |
138 |
139 |
140 |
141 |
142 |
143 |
Most Visited Pages ----------------------
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 | | Page Name |
155 | Visitors |
156 | Unique page visits |
157 | Bounce rate |
158 |
159 |
160 |
161 | | / |
162 |
163 | 95,847 |
164 | 8,584 |
165 | 16% |
166 |
167 |
168 |
169 | | /auth/login |
170 | 7,500 |
171 | 648 |
172 | 5% |
173 |
174 |
175 |
176 | | /dashboard |
177 | 85,406 |
178 | 568 |
179 | 2% |
180 |
181 |
182 |
183 | | /blog/top-5-react-frameworks |
184 | 75,050 |
185 | 12,322 |
186 | 12% |
187 |
188 |
189 |
190 | | /blog/understand-programming-principles |
191 | 68,003 |
192 | 11,645 |
193 | 10% |
194 |
195 |
196 |
197 | | /blog/design-patterns |
198 | 49,510 |
199 | 10,259 |
200 | 8% |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 | );
220 | }
221 |
222 | export default Analytics
223 |
--------------------------------------------------------------------------------
/src/components/materials/Table.jsx:
--------------------------------------------------------------------------------
1 | // import React from 'react';
2 | // import { CgDanger } from 'react-icons/cg';
3 |
4 | // const Table = () => {
5 | // const data = [
6 | // { country: 'United States', value: '31,200', seo: '40%' },
7 | // { country: 'United Kingdom', value: '12,700', seo: '47%' },
8 | // { country: 'Russia', value: '10,360', seo: '65%' },
9 | // { country: 'Canada', value: '5,749', seo: '23%' },
10 | // { country: 'Germany', value: '2,932', seo: '4%' },
11 | // { country: 'Spain', value: '200', seo: '56%' },
12 | // ];
13 |
14 | // return (
15 | //
16 | //
Visits by Country
17 |
18 | //
19 | //
20 | //
21 | // | COUNTRY |
22 | // VALUE |
23 | // SEO |
24 | //
25 | //
26 | //
27 | // {data.map((row, index) => (
28 | //
29 | // | {row.country} |
30 | // {row.value} |
31 | // {row.seo} |
32 | //
33 | // ))}
34 | //
35 | //
36 |
37 | //
42 | //
43 | // );
44 | // };
45 |
46 | // export default Table;
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | import React from 'react';
69 | import { CgDanger } from 'react-icons/cg';
70 |
71 | const Table = () => {
72 | const data = [
73 | { country: 'United States', value: '31,200', seo: '40%' },
74 | { country: 'United Kingdom', value: '12,700', seo: '47%' },
75 | { country: 'Russia', value: '10,360', seo: '65%' },
76 | { country: 'Canada', value: '5,749', seo: '23%' },
77 | { country: 'Germany', value: '2,932', seo: '4%' },
78 | { country: 'Spain', value: '200', seo: '56%' },
79 | ];
80 |
81 | return (
82 |
91 |
99 | Visits by Country
100 | e.currentTarget.style.transform = 'scale(1.1)'}
107 | onMouseLeave={(e) => e.currentTarget.style.transform = 'scale(1)'}
108 | title="Visits information by country"
109 | />
110 |
111 |
117 | Number of visits and SEO percentage by country
118 |
119 |
120 |
126 |
127 |
132 | | COUNTRY |
133 | VALUE |
134 | SEO |
135 |
136 |
137 |
138 | {data.map((row, index) => (
139 |
144 | | {row.country} |
145 | {row.value} |
146 | 50 ? '#2ecc71' : '#e74c3c',
149 | fontWeight: parseInt(row.seo) > 50 ? '600' : 'normal'
150 | }}>
151 | {row.seo}
152 | |
153 |
154 | ))}
155 |
156 |
157 |
158 |
178 |
179 | );
180 | };
181 |
182 | export default Table;
--------------------------------------------------------------------------------
/src/components/layout/Sidebar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Sidebar.css";
3 | import { Link } from "react-router-dom";
4 |
5 | import topHeader from "../../assets/images/Link (1).png";
6 | // import img1 from "../../assets/images/Nav → List → Item → Link → SVG.png"
7 | // import img2 from "../../assets/images/Frame (5).png"
8 | // import img3 from "../../assets/images/Nav → List → Item → Link → SVG (1).png"
9 | // import img4 from "../../assets/images/SVG.png"
10 | // import img5 from "../../assets/images/Nav → List → Item → Link → SVG.png";
11 | import { FaAngleRight, FaBitcoin, FaBoxOpen, FaClipboardCheck, FaHome, FaServer, FaTruck, FaUserGraduate } from "react-icons/fa";
12 | import { SiGoogleanalytics } from "react-icons/si";
13 | import { TbDeviceAnalytics } from "react-icons/tb";
14 | import { RiAccountPinBoxFill } from "react-icons/ri";
15 | import { MdOutlineKeyboardArrowRight, MdOutlineShoppingCart } from "react-icons/md";
16 | import { IoShieldCheckmarkSharp } from "react-icons/io5";
17 | import { FiMail, FiMessageSquare, FiShare2, FiUpload } from "react-icons/fi";
18 | import { HiOutlineDocumentText } from "react-icons/hi";
19 |
20 | const Sidebar = () => {
21 | return (
22 |
23 |
24 |
25 |

26 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
Overview
42 |
43 |
44 |
45 |
46 |
47 |
48 |
Analytics
49 |
50 |
51 |
52 |
53 |
54 |
55 |
E-Commerce
56 |
57 |
58 |
59 |
60 | {" "}
61 |
62 |
63 |
Crypto
64 |
65 |
66 |
67 |
68 | {" "}
69 |
70 |
71 |
Account
72 |
73 |
74 |
75 |
76 |
Concepts
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | {" "}
112 |
113 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
Dashboard
167 |
Course
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
253 |
254 |
255 |
256 | );
257 | };
258 |
259 | export default Sidebar;
260 |
--------------------------------------------------------------------------------