├── .env ├── .idea ├── .gitignore ├── vcs.xml ├── misc.xml ├── modules.xml └── Admin-Panel.iml ├── public ├── favicon.ico ├── logo192.png ├── logo512.png ├── robots.txt ├── manifest.json └── index.html ├── src ├── data │ ├── avatar.jpg │ ├── avatar2.jpg │ ├── avatar3.png │ ├── avatar4.jpg │ ├── product1.jpg │ ├── product2.jpg │ ├── product3.jpg │ ├── product4.jpg │ ├── product5.jpg │ ├── product6.jpg │ ├── product7.jpg │ ├── product8.jpg │ └── product9.jpg ├── index.css ├── components │ ├── Footer.jsx │ ├── Loading.jsx │ ├── ChartsHeader.jsx │ ├── Button.jsx │ ├── index.jsx │ ├── Charts │ │ ├── SparkLine.jsx │ │ ├── LineChart.jsx │ │ ├── Stacked.jsx │ │ └── Pie.jsx │ ├── Header.jsx │ ├── Notification.jsx │ ├── Chat.jsx │ ├── UserProfile.jsx │ ├── Feedback.jsx │ ├── Sidebar.jsx │ ├── Cart.jsx │ ├── ThemeSettings.jsx │ └── Navbar.jsx ├── index.js ├── pages │ ├── Charts │ │ ├── Line.jsx │ │ ├── Stacked.jsx │ │ ├── Pie.jsx │ │ ├── Area.jsx │ │ ├── Bar.jsx │ │ ├── Pyramid.jsx │ │ ├── Financial.jsx │ │ └── ColorMapping.jsx │ ├── Editor.jsx │ ├── index.jsx │ ├── Kanban.jsx │ ├── Employees.jsx │ ├── ColorPicker.jsx │ ├── Orders.jsx │ ├── Customers.jsx │ ├── Calendar.jsx │ ├── Inbox.jsx │ └── Ecommerce.jsx ├── App.css ├── contexts │ └── ContextProvider.js └── App.js ├── .github ├── dependabot.yml ├── ISSUE_TEMPLATE │ ├── bug.yml │ ├── docs.yml │ └── feature_request.yml ├── workflows │ ├── auto-comment.yml │ ├── auto-comment.yml │ └── codeql.yml └── Pull_Request_Template.md ├── craco.config.js ├── .gitignore ├── tailwind.config.js ├── package.json ├── .eslintrc.js ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── README.md └── license.txt /.env: -------------------------------------------------------------------------------- 1 | ESLINT_NO_DEV_ERRORS=true -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/public/logo512.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/data/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/avatar.jpg -------------------------------------------------------------------------------- /src/data/avatar2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/avatar2.jpg -------------------------------------------------------------------------------- /src/data/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/avatar3.png -------------------------------------------------------------------------------- /src/data/avatar4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/avatar4.jpg -------------------------------------------------------------------------------- /src/data/product1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product1.jpg -------------------------------------------------------------------------------- /src/data/product2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product2.jpg -------------------------------------------------------------------------------- /src/data/product3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product3.jpg -------------------------------------------------------------------------------- /src/data/product4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product4.jpg -------------------------------------------------------------------------------- /src/data/product5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product5.jpg -------------------------------------------------------------------------------- /src/data/product6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product6.jpg -------------------------------------------------------------------------------- /src/data/product7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product7.jpg -------------------------------------------------------------------------------- /src/data/product8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product8.jpg -------------------------------------------------------------------------------- /src/data/product9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swarnavopramanik/Admin-Panel/HEAD/src/data/product9.jpg -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Update GitHub Actions and dependencies 4 | - package-ecosystem: "github-actions" 5 | - package-ecosystem: "npm" 6 | directory: "/" 7 | schedule: 8 | interval: "daily" 9 | -------------------------------------------------------------------------------- /craco.config.js: -------------------------------------------------------------------------------- 1 | // craco.config.js 2 | module.exports = { 3 | style: { 4 | postcss: { 5 | plugins: [ 6 | require('tailwindcss'), 7 | require('autoprefixer'), 8 | ], 9 | }, 10 | }, 11 | }; -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap'); 2 | 3 | body{ 4 | margin: 0; 5 | padding:0; 6 | font-family: "Open Sans", sans-serif; 7 | } 8 | 9 | @tailwind base; 10 | @tailwind components; 11 | @tailwind utilities; -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/Footer.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const Footer = () => ( 4 |
5 |

6 | © 2022 All rights reserved by Shoppy.com 7 |

8 |
9 | ); 10 | 11 | export default Footer; 12 | -------------------------------------------------------------------------------- /src/components/Loading.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const Loading = () => ( 4 |
5 |
6 |
7 | ); 8 | 9 | export default Loading; 10 | 11 | -------------------------------------------------------------------------------- /.idea/Admin-Panel.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | import { ContextProvider } from './contexts/ContextProvider'; 6 | 7 | ReactDOM.render( 8 | 9 | 10 | 11 | 12 | , 13 | document.getElementById('root'), 14 | ); 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src/pages/Charts/Line.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { ChartsHeader, LineChart } from '../../components'; 4 | 5 | const Line = () => ( 6 |
7 | 8 |
9 | 10 |
11 |
12 | ); 13 | 14 | export default Line; 15 | -------------------------------------------------------------------------------- /src/pages/Charts/Stacked.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { ChartsHeader, Stacked as StackedChart } from '../../components'; 4 | 5 | const Stacked = () => ( 6 |
7 | 8 |
9 | 10 |
11 |
12 | ); 13 | 14 | export default Stacked; 15 | -------------------------------------------------------------------------------- /src/components/ChartsHeader.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const ChartsHeader = ({ category, title }) => ( 4 |
5 |
6 |

Chart

7 |

{category}

8 |
9 |

{title}

10 |
11 | ); 12 | 13 | export default ChartsHeader; 14 | -------------------------------------------------------------------------------- /src/pages/Charts/Pie.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { pieChartData } from '../../data/dummy'; 4 | import { ChartsHeader, Pie as PieChart } from '../../components'; 5 | 6 | const Pie = () => ( 7 |
8 | 9 |
10 | 11 |
12 |
13 | ); 14 | 15 | export default Pie; 16 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /src/pages/Editor.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { HtmlEditor, Image, Inject, Link, QuickToolbar, RichTextEditorComponent, Toolbar } from '@syncfusion/ej2-react-richtexteditor'; 3 | 4 | import { Header } from '../components'; 5 | import { EditorData } from '../data/dummy'; 6 | 7 | const Editor = () => ( 8 |
9 |
10 | 11 | 12 | 13 | 14 |
15 | ); 16 | export default Editor; 17 | -------------------------------------------------------------------------------- /src/components/Button.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { useStateContext } from '../contexts/ContextProvider'; 4 | 5 | const Button = ({ icon, bgColor, color, bgHoverColor, size, text, borderRadius, width }) => { 6 | const { setIsClicked, initialState } = useStateContext(); 7 | 8 | return ( 9 | 17 | ); 18 | }; 19 | 20 | export default Button; 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yml: -------------------------------------------------------------------------------- 1 | name: 🐛 Bug 2 | description: Report an issue to help improve the project. 3 | labels: ["🛠 goal: fix", "🚦 status: awaiting triage"] 4 | body: 5 | - type: textarea 6 | id: description 7 | attributes: 8 | label: Description 9 | description: A brief description of the question or issue, also include what you tried and what didn't work 10 | validations: 11 | required: true 12 | - type: textarea 13 | id: screenshots 14 | attributes: 15 | label: Screenshots 16 | description: Please add screenshots if applicable 17 | validations: 18 | required: false 19 | - type: textarea 20 | id: extrainfo 21 | attributes: 22 | label: Additional information 23 | description: Is there anything else we should know about this bug? 24 | validations: 25 | required: false 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/docs.yml: -------------------------------------------------------------------------------- 1 | name: 📄 Documentation issue 2 | description: Found an issue in the documentation? You can use this one! 3 | title: "[DOCS] " 4 | labels: ["📄 aspect: text", "🚦 status: awaiting triage"] 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: A brief description of the question or issue, also include what you tried and what didn't work 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: screenshots 15 | attributes: 16 | label: Screenshots 17 | description: Please add screenshots if applicable 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: extrainfo 22 | attributes: 23 | label: Additional information 24 | description: Is there anything else we should know about this issue? 25 | validations: 26 | required: false 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: General Feature Request 💡 2 | description: Have a new idea/feature for Project Please suggest! 3 | title: "[FEATURE] " 4 | labels: ["⭐ goal: addition", "🚦 status: awaiting triage"] 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: A brief description of the enhancement you propose, also include what you tried and what worked. 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: screenshots 15 | attributes: 16 | label: Screenshots 17 | description: Please add screenshots if applicable 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: extrainfo 22 | attributes: 23 | label: Additional information 24 | description: Is there anything else we should know about this idea? 25 | validations: 26 | required: false 27 | -------------------------------------------------------------------------------- /src/components/index.jsx: -------------------------------------------------------------------------------- 1 | export { default as Button } from './Button'; 2 | export { default as ThemeSettings } from './ThemeSettings'; 3 | export { default as Sidebar } from './Sidebar'; 4 | // eslint-disable-next-line import/no-cycle 5 | export { default as Navbar } from './Navbar'; 6 | export { default as Footer } from './Footer'; 7 | export { default as Cart } from './Cart'; 8 | export { default as Chat } from './Chat'; 9 | export { default as Notification } from './Notification'; 10 | export { default as UserProfile } from './UserProfile'; 11 | export { default as SparkLine } from './Charts/SparkLine'; 12 | export { default as LineChart } from './Charts/LineChart'; 13 | export { default as Stacked } from './Charts/Stacked'; 14 | export { default as Pie } from './Charts/Pie'; 15 | export { default as ChartsHeader } from './ChartsHeader'; 16 | export { default as Header } from './Header'; 17 | export { default as Loading } from './Loading'; 18 | export { default as Feedback } from './Feedback'; 19 | -------------------------------------------------------------------------------- /src/pages/index.jsx: -------------------------------------------------------------------------------- 1 | import { lazy } from 'react'; 2 | 3 | const Ecommerce = lazy(() => import('./Ecommerce')); 4 | const Kanban = lazy(() => import('./Kanban')); 5 | const Orders = lazy(() => import('./Orders')); 6 | const Employees = lazy(() => import('./Employees')); 7 | const Editor = lazy(() => import('./Editor')); 8 | const Customers = lazy(() => import('./Customers')); 9 | const ColorPicker = lazy(() => import('./ColorPicker')); 10 | const Calendar = lazy(() => import('./Calendar')); 11 | const Area = lazy(() => import('./Charts/Area')); 12 | const Bar = lazy(() => import('./Charts/Bar')); 13 | const ColorMapping = lazy(() => import('./Charts/ColorMapping')); 14 | const Financial = lazy(() => import('./Charts/Financial')); 15 | const Line = lazy(() => import('./Charts/Line')); 16 | const Pie = lazy(() => import('./Charts/Pie')); 17 | const Pyramid = lazy(() => import('./Charts/Pyramid')); 18 | const Stacked = lazy(() => import('./Charts/Stacked')); 19 | 20 | export { Ecommerce, Kanban, Orders, Employees, Editor, Customers, ColorPicker, Calendar, Area, Bar, ColorMapping, Financial, Line, Pie, Pyramid, Stacked }; 21 | -------------------------------------------------------------------------------- /src/pages/Kanban.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { 3 | KanbanComponent, 4 | ColumnsDirective, 5 | ColumnDirective, 6 | } from '@syncfusion/ej2-react-kanban'; 7 | 8 | import { kanbanData, kanbanGrid } from '../data/dummy'; 9 | import { Header } from '../components'; 10 | 11 | const Kanban = () => { 12 | const [selectedData, setSelectedData] = useState(''); 13 | return ( 14 |
15 |
16 | 23 | 24 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 25 | {kanbanGrid.map((item, index) => )} 26 | 27 | 28 |
29 | ); 30 | }; 31 | 32 | export default Kanban; 33 | -------------------------------------------------------------------------------- /src/components/Charts/SparkLine.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { SparklineComponent, Inject, SparklineTooltip } from '@syncfusion/ej2-react-charts'; 3 | 4 | class SparkLine extends React.PureComponent { 5 | render() { 6 | const { id, height, width, color, data, type, currentColor } = this.props; 7 | 8 | return ( 9 | 31 | 32 | 33 | ); 34 | } 35 | } 36 | 37 | export default SparkLine; 38 | -------------------------------------------------------------------------------- /src/pages/Employees.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { GridComponent, Inject, ColumnsDirective, ColumnDirective, Search, Page } from '@syncfusion/ej2-react-grids'; 3 | 4 | import { employeesData, employeesGrid } from '../data/dummy'; 5 | import { Header } from '../components'; 6 | 7 | const Employees = () => { 8 | const toolbarOptions = ['Search']; 9 | 10 | const editing = { allowDeleting: true, allowEditing: true }; 11 | 12 | return ( 13 |
14 |
15 | 24 | 25 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 26 | {employeesGrid.map((item, index) => )} 27 | 28 | 29 | 30 | 31 |
32 | ); 33 | }; 34 | export default Employees; 35 | -------------------------------------------------------------------------------- /src/pages/ColorPicker.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ColorPickerComponent } from '@syncfusion/ej2-react-inputs'; 3 | 4 | import { Header } from '../components'; 5 | 6 | const change = (args) => { 7 | document.getElementById('preview').style.backgroundColor = args.currentValue.hex; 8 | }; 9 | 10 | const CustomColorPicker = ({ id, mode }) => ; 11 | 12 | const ColorPicker = () => ( 13 |
14 |
15 |
16 |
17 |
18 |
19 |

Inline Pallete

20 | 21 |
22 |
23 |

Inline Picker

24 | 25 |
26 |
27 |
28 |
29 | ); 30 | 31 | export default ColorPicker; 32 | -------------------------------------------------------------------------------- /src/components/Charts/LineChart.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, LineSeries, DateTime, Legend, Tooltip } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { lineCustomSeries, LinePrimaryXAxis, LinePrimaryYAxis } from '../../data/dummy'; 5 | import { useStateContext } from '../../contexts/ContextProvider'; 6 | 7 | const LineChart = () => { 8 | const { currentMode } = useStateContext(); 9 | 10 | return ( 11 | 21 | 22 | 23 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 24 | {lineCustomSeries.map((item, index) => )} 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default LineChart; 31 | -------------------------------------------------------------------------------- /.github/workflows/auto-comment.yml: -------------------------------------------------------------------------------- 1 | name: Auto Comment 2 | on: 3 | issues: 4 | pull_request_target: 5 | types: [closed, opened] 6 | jobs: 7 | run: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: wow-actions/auto-comment@v1 11 | with: 12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 13 | issuesOpened: | 14 | 👋 @{{ author }} 15 | Thank you for creating an issue. We will look into the matter and get back to you as soon as possible. Keep up the great work! 16 | 17 | pullRequestOpened: | 18 | 👋 @{{ author }} 19 | Your pull request is successfully submitted. 20 | Please make sure you have followed our contributing guidelines. Our dedicated team will review it diligently. 21 | 22 | issuesClosed: | 23 | 👋 @{{ author }}. This issue is closed. 24 | 25 | pullRequestMerged: | 26 | Congratulations @${{ github.actor }}! 🎉 Your pull request is merged. We appreciate your efforts to improve our project and your contribution is valuable. 27 | 28 | issuesAssigned: | 29 | 👋 @{{ author }} 30 | I have assigned the issue to you. You can now start working on it. If you have any queries or require guidance, do not hesitate to ask. -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: ['./src/**/*.{js,jsx,ts,tsx}'], 3 | darkMode: 'class', 4 | theme: { 5 | fontFamily: { 6 | display: ['Open Sans', 'sans-serif'], 7 | body: ['Open Sans', 'sans-serif'], 8 | }, 9 | extend: { 10 | fontSize: { 11 | 14: '14px', 12 | }, 13 | backgroundColor: { 14 | 'main-bg': '#FAFBFB', 15 | 'main-dark-bg': '#20232A', 16 | 'secondary-dark-bg': '#33373E', 17 | 'light-gray': '#F7F7F7', 18 | 'half-transparent': 'rgba(0, 0, 0, 0.5)', 19 | }, 20 | borderWidth: { 21 | 1: '1px', 22 | }, 23 | borderColor: { 24 | color: 'rgba(0, 0, 0, 0.1)', 25 | }, 26 | width: { 27 | 400: '400px', 28 | 760: '760px', 29 | 780: '780px', 30 | 800: '800px', 31 | 1000: '1000px', 32 | 1200: '1200px', 33 | 1400: '1400px', 34 | }, 35 | height: { 36 | 80: '80px', 37 | }, 38 | minHeight: { 39 | 590: '590px', 40 | }, 41 | backgroundImage: { 42 | 'hero-pattern': 43 | "url('https://i.ibb.co/MkvLDfb/Rectangle-4389.png')", 44 | }, 45 | }, 46 | }, 47 | plugins: [], 48 | }; 49 | -------------------------------------------------------------------------------- /src/pages/Orders.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { GridComponent, ColumnsDirective, ColumnDirective, Resize, Sort, ContextMenu, Filter, Page, ExcelExport, PdfExport, Edit, Inject } from '@syncfusion/ej2-react-grids'; 3 | 4 | import { ordersData, contextMenuItems, ordersGrid } from '../data/dummy'; 5 | import { Header } from '../components'; 6 | 7 | const Orders = () => { 8 | const editing = { allowDeleting: true, allowEditing: true }; 9 | return ( 10 |
11 |
12 | 22 | 23 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 24 | {ordersGrid.map((item, index) => )} 25 | 26 | 27 | 28 |
29 | ); 30 | }; 31 | export default Orders; 32 | -------------------------------------------------------------------------------- /src/components/Charts/Stacked.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, Legend, Category, StackingColumnSeries, Tooltip } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { stackedCustomSeries, stackedPrimaryXAxis, stackedPrimaryYAxis } from '../../data/dummy'; 5 | import { useStateContext } from '../../contexts/ContextProvider'; 6 | 7 | const Stacked = ({ width, height }) => { 8 | const { currentMode } = useStateContext(); 9 | 10 | return ( 11 | 22 | 23 | 24 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 25 | {stackedCustomSeries.map((item, index) => )} 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default Stacked; 32 | -------------------------------------------------------------------------------- /.github/Pull_Request_Template.md: -------------------------------------------------------------------------------- 1 | ## Related Issue 2 | 5 | 6 | Closes: #[issue number] 7 | 8 | ## Description of Changes 9 | 17 | 18 | ## Checklist 19 | 20 | 24 | 25 | - [ ] My code adheres to the established style guidelines of this project. 26 | - [ ] I have conducted a self-review of my code. 27 | - [ ] I have included comments in areas that may be difficult to understand. 28 | - [ ] I have made corresponding updates to the project documentation. 29 | - [ ] My changes have not introduced any new warnings. 30 | 31 | ## Screenshots 32 | 33 | | Original | Updated | 34 | | :-----------------: | :------------------: | 35 | | ![Original screenshot](link) | ![Updated screenshot](link) | 36 | 37 | Please provide any necessary screenshots to illustrate the changes made. 38 | -------------------------------------------------------------------------------- /src/components/Header.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const Header = ({ category, title, onSelectChange }) => { 4 | const handleChange = (e) => { 5 | onSelectChange(e.target.value); 6 | }; 7 | return ( 8 |
9 | 10 |
11 |

{category}

12 |

13 | {title} 14 |

15 |
16 | 17 |
18 |

19 | Show data by : 20 |

21 | 22 | 29 |
30 |
31 | ); 32 | }; 33 | 34 | export default Header; 35 | -------------------------------------------------------------------------------- /src/pages/Customers.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { GridComponent, ColumnsDirective, ColumnDirective, Page, Selection, Inject, Edit, Toolbar, Sort, Filter } from '@syncfusion/ej2-react-grids'; 3 | 4 | import { customersData, customersGrid } from '../data/dummy'; 5 | import { Header } from '../components'; 6 | 7 | const Customers = () => { 8 | const selectionsettings = { persistSelection: true }; 9 | const toolbarOptions = ['Delete']; 10 | const editing = { allowDeleting: true, allowEditing: true }; 11 | 12 | return ( 13 |
14 |
15 | 25 | 26 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 27 | {customersGrid.map((item, index) => )} 28 | 29 | 30 | 31 |
32 | ); 33 | }; 34 | 35 | export default Customers; 36 | -------------------------------------------------------------------------------- /src/pages/Charts/Area.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, DateTime, SplineAreaSeries, Legend } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { ChartsHeader } from '../../components'; 5 | import { areaCustomSeries, areaPrimaryXAxis, areaPrimaryYAxis } from '../../data/dummy'; 6 | import { useStateContext } from '../../contexts/ContextProvider'; 7 | 8 | const Area = () => { 9 | const { currentMode } = useStateContext(); 10 | 11 | return ( 12 |
13 | 14 |
15 | 23 | 24 | 25 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 26 | {areaCustomSeries.map((item, index) => )} 27 | 28 | 29 |
30 |
31 | ); 32 | }; 33 | 34 | export default Area; 35 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | @import url('https://cdn.syncfusion.com/ej2/material.css'); 2 | 3 | .sidebar { 4 | box-shadow: rgb(113 122 131 / 11%) 0px 7px 30px 0px; 5 | z-index: 10; 6 | } 7 | .nav-item, 8 | .navbar { 9 | z-index: 10000; 10 | } 11 | @media screen and (max-width:800px) { 12 | .sidebar{ 13 | z-index: 10000000; 14 | } 15 | } 16 | 17 | .feedback-section{ 18 | 19 | } 20 | 21 | .e-dlg-center-center, .e-quick-popup-wrapper.e-device{ 22 | z-index: 1000000 !important; 23 | } 24 | 25 | ::-webkit-scrollbar { 26 | width: 6px; 27 | } 28 | ::-webkit-scrollbar-thumb { 29 | background-color: rgb(216, 216, 216); 30 | border-radius: 40px; 31 | } 32 | ::-webkit-scrollbar-track { 33 | background-color: transparent; 34 | } 35 | 36 | /* color-picker style */ 37 | 38 | #preview { 39 | background: transparent 40 | url('https://ej2.syncfusion.com/react/demos/src/color-picker/images/pen.png') 41 | no-repeat; 42 | display: inline-block; 43 | height: 80px; 44 | margin: 10px 0; 45 | min-width: 300px; 46 | max-width: 600px; 47 | background-color: #008000; 48 | } 49 | 50 | .e-input-group:not(.e-float-icon-left), .e-input-group.e-success:not(.e-float-icon-left), .e-input-group.e-warning:not(.e-float-icon-left), .e-input-group.e-error:not(.e-float-icon-left), .e-input-group.e-control-wrapper:not(.e-float-icon-left), .e-input-group.e-control-wrapper.e-success:not(.e-float-icon-left), .e-input-group.e-control-wrapper.e-warning:not(.e-float-icon-left), .e-input-group.e-control-wrapper.e-error:not(.e-float-icon-left){ 51 | border: none; 52 | } 53 | -------------------------------------------------------------------------------- /src/pages/Charts/Bar.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, Legend, Category, Tooltip, ColumnSeries, DataLabel } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { barCustomSeries, barPrimaryXAxis, barPrimaryYAxis } from '../../data/dummy'; 5 | import { ChartsHeader } from '../../components'; 6 | import { useStateContext } from '../../contexts/ContextProvider'; 7 | 8 | const Bar = () => { 9 | const { currentMode } = useStateContext(); 10 | 11 | return ( 12 |
13 | 14 |
15 | 24 | 25 | 26 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 27 | {barCustomSeries.map((item, index) => )} 28 | 29 | 30 |
31 |
32 | ); 33 | }; 34 | 35 | export default Bar; 36 | -------------------------------------------------------------------------------- /src/contexts/ContextProvider.js: -------------------------------------------------------------------------------- 1 | import React, { createContext, useContext, useState } from 'react'; 2 | 3 | const StateContext = createContext(); 4 | 5 | const initialState = { 6 | chat: false, 7 | cart: false, 8 | userProfile: false, 9 | notification: false, 10 | }; 11 | 12 | export const ContextProvider = ({ children }) => { 13 | const [screenSize, setScreenSize] = useState(undefined); 14 | const [currentColor, setCurrentColor] = useState(localStorage.getItem('colorMode') || '#03C9D7'); 15 | const [currentMode, setCurrentMode] = useState(localStorage.getItem('themeMode') || 'Light'); 16 | const [themeSettings, setThemeSettings] = useState(false); 17 | const [activeMenu, setActiveMenu] = useState(true); 18 | const [isClicked, setIsClicked] = useState(initialState); 19 | 20 | const setMode = (e) => { 21 | setCurrentMode(e.target.value); 22 | localStorage.setItem('themeMode', e.target.value); 23 | }; 24 | 25 | const setColor = (color) => { 26 | setCurrentColor(color); 27 | localStorage.setItem('colorMode', color); 28 | }; 29 | 30 | const handleClick = (clicked) => setIsClicked({ ...initialState, [clicked]: true }); 31 | 32 | return ( 33 | // eslint-disable-next-line react/jsx-no-constructed-context-values 34 | 35 | {children} 36 | 37 | ); 38 | }; 39 | 40 | export const useStateContext = () => useContext(StateContext); 41 | -------------------------------------------------------------------------------- /src/components/Charts/Pie.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { AccumulationChartComponent, AccumulationSeriesCollectionDirective, AccumulationSeriesDirective, AccumulationLegend, PieSeries, AccumulationDataLabel, Inject, AccumulationTooltip } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { useStateContext } from '../../contexts/ContextProvider'; 5 | 6 | const Doughnut = ({ id, data, legendVisiblity, height }) => { 7 | const { currentMode } = useStateContext(); 8 | 9 | return ( 10 | 17 | 18 | 19 | 41 | 42 | 43 | ); 44 | }; 45 | 46 | export default Doughnut; 47 | -------------------------------------------------------------------------------- /src/components/Notification.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { MdOutlineCancel } from 'react-icons/md'; 3 | 4 | import { Button } from '.'; 5 | import { chatData } from '../data/dummy'; 6 | import { useStateContext } from '../contexts/ContextProvider'; 7 | 8 | const Notification = () => { 9 | const { currentColor } = useStateContext(); 10 | 11 | return ( 12 |
13 |
14 |
15 |

Notifications

16 | 17 |
18 |
20 |
21 | {chatData?.map((item, index) => ( 22 |
23 | {item.message} 24 |
25 |

{item.message}

26 |

{item.desc}

27 |
28 |
29 | ))} 30 |
31 |
33 |
34 |
35 | ); 36 | }; 37 | 38 | export default Notification; 39 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "project_dashboard", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@syncfusion/ej2": "^19.4.56", 7 | "@syncfusion/ej2-react-calendars": "^19.4.56", 8 | "@syncfusion/ej2-react-charts": "^19.4.54", 9 | "@syncfusion/ej2-react-dropdowns": "^19.4.56", 10 | "@syncfusion/ej2-react-grids": "^19.4.56", 11 | "@syncfusion/ej2-react-inputs": "^19.4.52", 12 | "@syncfusion/ej2-react-kanban": "^19.4.52", 13 | "@syncfusion/ej2-react-popups": "^19.4.53", 14 | "@syncfusion/ej2-react-richtexteditor": "^19.4.56", 15 | "@syncfusion/ej2-react-schedule": "^19.4.55", 16 | "emailjs-com": "^3.2.0", 17 | "react": "^17.0.2", 18 | "react-dom": "^17.0.2", 19 | "react-icons": "^4.7.1", 20 | "react-router-dom": "^6.6.1", 21 | "react-scripts": "^5.0.0" 22 | }, 23 | "scripts": { 24 | "start": "react-scripts start", 25 | "build": "react-scripts build", 26 | "test": "react-scripts test", 27 | "eject": "react-scripts eject" 28 | }, 29 | "eslintConfig": { 30 | "extends": [ 31 | "react-app", 32 | "react-app/jest" 33 | ] 34 | }, 35 | "browserslist": { 36 | "production": [ 37 | ">0.2%", 38 | "not dead", 39 | "not op_mini all" 40 | ], 41 | "development": [ 42 | "last 1 chrome version", 43 | "last 1 firefox version", 44 | "last 1 safari version" 45 | ] 46 | }, 47 | "devDependencies": { 48 | "autoprefixer": "^10.4.2", 49 | "eslint": "^8.9.0", 50 | "eslint-config-airbnb": "^19.0.4", 51 | "eslint-plugin-import": "^2.25.4", 52 | "eslint-plugin-jsx-a11y": "^6.5.1", 53 | "eslint-plugin-react": "^7.28.0", 54 | "eslint-plugin-react-hooks": "^4.3.0", 55 | "postcss": "^8.4.6", 56 | "tailwindcss": "^3.0.19" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | }, 6 | extends: [ 7 | 'plugin:react/recommended', 8 | 'airbnb', 9 | ], 10 | parserOptions: { 11 | ecmaFeatures: { 12 | jsx: true, 13 | }, 14 | ecmaVersion: 12, 15 | sourceType: 'module', 16 | }, 17 | plugins: [ 18 | 'react', 19 | ], 20 | rules: { 21 | 'react/function-component-definition': 0, 22 | 'import/extensions': 0, 23 | 'react/prop-types': 0, 24 | 'linebreak-style': 0, 25 | 'react/state-in-constructor': 0, 26 | 'import/prefer-default-export': 0, 27 | 'max-len': [ 28 | 2, 29 | 550, 30 | ], 31 | 'no-multiple-empty-lines': [ 32 | 'error', 33 | { 34 | max: 1, 35 | maxEOF: 1, 36 | }, 37 | ], 38 | 'no-underscore-dangle': [ 39 | 'error', 40 | { 41 | allow: [ 42 | '_d', 43 | '_dh', 44 | '_h', 45 | '_id', 46 | '_m', 47 | '_n', 48 | '_t', 49 | '_text', 50 | ], 51 | }, 52 | ], 53 | 'object-curly-newline': 0, 54 | 'react/jsx-filename-extension': 0, 55 | 'react/jsx-one-expression-per-line': 0, 56 | 'jsx-a11y/click-events-have-key-events': 0, 57 | 'jsx-a11y/alt-text': 0, 58 | 'jsx-a11y/no-autofocus': 0, 59 | 'jsx-a11y/no-static-element-interactions': 0, 60 | 'react/no-array-index-key': 0, 61 | 'jsx-a11y/anchor-is-valid': [ 62 | 'error', 63 | { 64 | components: [ 65 | 'Link', 66 | ], 67 | specialLink: [ 68 | 'to', 69 | 'hrefLeft', 70 | 'hrefRight', 71 | ], 72 | aspects: [ 73 | 'noHref', 74 | 'invalidHref', 75 | 'preferButton', 76 | ], 77 | }, 78 | ], 79 | }, 80 | }; 81 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 19 | 20 | 29 | Shoppy Admin Panel 30 | 31 | 32 | 33 |
34 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/pages/Charts/Pyramid.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { AccumulationChartComponent, AccumulationSeriesCollectionDirective, AccumulationSeriesDirective, Inject, AccumulationLegend, AccumulationDataLabel, AccumulationTooltip, PyramidSeries, AccumulationSelection } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { PyramidData } from '../../data/dummy'; 5 | import { useStateContext } from '../../contexts/ContextProvider'; 6 | import { ChartsHeader } from '../../components'; 7 | 8 | const Pyramid = () => { 9 | const { currentMode } = useStateContext(); 10 | 11 | return ( 12 |
13 | 14 |
15 | 21 | 22 | 23 | 41 | 42 | 43 |
44 |
45 | ); 46 | }; 47 | 48 | export default Pyramid; 49 | -------------------------------------------------------------------------------- /src/pages/Charts/Financial.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, HiloSeries, Tooltip, DateTime, Zoom, Logarithmic, Crosshair } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { financialChartData, FinancialPrimaryXAxis, FinancialPrimaryYAxis } from '../../data/dummy'; 5 | import { useStateContext } from '../../contexts/ContextProvider'; 6 | import { ChartsHeader } from '../../components'; 7 | 8 | const date1 = new Date('2022, 1, 1'); 9 | 10 | // eslint-disable-next-line consistent-return 11 | function filterValue(value) { 12 | if (value.x >= date1) { 13 | // eslint-disable-next-line no-sequences 14 | return value.x, value.high, value.low; 15 | } 16 | } 17 | const returnValue = financialChartData.filter(filterValue); 18 | 19 | const Financial = () => { 20 | const { currentMode } = useStateContext(); 21 | 22 | return ( 23 |
24 | 25 |
26 | 35 | 36 | 37 | 46 | 47 | 48 |
49 |
50 | ); 51 | }; 52 | 53 | export default Financial; 54 | -------------------------------------------------------------------------------- /.github/workflows/ auto-comment.yml: -------------------------------------------------------------------------------- 1 | name: Auto Comment 2 | on: 3 | issues: 4 | types: 5 | - opened 6 | - closed 7 | - assigned 8 | pull_request: 9 | types: 10 | - opened 11 | - closed 12 | 13 | jobs: 14 | run: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Auto Comment on Issues Opened 18 | uses: wow-actions/auto-comment@v1 19 | with: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | issuesOpened: | 22 | Hey @{{ author }}, 23 | 24 | Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible. 25 | 26 | Please make sure you have given us as much context as possible. 27 | 28 | - name: Auto Comment on Issues Closed 29 | uses: wow-actions/auto-comment@v1 30 | with: 31 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 32 | issuesClosed: | 33 | Hey @{{ author }}, This issue is closed. 34 | 35 | - name: Auto Comment on Pull Request Merged 36 | uses: wow-actions/auto-comment@v1 37 | with: 38 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 39 | pullRequestMerged: | 40 | Hey, @{{ author }} Thank you for the valuable contribution! 41 | 42 | - name: Auto Comment on Pull Request Opened 43 | uses: wow-actions/auto-comment@v1 44 | with: 45 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 46 | pullRequestOpened: | 47 | Hey @{{ author }}, 48 |
49 | Thank you for raising your pull request and contributing to our Community 🎉 50 | 51 | Please make sure you have followed our contributing guidelines. We will review it as soon as possible. 52 | 53 | - name: Auto Comment on Issues Assigned 54 | uses: wow-actions/auto-comment@v1 55 | with: 56 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 57 | issuesAssigned: | 58 | Hey @{{ author }}, thank you for raising an issue. I have assigned the issue to you. You can now start working on it. If you encounter any problems, feel free to connect with us. 59 | -------------------------------------------------------------------------------- /src/pages/Charts/ColorMapping.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, ColumnSeries, Category, Tooltip, Legend, RangeColorSettingsDirective, RangeColorSettingDirective } from '@syncfusion/ej2-react-charts'; 3 | 4 | import { colorMappingData, ColorMappingPrimaryXAxis, ColorMappingPrimaryYAxis, rangeColorMapping } from '../../data/dummy'; 5 | import { ChartsHeader } from '../../components'; 6 | import { useStateContext } from '../../contexts/ContextProvider'; 7 | 8 | const ColorMapping = () => { 9 | const { currentMode } = useStateContext(); 10 | 11 | return ( 12 |
13 | 14 |
15 | 24 | 25 | 26 | 37 | 38 | 39 | {/* eslint-disable-next-line react/jsx-props-no-spreading */} 40 | {rangeColorMapping.map((item, index) => )} 41 | 42 | 43 |
44 |
45 | ); 46 | }; 47 | 48 | export default ColorMapping; 49 | -------------------------------------------------------------------------------- /src/pages/Calendar.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { ScheduleComponent, ViewsDirective, ViewDirective, Day, Week, WorkWeek, Month, Agenda, Inject, Resize, DragAndDrop } from '@syncfusion/ej2-react-schedule'; 3 | import { DatePickerComponent } from '@syncfusion/ej2-react-calendars'; 4 | 5 | import { scheduleData } from '../data/dummy'; 6 | import { Header } from '../components'; 7 | 8 | // eslint-disable-next-line react/destructuring-assignment 9 | const PropertyPane = (props) =>
{props.children}
; 10 | 11 | const Scheduler = () => { 12 | const [scheduleObj, setScheduleObj] = useState(); 13 | 14 | const change = (args) => { 15 | scheduleObj.selectedDate = args.value; 16 | scheduleObj.dataBind(); 17 | }; 18 | 19 | const onDragStart = (arg) => { 20 | // eslint-disable-next-line no-param-reassign 21 | arg.navigation.enable = true; 22 | }; 23 | 24 | return ( 25 |
26 |
27 | setScheduleObj(schedule)} 30 | selectedDate={new Date(2022, 0, 10)} 31 | eventSettings={{ dataSource: scheduleData }} 32 | dragStart={onDragStart} 33 | > 34 | 35 | { ['Day', 'Week', 'WorkWeek', 'Month', 'Agenda'].map((item) => )} 36 | 37 | 38 | 39 | 40 | 43 | 44 | 45 | 54 | 55 | 56 |
46 | 53 |
57 |
58 |
59 | ); 60 | }; 61 | 62 | export default Scheduler; 63 | -------------------------------------------------------------------------------- /src/components/Chat.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { MdOutlineCancel } from 'react-icons/md'; 3 | 4 | import { Button } from '.'; 5 | import { chatData } from '../data/dummy'; 6 | import { useStateContext } from '../contexts/ContextProvider'; 7 | 8 | const Chat = () => { 9 | const { currentColor } = useStateContext(); 10 | 11 | return ( 12 |
13 |
14 |
15 |

Messages

16 | 19 |
20 |
28 |
29 | {chatData?.map((item, index) => ( 30 |
31 |
32 | {item.message} 37 | 41 |
42 |
43 |

{item.message}

44 |

{item.desc}

45 |

{item.time}

46 |
47 |
48 | ))} 49 |
50 |
58 |
59 |
60 | ); 61 | }; 62 | 63 | export default Chat; 64 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | We are committed to providing a friendly, inclusive, and safe environment for all participants in our project repository. This code of conduct outlines our expectations for behavior and ensures that everyone can collaborate in a positive and respectful manner. By participating in this project, you agree to abide by this code of conduct. 4 | 5 | ## 1. Be Respectful and Inclusive 6 | 7 | Treat all participants with respect and courtesy, regardless of their race, ethnicity, nationality, gender identity, sexual orientation, age, disability, religion, or any other personal characteristics. Create an inclusive and welcoming environment for everyone to contribute. 8 | 9 | ## 2. Foster a Collaborative Atmosphere 10 | 11 | Encourage open and constructive discussions. Be receptive to different ideas and perspectives. Avoid personal attacks, harassment, or any form of offensive or derogatory language or behavior. 12 | 13 | ## 3. Be Mindful of Language and Tone 14 | 15 | Use clear and inclusive language when communicating in discussions, comments, and documentation. Be mindful of how your words may be perceived by others. Refrain from using offensive, discriminatory, or inflammatory language. 16 | ## 4. Exercise Empathy and Understanding 17 | 18 | Take into account that participants may have different backgrounds and experiences. Be considerate and understanding when communicating with others. If a misunderstanding occurs, seek to resolve it in a peaceful and respectful manner. 19 | 20 | ## 5. Respect Privacy and Confidentiality 21 | 22 | Respect the privacy and confidentiality of others. Do not share personal information without consent. Be cautious when handling sensitive data and ensure compliance with relevant privacy laws and regulations. 23 | 24 | ## 6. Report Incidents 25 | 26 | If you witness or experience any behavior that violates this code of conduct, promptly report it to the project maintainers or administrators. Provide as much detail as possible to help in the investigation. All reports will be handled confidentially and with discretion. 27 | 28 | ## 7. Enforcement 29 | 30 | Violation of this code of conduct may result in temporary or permanent restrictions on participation in the project repository. Project maintainers and administrators reserve the right to enforce this code of conduct and take appropriate actions to address any misconduct or breaches of conduct. 31 | 32 | 33 | ## 8. Acknowledgment 34 | 35 | We value and appreciate everyone's contributions to our project repository. By following this code of conduct, we can create a supportive and inclusive environment where collaboration and growth thrive. -------------------------------------------------------------------------------- /src/components/UserProfile.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { MdOutlineCancel } from 'react-icons/md'; 3 | 4 | import { Button } from '.'; 5 | import { userProfileData } from '../data/dummy'; 6 | import { useStateContext } from '../contexts/ContextProvider'; 7 | import avatar from '../data/avatar.jpg'; 8 | 9 | const UserProfile = () => { 10 | const { currentColor } = useStateContext(); 11 | 12 | return ( 13 |
14 |
15 |

User Profile

16 |
24 |
25 | user-profile 30 |
31 |

Swarnavo Pramanik

32 |

Administrator

33 |

swarnavo.pramanik@shop.com

34 |
35 |
36 |
37 | {userProfileData.map((item, index) => ( 38 | 39 |
40 | 47 | 48 |
49 |

{item.title}

50 |

{item.desc}

51 |
52 |
53 |
54 | ))} 55 |
56 |
57 |
65 |
66 | 67 | ); 68 | }; 69 | 70 | export default UserProfile; 71 | -------------------------------------------------------------------------------- /.github/workflows/codeql.yml: -------------------------------------------------------------------------------- 1 | name: "CodeQL" 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | # The branches below must be a subset of the branches above 8 | branches: [ "main" ] 9 | schedule: 10 | - cron: '43 3 * * 6' 11 | 12 | jobs: 13 | analyze: 14 | name: Analyze 15 | runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} 16 | timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} 17 | permissions: 18 | actions: read 19 | contents: read 20 | security-events: write 21 | 22 | strategy: 23 | fail-fast: false 24 | matrix: 25 | language: [ 'javascript' ] 26 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ] 27 | # Use only 'java' to analyze code written in Java, Kotlin or both 28 | # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both 29 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support 30 | 31 | steps: 32 | - name: Checkout repository 33 | uses: actions/checkout@v3 34 | 35 | # Initializes the CodeQL tools for scanning. 36 | - name: Initialize CodeQL 37 | uses: github/codeql-action/init@v2 38 | with: 39 | languages: ${{ matrix.language }} 40 | # If you wish to specify custom queries, you can do so here or in a config file. 41 | # By default, queries listed here will override any specified in a config file. 42 | # Prefix the list here with "+" to use these queries and those in the config file. 43 | 44 | # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs 45 | # queries: security-extended,security-and-quality 46 | 47 | 48 | # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). 49 | # If this step fails, then you should remove it and run the build manually (see below) 50 | - name: Autobuild 51 | uses: github/codeql-action/autobuild@v2 52 | 53 | # ℹ️ Command-line programs to run using the OS shell. 54 | # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun 55 | 56 | # If the Autobuild fails above, remove it and uncomment the following three lines. 57 | # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. 58 | 59 | # - run: | 60 | # echo "Run, Build Application using script" 61 | # ./location_of_script_within_repo/buildscript.sh 62 | 63 | - name: Perform CodeQL Analysis 64 | uses: github/codeql-action/analyze@v2 65 | with: 66 | category: "/language:${{matrix.language}}" -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Thank you for considering contributing to this project! We appreciate your interest and support. This document outlines the guidelines and expectations for contributing to this repository. Please take a moment to review this information before submitting any contributions. 4 | 5 | ## Reporting Bugs and Issues 6 | 7 | If you encounter a bug or issue while using this project, we encourage you to report it. When reporting bugs, please provide as much information as possible, including: 8 | 9 | - Steps to reproduce the issue 10 | - Expected behavior 11 | - Actual behavior 12 | - Any relevant error messages or screenshots 13 | 14 | To report a bug or issue, please follow these steps: 15 | 16 | 1. Go to the [Issues](https://github.com/swarnavopramanik/Admin-Panel/issues/) section of the repository. 17 | 2. Click on the "New Issue" button. 18 | 3. Fill in the necessary details, following the provided template. 19 | 20 | ## Suggesting New Features or Improvements 21 | 22 | If you have an idea for a new feature or an improvement to an existing feature, we would love to hear from you! To suggest a new feature, please follow these steps: 23 | 24 | 1. Go to the [Issues](https://github.com/swarnavopramanik/Admin-Panel/issues/) section of the repository. 25 | 2. Click on the "New Issue" button. 26 | 3. Fill in the necessary details, following the provided template. 27 | 28 | ## Code Formatting and Style Guidelines 29 | 30 | Consistent code formatting and style are important for maintaining a clean and readable codebase. Please adhere to the following guidelines when submitting code changes: 31 | 32 | - Use spaces for indentation (4 spaces per level). 33 | - Follow the established naming conventions for variables, functions, and classes. 34 | - Write clear and concise comments to explain complex code sections. 35 | 36 | ## Submitting Pull Requests 37 | 38 | We welcome contributions through pull requests (PRs). To submit a PR, please follow these steps: 39 | 40 | 1. Fork the repository to your GitHub account. 41 | 2. Create a new branch for your changes. 42 | 3. Make the necessary code changes in your branch. 43 | 4. Test your changes thoroughly. 44 | 5. Submit a pull request, explaining the purpose and details of your changes. 45 | 6. Be open to feedback and actively participate in the review process. 46 | 47 | ## Communication 48 | 49 | Effective communication is essential for maintaining a collaborative and inclusive environment. When participating in discussions, please: 50 | 51 | - Be respectful and considerate towards others. 52 | - Provide constructive feedback and suggestions. 53 | - Clearly express your thoughts and ideas. 54 | - Be open to different perspectives and opinions. 55 | 56 | By following these guidelines, we aim to create a welcoming community where everyone feels comfortable and empowered to contribute. 57 | 58 | Thank you for your interest and support! 59 | 60 | -------------------------------------------------------------------------------- /src/components/Feedback.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import emailjs from 'emailjs-com'; 3 | import { MdOutlineCancel } from 'react-icons/md'; 4 | import Button from './Button'; 5 | 6 | const Feedback = () => { 7 | const [feedback, setFeedBack] = useState(''); 8 | const [submitted, setSubmitted] = useState(false); 9 | const [email, setEmail] = useState(''); 10 | emailjs.init('1AkXF-PC-6FG2Ym15'); 11 | 12 | const handleSubmit = (e) => { 13 | e.preventDefault(); 14 | 15 | const templateParams = { 16 | feedback, 17 | from_email: email, 18 | to_email: 'swarnavo.pramanik8697@gmail.com', 19 | }; 20 | emailjs 21 | .send('service_c8wox7q', 'template_47lh3vm', templateParams, '1AkXF-PC-6FG2Ym15') 22 | .then((response) => { 23 | console.log('Feedback sent!', response.status, response.text); 24 | setSubmitted(true); 25 | setFeedBack(''); 26 | setEmail(''); 27 | }) 28 | .catch((error) => { 29 | console.error('Error sending feedback:', error); 30 | }); 31 | }; 32 | return ( 33 | 34 |
35 |
36 |
37 |

Share Your Feedback

38 |
39 |
41 |
42 |