├── .eslintrc
├── .github
└── workflows
│ └── prod.yml
├── .gitignore
├── .prettierrc
├── README.md
├── jsconfig.json
├── package-lock.json
├── package.json
├── public
├── assets
│ ├── front
│ │ └── wow.min.js
│ └── images
│ │ └── favicon.svg
├── index.html
└── robots.txt
├── src
├── App.js
├── App.test.js
├── assets
│ ├── fonts
│ │ ├── cryptocoins
│ │ │ ├── cryptocoins.ttf
│ │ │ ├── cryptocoins.woff
│ │ │ └── cryptocoins.woff2
│ │ ├── cryptofont.css
│ │ ├── feather.css
│ │ ├── feather
│ │ │ ├── feather.eot
│ │ │ ├── feather.svg
│ │ │ ├── feather.ttf
│ │ │ └── feather.woff
│ │ ├── fontawesome.css
│ │ ├── fontawesome
│ │ │ ├── fa-brands-400.eot
│ │ │ ├── fa-brands-400.svg
│ │ │ ├── fa-brands-400.ttf
│ │ │ ├── fa-brands-400.woff
│ │ │ ├── fa-brands-400.woff2
│ │ │ ├── fa-regular-400.eot
│ │ │ ├── fa-regular-400.svg
│ │ │ ├── fa-regular-400.ttf
│ │ │ ├── fa-regular-400.woff
│ │ │ ├── fa-regular-400.woff2
│ │ │ ├── fa-solid-900.eot
│ │ │ ├── fa-solid-900.svg
│ │ │ ├── fa-solid-900.ttf
│ │ │ ├── fa-solid-900.woff
│ │ │ └── fa-solid-900.woff2
│ │ ├── inter
│ │ │ ├── Inter-Bold.woff
│ │ │ ├── Inter-Bold.woff2
│ │ │ ├── Inter-Medium.woff
│ │ │ ├── Inter-Medium.woff2
│ │ │ ├── Inter-Regular.woff
│ │ │ ├── Inter-Regular.woff2
│ │ │ ├── Inter-SemiBold.woff
│ │ │ ├── Inter-SemiBold.woff2
│ │ │ └── inter.css
│ │ ├── material.css
│ │ └── material
│ │ │ └── material.woff2
│ ├── images
│ │ ├── favicon.svg
│ │ ├── logo-dark.svg
│ │ ├── logo-sm-light.svg
│ │ ├── logo-sm.svg
│ │ ├── logo.svg
│ │ ├── user
│ │ │ └── avatar-2.jpg
│ │ └── widget
│ │ │ ├── p1.jpg
│ │ │ ├── p2.jpg
│ │ │ ├── p3.jpg
│ │ │ └── p4.jpg
│ └── scss
│ │ ├── react-modules
│ │ ├── _carousel.scss
│ │ ├── _popover.scss
│ │ ├── _react-rating.scss
│ │ └── _tooltip.scss
│ │ ├── settings
│ │ ├── _custom-variables.scss
│ │ ├── _theme-variables.scss
│ │ └── dark
│ │ │ ├── _custom-variables.scss
│ │ │ └── _theme-variables.scss
│ │ ├── style.scss
│ │ └── themes
│ │ ├── _general.scss
│ │ ├── _generic.scss
│ │ ├── components
│ │ ├── _badge.scss
│ │ ├── _button.scss
│ │ ├── _card.scss
│ │ ├── _dropdown.scss
│ │ ├── _form.scss
│ │ ├── _table.scss
│ │ └── _widget.scss
│ │ ├── layouts
│ │ ├── _pc-common.scss
│ │ ├── _pc-header.scss
│ │ └── _pc-sidebar.scss
│ │ ├── pages
│ │ ├── _authentication.scss
│ │ ├── _icon-lauouts.scss
│ │ └── _pages.scss
│ │ └── plugins
│ │ └── _data-tables.scss
├── components
│ ├── Card
│ │ └── MainCard.js
│ ├── Loader
│ │ ├── Bar.js
│ │ ├── Container.js
│ │ ├── Loader.js
│ │ ├── Progress.js
│ │ └── Spinner.js
│ ├── Modal
│ │ └── AnimatedModal.js
│ ├── Notifications
│ │ └── BasicNotifications.js
│ └── Widgets
│ │ ├── FeedTable.js
│ │ ├── ProductTable.js
│ │ └── Statistic
│ │ ├── FlatCard.js
│ │ ├── IcoCard.js
│ │ ├── NotificationCard.js
│ │ ├── OrderCard.js
│ │ ├── OrderVisitorCard.js
│ │ ├── ProductCard.js
│ │ ├── StatisticBlink.js
│ │ └── SubscribeCard.js
├── config
│ └── constant.js
├── contexts
│ └── ConfigContext.js
├── data
│ ├── feedData.js
│ ├── productTableData.js
│ └── tableData.js
├── hooks
│ ├── useOutsideClick.js
│ └── useWindowSize.js
├── index.js
├── index.scss
├── layouts
│ └── AdminLayout
│ │ ├── Breadcrumb
│ │ └── index.js
│ │ ├── MobileHeader
│ │ └── index.js
│ │ ├── Modal
│ │ └── index.js
│ │ ├── NavBar
│ │ ├── NavLeft
│ │ │ └── index.js
│ │ ├── NavRight
│ │ │ └── index.js
│ │ └── index.js
│ │ ├── Navigation
│ │ ├── NavContent
│ │ │ ├── NavBadge
│ │ │ │ └── index.js
│ │ │ ├── NavCollapse
│ │ │ │ └── index.js
│ │ │ ├── NavGroup
│ │ │ │ └── index.js
│ │ │ ├── NavIcon
│ │ │ │ └── index.js
│ │ │ ├── NavItem
│ │ │ │ └── index.js
│ │ │ └── index.js
│ │ └── index.js
│ │ └── index.js
├── menu-items-collapse.js
├── menu-items.js
├── react-app-env.d.js
├── react-app-env.d.ts
├── reportWebVitals.js
├── routes
│ ├── renderRoutes.js
│ └── routes.js
├── setupTests.js
├── store
│ ├── actions.js
│ └── index.js
├── utils
│ └── helper.js
└── views
│ ├── auth
│ ├── signin
│ │ └── SignIn1.js
│ └── signup
│ │ └── SignUp1.js
│ ├── charts
│ └── apex-chart
│ │ ├── chart
│ │ ├── area-chart-1.js
│ │ ├── bar-chart-1.js
│ │ ├── bar-chart-2.js
│ │ ├── bar-chart-3.js
│ │ ├── bar-chart-4.js
│ │ ├── bubble-chart-1.js
│ │ ├── bubble-chart-2.js
│ │ ├── candlestick-chart.js
│ │ ├── daily-visitor.js
│ │ ├── heat-map-chart-1.js
│ │ ├── heat-map-chart-2.js
│ │ ├── line-chart-1.js
│ │ ├── line-chart-3.js
│ │ ├── line-chart.js
│ │ ├── mixed-chart-1.js
│ │ ├── mixed-chart-2.js
│ │ ├── pie-chart-1.js
│ │ ├── pie-chart-2.js
│ │ ├── radar-chart-1.js
│ │ ├── radar-chart-2.js
│ │ ├── radial-bar-chart-1.js
│ │ ├── radial-bar-chart-2.js
│ │ ├── scatter-chart-1.js
│ │ └── scatter-chart-2.js
│ │ └── index.js
│ ├── dashboard
│ └── DashSales
│ │ ├── chart
│ │ ├── sales-account-chart.js
│ │ ├── sales-customer-satisfication-chart.js
│ │ ├── sales-support-chart.js
│ │ └── sales-support-chart1.js
│ │ └── index.js
│ ├── maps
│ ├── GmapSearchAPI.js
│ ├── GoogleMaps.js
│ └── google-maps
│ │ ├── BasicMap.js
│ │ ├── GmapSearch.js
│ │ ├── Marker.js
│ │ ├── MarkerClusterer.js
│ │ └── StreetViewPanorma.js
│ ├── page-layouts
│ ├── CommonContent.js
│ └── vertical
│ │ └── CollapseMenu.js
│ ├── sample
│ └── index.js
│ ├── tables
│ └── bootstrap
│ │ └── BasicTable.js
│ └── ui-elements
│ ├── basic
│ └── BasicTypography.js
│ └── icons
│ ├── Feather.js
│ └── data
│ └── feather-icon.js
└── yarn.lock
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "env": {
4 | "browser": true,
5 | "es2021": true
6 | },
7 | "extends": ["airbnb", "prettier", "plugin:jsx-a11y/recommended", "plugin:react-hooks/recommended"],
8 | "settings": {
9 | "import/resolver": {
10 | "node": {
11 | "moduleDirectory": ["node_modules", "src/"]
12 | }
13 | }
14 | },
15 | "parser": "@babel/eslint-parser",
16 | "parserOptions": {
17 | "requireConfigFile": false,
18 | "ecmaFeatures": {
19 | "experimentalObjectRestSpread": true,
20 | "impliedStrict": true
21 | },
22 | "ecmaVersion": 12,
23 | "babelOptions": {
24 | "presets": ["@babel/preset-react"]
25 | }
26 | },
27 | "plugins": ["prettier", "react", "react-hooks"],
28 | "rules": {
29 | "react/jsx-filename-extension": 0,
30 | "no-param-reassign": 0,
31 | "react/prop-types": 0,
32 | "react/require-default-props": 0,
33 | "react/no-array-index-key": 0,
34 | "react/jsx-props-no-spreading": 0,
35 | "react/forbid-prop-types": 0,
36 | "import/order": 0,
37 | "no-console": 0,
38 | "jsx-a11y/anchor-is-valid": 0,
39 | "jsx-a11y/label-has-associated-control": 0,
40 | "react/no-unescaped-entities": 0,
41 | "no-use-before-define": 0,
42 | "jsx-a11y/no-onchange": 0,
43 | "no-shadow": 2,
44 | "no-unused-vars": [
45 | 2,
46 | {
47 | "ignoreRestSiblings": false
48 | }
49 | ],
50 | "prettier/prettier": [
51 | 2,
52 | {
53 | "bracketSpacing": true,
54 | "printWidth": 140,
55 | "singleQuote": true,
56 | "trailingComma": "none",
57 | "tabWidth": 4,
58 | "useTabs": false,
59 | "endOfLine": "auto"
60 | }
61 | ]
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/.github/workflows/prod.yml:
--------------------------------------------------------------------------------
1 | name: DashBoardKit - Production Deploy
2 |
3 | # Controls when the action will run.
4 | on:
5 | # Triggers the workflow on push or pull request events but only for the master branch
6 | push:
7 | branches: [master]
8 | pull_request:
9 | branches: [master]
10 |
11 | jobs:
12 | sftp-deploy:
13 | name: 🎉 Deploy
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: 🚚 Get latest code
18 | uses: actions/checkout@v1
19 |
20 | - name: Install Node.js 14
21 | uses: actions/setup-node@v1
22 | with:
23 | node-version: '14.x'
24 |
25 | - name: 🔨 Build Project
26 | run: |
27 | yarn
28 | yarn build
29 |
30 | - name: 📂 Deploy to Server
31 | uses: easingthemes/ssh-deploy@v2.1.5
32 | env:
33 | SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
34 | # ARGS: "-rltgoDzvO --delete"
35 | SOURCE: 'build/'
36 | REMOTE_HOST: 192.34.62.123
37 | REMOTE_USER: dashboardkit
38 | TARGET: public_html/react/free
39 | EXCLUDE: '/dist/, /node_modules/'
40 |
--------------------------------------------------------------------------------
/.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 | /.eslintcache
25 | #package-lock.json
26 | /.vscode
27 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": true,
3 | "printWidth": 140,
4 | "singleQuote": true,
5 | "trailingComma": "none",
6 | "tabWidth": 4,
7 | "useTabs": false,
8 | "endOfLine": "auto"
9 | }
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Dashboardkit React Bootstrap
2 |
3 | [](https://opensource.org/licenses/MIT)
4 | [](https://github.com/codedthemes/dashboardkit-free-bootstrap-admin-template/blob/main/LICENSE)
5 | [](https://github.com/codedthemes/dashboardkit-free-bootstrap-admin-template/)
6 |
7 | DashboardKit Bootstrap React Admin Dashboard Template [](https://twitter.com/intent/tweet?text=Get%20DashboardKit%20Bootstrap%205%20Admin%20Template&url=https://dashboardkit.io&via=codedthemes&hashtags=bootstrap,webdev,developers)
8 |
9 | Save your development time with ready to use DashboardKit React Bootstrap Admin Template. DashboardKit is made for everyone, no matter you are a novice developer, designer, project manager/owner. It is made by an Elite Author with having 5+ years of experience in dashboard making.
10 |
11 | [Pro version](https://dashboardkit.io) of DashboardKit contains features like 10+ Ready to use layouts, Advance UI components, Form components & plugins, Advance Table examples, charts, 11+ Apps, Extra pages, and lots more.
12 |
13 | 
14 |
15 | ## Why DashboardKit?
16 |
17 | DashboardKit free Bootstrap react admin template includes the following feature pages with having MIT license usage.
18 |
19 | * Professional UI design
20 |
21 | * Fully Responsive, all modern browser supported
22 | * Flexible & High-Performance code
23 | * Easy Documentation Guide
24 |
25 | ## Free version preview
26 | #### Preview
27 |
28 | - [Demo](https://dashboardkit.io/react/free/)
29 |
30 | ## Pro version preview & Purchase
31 | #### Preview
32 |
33 | - [Demo](https://dashboardkit.io/react)
34 |
35 | #### Purchase
36 |
37 | - [Get DashboardKit](https://dashboardkit.io/product/dashboardkit-reactjs-admin-template/)
38 |
39 | ## Table of contents
40 |
41 | * [Getting Started](#getting-started)
42 | * [Documentation](#documentation)
43 | * [Technology Stack](#technology-stack)
44 | * [Author](#author)
45 | * [Issues?](#issues)
46 | * [License](#license)
47 | * [Follow us](#follow-us)
48 |
49 | ## Getting Started
50 |
51 | - Clone from Github - https://github.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template.git
52 | - Go to root dir
53 | - Run command 'yarn' or 'npm install'
54 | - Run command 'yarn start' or 'npm run start'
55 |
56 | ## Documentation
57 |
58 | DashboardKit documentation helps you out in all aspects from Installation to deployment. Link to access [Documentation](https://codedthemes.gitbook.io/dashboardkit-react/).
59 |
60 | ## Technology Stack
61 |
62 | - React
63 | - React Bootstrap
64 | - React Redux
65 | - Create React App
66 | - React Router
67 | - Axios
68 | - Redux-saga
69 | - Node
70 | - Saas
71 |
72 |
73 | ## Author
74 |
75 | DashboardKit is managed by Team [CodedThemes](https://codedthemes.com).
76 |
77 | ## Issues
78 |
79 | Please generate a Github issue if you found a bug in any version. We are trying to be responsive to resolve the issue.
80 |
81 | ## License
82 |
83 | - Licensed cover under [MIT](https://github.com/codedthemes/dashboardkit-free-bootstrap-admin-template/blob/main/LICENSE)
84 |
85 | ## Follow us
86 | - Website [https://dashboardkit.io](https://dashboardkit.io)
87 | - CodedThemes [https://codedthemes.com](https://codedthemes.com)
88 | - Dribbble [https://dribbble.com/codedthemes](https://dribbble.com/codedthemes)
89 | - Facebook [https://www.facebook.com/codedthemes](https://www.facebook.com/codedthemes)
90 | - Twitter [https://twitter.com/codedthemes](https://twitter.com/codedthemes)
91 |
92 | ## Further Support
93 | - Create Ticket here: https://codedthemes.support-hub.io/
94 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "baseUrl": "src",
6 | "paths": {
7 | "*": ["src/*"]
8 | },
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "esModuleInterop": true,
12 | "allowSyntheticDefaultImports": true,
13 | "strict": true,
14 | "forceConsistentCasingInFileNames": true,
15 | "noFallthroughCasesInSwitch": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "noEmit": true,
21 | "jsx": "react-jsx"
22 | },
23 | "include": ["src"]
24 | }
25 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dashboard-kit-free-react-bootstrap-admin-template",
3 | "version": "1.0.0",
4 | "private": true,
5 | "homepage": "https://dashboardkit.io/react/free",
6 | "dependencies": {
7 | "@tanem/react-nprogress": "^3.0.54",
8 | "@testing-library/jest-dom": "^5.11.9",
9 | "@testing-library/react": "^11.2.5",
10 | "apexcharts": "^3.24.0",
11 | "bootstrap": "5.0.1",
12 | "feather-icons-react": "^0.4.3",
13 | "lodash": "^4.17.21",
14 | "namor": "^2.0.2",
15 | "node-sass": "^5.0.0",
16 | "prop-types": "^15.7.2",
17 | "react": "^16.4.0",
18 | "react-apexcharts": "^1.3.7",
19 | "react-app-polyfill": "^2.0.0",
20 | "react-bootstrap": "^1.4.3",
21 | "react-bootstrap-range-slider": "^3.0.3",
22 | "react-copy-to-clipboard": "^5.0.3",
23 | "react-dom": "^16.4.0",
24 | "react-google-maps": "^9.4.5",
25 | "react-perfect-scrollbar": "^1.5.8",
26 | "react-redux": "^7.2.2",
27 | "react-router-dom": "^5.2.0",
28 | "react-scripts": "4.0.2",
29 | "react-slidedown": "^2.4.5",
30 | "react-table": "^7.6.3",
31 | "react-toast-notifications": "^2.4.3",
32 | "react-useinterval": "^1.0.2",
33 | "recompose": "^0.30.0",
34 | "redux": "^4.0.5",
35 | "redux-devtools-extension": "^2.13.9",
36 | "redux-form": "^8.3.7",
37 | "redux-saga": "^1.1.3",
38 | "rodal": "^1.8.1",
39 | "styled-components": "^5.2.1",
40 | "typescript": "^4.1.5",
41 | "web-vitals": "^1.1.0"
42 | },
43 | "scripts": {
44 | "start": "react-scripts start",
45 | "build": "react-scripts build",
46 | "test": "react-scripts test",
47 | "eject": "react-scripts eject"
48 | },
49 | "eslintConfig": {
50 | "extends": [
51 | "react-app",
52 | "react-app/jest"
53 | ]
54 | },
55 | "browserslist": {
56 | "production": [
57 | ">0.2%",
58 | "not dead",
59 | "not op_mini all"
60 | ],
61 | "development": [
62 | "last 1 chrome version",
63 | "last 1 firefox version",
64 | "last 1 safari version"
65 | ]
66 | },
67 | "compilerOptions": {
68 | "baseUrl": "src"
69 | },
70 | "include": [
71 | "src"
72 | ],
73 | "devDependencies": {
74 | "@babel/core": "^7.14.8",
75 | "@babel/eslint-parser": "^7.14.7",
76 | "@babel/preset-react": "^7.14.5",
77 | "eslint": "^7.31.0",
78 | "eslint-config-airbnb": "18.2.1",
79 | "eslint-config-prettier": "^8.3.0",
80 | "eslint-plugin-import": "2.22.1",
81 | "eslint-plugin-jsx-a11y": "6.4.1",
82 | "eslint-plugin-prettier": "^3.4.0",
83 | "eslint-plugin-react": "7.21.5",
84 | "eslint-plugin-react-hooks": "^4.2.0",
85 | "prettier": "^2.2.1"
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/public/assets/images/favicon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 | DashboardKit Bootstrap 5 Admin Template
19 |
20 |
21 |
22 | You need to enable JavaScript to run this app.
23 |
24 |
34 |
35 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { BrowserRouter as Router } from 'react-router-dom';
5 |
6 | // project imports
7 | import routes from 'routes/routes';
8 | import renderRoutes from 'routes/renderRoutes';
9 | import { BASENAME } from 'config/constant';
10 |
11 | // -----------------------|| APP ||-----------------------//
12 | const App = () => {renderRoutes(routes)} ;
13 |
14 | export default App;
15 |
--------------------------------------------------------------------------------
/src/App.test.js:
--------------------------------------------------------------------------------
1 | // third party
2 | import { render, screen } from '@testing-library/react';
3 |
4 | // project imports
5 | import App from './App';
6 |
7 | // testcases
8 | test('renders learn react link', () => {
9 | render( );
10 | const linkElement = screen.getByText(/learn react/i);
11 | expect(linkElement).toBeInTheDocument();
12 | });
13 |
--------------------------------------------------------------------------------
/src/assets/fonts/cryptocoins/cryptocoins.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/cryptocoins/cryptocoins.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/cryptocoins/cryptocoins.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/cryptocoins/cryptocoins.woff
--------------------------------------------------------------------------------
/src/assets/fonts/cryptocoins/cryptocoins.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/cryptocoins/cryptocoins.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/feather/feather.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/feather/feather.eot
--------------------------------------------------------------------------------
/src/assets/fonts/feather/feather.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/feather/feather.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/feather/feather.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/feather/feather.woff
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-brands-400.eot
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-brands-400.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-brands-400.woff
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-brands-400.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-regular-400.eot
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-regular-400.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-regular-400.woff
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-regular-400.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-solid-900.eot
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-solid-900.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-solid-900.woff
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/fontawesome/fa-solid-900.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-Bold.woff
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-Bold.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-Medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-Medium.woff
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-Medium.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-Regular.woff
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-Regular.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-SemiBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-SemiBold.woff
--------------------------------------------------------------------------------
/src/assets/fonts/inter/Inter-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/inter/Inter-SemiBold.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/inter/inter.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Inter';
3 | font-style: normal;
4 | font-weight: 400;
5 | font-display: swap;
6 | src: url('Inter-Regular.woff2?v=3.13') format('woff2'), url('Inter-Regular.woff?v=3.13') format('woff');
7 | }
8 |
9 | @font-face {
10 | font-family: 'Inter';
11 | font-style: normal;
12 | font-weight: 500;
13 | font-display: swap;
14 | src: url('Inter-Medium.woff2?v=3.13') format('woff2'), url('Inter-Medium.woff?v=3.13') format('woff');
15 | }
16 |
17 | @font-face {
18 | font-family: 'Inter';
19 | font-style: normal;
20 | font-weight: 600;
21 | font-display: swap;
22 | src: url('Inter-SemiBold.woff2?v=3.13') format('woff2'), url('Inter-SemiBold.woff?v=3.13') format('woff');
23 | }
24 |
25 | @font-face {
26 | font-family: 'Inter';
27 | font-style: normal;
28 | font-weight: 700;
29 | font-display: swap;
30 | src: url('Inter-Bold.woff2?v=3.13') format('woff2'), url('Inter-Bold.woff?v=3.13') format('woff');
31 | }
32 |
--------------------------------------------------------------------------------
/src/assets/fonts/material.css:
--------------------------------------------------------------------------------
1 | /* fallback */
2 | @font-face {
3 | font-family: 'Material Icons Two Tone';
4 | font-style: normal;
5 | font-weight: 400;
6 | src: url(material/material.woff2) format('woff2');
7 | }
8 |
9 | .material-icons-two-tone {
10 | font-family: 'Material Icons Two Tone';
11 | font-weight: normal;
12 | font-style: normal;
13 | font-size: 24px;
14 | line-height: 1;
15 | letter-spacing: normal;
16 | text-transform: none;
17 | display: inline-block;
18 | white-space: nowrap;
19 | word-wrap: normal;
20 | direction: ltr;
21 | -webkit-font-feature-settings: 'liga';
22 | -webkit-font-smoothing: antialiased;
23 | }
24 |
--------------------------------------------------------------------------------
/src/assets/fonts/material/material.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/fonts/material/material.woff2
--------------------------------------------------------------------------------
/src/assets/images/favicon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/logo-dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/assets/images/logo-sm-light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/logo-sm.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/assets/images/user/avatar-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/images/user/avatar-2.jpg
--------------------------------------------------------------------------------
/src/assets/images/widget/p1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/images/widget/p1.jpg
--------------------------------------------------------------------------------
/src/assets/images/widget/p2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/images/widget/p2.jpg
--------------------------------------------------------------------------------
/src/assets/images/widget/p3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/images/widget/p3.jpg
--------------------------------------------------------------------------------
/src/assets/images/widget/p4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codedthemes/dashboard-kit-free-react-bootstrap-admin-template/402a8d98d440059dd71f91e3b03a0c34a678e735/src/assets/images/widget/p4.jpg
--------------------------------------------------------------------------------
/src/assets/scss/react-modules/_react-rating.scss:
--------------------------------------------------------------------------------
1 | .theme-bar-block {
2 | > span {
3 | display: block;
4 | width: 12px;
5 | padding: 5px 0;
6 | height: 28px;
7 | float: left;
8 | background-color: #fbedd9;
9 | margin: 1px;
10 | text-align: center;
11 | &.active {
12 | background-color: #edb867;
13 | }
14 | }
15 | }
16 |
17 | .current-rating-block {
18 | font-size: 20px;
19 | float: left;
20 | padding: 0 20px 0 20px;
21 | color: #edb867;
22 | font-weight: 400;
23 | }
24 |
25 | .theme-bar-movie {
26 | > span {
27 | display: block;
28 | width: 60px;
29 | height: 8px;
30 | float: left;
31 | background-color: #bbcefb;
32 | margin: 1px;
33 | &.active {
34 | background-color: #4278f5;
35 | }
36 | }
37 | }
38 |
39 | .current-rating-movie {
40 | clear: both;
41 | width: 240px;
42 | text-align: center;
43 | font-weight: 600;
44 | display: block;
45 | padding: 0.5em 0;
46 | color: #4278f5;
47 | }
48 |
49 | .theme-bar-square {
50 | > span {
51 | display: block;
52 | width: 30px;
53 | height: 30px;
54 | float: left;
55 | border: 2px solid #bbcefb;
56 | background-color: white;
57 | margin: 2px;
58 | text-decoration: none;
59 | font-size: 14px;
60 | line-height: 2;
61 | text-align: center;
62 | color: #bbcefb;
63 | font-weight: 600;
64 | &.active {
65 | border: 2px solid #4278f5;
66 | color: #4278f5;
67 | }
68 | }
69 | }
70 |
71 | .pill-rating {
72 | .theme-bar-pill {
73 | > span {
74 | padding: 7px 15px;
75 | background-color: #bef5e8;
76 | color: #50e3c2;
77 | text-decoration: none;
78 | font-size: 13px;
79 | line-height: 3;
80 | text-align: center;
81 | font-weight: 400;
82 | &.active {
83 | background-color: #50e3c2;
84 | color: white;
85 | }
86 | }
87 | }
88 | > span > span {
89 | &:last-child {
90 | span {
91 | border-radius: 0 25px 25px 0;
92 | }
93 | }
94 | &:first-child {
95 | span {
96 | border-radius: 25px 0 0 25px;
97 | }
98 | }
99 | }
100 | }
101 |
102 | .reverse-rating {
103 | > span {
104 | direction: rtl !important;
105 | }
106 | .theme-bar-reverse {
107 | > span {
108 | display: block;
109 | width: 22px;
110 | height: 22px;
111 | float: left;
112 | background-color: #bef5e8;
113 | margin: 1px;
114 | font-size: 15px;
115 | font-weight: 400;
116 | line-height: 1.4;
117 | color: #50e3c2;
118 | text-align: center;
119 | &.active {
120 | background-color: #50e3c2;
121 | color: white;
122 | }
123 | }
124 | }
125 | }
126 |
127 | .current-rating-reverse {
128 | line-height: 1.3;
129 | float: left;
130 | padding: 10px 0;
131 | color: #50e3c2;
132 | font-size: 17px;
133 | font-weight: 400;
134 | width: 100%;
135 | }
136 |
137 | .horizontal-rating {
138 | width: 120px;
139 | -webkit-transform: rotate(180deg);
140 | -moz-transform: rotate(180deg);
141 | -o-transform: rotate(180deg);
142 | -ms-transform: rotate(180deg);
143 | transform: rotate(180deg);
144 |
145 | > span > span {
146 | display: block !important;
147 | }
148 | .theme-bar-horizontal {
149 | > span {
150 | display: block;
151 | width: 120px;
152 | height: 5px;
153 | background-color: #fbedd9;
154 | margin: 1px;
155 | &.active {
156 | background-color: #edb867;
157 | }
158 | }
159 | }
160 | }
161 |
162 | .current-rating-horizontal {
163 | width: 120px;
164 | font-size: 18px;
165 | font-weight: 600;
166 | line-height: 2;
167 | text-align: center;
168 | color: #edb867;
169 | }
170 |
--------------------------------------------------------------------------------
/src/assets/scss/react-modules/_tooltip.scss:
--------------------------------------------------------------------------------
1 | // Base class
2 | .tooltip {
3 | position: absolute;
4 | z-index: $zindex-tooltip;
5 | display: block;
6 | margin: $tooltip-margin;
7 | // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
8 | // So reset our font and text properties to avoid inheriting weird values.
9 | @include reset-text();
10 | @include font-size($tooltip-font-size);
11 | // Allow breaking very long words so they don't overflow the tooltip's bounds
12 | word-wrap: break-word;
13 | opacity: 0;
14 |
15 | &.show {
16 | opacity: $tooltip-opacity;
17 | }
18 |
19 | .tooltip-arrow,
20 | .arrow {
21 | position: absolute;
22 | display: block;
23 | width: $tooltip-arrow-width;
24 | height: $tooltip-arrow-height;
25 |
26 | &::before {
27 | position: absolute;
28 | content: '';
29 | border-color: transparent;
30 | border-style: solid;
31 | }
32 | }
33 | }
34 |
35 | .bs-tooltip-top {
36 | padding: $tooltip-arrow-height 0;
37 |
38 | .tooltip-arrow,
39 | .arrow {
40 | bottom: 0;
41 |
42 | &::before {
43 | top: -1px;
44 | border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
45 | border-top-color: $tooltip-arrow-color;
46 | }
47 | }
48 | }
49 |
50 | .bs-tooltip-end,
51 | .bs-tooltip-right {
52 | padding: 0 $tooltip-arrow-height;
53 |
54 | .tooltip-arrow,
55 | .arrow {
56 | left: 0;
57 | width: $tooltip-arrow-height;
58 | height: $tooltip-arrow-width;
59 |
60 | &::before {
61 | right: -1px;
62 | border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
63 | border-right-color: $tooltip-arrow-color;
64 | }
65 | }
66 | }
67 |
68 | .bs-tooltip-bottom {
69 | padding: $tooltip-arrow-height 0;
70 |
71 | .tooltip-arrow,
72 | .arrow {
73 | top: 0;
74 |
75 | &::before {
76 | bottom: -1px;
77 | border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
78 | border-bottom-color: $tooltip-arrow-color;
79 | }
80 | }
81 | }
82 |
83 | .bs-tooltip-start,
84 | .bs-tooltip-left {
85 | padding: 0 $tooltip-arrow-height;
86 |
87 | .tooltip-arrow,
88 | .arrow {
89 | right: 0;
90 | width: $tooltip-arrow-height;
91 | height: $tooltip-arrow-width;
92 |
93 | &::before {
94 | left: -1px;
95 | border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
96 | border-left-color: $tooltip-arrow-color;
97 | }
98 | }
99 | }
100 |
101 | .bs-tooltip-auto {
102 | &[data-popper-placement^='top'] {
103 | @extend .bs-tooltip-top;
104 | }
105 | &[data-popper-placement^='right'] {
106 | @extend .bs-tooltip-end;
107 | }
108 | &[data-popper-placement^='bottom'] {
109 | @extend .bs-tooltip-bottom;
110 | }
111 | &[data-popper-placement^='left'] {
112 | @extend .bs-tooltip-start;
113 | }
114 | }
115 |
116 | // Wrapper for the tooltip content
117 | .tooltip-inner {
118 | max-width: $tooltip-max-width;
119 | padding: $tooltip-padding-y $tooltip-padding-x;
120 | color: $tooltip-color;
121 | text-align: center;
122 | background-color: $tooltip-bg;
123 | @include border-radius($tooltip-border-radius);
124 | }
125 |
--------------------------------------------------------------------------------
/src/assets/scss/settings/_theme-variables.scss:
--------------------------------------------------------------------------------
1 | // =======================================
2 | // List of variables for layout
3 | // =======================================
4 |
5 | $header-height: 70px;
6 | $sidebar-width: 280px;
7 | $sidebar-collapsed-width: 70px;
8 |
9 | // header
10 | $header-background: #fff;
11 | $header-color: #525b69;
12 | $header-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08);
13 | $brand-color: #161c25;
14 |
15 | // Menu
16 | $sidebar-background: #1c232f;
17 | $sidebar-color: #ced4dc;
18 | $sidebar-icon-color: #778290;
19 | $sidebar-active-color: #fff;
20 | $sidebar-caption: $primary;
21 | $sidebar-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08);
22 |
23 | // horizontal menu
24 | $topbar-height: 60px;
25 | $topbar-background: #1c232f;
26 | $topbar-color: #b5bdca;
27 | $header-submenu-background: #fff;
28 | $header-submenu-color: #1c232f;
29 |
30 | // card block
31 | $card-shadow: 0 2px 6px -1px rgba(0, 0, 0, 0.1);
32 |
33 | $soft-bg-level: -80%;
34 |
--------------------------------------------------------------------------------
/src/assets/scss/settings/dark/_theme-variables.scss:
--------------------------------------------------------------------------------
1 | // =======================================
2 | // List of variables for layout
3 | // =======================================
4 |
5 | $header-height: 70px;
6 | $sidebar-width: 280px;
7 | $sidebar-collapsed-width: 70px;
8 |
9 | // header
10 | $header-background: #161c25;
11 | $header-color: #ced4dc;
12 | $header-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08);
13 | $brand-color: #161c25;
14 |
15 | // Menu
16 | $sidebar-background: #1c232f;
17 | $sidebar-color: #ced4dc;
18 | $sidebar-icon-color: #b3aee4;
19 | $sidebar-active-color: #fff;
20 | $sidebar-caption: $primary;
21 | $sidebar-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08);
22 |
23 | // horizontal menu
24 | $topbar-height: 60px;
25 | $topbar-background: #1c232f;
26 | $topbar-color: #b5bdca;
27 | $header-submenu-background: #fff;
28 | $header-submenu-color: #1c232f;
29 |
30 | // card block
31 | $card-shadow: 0 2px 6px -1px rgba(0, 0, 0, 0.1);
32 |
33 | $soft-bg-level: -80%;
34 |
--------------------------------------------------------------------------------
/src/assets/scss/themes/components/_badge.scss:
--------------------------------------------------------------------------------
1 | // ============================
2 | // Badge css start
3 | // ============================
4 |
5 | .badge {
6 | @each $color, $value in $theme-colors {
7 | &-#{$color} {
8 | background: $value;
9 | }
10 | }
11 | @each $color, $value in $theme-colors {
12 | &.badge-light-#{$color} {
13 | background: shift-color($value, $soft-bg-level);
14 | color: $value;
15 | border-color: shift-color($value, $soft-bg-level);
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assets/scss/themes/components/_button.scss:
--------------------------------------------------------------------------------
1 | // ============================
2 | // Button css start
3 | // ============================
4 |
5 | .btn {
6 | font-size: 14px;
7 | text-transform: capitalize;
8 |
9 | i {
10 | font-size: 18px;
11 | }
12 |
13 | svg {
14 | width: 18px;
15 | height: 18px;
16 | }
17 |
18 | &[class*='btn-light-'] {
19 | box-shadow: none;
20 | }
21 |
22 | &[class*='btn-outline-']:not(:hover) {
23 | box-shadow: none;
24 | }
25 |
26 | &.btn-shadow {
27 | box-shadow: 0 6px 7px -1px rgba(80, 86, 175, 0.3);
28 | }
29 |
30 | &.btn-sm {
31 | i {
32 | font-size: 14px;
33 | }
34 | }
35 | }
36 | @each $color, $value in $theme-colors {
37 | .btn-light-#{$color} {
38 | background: shift-color($value, $soft-bg-level);
39 | color: $value;
40 | border-color: shift-color($value, $soft-bg-level);
41 |
42 | &:hover {
43 | background: $value;
44 | color: #fff;
45 | border-color: $value;
46 | }
47 |
48 | &.focus,
49 | &:focus {
50 | background: $value;
51 | color: #fff;
52 | border-color: $value;
53 | }
54 |
55 | &:not(:disabled):not(.disabled).active,
56 | &:not(:disabled):not(.disabled):active,
57 | .show > &.dropdown-toggle {
58 | background: $value;
59 | color: #fff;
60 | border-color: $value;
61 | }
62 | }
63 |
64 | .btn-check:active,
65 | .btn-check:checked {
66 | + .btn-light-#{$color} {
67 | background: $value;
68 | color: #fff;
69 | border-color: $value;
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/assets/scss/themes/components/_card.scss:
--------------------------------------------------------------------------------
1 | // ============================
2 | // Card css start
3 | // ============================
4 |
5 | .card {
6 | box-shadow: $card-shadow;
7 | margin-bottom: 24px;
8 | transition: box-shadow 0.2s ease-in-out;
9 |
10 | .card-header {
11 | border-bottom: 1px solid $border-color;
12 |
13 | h5 {
14 | margin-bottom: 0;
15 | color: #525f71;
16 | font: {
17 | size: 14px;
18 | weight: 600;
19 | }
20 |
21 | + p,
22 | + small {
23 | margin-top: 10px;
24 |
25 | &:last-child {
26 | margin-bottom: 0;
27 | }
28 | }
29 | }
30 | .card-header-right {
31 | right: 10px;
32 | top: 10px;
33 | display: inline-block;
34 | float: right;
35 | padding: 0;
36 | position: absolute;
37 | @media only screen and (max-width: 575px) {
38 | display: none;
39 | }
40 |
41 | .dropdown-menu {
42 | margin-top: 0;
43 |
44 | li {
45 | cursor: pointer;
46 |
47 | a {
48 | font-size: 14px;
49 | text-transform: capitalize;
50 | }
51 | }
52 | }
53 |
54 | .btn.dropdown-toggle {
55 | border: none;
56 | background: transparent;
57 | box-shadow: none;
58 | color: #888;
59 |
60 | i {
61 | margin-right: 0;
62 | }
63 |
64 | &:after {
65 | display: none;
66 | }
67 |
68 | &:focus {
69 | box-shadow: none;
70 | outline: none;
71 | }
72 | }
73 | // custom toggler
74 | .btn.dropdown-toggle {
75 | border: none;
76 | background: transparent;
77 | box-shadow: none;
78 | padding: 0;
79 | width: 20px;
80 | height: 20px;
81 | right: 8px;
82 | top: 8px;
83 |
84 | &.mobile-menu span {
85 | background-color: #888;
86 | height: 2px;
87 | border-radius: 5px;
88 |
89 | &:after,
90 | &:before {
91 | border-radius: 5px;
92 | height: 2px;
93 | background-color: #888;
94 | }
95 | }
96 | }
97 |
98 | .nav-pills {
99 | padding: 0;
100 | box-shadow: none;
101 | background: transparent;
102 | }
103 | }
104 | }
105 |
106 | .card-footer {
107 | transition: box-shadow 0.2s ease-in-out;
108 | border-top: 1px solid $border-color;
109 | }
110 |
111 | &:hover {
112 | .card-footer[class*='bg-'] {
113 | box-shadow: none;
114 | }
115 | }
116 | @each $color, $value in $theme-colors {
117 | // .card-footer.bg-#{$color},
118 | &.bg-#{$color} {
119 | box-shadow: 0 9px 9px -1px transparentize($value, 0.7);
120 | }
121 | }
122 | }
123 | @include media-breakpoint-down(sm) {
124 | .card {
125 | margin-bottom: 20px;
126 | }
127 | }
128 | // Card css end
129 |
--------------------------------------------------------------------------------
/src/assets/scss/themes/components/_dropdown.scss:
--------------------------------------------------------------------------------
1 | // ============================
2 | // dropdown css start
3 | // ============================
4 |
5 | .dropdown-toggle {
6 | &.drp-icon,
7 | &.arrow-none {
8 | &:after {
9 | display: none;
10 | }
11 | }
12 | }
13 |
14 | .dropdown-menu {
15 | padding: 15px 0;
16 | box-shadow: 0 4px 24px 0 rgba(62, 57, 107, 0.18);
17 | border: none;
18 | border-radius: 2px;
19 | }
20 |
21 | .pc-header {
22 | .dropdown-menu {
23 | animation: 0.4s ease-in-out 0s normal forwards 1 fadein;
24 | }
25 | }
26 | @keyframes fadein {
27 | from {
28 | transform: translate3d(0, 8px, 0);
29 | opacity: 0;
30 | }
31 |
32 | to {
33 | transform: translate3d(0, 0, 0);
34 | opacity: 1;
35 | }
36 | }
37 |
38 | .dropdown .dropdown-item {
39 | &.active,
40 | &:active,
41 | &:focus,
42 | &:hover {
43 | i {
44 | &.material-icons-two-tone {
45 | background-color: $dropdown-link-hover-color;
46 | }
47 | }
48 | }
49 | }
50 |
51 | .dropdown {
52 | .dropdown-item {
53 | padding: 10px 25px;
54 |
55 | i {
56 | font-size: 18px;
57 | margin-right: 10px;
58 |
59 | &.material-icons-two-tone {
60 | vertical-align: bottom;
61 | font-size: 22px;
62 | background-color: $header-color;
63 | }
64 | }
65 |
66 | svg {
67 | width: 18px;
68 | height: 18px;
69 | margin-right: 10px;
70 | fill: #f2f2f2;
71 | }
72 |
73 | .float-right {
74 | svg {
75 | width: 14px;
76 | height: 14px;
77 | }
78 | }
79 | }
80 | }
81 | // dropdown css end
82 |
--------------------------------------------------------------------------------
/src/assets/scss/themes/components/_table.scss:
--------------------------------------------------------------------------------
1 | // ============================
2 | // Table css start
3 | // ============================
4 |
5 | .table {
6 | &.table-align-center {
7 | td,
8 | th {
9 | vertical-align: middle;
10 | }
11 | }
12 | thead th {
13 | padding: 0.9rem 0.75rem;
14 | }
15 | td,
16 | th {
17 | vertical-align: middle;
18 | }
19 | &.table-borderless {
20 | td,
21 | th {
22 | border: none !important;
23 | }
24 | }
25 | }
26 |
27 | .table-hover tbody tr:hover {
28 | background-color: transparentize($primary, 0.97);
29 | }
30 |
--------------------------------------------------------------------------------
/src/assets/scss/themes/pages/_icon-lauouts.scss:
--------------------------------------------------------------------------------
1 | /** =====================
2 | Icon layouts css start
3 | ========================== **/
4 |
5 | .i-main {
6 | .i-block {
7 | display: inline-flex;
8 | align-items: center;
9 | justify-content: center;
10 | width: 70px;
11 | height: 70px;
12 | margin: 5px;
13 | border: 1px solid $border-color;
14 | position: relative;
15 | cursor: pointer;
16 |
17 | i {
18 | font-size: 30px;
19 | }
20 |
21 | label {
22 | margin-bottom: 0;
23 | display: none;
24 | }
25 |
26 | span.ic-badge {
27 | position: absolute;
28 | bottom: 0;
29 | right: 0;
30 | }
31 | }
32 | }
33 | /**====== Icon layouts css end ======**/
34 |
--------------------------------------------------------------------------------
/src/components/Card/MainCard.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react';
2 |
3 | // react-bootstrap
4 | import { Dropdown, Card, Collapse } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import PropTypes from 'prop-types';
9 |
10 | // project imports
11 | import useWindowSize from 'hooks/useWindowSize';
12 |
13 | // -----------------------|| MAIN CARD ||-----------------------//
14 | function MainCard({ isOption, title, children, cardClass, optionClass }) {
15 | const [fullCard, setFullCard] = useState(false);
16 | const [collapseCard, setCollapseCard] = useState(false);
17 | const [loadCard, setloadCard] = useState(false);
18 | const [cardRemove, setCardRemove] = useState(false);
19 |
20 | const windowSize = useWindowSize();
21 |
22 | const cardReloadHandler = () => {
23 | setloadCard(true);
24 | setInterval(() => {
25 | setloadCard(false);
26 | }, 3000);
27 | };
28 |
29 | const cardRemoveHandler = () => {
30 | setCardRemove(true);
31 | };
32 |
33 | let loader;
34 | let cardHeaderRight = <>>;
35 | let cardHeader = <>>;
36 | let mainCardClass = [];
37 |
38 | if (isOption) {
39 | cardHeaderRight = (
40 |
41 |
42 |
43 |
44 |
45 |
46 | setFullCard(!fullCard)}>
47 |
48 | {fullCard ? 'Restore' : 'Maximize'}
49 |
50 | setCollapseCard(!collapseCard)}>
51 |
52 | {collapseCard ? 'Expand' : 'Collapse'}
53 |
54 |
55 |
56 | Reload
57 |
58 |
59 |
60 | Remove
61 |
62 |
63 |
64 |
65 | );
66 | }
67 |
68 | cardHeader = (
69 |
70 | {title}
71 | {cardHeaderRight}
72 |
73 | );
74 |
75 | if (fullCard) {
76 | mainCardClass = [...mainCardClass, 'full-card'];
77 | }
78 |
79 | if (loadCard) {
80 | mainCardClass = [...mainCardClass, 'card-load'];
81 | loader = (
82 |
83 |
84 |
85 | );
86 | }
87 |
88 | if (cardRemove) {
89 | mainCardClass = [...mainCardClass, 'd-none'];
90 | }
91 |
92 | if (cardClass) {
93 | mainCardClass = [...mainCardClass, cardClass];
94 | }
95 |
96 | return fullCard ? (
97 |
101 | {cardHeader}
102 |
103 |
104 | {children}
105 |
106 |
107 | {loader}
108 |
109 | ) : (
110 |
111 | {cardHeader}
112 |
113 |
114 | {children}
115 |
116 |
117 | {loader}
118 |
119 | );
120 | }
121 |
122 | MainCard.propTypes = {
123 | isOption: PropTypes.bool,
124 | title: PropTypes.string.isRequired,
125 | children: PropTypes.node.isRequired,
126 | cardClass: PropTypes.string,
127 | optionClass: PropTypes.string
128 | };
129 |
130 | export default MainCard;
131 |
--------------------------------------------------------------------------------
/src/components/Loader/Bar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import PropTypes from 'prop-types';
5 |
6 | // -----------------------|| BAR ||-----------------------//
7 | const Bar = ({ animationDuration, progress }) => (
8 |
34 | );
35 |
36 | Bar.propTypes = {
37 | animationDuration: PropTypes.number.isRequired,
38 | progress: PropTypes.number.isRequired
39 | };
40 |
41 | export default Bar;
42 |
--------------------------------------------------------------------------------
/src/components/Loader/Container.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import PropTypes from 'prop-types';
5 |
6 | // -----------------------|| CONTAINER ||-----------------------//
7 | const Container = ({ animationDuration, children, isFinished }) => (
8 |
15 | {children}
16 |
17 | );
18 |
19 | Container.propTypes = {
20 | animationDuration: PropTypes.number.isRequired,
21 | children: PropTypes.node.isRequired,
22 | isFinished: PropTypes.bool.isRequired
23 | };
24 |
25 | export default Container;
26 |
--------------------------------------------------------------------------------
/src/components/Loader/Loader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // project imports
4 | import Progress from './Progress';
5 |
6 | // -----------------------|| LOADER ||-----------------------//
7 | const Loader = () => ;
8 |
9 | export default Loader;
10 |
--------------------------------------------------------------------------------
/src/components/Loader/Progress.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { useNProgress } from '@tanem/react-nprogress';
5 | import PropTypes from 'prop-types';
6 |
7 | // project imports
8 | import Bar from './Bar';
9 | import Container from './Container';
10 | import Spinner from './Spinner';
11 |
12 | // -----------------------|| PROGRESS ||-----------------------//
13 | const Progress = ({ isAnimating }) => {
14 | const { animationDuration, isFinished, progress } = useNProgress({
15 | isAnimating
16 | });
17 |
18 | return (
19 |
20 |
21 |
22 |
23 | );
24 | };
25 |
26 | Progress.propTypes = {
27 | isAnimating: PropTypes.bool.isRequired
28 | };
29 |
30 | export default Progress;
31 |
--------------------------------------------------------------------------------
/src/components/Loader/Spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Spinner = () => (
4 |
27 | );
28 |
29 | export default Spinner;
30 |
--------------------------------------------------------------------------------
/src/components/Modal/AnimatedModal.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import Rodal from 'rodal';
5 | import 'rodal/lib/rodal.css';
6 | import PropTypes from 'prop-types';
7 |
8 | // -----------------------|| ANIMATED MODAL ||-----------------------//
9 | const AnimatedModal = ({ visible, onClose, animation, children }) => (
10 |
11 | {children}
12 |
13 | );
14 |
15 | AnimatedModal.propTypes = {
16 | visible: PropTypes.bool.isRequired,
17 | onClose: PropTypes.func.isRequired,
18 | animation: PropTypes.string.isRequired,
19 | children: PropTypes.node.isRequired
20 | };
21 |
22 | export default AnimatedModal;
23 |
--------------------------------------------------------------------------------
/src/components/Notifications/BasicNotifications.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Alert, Button } from 'react-bootstrap';
5 |
6 | // third party
7 | import { ToastProvider, ToastConsumer } from 'react-toast-notifications';
8 | import PropTypes from 'prop-types';
9 |
10 | const AlertMessage = ({ appearance, children, onDismiss }) => (
11 |
12 | {children}
13 |
14 | );
15 |
16 | // -----------------------|| BASIC NOTIFICATIONS ||-----------------------//
17 | const BasicNotifications = ({ appearance, placement, autoDismiss, message, buttonLabel }) => (
18 |
19 |
20 | {({ add }) => (
21 |
23 | add(message, {
24 | appearance,
25 | autoDismiss
26 | })
27 | }
28 | aria-hidden="true"
29 | >
30 | {buttonLabel}
31 |
32 | )}
33 |
34 |
35 | );
36 |
37 | BasicNotifications.propTypes = {
38 | appearance: PropTypes.string.isRequired,
39 | placement: PropTypes.string.isRequired,
40 | autoDismiss: PropTypes.bool.isRequired,
41 | message: PropTypes.string.isRequired,
42 | buttonLabel: PropTypes.string.isRequired
43 | };
44 |
45 | export default BasicNotifications;
46 |
--------------------------------------------------------------------------------
/src/components/Widgets/FeedTable.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Row, Col, Card } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import PerfectScrollbar from 'react-perfect-scrollbar';
9 | import PropTypes from 'prop-types';
10 |
11 | // -----------------------|| FEED CARD ||-----------------------//
12 | const FeedCard = ({ wrapclass, title, height, options }) => (
13 |
14 |
15 | {title}
16 |
17 |
18 |
19 |
20 | {options.map((x, i) => (
21 |
22 |
23 |
28 |
29 |
30 |
31 |
32 | {x.heading} {x.publishon}
33 |
34 |
35 |
36 |
37 | ))}
38 |
39 |
40 |
41 |
42 | );
43 |
44 | FeedCard.propTypes = {
45 | wrapclass: PropTypes.string.isRequired,
46 | title: PropTypes.string.isRequired,
47 | height: PropTypes.string.isRequired,
48 | options: PropTypes.array.isRequired
49 | };
50 |
51 | export default FeedCard;
52 |
--------------------------------------------------------------------------------
/src/components/Widgets/ProductTable.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Table } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import PerfectScrollbar from 'react-perfect-scrollbar';
9 | import PropTypes from 'prop-types';
10 |
11 | // -----------------------|| PRODUCT TABLE ||-----------------------//
12 | const ProductTable = ({ wrapclass, title, height, tableheading, rowdata }) => (
13 |
14 |
15 | {title}
16 |
17 |
18 |
19 |
20 |
21 |
22 | {tableheading.map((x, i) => (
23 | {x}
24 | ))}
25 |
26 |
27 |
28 | {rowdata.map((y, j) => (
29 |
30 | {y.name}
31 | {y.image}
32 |
33 |
34 | {y.status.label}
35 |
36 |
37 | {y.price}
38 |
39 | {y.action.map((z, k) => (
40 |
41 | 0 ? 'ms-3' : ''}`} />
42 |
43 | ))}
44 |
45 |
46 | ))}
47 |
48 |
49 |
50 |
51 |
52 | );
53 |
54 | ProductTable.propTypes = {
55 | wrapclass: PropTypes.string.isRequired,
56 | title: PropTypes.string.isRequired,
57 | height: PropTypes.string.isRequired,
58 | tableheading: PropTypes.array.isRequired,
59 | rowdata: PropTypes.array.isRequired
60 | };
61 |
62 | export default ProductTable;
63 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/FlatCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Row, Col } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| FLAT CARD ||-----------------------//
10 | const FlatCard = ({ params }) => {
11 | let iconClass = ['material-icons-two-tone'];
12 | if (params.icon && params.iconClass) {
13 | iconClass = [...iconClass, params.iconClass];
14 | }
15 |
16 | return (
17 |
18 |
19 | {params.icon}
20 |
21 |
22 | {params.value}
23 | {params.title}
24 |
25 |
26 | );
27 | };
28 |
29 | FlatCard.propTypes = {
30 | params: PropTypes.object.isRequired
31 | };
32 |
33 | export default FlatCard;
34 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/IcoCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Col, Card } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import PropTypes from 'prop-types';
9 |
10 | // -----------------------|| ICO CARD ||-----------------------//
11 | const IcoCard = ({ icon, title, caption, category, totalAmount, amount, percentage, time }) => {
12 | let iconClass = ['cc f-36 mr-3'];
13 | if (icon) {
14 | iconClass = [...iconClass, icon];
15 | }
16 |
17 | return (
18 |
19 |
20 |
21 |
22 | {icon && (
23 |
24 |
25 |
26 |
27 |
28 | )}
29 |
30 |
{title}
31 | {caption}
32 |
33 |
34 |
35 |
36 |
37 | {amount} / {totalAmount}
38 |
39 |
{category}
40 |
41 |
42 |
43 | {percentage}
44 |
45 |
{time}
46 |
47 |
48 |
49 |
50 |
51 | );
52 | };
53 |
54 | IcoCard.propTypes = {
55 | icon: PropTypes.string.isRequired,
56 | title: PropTypes.string.isRequired,
57 | caption: PropTypes.string.isRequired,
58 | category: PropTypes.string.isRequired,
59 | totalAmount: PropTypes.string.isRequired,
60 | amount: PropTypes.string.isRequired,
61 | percentage: PropTypes.string.isRequired,
62 | time: PropTypes.string.isRequired
63 | };
64 |
65 | export default IcoCard;
66 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/NotificationCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Row, Col } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| NOTIFICATION CARD ||-----------------------//
10 | const NotificationCard = ({ params }) => {
11 | let cardClass = ['notification-card feed-card'];
12 | if (params.class) {
13 | cardClass = [...cardClass, params.class];
14 | }
15 |
16 | return (
17 |
18 |
19 |
20 |
21 | {params.iconClass}
22 |
23 |
24 |
25 |
{params.primaryText}
26 |
27 | {params.secondaryText} {params.secondarySubText}
28 |
29 |
30 |
31 |
32 |
33 |
34 | );
35 | };
36 |
37 | NotificationCard.propTypes = {
38 | params: PropTypes.object.isRequired
39 | };
40 |
41 | export default NotificationCard;
42 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/OrderCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| ORDER CARD ||-----------------------//
10 | const OrderCard = ({ params }) => {
11 | let bgClass = 'bg-primary';
12 | if (params.variant) {
13 | bgClass = `bg-${params.variant}`;
14 | }
15 |
16 | return (
17 |
18 |
19 | {params.title}
20 | {params.value}
21 |
22 | {params.subValue1}
23 | {params.subValue2}
24 |
25 | {params.icon}
26 |
27 |
28 | );
29 | };
30 |
31 | OrderCard.propTypes = {
32 | params: PropTypes.object.isRequired
33 | };
34 |
35 | export default OrderCard;
36 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/OrderVisitorCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| ORDER VISITOR CARD ||-----------------------//
10 | const OrderVisitorCard = ({ params }) => (
11 |
12 |
13 | {params.title}
14 |
15 |
16 | {params.value}
17 |
18 |
19 | {params.subValue1} {params.subValue2}{' '}
20 |
21 |
22 |
23 | );
24 |
25 | OrderVisitorCard.propTypes = {
26 | params: PropTypes.object.isRequired
27 | };
28 |
29 | export default OrderVisitorCard;
30 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/ProductCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Row, Col } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| PRODUCT CARD ||-----------------------//
10 | const ProductCard = ({ params }) => {
11 | let cardClass = ['prod-p-card'];
12 | let iconClass = 'text-primary';
13 | let textClass = '';
14 | if (params.variant) {
15 | cardClass = [...cardClass, `bg-${params.variant}`];
16 | textClass = 'text-white';
17 | iconClass = 'text-white';
18 | }
19 |
20 | let rowClass = ['align-items-center'];
21 | if (params.secondaryText) {
22 | rowClass = [...rowClass, 'm-b-25'];
23 | }
24 |
25 | return (
26 |
27 |
28 |
29 |
30 | {params.title}
31 | {params.primaryText}
32 |
33 |
34 | {params.icon}
35 |
36 |
37 | {params.secondaryText}
38 |
39 |
40 | );
41 | };
42 |
43 | ProductCard.propTypes = {
44 | params: PropTypes.object.isRequired
45 | };
46 |
47 | export default ProductCard;
48 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/StatisticBlink.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, ProgressBar } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| STATISTIC BLINK ||-----------------------//
10 | const StatisticBlink = ({ params }) => (
11 |
12 |
13 | {params.title}
14 | {params.primaryText}
15 | {params.secondaryText}
16 |
17 |
18 | {params.footerText && (
19 |
20 | {params.footerText}
21 |
22 | )}
23 |
24 | );
25 |
26 | StatisticBlink.propTypes = {
27 | params: PropTypes.object.isRequired
28 | };
29 |
30 | export default StatisticBlink;
31 |
--------------------------------------------------------------------------------
/src/components/Widgets/Statistic/SubscribeCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Button } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // -----------------------|| SUBSCRIBE CARD ||-----------------------//
10 | const SubscribeCard = ({ params }) => {
11 | let iconClass = ['feather d-block f-40'];
12 | if (params.iconClass) {
13 | iconClass = [...iconClass, `text-${params.variant}`, params.iconClass];
14 | }
15 |
16 | return (
17 |
18 |
19 |
20 |
21 | {params.primaryText} {params.primarySubText}
22 |
23 | {params.secondaryText}
24 |
25 | {params.buttonLabel}
26 |
27 |
28 |
29 | );
30 | };
31 |
32 | SubscribeCard.propTypes = {
33 | params: PropTypes.object.isRequired
34 | };
35 |
36 | export default SubscribeCard;
37 |
--------------------------------------------------------------------------------
/src/config/constant.js:
--------------------------------------------------------------------------------
1 | // imports from project
2 | export const BASENAME = '/react/free';
3 | export const BASE_URL = '/dashboard/sales';
4 | export const BASE_TITLE = ' | DashboardKit Bootstrap 5 Free Admin Template';
5 |
6 | // -----------------------|| Application default Configuration ||-----------------------//
7 | export const CONFIG = {
8 | layout: 'vertical', // vertical, horizontal
9 | collapseMenu: false, // true for mini-menu
10 | layoutType: 'dark-sidebar', // light-sidebar
11 | pageType: '', // app-dark-mode
12 | colorBrand: '', // bg-primary, bg-danger, bg-warning, bg-info, bg-success, bg-dark
13 | headerBackColor: '' // bg-primary, bg-danger, bg-warning, bg-info, bg-success, bg-dark
14 | };
15 |
--------------------------------------------------------------------------------
/src/data/feedData.js:
--------------------------------------------------------------------------------
1 | // Feed data to display in card widget
2 |
3 | const FeedData = {
4 | wrapclass: 'feed-card',
5 | height: '385px',
6 | title: 'Feeds',
7 | options: [
8 | {
9 | icon: 'bell',
10 | heading: 'You have 3 pending tasks.',
11 | publishon: 'Just Now',
12 | link: '#'
13 | },
14 | {
15 | icon: 'shopping-cart',
16 | bgclass: 'light-primary',
17 | heading: 'New order received',
18 | publishon: '30 min ago'
19 | },
20 | {
21 | icon: 'file-text',
22 | heading: 'You have 3 pending tasks.',
23 | publishon: 'Just Now',
24 | link: '/sales'
25 | },
26 | {
27 | icon: 'bell',
28 | heading: 'You have 3 pending tasks.',
29 | publishon: 'Just Now'
30 | },
31 | {
32 | icon: 'shopping-cart',
33 | bgclass: 'light-primary',
34 | heading: 'You have 4 tasks Done.',
35 | publishon: '30 min ago'
36 | },
37 | {
38 | icon: 'file-text',
39 | heading: 'You have 3 pending tasks.',
40 | publishon: 'Just Now'
41 | },
42 | {
43 | icon: 'bell',
44 | heading: 'You have 3 pending tasks.',
45 | publishon: 'Just Now',
46 | link: '#'
47 | },
48 | {
49 | icon: 'shopping-cart',
50 | bgclass: 'light-primary',
51 | heading: 'New order received',
52 | publishon: '30 min ago'
53 | },
54 | {
55 | icon: 'file-text',
56 | heading: 'You have 3 pending tasks.',
57 | publishon: 'Just Now',
58 | link: '/sales'
59 | },
60 | {
61 | icon: 'bell',
62 | heading: 'You have 3 pending tasks.',
63 | publishon: 'Just Now'
64 | },
65 | {
66 | icon: 'shopping-cart',
67 | bgclass: 'light-primary',
68 | heading: 'You have 4 tasks Done.',
69 | publishon: '30 min ago'
70 | },
71 | {
72 | icon: 'file-text',
73 | heading: 'You have 3 pending tasks.',
74 | publishon: 'Just Now'
75 | }
76 | ]
77 | };
78 |
79 | export default FeedData;
80 |
--------------------------------------------------------------------------------
/src/data/tableData.js:
--------------------------------------------------------------------------------
1 | // third party
2 | import namor from 'namor';
3 |
4 | // project imports
5 | import { range } from 'utils/helper';
6 |
7 | const newPerson = () => {
8 | const statusChance = Math.random();
9 | const getStatus = () => {
10 | if (statusChance > 0.66) {
11 | return 'relationship';
12 | }
13 | if (statusChance > 0.33) {
14 | return 'complicated';
15 | }
16 | return 'single';
17 | };
18 |
19 | return {
20 | firstName: namor.generate({ words: 1, numbers: 0 }),
21 | lastName: namor.generate({ words: 1, numbers: 0 }),
22 | age: Math.floor(Math.random() * 30),
23 | visits: Math.floor(Math.random() * 100),
24 | progress: Math.floor(Math.random() * 100),
25 | status: getStatus()
26 | };
27 | };
28 |
29 | export default function makeData(lens) {
30 | const count = [lens];
31 |
32 | const makeDataLevel = (depth = 0) => {
33 | const len = count[depth];
34 | return range(len).map(() => ({
35 | ...newPerson(),
36 | subRows: count[depth + 1] ? makeDataLevel(depth + 1) : undefined
37 | }));
38 | };
39 |
40 | return makeDataLevel();
41 | }
42 |
43 | export const TableData = [
44 | {
45 | id: 1,
46 | firstName: 'Mark',
47 | lastName: 'Otto',
48 | username: '@mdo'
49 | },
50 | {
51 | id: 2,
52 | firstName: 'Jacob',
53 | lastName: 'Thornton',
54 | username: '@fat'
55 | },
56 | {
57 | id: 3,
58 | firstName: 'Larry',
59 | lastName: 'the Bird',
60 | username: '@twitter'
61 | },
62 | {
63 | id: 4,
64 | firstName: 'Larry',
65 | lastName: 'the Bird',
66 | username: '@twitter'
67 | }
68 | ];
69 |
--------------------------------------------------------------------------------
/src/hooks/useOutsideClick.js:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react';
2 |
3 | const useOutsideClick = (ref, callback) => {
4 | const handleClick = (e) => {
5 | if (ref.current && !ref.current.contains(e.target)) {
6 | callback();
7 | }
8 | };
9 |
10 | useEffect(() => {
11 | document.addEventListener('click', handleClick);
12 | return () => {
13 | document.removeEventListener('click', handleClick);
14 | };
15 | });
16 | };
17 |
18 | export default useOutsideClick;
19 |
--------------------------------------------------------------------------------
/src/hooks/useWindowSize.js:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from 'react';
2 |
3 | const useWindowSize = () => {
4 | const [windowSize, setWindowSize] = useState({
5 | width: 0,
6 | height: 0
7 | });
8 |
9 | useEffect(() => {
10 | function handleResize() {
11 | setWindowSize({
12 | width: window.innerWidth,
13 | height: window.innerHeight
14 | });
15 | }
16 | window.addEventListener('resize', handleResize);
17 | handleResize();
18 |
19 | return () => window.removeEventListener('resize', handleResize);
20 | }, []);
21 |
22 | return windowSize;
23 | };
24 |
25 | export default useWindowSize;
26 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // polyfill for legacy browsers
4 | import 'react-app-polyfill/ie11';
5 | import 'react-app-polyfill/stable';
6 |
7 | // third party
8 | import ReactDOM from 'react-dom';
9 | import { ConfigProvider } from './contexts/ConfigContext';
10 |
11 | // project imports
12 | import App from './App';
13 | import reportWebVitals from './reportWebVitals';
14 |
15 | // style + assets
16 | import './index.scss';
17 |
18 | // -----------------------|| REACT DOM RENDER ||-----------------------//
19 | ReactDOM.render(
20 |
21 |
22 | ,
23 | document.getElementById('root')
24 | );
25 |
26 | reportWebVitals();
27 |
--------------------------------------------------------------------------------
/src/index.scss:
--------------------------------------------------------------------------------
1 | // Default Style
2 | @import 'assets/scss/style';
3 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Breadcrumb/index.js:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react';
2 |
3 | // react-bootstrap
4 | import { ListGroup, Row, Col, Button, Dropdown } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import FeatherIcon from 'feather-icons-react';
9 |
10 | // project imports
11 | import navigation from 'menu-items';
12 | import { BASE_TITLE, BASENAME } from 'config/constant';
13 |
14 | // -----------------------|| BREADCRUMB ||-----------------------//
15 | const Breadcrumb = () => {
16 | const [main, setMain] = useState({});
17 | const [item, setItem] = useState({});
18 | const getCollapse = (items) => {
19 | if (items.children) {
20 | items.children.filter((collapse) => {
21 | if (collapse.type && collapse.type === 'collapse') {
22 | getCollapse(collapse);
23 | } else if (collapse.type && collapse.type === 'item') {
24 | if (document.location.pathname === BASENAME + collapse.url) {
25 | setMain(items);
26 | setItem(collapse);
27 | }
28 | }
29 | return false;
30 | });
31 | }
32 | };
33 | useEffect(() => {
34 | navigation.items.map((data) => {
35 | if (data.type && data.type === 'group') {
36 | getCollapse(data);
37 | }
38 | return false;
39 | });
40 | });
41 |
42 | let mainContent;
43 | let itemContent;
44 | let breadcrumbContent;
45 | let title = '';
46 | if (main && main.type === 'collapse') {
47 | mainContent = (
48 |
49 | {main.title}
50 |
51 | );
52 | }
53 |
54 | if (item && item.type === 'item') {
55 | title = item.title;
56 | itemContent = (
57 |
58 | {title}
59 |
60 | );
61 |
62 | if (item.breadcrumbs !== false) {
63 | breadcrumbContent = (
64 |
65 |
66 |
67 |
68 |
69 |
{title}
70 |
71 |
72 |
73 | Home
74 |
75 | {mainContent}
76 | {itemContent}
77 |
78 |
79 | {main.title === 'Layouts' && (
80 |
81 |
82 | Action
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | Action
92 |
93 |
94 | Another action
95 |
96 |
97 | Something else here
98 |
99 |
100 |
101 |
102 |
103 | )}
104 |
105 |
106 |
107 | );
108 | }
109 |
110 | document.title = title + BASE_TITLE;
111 | }
112 |
113 | return <>{breadcrumbContent}>;
114 | };
115 |
116 | export default Breadcrumb;
117 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/MobileHeader/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext } from 'react';
2 |
3 | // third party
4 | import { Link } from 'react-router-dom';
5 | import FeatherIcon from 'feather-icons-react';
6 |
7 | // project imports
8 | import { ConfigContext } from 'contexts/ConfigContext';
9 | import * as actionType from 'store/actions';
10 |
11 | // assets
12 | import logo from 'assets/images/logo.svg';
13 |
14 | // -----------------------|| MOBILE HEADER ||-----------------------//
15 | const MobileHeader = () => {
16 | const configContext = useContext(ConfigContext);
17 | const { collapseTabMenu, collapseHeaderMenu, layout } = configContext.state;
18 | const { dispatch } = configContext;
19 |
20 | const navToggleHandler = () => {
21 | dispatch({ type: actionType.COLLAPSE_MENU });
22 | };
23 |
24 | const tabToggleHandler = () => {
25 | dispatch({ type: actionType.COLLAPSE_TABMENU, collapseTabMenu: !collapseTabMenu });
26 | };
27 |
28 | const headerToggleHandler = () => {
29 | dispatch({ type: actionType.COLLAPSE_HEADERMENU, collapseHeaderMenu: !collapseHeaderMenu });
30 | };
31 |
32 | return (
33 |
34 |
35 |
36 |
37 |
38 | {layout !== 'topbar' && (
39 |
40 |
45 |
46 | )}
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | );
56 | };
57 |
58 | export default MobileHeader;
59 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Modal/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext, useState, useEffect } from 'react';
2 |
3 | // react-bootstrap
4 | import { Modal, Button } from 'react-bootstrap';
5 |
6 | // project imports
7 | import { ConfigContext } from 'contexts/ConfigContext';
8 | import * as actionType from 'store/actions';
9 |
10 | // -----------------------|| MODAL COMP ||-----------------------//
11 | const ModalComp = () => {
12 | const configContext = useContext(ConfigContext);
13 | const { notificationModal } = configContext.state;
14 | const { dispatch } = configContext;
15 |
16 | const [show, setShow] = useState(false);
17 |
18 | useEffect(() => {
19 | if (notificationModal) {
20 | setShow(notificationModal);
21 | }
22 | }, [notificationModal]);
23 |
24 | const handleClose = () => {
25 | setShow(!notificationModal);
26 | dispatch({ type: actionType.NOTIFICATION_MODAL, notificationModal: false });
27 | };
28 |
29 | return (
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | Close
38 |
39 |
40 | Save changes
41 |
42 |
43 |
44 | );
45 | };
46 |
47 | export default ModalComp;
48 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/NavBar/NavRight/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { ListGroup, Dropdown, Form } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import FeatherIcon from 'feather-icons-react';
9 |
10 | // assets
11 | import avatar2 from 'assets/images/user/avatar-2.jpg';
12 |
13 | // -----------------------|| NAV RIGHT ||-----------------------//
14 | const NavRight = () => (
15 |
16 |
17 |
18 |
19 | search
20 |
21 |
22 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | Joseph William
37 | Administrator
38 |
39 |
40 |
41 |
42 |
53 |
54 |
55 | Profile
56 |
57 |
58 | Lock Screen
59 |
60 |
61 | chrome_reader_mode Logout
62 |
63 |
64 |
65 |
66 |
67 | );
68 |
69 | export default NavRight;
70 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/NavBar/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext } from 'react';
2 |
3 | // react-bootstrap
4 | import { Container } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 |
9 | // project imports
10 | import NavLeft from './NavLeft';
11 | import NavRight from './NavRight';
12 | import { ConfigContext } from 'contexts/ConfigContext';
13 | import * as actionType from 'store/actions';
14 |
15 | // assets
16 | import logo from 'assets/images/logo.svg';
17 |
18 | // -----------------------|| NAV BAR ||-----------------------//
19 | const NavBar = () => {
20 | const configContext = useContext(ConfigContext);
21 | const { headerBackColor, layout, collapseLayout, collapseTabMenu, collapseHeaderMenu } = configContext.state;
22 | const { dispatch } = configContext;
23 |
24 | const navBarToggleHandler = () => {
25 | if (!collapseLayout) {
26 | dispatch({ type: actionType.COLLAPSE_LAYOUT });
27 | dispatch({ type: actionType.COLLAPSE_MENU });
28 | } else {
29 | dispatch({ type: actionType.COLLAPSE_LAYOUT, collapseLayout: false });
30 | dispatch({ type: actionType.COLLAPSE_MENU, collapseMenu: false });
31 | }
32 | };
33 |
34 | let headerClass = ['pc-header', headerBackColor];
35 | if (collapseHeaderMenu) {
36 | headerClass = [...headerClass, 'mob-header-active'];
37 | }
38 |
39 | let mheaderClass = ['m-header'];
40 | const mHeaderEnable = !!(layout === 'horizontal' || layout === 'modern' || layout === 'advance' || layout === 'topbar');
41 |
42 | if (layout === 'modern' || layout === 'advance') {
43 | mheaderClass = [...mheaderClass, 'd-flex align-items-center'];
44 | }
45 |
46 | const mHeader = (
47 |
48 |
49 |
50 |
51 |
52 | );
53 |
54 | let mobDrpClass = ['me-auto pc-mob-drp t'];
55 | if (collapseTabMenu) {
56 | mobDrpClass = [...mobDrpClass, 'mob-drp-active'];
57 | }
58 |
59 | let navBarToggle;
60 | if (layout === 'navbar-toggle') {
61 | navBarToggle = (
62 |
63 |
64 | vertical_split
65 |
66 |
67 | );
68 | }
69 |
70 | let navBar = (
71 | <>
72 |
73 | {navBarToggle}
74 | {mHeaderEnable && mHeader}
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | {(collapseTabMenu || collapseHeaderMenu) &&
}
83 | >
84 | );
85 |
86 | if (layout === 'horizontal' || layout === 'topbar') {
87 | navBar = {navBar} ;
88 | }
89 |
90 | return ;
91 | };
92 |
93 | export default NavBar;
94 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Navigation/NavContent/NavBadge/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import PropTypes from 'prop-types';
5 |
6 | // -----------------------|| NAV BADGE ||-----------------------//
7 | const NavBadge = ({ items }) => {
8 | let navBadges;
9 | if (items.badge) {
10 | const badgeClass = ['label', 'pc-badge', items.badge.type];
11 |
12 | navBadges = {items.badge.title} ;
13 | }
14 |
15 | return <>{navBadges}>;
16 | };
17 |
18 | NavBadge.propTypes = {
19 | items: PropTypes.object.isRequired
20 | };
21 |
22 | export default NavBadge;
23 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Navigation/NavContent/NavCollapse/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext, useEffect } from 'react';
2 |
3 | // react-bootstrap
4 | import { ListGroup } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import FeatherIcon from 'feather-icons-react';
9 | import { SlideDown } from 'react-slidedown';
10 | import 'react-slidedown/lib/slidedown.css';
11 | import PropTypes from 'prop-types';
12 |
13 | // project imports
14 | import NavItem from '../NavItem';
15 | /* eslint-disable import/no-self-import */
16 | import LoopNavCollapse from './index';
17 | import NavIcon from '../NavIcon';
18 | import NavBadge from '../NavBadge';
19 | import { ConfigContext } from 'contexts/ConfigContext';
20 | import * as actionType from 'store/actions';
21 | import useWindowSize from 'hooks/useWindowSize';
22 |
23 | // -----------------------|| NAV COLLAPSE ||-----------------------//
24 | const NavCollapse = ({ collapse, type }) => {
25 | const configContext = useContext(ConfigContext);
26 | const { dispatch } = configContext;
27 | const windowSize = useWindowSize();
28 |
29 | const { layout, isOpen, isTrigger, collapseLayout } = configContext.state;
30 |
31 | useEffect(() => {
32 | const currentIndex = document.location.pathname
33 | .toString()
34 | .split('/')
35 | .findIndex((id) => id === collapse.id);
36 | if (currentIndex > -1) {
37 | dispatch({ type: actionType.COLLAPSE_TOGGLE, menu: { id: collapse.id, type } });
38 | }
39 | }, [collapse, dispatch, type]);
40 |
41 | let navItems;
42 | if (collapse.children) {
43 | const collapses = collapse.children;
44 | navItems = Object.keys(collapses).map((item) => {
45 | item = collapses[item];
46 | switch (item.type) {
47 | case 'collapse':
48 | return ;
49 | case 'item':
50 | return ;
51 | default:
52 | return false;
53 | }
54 | });
55 | }
56 |
57 | let itemTitle = collapse.title;
58 | if (collapse.icon) {
59 | itemTitle = {collapse.title} ;
60 | }
61 |
62 | let navLinkClass = ['pc-link'];
63 |
64 | let navItemClass = ['pc-item', 'pc-hasmenu'];
65 | const openIndex = isOpen.findIndex((id) => id === collapse.id);
66 | if (openIndex > -1) {
67 | navItemClass = [...navItemClass, 'active'];
68 | if (layout !== 'horizontal') {
69 | navLinkClass = [...navLinkClass, 'active'];
70 | }
71 | }
72 |
73 | const triggerIndex = isTrigger.findIndex((id) => id === collapse.id);
74 | if (triggerIndex > -1) {
75 | navItemClass = [...navItemClass, 'pc-trigger'];
76 | }
77 |
78 | const currentIndex = document.location.pathname
79 | .toString()
80 | .split('/')
81 | .findIndex((id) => id === collapse.id);
82 | if (currentIndex > -1) {
83 | navItemClass = [...navItemClass, 'active'];
84 | if (layout !== 'horizontal') {
85 | navLinkClass = [...navLinkClass, 'active'];
86 | }
87 | }
88 |
89 | const subContent = (
90 | <>
91 | dispatch({ type: actionType.COLLAPSE_TOGGLE, menu: { id: collapse.id, type } })}
95 | >
96 |
97 | {itemTitle}
98 |
99 |
100 |
101 |
102 |
103 | {(!collapseLayout || windowSize.width < 992) && (
104 |
105 | {triggerIndex > -1 ? navItems : null}
106 |
107 | )}
108 | {collapseLayout && windowSize.width >= 992 && (
109 |
110 | {navItems}
111 |
112 | )}
113 | >
114 | );
115 |
116 | let mainContent;
117 | if (layout === 'horizontal') {
118 | mainContent = (
119 | dispatch({ type: actionType.NAV_COLLAPSE_LEAVE, menu: { id: collapse.id, type } })}
124 | onMouseEnter={() => dispatch({ type: actionType.COLLAPSE_TOGGLE, menu: { id: collapse.id, type } })}
125 | >
126 | {subContent}
127 |
128 | );
129 | } else {
130 | mainContent = (
131 |
132 | {subContent}
133 |
134 | );
135 | }
136 |
137 | return <>{mainContent}>;
138 | };
139 |
140 | NavCollapse.propTypes = {
141 | collapse: PropTypes.array.isRequired,
142 | type: PropTypes.string.isRequired
143 | };
144 |
145 | export default NavCollapse;
146 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Navigation/NavContent/NavGroup/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { ListGroup } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // project imports
10 | import NavCollapse from '../NavCollapse';
11 | import NavItem from '../NavItem';
12 |
13 | // -----------------------|| NAV GROUP ||-----------------------//
14 | const NavGroup = ({ layout, group, id }) => {
15 | let navItems;
16 |
17 | if (group.children) {
18 | const groups = group.children;
19 | navItems = Object.keys(groups).map((item) => {
20 | item = groups[item];
21 | switch (item.type) {
22 | case 'collapse':
23 | return ;
24 | case 'item':
25 | return ;
26 | default:
27 | return false;
28 | }
29 | });
30 | }
31 |
32 | return (
33 | <>
34 | {group.title && (
35 |
36 | {group.title}
37 | {group.subtitle}
38 |
39 | )}
40 | {navItems}
41 | >
42 | );
43 | };
44 |
45 | NavGroup.propTypes = {
46 | layout: PropTypes.string.isRequired,
47 | group: PropTypes.object.isRequired,
48 | id: PropTypes.string
49 | };
50 |
51 | export default NavGroup;
52 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Navigation/NavContent/NavIcon/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import PropTypes from 'prop-types';
5 |
6 | // -----------------------|| NAV ICON ||-----------------------//
7 | const NavIcon = ({ items }) => {
8 | let navIcons;
9 | if (items.icon) {
10 | navIcons = (
11 |
12 | {items.iconname}
13 |
14 | );
15 | }
16 |
17 | return <>{navIcons}>;
18 | };
19 |
20 | NavIcon.propTypes = {
21 | items: PropTypes.object.isRequired
22 | };
23 |
24 | export default NavIcon;
25 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Navigation/NavContent/NavItem/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext } from 'react';
2 |
3 | // react-bootstrap
4 | import { ListGroup } from 'react-bootstrap';
5 |
6 | // thrid party
7 | import { Link, NavLink } from 'react-router-dom';
8 | import FeatherIcon from 'feather-icons-react';
9 | import PropTypes from 'prop-types';
10 |
11 | // project imports
12 | import NavIcon from '../NavIcon';
13 | import NavBadge from '../NavBadge';
14 | import { ConfigContext } from 'contexts/ConfigContext';
15 | import * as actionType from 'store/actions';
16 | import useWindowSize from 'hooks/useWindowSize';
17 |
18 | // -----------------------|| NAV ITEM ||-----------------------//
19 | const NavItem = ({ layout, item }) => {
20 | const windowSize = useWindowSize();
21 | const configContext = useContext(ConfigContext);
22 | const { dispatch } = configContext;
23 |
24 | let itemTitle = item.title;
25 | if (item.icon) {
26 | itemTitle = (
27 | <>
28 | {item.title}
29 | {item.type === 'collapse' && (
30 |
31 |
32 |
33 | )}
34 | >
35 | );
36 | }
37 |
38 | let itemTarget = '';
39 | if (item.target) {
40 | itemTarget = '_blank';
41 | }
42 | let navItemClass = ['pc-item'];
43 | const currentIndex = document.location.pathname
44 | .toString()
45 | .split('/')
46 | .findIndex((id) => id === item.id);
47 | if (currentIndex > -1) {
48 | navItemClass = [...navItemClass, 'active'];
49 | }
50 |
51 | const navLinkClass = ['pc-link'];
52 |
53 | let subContent;
54 | if (item.external) {
55 | subContent = (
56 |
57 |
58 | {itemTitle}
59 |
60 |
61 | );
62 | } else {
63 | subContent = (
64 |
65 |
66 | {itemTitle}
67 |
68 |
69 | );
70 | }
71 | let mainContent;
72 | if (layout === 'horizontal') {
73 | mainContent = (
74 | dispatch({ type: actionType.NAV_CONTENT_LEAVE })}
79 | >
80 | {subContent}
81 |
82 | );
83 | } else if (windowSize.width < 992) {
84 | mainContent = (
85 | dispatch({ type: actionType.COLLAPSE_MENU })}
90 | >
91 | {subContent}
92 |
93 | );
94 | } else {
95 | mainContent = (
96 |
97 | {subContent}
98 |
99 | );
100 | }
101 |
102 | return <>{mainContent}>;
103 | };
104 |
105 | NavItem.propTypes = {
106 | layout: PropTypes.string.isRequired,
107 | item: PropTypes.object.isRequired
108 | };
109 |
110 | export default NavItem;
111 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/Navigation/NavContent/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext } from 'react';
2 |
3 | // react-bootstrap
4 | import { ListGroup } from 'react-bootstrap';
5 |
6 | // third party
7 | import { Link } from 'react-router-dom';
8 | import PerfectScrollbar from 'react-perfect-scrollbar';
9 | import PropTypes from 'prop-types';
10 |
11 | // project imports
12 | import NavGroup from './NavGroup';
13 | import { ConfigContext } from 'contexts/ConfigContext';
14 | import * as actionType from 'store/actions';
15 |
16 | // assets
17 | import logo from 'assets/images/logo.svg';
18 | import logoDark from 'assets/images/logo-dark.svg';
19 | import logoSM from 'assets/images/logo-sm.svg';
20 | import logoSMLight from 'assets/images/logo-sm-light.svg';
21 |
22 | // -----------------------|| NAV CONTENT ||-----------------------//
23 | const NavContent = ({ navigation, activeNav }) => {
24 | const configContext = useContext(ConfigContext);
25 | const { dispatch } = configContext;
26 |
27 | const { layout, collapseLayout, colorBrand } = configContext.state;
28 |
29 | const navItems = navigation.map((item) => {
30 | let navItem = <>>;
31 | switch (item.type) {
32 | case 'group':
33 | if (activeNav) {
34 | navItem = (
35 |
36 |
37 |
38 | );
39 | } else {
40 | navItem = ;
41 | }
42 | return navItem;
43 | default:
44 | return false;
45 | }
46 | });
47 |
48 | let navContentNode = (
49 |
50 |
51 | {navItems}
52 |
53 |
54 |
55 |
56 |
57 |
Upgrade to Pro
58 |
To get more features and components
59 |
65 | Buy now
66 |
67 |
68 |
69 |
70 | );
71 |
72 | if (collapseLayout) {
73 | navContentNode = (
74 |
75 | {navItems}
76 |
77 | );
78 | }
79 |
80 | let mheaderClass = ['m-header'];
81 | if (colorBrand) {
82 | mheaderClass = [...mheaderClass, colorBrand];
83 | }
84 | const mHeaderEnable = !!(layout === 'horizontal' || layout === 'modern' || layout === 'advance');
85 |
86 | if (layout === 'modern') {
87 | mheaderClass = [...mheaderClass, 'd-flex align-items-center'];
88 | }
89 |
90 | const mHeader = (
91 |
92 |
93 |
94 |
95 |
96 |
97 | );
98 |
99 | let mainContent;
100 | if (layout === 'horizontal') {
101 | mainContent = (
102 | dispatch({ type: actionType.NAV_CONTENT_LEAVE })}
108 | >
109 | {navItems}
110 |
111 | );
112 | } else {
113 | mainContent = (
114 | <>
115 | {!mHeaderEnable && mHeader}
116 | {navContentNode}
117 | >
118 | );
119 | }
120 |
121 | return <>{mainContent}>;
122 | };
123 |
124 | NavContent.propTypes = {
125 | navigation: PropTypes.object.isRequired,
126 | activeNav: PropTypes.string
127 | };
128 |
129 | export default NavContent;
130 |
--------------------------------------------------------------------------------
/src/layouts/AdminLayout/index.js:
--------------------------------------------------------------------------------
1 | import React, { useContext, useEffect } from 'react';
2 |
3 | // react-bootstrap
4 | import { Container } from 'react-bootstrap';
5 |
6 | // third party
7 | import PropTypes from 'prop-types';
8 |
9 | // project imports
10 | import MobileHeader from './MobileHeader';
11 | import Navigation from './Navigation';
12 | import NavBar from './NavBar';
13 | import Breadcrumb from './Breadcrumb';
14 | import ModalComponent from './Modal';
15 | import useWindowSize from 'hooks/useWindowSize';
16 | import { ConfigContext } from 'contexts/ConfigContext';
17 | import * as actionType from 'store/actions';
18 |
19 | // -----------------------|| ADMIN LAYOUT ||-----------------------//
20 | const AdminLayout = ({ children }) => {
21 | const windowSize = useWindowSize();
22 | const configContext = useContext(ConfigContext);
23 | const bodyElement = document.body;
24 | const { layout, pageType, collapseLayout } = configContext.state;
25 | const { dispatch } = configContext;
26 | useEffect(() => {
27 | if (windowSize.width > 992 && windowSize.width <= 1024 && layout !== 'horizontal') {
28 | dispatch({ type: actionType.COLLAPSE_MENU });
29 | }
30 | }, [dispatch, layout, windowSize]);
31 |
32 | if (pageType === 'app-dark-mode') {
33 | document.documentElement.classList.add('app-dark-mode');
34 | } else {
35 | document.documentElement.classList.remove('app-dark-mode');
36 | }
37 |
38 | if (windowSize.width > 992 && collapseLayout) {
39 | bodyElement.classList.add('minimenu');
40 | } else {
41 | bodyElement.classList.remove('minimenu');
42 | }
43 |
44 | if (layout === 'horizontal') {
45 | bodyElement.classList.add('pc-horizontal');
46 | } else if (layout === 'topbar') {
47 | bodyElement.classList.add('pc-horizontal', 'layout-topbar');
48 | } else if (layout === 'modern') {
49 | bodyElement.classList.add('modern-layout');
50 | } else if (layout === 'advance') {
51 | bodyElement.classList.add('advance-layout');
52 | } else if (layout === 'tab') {
53 | bodyElement.classList.add('tab-layout');
54 | }
55 |
56 | let containerClass = ['pc-container'];
57 | if (layout === 'nested') {
58 | containerClass = [...containerClass, 'sidebar-layouts'];
59 | }
60 |
61 | let adminlayout = (
62 | <>
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | {children}
71 |
72 |
73 |
84 | >
85 | );
86 | if (layout === 'horizontal' || layout === 'topbar') {
87 | adminlayout = (
88 | <>
89 |
90 |
91 |
92 |
93 | {layout !== 'topbar' && }
94 |
95 |
96 |
97 | {children}
98 |
99 |
100 |
101 | >
102 | );
103 | }
104 | return <>{adminlayout}>;
105 | };
106 |
107 | AdminLayout.propTypes = {
108 | children: PropTypes.node
109 | };
110 |
111 | export default AdminLayout;
112 |
--------------------------------------------------------------------------------
/src/react-app-env.d.js:
--------------------------------------------------------------------------------
1 | // declare modules for type script compatibility
2 | ///
3 | // declare module 'feather-icons-react';
4 | // declare module 'react-image-video-lightbox';
5 | // declare module 'rodal';
6 | // declare module 'react-nestable';
7 | // declare module 'pnotify/dist/es/PNotify';
8 | // declare module '@ckeditor/ckeditor5-react';
9 | // declare module '@ckeditor/ckeditor5-build-balloon';
10 | // declare module '@ckeditor/ckeditor5-build-classic';
11 | // declare module '@ckeditor/ckeditor5-build-decoupled-document';
12 | // declare module '@ckeditor/ckeditor5-build-inline';
13 | // declare module 'react-tinymce';
14 | // declare module 'react-bootstrap-validation';
15 | // declare module 'react-bootstrap4-form-validation';
16 | // declare module 'react-bootstrap-time-picker';
17 | // declare module 'react-bootstrap-carousel';
18 |
--------------------------------------------------------------------------------
/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = (onPerfEntry) => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/src/routes/renderRoutes.js:
--------------------------------------------------------------------------------
1 | import React, { StrictMode, Suspense, Fragment } from 'react';
2 |
3 | // third party
4 | import { Switch, Route } from 'react-router-dom';
5 |
6 | // project imports
7 | import Loader from 'components/Loader/Loader';
8 |
9 | // Routing control for aplication
10 | const renderRoutes = (routes) => (
11 |
12 | }>
13 |
14 | {routes.map((route, i) => {
15 | const Guard = route.guard || Fragment;
16 | const Layout = route.layout || Fragment;
17 | const Component = route.component;
18 |
19 | return (
20 | (
25 |
26 | {route.routes ? renderRoutes(route.routes) : }
27 |
28 | )}
29 | />
30 | );
31 | })}
32 |
33 |
34 |
35 | );
36 |
37 | export default renderRoutes;
38 |
--------------------------------------------------------------------------------
/src/routes/routes.js:
--------------------------------------------------------------------------------
1 | import React, { lazy } from 'react';
2 |
3 | // third party
4 | import { Redirect } from 'react-router-dom';
5 |
6 | // project imports
7 | import AdminLayout from 'layouts/AdminLayout';
8 | import { BASE_URL } from 'config/constant';
9 |
10 | // -----------------------|| Routes ||-----------------------//
11 | const routes = [
12 | {
13 | exact: true,
14 | path: '/auth/signup-1',
15 | component: lazy(() => import('../views/auth/signup/SignUp1'))
16 | },
17 | {
18 | exact: true,
19 | path: '/auth/signin-1',
20 | component: lazy(() => import('../views/auth/signin/SignIn1'))
21 | },
22 | {
23 | path: '*',
24 | layout: AdminLayout,
25 | routes: [
26 | {
27 | exact: true,
28 | path: '/dashboard/sales',
29 | component: lazy(() => import('../views/dashboard/DashSales'))
30 | },
31 | {
32 | exact: true,
33 | path: '/basic/typography',
34 | component: lazy(() => import('../views/ui-elements/basic/BasicTypography'))
35 | },
36 | {
37 | exact: true,
38 | path: '/icons/Feather',
39 | component: lazy(() => import('../views/ui-elements/icons/Feather'))
40 | },
41 | {
42 | exact: true,
43 | path: '/bootstrap-table/basic-table',
44 | component: lazy(() => import('../views/tables/bootstrap/BasicTable'))
45 | },
46 | {
47 | exact: true,
48 | path: '/charts/apex-chart',
49 | component: lazy(() => import('../views/charts/apex-chart'))
50 | },
51 | {
52 | exact: true,
53 | path: '/maps/google-map',
54 | component: lazy(() => import('../views/maps/GoogleMaps'))
55 | },
56 | {
57 | exact: true,
58 | path: '/sample-page',
59 | component: lazy(() => import('../views/sample'))
60 | },
61 | {
62 | path: '*',
63 | exact: true,
64 | component: () =>
65 | }
66 | ]
67 | }
68 | ];
69 |
70 | export default routes;
71 |
--------------------------------------------------------------------------------
/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/src/store/actions.js:
--------------------------------------------------------------------------------
1 | export const CHANGE_LAYOUT = 'CHANGE_LAYOUT';
2 | export const COLLAPSE_MENU = 'COLLAPSE_MENU';
3 | export const COLLAPSE_TABMENU = 'COLLAPSE_TABMENU';
4 | export const COLLAPSE_HEADERMENU = 'COLLAPSE_HEADERMENU';
5 | export const COLLAPSE_LAYOUT = 'COLLAPSE_LAYOUT';
6 | export const COLLAPSE_TOGGLE = 'COLLAPSE_TOGGLE';
7 | export const HEADER_BACK_COLOR = 'HEADER_BACK_COLOR';
8 | export const COLOR_BRAND = 'COLOR_BRAND';
9 | export const LAYOUT_TYPE = 'LAYOUT_TYPE';
10 | export const PAGE_TYPE = 'PAGE_TYPE';
11 | export const NAV_COLLAPSE_LEAVE = 'NAV_COLLAPSE_LEAVE';
12 | export const NAV_CONTENT_LEAVE = 'NAV_CONTENT_LEAVE';
13 | export const RESET = 'RESET';
14 | export const NOTIFICATION_MODAL = 'NOTIFICATION_MODAL';
15 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | // third party
2 | import { useDispatch as useReduxDispatch, useSelector as useReduxSelector } from 'react-redux';
3 |
4 | export const useSelector = useReduxSelector;
5 |
6 | export const useDispatch = () => useReduxDispatch();
7 |
--------------------------------------------------------------------------------
/src/utils/helper.js:
--------------------------------------------------------------------------------
1 | // Helper functions
2 |
3 | export const range = (len) => {
4 | const arr = [];
5 | for (let i = 0; i < len; i += 1) {
6 | arr.push(i);
7 | }
8 | return arr;
9 | };
10 |
11 | export const requireAll = (requireContext) => requireContext.keys().map(requireContext);
12 |
13 | export const randomDate = (start, end, format) => {
14 | const today = new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
15 | const dd = today.getDate();
16 | const mm = today.getMonth() + 1;
17 | const yyyy = today.getFullYear();
18 |
19 | let formattedDate = '';
20 |
21 | if (format === 'dd/mm/yyyy') {
22 | formattedDate = `${dd < 10 ? `0${dd}` : dd}/${mm < 10 ? `0${mm}` : mm}/${yyyy}`;
23 | } else if (format === 'yyyy-mm-dd') {
24 | formattedDate = `${yyyy}-${mm < 10 ? `0${mm}` : mm}-${dd < 10 ? `0${dd}` : dd}`;
25 | }
26 |
27 | return formattedDate;
28 | };
29 |
--------------------------------------------------------------------------------
/src/views/auth/signin/SignIn1.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Row, Col, Button, Form, InputGroup } from 'react-bootstrap';
5 |
6 | // third party
7 | import { NavLink } from 'react-router-dom';
8 | import FeatherIcon from 'feather-icons-react';
9 |
10 | // assets
11 | import logoDark from 'assets/images/logo-dark.svg';
12 |
13 | // -----------------------|| SIGNIN 1 ||-----------------------//
14 | const Signin1 = () => (
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Signin
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | Signin
39 |
40 | Forgot password?{' '}
41 |
42 | Reset
43 |
44 |
45 |
46 | Don’t have an account?{' '}
47 |
48 | Signup
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | );
58 |
59 | export default Signin1;
60 |
--------------------------------------------------------------------------------
/src/views/auth/signup/SignUp1.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Row, Col, Button, InputGroup, Form } from 'react-bootstrap';
5 |
6 | // third party
7 | import { NavLink } from 'react-router-dom';
8 | import FeatherIcon from 'feather-icons-react';
9 |
10 | // assets
11 | import logoDark from 'assets/images/logo-dark.svg';
12 |
13 | // -----------------------|| SIGNUP 1 ||-----------------------//
14 | const SignUp1 = () => (
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Sign up
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
47 | Sign up
48 |
49 | Already have an account?{' '}
50 |
51 | Signin
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | );
61 |
62 | export default SignUp1;
63 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/area-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'area',
4 | options: {
5 | dataLabels: {
6 | enabled: false
7 | },
8 | stroke: {
9 | curve: 'smooth'
10 | },
11 | colors: ['#ffa21d', '#ea4d4d'],
12 | xaxis: {
13 | type: 'datetime',
14 | categories: [
15 | '2018-09-19T00:00:00',
16 | '2018-09-19T01:30:00',
17 | '2018-09-19T02:30:00',
18 | '2018-09-19T03:30:00',
19 | '2018-09-19T04:30:00',
20 | '2018-09-19T05:30:00',
21 | '2018-09-19T06:30:00'
22 | ]
23 | },
24 | tooltip: {
25 | x: {
26 | format: 'dd/MM/yy HH:mm'
27 | }
28 | }
29 | },
30 | series: [
31 | {
32 | name: 'series1',
33 | data: [31, 40, 28, 51, 42, 109, 100]
34 | },
35 | {
36 | name: 'series2',
37 | data: [11, 32, 45, 32, 34, 52, 41]
38 | }
39 | ]
40 | };
41 |
42 | export default chartData;
43 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/bar-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'bar',
4 | options: {
5 | plotOptions: {
6 | bar: {
7 | horizontal: false,
8 | columnWidth: '55%'
9 | }
10 | },
11 | dataLabels: {
12 | enabled: false
13 | },
14 | colors: ['#17c666', '#7267EF', '#EA4D4D'],
15 | stroke: {
16 | show: true,
17 | width: 2,
18 | colors: ['transparent']
19 | },
20 | fill: {
21 | type: 'solid'
22 | },
23 | xaxis: {
24 | categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']
25 | },
26 | yaxis: {
27 | title: {
28 | text: '$ (thousands)'
29 | }
30 | },
31 | tooltip: {
32 | y: {
33 | formatter(val) {
34 | return `$ ${val} thousands`;
35 | }
36 | }
37 | }
38 | },
39 | series: [
40 | {
41 | name: 'Net Profit',
42 | data: [44, 55, 57, 56, 61, 58, 63]
43 | },
44 | {
45 | name: 'Revenue',
46 | data: [76, 85, 101, 98, 87, 105, 91]
47 | },
48 | {
49 | name: 'Free Cash Flow',
50 | data: [35, 41, 36, 26, 45, 48, 52]
51 | }
52 | ]
53 | };
54 | export default chartData;
55 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/bar-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'bar',
4 | options: {
5 | chart: {
6 | stacked: true,
7 | toolbar: {
8 | show: true
9 | },
10 | zoom: {
11 | enabled: true
12 | }
13 | },
14 | colors: ['#7267EF', '#17c666', '#ffa21d', '#EA4D4D'],
15 | responsive: [
16 | {
17 | breakpoint: 480,
18 | options: {
19 | legend: {
20 | position: 'bottom',
21 | offsetX: -10,
22 | offsetY: 0
23 | }
24 | }
25 | }
26 | ],
27 | plotOptions: {
28 | bar: {
29 | horizontal: false
30 | }
31 | },
32 | series: [
33 | {
34 | name: 'PRODUCT A',
35 | data: [44, 55, 41, 67, 22, 43]
36 | },
37 | {
38 | name: 'PRODUCT B',
39 | data: [13, 23, 20, 8, 13, 27]
40 | },
41 | {
42 | name: 'PRODUCT C',
43 | data: [11, 17, 15, 15, 21, 14]
44 | },
45 | {
46 | name: 'PRODUCT D',
47 | data: [21, 7, 25, 13, 22, 8]
48 | }
49 | ],
50 | xaxis: {
51 | type: 'datetime',
52 | categories: ['01/01/2011 GMT', '01/02/2011 GMT', '01/03/2011 GMT', '01/04/2011 GMT', '01/05/2011 GMT', '01/06/2011 GMT']
53 | },
54 | legend: {
55 | position: 'right',
56 | offsetY: 40
57 | },
58 | fill: {
59 | type: 'solid'
60 | }
61 | },
62 | series: [
63 | {
64 | name: 'PRODUCT A',
65 | data: [44, 55, 41, 67, 22, 43]
66 | },
67 | {
68 | name: 'PRODUCT B',
69 | data: [13, 23, 20, 8, 13, 27]
70 | },
71 | {
72 | name: 'PRODUCT C',
73 | data: [11, 17, 15, 15, 21, 14]
74 | },
75 | {
76 | name: 'PRODUCT D',
77 | data: [21, 7, 25, 13, 22, 8]
78 | }
79 | ]
80 | };
81 | export default chartData;
82 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/bar-chart-3.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'bar',
4 | options: {
5 | plotOptions: {
6 | bar: {
7 | horizontal: true,
8 | dataLabels: {
9 | position: 'top'
10 | }
11 | }
12 | },
13 | colors: ['#7267EF', '#17c666'],
14 | dataLabels: {
15 | enabled: true,
16 | offsetX: -6,
17 | style: {
18 | fontSize: '12px',
19 | colors: ['#fff']
20 | }
21 | },
22 | stroke: {
23 | show: true,
24 | width: 1,
25 | colors: ['#fff']
26 | },
27 | fill: {
28 | type: 'solid'
29 | },
30 | xaxis: {
31 | categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007]
32 | }
33 | },
34 | series: [
35 | {
36 | data: [44, 55, 41, 64, 22, 43, 21]
37 | },
38 | {
39 | data: [53, 32, 33, 52, 13, 44, 32]
40 | }
41 | ]
42 | };
43 | export default chartData;
44 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/bar-chart-4.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'bar',
4 | options: {
5 | chart: {
6 | stacked: true,
7 | stackType: '100%'
8 | },
9 | plotOptions: {
10 | bar: {
11 | horizontal: true
12 | }
13 | },
14 | colors: ['#7267EF', '#3ec9d6', '#17c666', '#ffa21d', '#EA4D4D'],
15 | stroke: {
16 | width: 1,
17 | colors: ['#fff']
18 | },
19 | title: {
20 | text: '100% Stacked Bar'
21 | },
22 | xaxis: {
23 | categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014]
24 | },
25 |
26 | tooltip: {
27 | y: {
28 | formatter(val) {
29 | return `${val}K`;
30 | }
31 | }
32 | },
33 | fill: {
34 | type: 'solid'
35 | },
36 | legend: {
37 | position: 'top',
38 | horizontalAlign: 'left',
39 | offsetX: 40
40 | }
41 | },
42 | series: [
43 | {
44 | name: 'Marine Sprite',
45 | data: [44, 55, 41, 37, 22, 43, 21]
46 | },
47 | {
48 | name: 'Striking Calf',
49 | data: [53, 32, 33, 52, 13, 43, 32]
50 | },
51 | {
52 | name: 'Tank Picture',
53 | data: [12, 17, 11, 9, 15, 11, 20]
54 | },
55 | {
56 | name: 'Bucket Slope',
57 | data: [9, 7, 5, 8, 6, 9, 4]
58 | },
59 | {
60 | name: 'Reborn Kid',
61 | data: [25, 12, 19, 32, 25, 24, 10]
62 | }
63 | ]
64 | };
65 | export default chartData;
66 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/bubble-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'bubble',
4 | options: {
5 | dataLabels: {
6 | enabled: false
7 | },
8 | colors: ['#7267ef', '#17c666', '#ffa21d', '#ea4d4d'],
9 | fill: {
10 | type: 'gradient',
11 | gradient: {
12 | shade: 'light',
13 | type: 'vertical',
14 | shadeIntensity: 0.25,
15 | inverseColors: true,
16 | opacityFrom: 1,
17 | opacityTo: 0.7,
18 | stops: [0, 100]
19 | }
20 | },
21 | title: {
22 | text: 'Simple Bubble Chart'
23 | },
24 | xaxis: {
25 | tickAmount: 12,
26 | type: 'category'
27 | },
28 | yaxis: {
29 | max: 70
30 | }
31 | },
32 | series: [
33 | {
34 | name: 'Bubble1',
35 | data: generateBubbleData(new Date('11 Feb 2017 GMT').getTime(), 20, {
36 | min: 10,
37 | max: 60
38 | })
39 | },
40 | {
41 | name: 'Bubble2',
42 | data: generateBubbleData(new Date('11 Feb 2017 GMT').getTime(), 20, {
43 | min: 10,
44 | max: 60
45 | })
46 | },
47 | {
48 | name: 'Bubble3',
49 | data: generateBubbleData(new Date('11 Feb 2017 GMT').getTime(), 20, {
50 | min: 10,
51 | max: 60
52 | })
53 | },
54 | {
55 | name: 'Bubble4',
56 | data: generateBubbleData(new Date('11 Feb 2017 GMT').getTime(), 20, {
57 | min: 10,
58 | max: 60
59 | })
60 | }
61 | ]
62 | };
63 | export default chartData;
64 |
65 | function generateBubbleData(baseval, count, yrange) {
66 | let i = 0;
67 | const series = [];
68 | while (i < count) {
69 | const x = Math.floor(Math.random() * (750 - 1 + 1)) + 1;
70 | const y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
71 | const z = Math.floor(Math.random() * (75 - 15 + 1)) + 15;
72 |
73 | series.push([x, y, z]);
74 | baseval += 86400000;
75 | i += 1;
76 | }
77 | return series;
78 | }
79 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/bubble-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'bubble',
4 | options: {
5 | dataLabels: {
6 | enabled: false
7 | },
8 | fill: {
9 | type: 'gradient'
10 | },
11 | colors: ['#7267ef', '#17c666', '#ffa21d', '#ea4d4d'],
12 | title: {
13 | text: '3D Bubble Chart'
14 | },
15 | xaxis: {
16 | tickAmount: 12,
17 | type: 'datetime',
18 |
19 | labels: {
20 | rotate: 0
21 | }
22 | },
23 | yaxis: {
24 | max: 70
25 | },
26 | theme: {
27 | palette: 'palette2'
28 | }
29 | },
30 | series: [
31 | {
32 | name: 'Product1',
33 | data: generateDatasehratheatbubble3d(new Date('11 Feb 2017 GMT').getTime(), 20, {
34 | min: 10,
35 | max: 60
36 | })
37 | },
38 | {
39 | name: 'Product2',
40 | data: generateDatasehratheatbubble3d(new Date('11 Feb 2017 GMT').getTime(), 20, {
41 | min: 10,
42 | max: 60
43 | })
44 | },
45 | {
46 | name: 'Product3',
47 | data: generateDatasehratheatbubble3d(new Date('11 Feb 2017 GMT').getTime(), 20, {
48 | min: 10,
49 | max: 60
50 | })
51 | },
52 | {
53 | name: 'Product4',
54 | data: generateDatasehratheatbubble3d(new Date('11 Feb 2017 GMT').getTime(), 20, {
55 | min: 10,
56 | max: 60
57 | })
58 | }
59 | ]
60 | };
61 | export default chartData;
62 |
63 | function generateDatasehratheatbubble3d(baseval, count, yrange) {
64 | let i = 0;
65 | const series = [];
66 | while (i < count) {
67 | const y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
68 | const z = Math.floor(Math.random() * (75 - 15 + 1)) + 15;
69 |
70 | series.push([baseval, y, z]);
71 | baseval += 86400000;
72 | i += 1;
73 | }
74 | return series;
75 | }
76 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/heat-map-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'heatmap',
4 | options: {
5 | dataLabels: {
6 | enabled: false
7 | },
8 | colors: ['#7267ef'],
9 | title: {
10 | text: 'HeatMap Chart (Single color)'
11 | }
12 | },
13 | series: [
14 | {
15 | name: 'Metric1',
16 | data: generateDatasehratheat(12, {
17 | min: 0,
18 | max: 90
19 | })
20 | },
21 | {
22 | name: 'Metric2',
23 | data: generateDatasehratheat(12, {
24 | min: 0,
25 | max: 90
26 | })
27 | },
28 | {
29 | name: 'Metric3',
30 | data: generateDatasehratheat(12, {
31 | min: 0,
32 | max: 90
33 | })
34 | },
35 | {
36 | name: 'Metric4',
37 | data: generateDatasehratheat(12, {
38 | min: 0,
39 | max: 90
40 | })
41 | },
42 | {
43 | name: 'Metric5',
44 | data: generateDatasehratheat(12, {
45 | min: 0,
46 | max: 90
47 | })
48 | },
49 | {
50 | name: 'Metric6',
51 | data: generateDatasehratheat(12, {
52 | min: 0,
53 | max: 90
54 | })
55 | },
56 | {
57 | name: 'Metric7',
58 | data: generateDatasehratheat(12, {
59 | min: 0,
60 | max: 90
61 | })
62 | },
63 | {
64 | name: 'Metric8',
65 | data: generateDatasehratheat(12, {
66 | min: 0,
67 | max: 90
68 | })
69 | },
70 | {
71 | name: 'Metric9',
72 | data: generateDatasehratheat(12, {
73 | min: 0,
74 | max: 90
75 | })
76 | }
77 | ]
78 | };
79 | export default chartData;
80 |
81 | function generateDatasehratheat(count, yrange) {
82 | let i = 0;
83 | const series = [];
84 | while (i < count) {
85 | series.push({
86 | x: `w${(i + 1).toString()}`,
87 | y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min
88 | });
89 | i += 1;
90 | }
91 | return series;
92 | }
93 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/heat-map-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'heatmap',
4 | options: {
5 | stroke: {
6 | width: 0
7 | },
8 | plotOptions: {
9 | heatmap: {
10 | radius: 30,
11 | enableShades: false,
12 | colorScale: {
13 | ranges: [
14 | {
15 | from: 0,
16 | to: 50,
17 | color: '#ffa21d'
18 | },
19 | {
20 | from: 51,
21 | to: 100,
22 | color: '#ea4d4d'
23 | }
24 | ]
25 | }
26 | }
27 | },
28 | dataLabels: {
29 | enabled: true,
30 | style: {
31 | colors: ['#fff']
32 | }
33 | },
34 | colors: ['#7267ef', '#00bcd4', '#17c666', '#ffa21d', '#ea4d4d'],
35 | xaxis: {
36 | type: 'category'
37 | },
38 | title: {
39 | text: 'Rounded (Range without Shades)'
40 | }
41 | },
42 | series: [
43 | {
44 | name: 'Metric1',
45 | data: generateDatasehrat(15, {
46 | min: 0,
47 | max: 90
48 | })
49 | },
50 | {
51 | name: 'Metric2',
52 | data: generateDatasehrat(15, {
53 | min: 0,
54 | max: 90
55 | })
56 | },
57 | {
58 | name: 'Metric3',
59 | data: generateDatasehrat(15, {
60 | min: 0,
61 | max: 90
62 | })
63 | },
64 | {
65 | name: 'Metric4',
66 | data: generateDatasehrat(15, {
67 | min: 0,
68 | max: 90
69 | })
70 | },
71 | {
72 | name: 'Metric5',
73 | data: generateDatasehrat(15, {
74 | min: 0,
75 | max: 90
76 | })
77 | },
78 | {
79 | name: 'Metric6',
80 | data: generateDatasehrat(15, {
81 | min: 0,
82 | max: 90
83 | })
84 | },
85 | {
86 | name: 'Metric7',
87 | data: generateDatasehrat(15, {
88 | min: 0,
89 | max: 90
90 | })
91 | },
92 | {
93 | name: 'Metric8',
94 | data: generateDatasehrat(15, {
95 | min: 0,
96 | max: 90
97 | })
98 | },
99 | {
100 | name: 'Metric8',
101 | data: generateDatasehrat(15, {
102 | min: 0,
103 | max: 90
104 | })
105 | }
106 | ]
107 | };
108 | export default chartData;
109 |
110 | function generateDatasehrat(count, yrange) {
111 | let i = 0;
112 | const series = [];
113 | while (i < count) {
114 | series.push({
115 | x: (i + 1).toString(),
116 | y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min
117 | });
118 | i += 1;
119 | }
120 | return series;
121 | }
122 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/line-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 300,
3 | type: 'line',
4 | options: {
5 | chart: {
6 | zoom: {
7 | enabled: false
8 | }
9 | },
10 | dataLabels: {
11 | enabled: false
12 | },
13 | stroke: {
14 | curve: 'straight'
15 | },
16 | colors: ['#7267ef'],
17 | title: {
18 | text: 'Product Trends by Month',
19 | align: 'left'
20 | },
21 | grid: {
22 | row: {
23 | colors: ['#f3f6ff', 'transparent'], // takes an array which will be repeated on columns
24 | opacity: 0.5
25 | }
26 | },
27 | xaxis: {
28 | categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep']
29 | }
30 | },
31 | series: [
32 | {
33 | name: 'Desktops',
34 | data: [10, 41, 35, 51, 49, 62, 69, 91, 148]
35 | }
36 | ]
37 | };
38 |
39 | export default chartData;
40 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/line-chart-3.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 300,
3 | type: 'line',
4 | options: {
5 | chart: {
6 | zoom: {
7 | enabled: false
8 | }
9 | },
10 | dataLabels: {
11 | enabled: false
12 | },
13 | stroke: {
14 | width: [5, 7, 5],
15 | curve: 'straight',
16 | dashArray: [0, 8, 5]
17 | },
18 | colors: ['#17c666', '#ffa21d', '#ea4d4d'],
19 | fill: {
20 | type: 'gradient',
21 | gradient: {
22 | shade: 'light'
23 | }
24 | },
25 | title: {
26 | text: 'Page Statistics',
27 | align: 'left'
28 | },
29 | markers: {
30 | size: 0,
31 |
32 | hover: {
33 | sizeOffset: 6
34 | }
35 | },
36 | xaxis: {
37 | categories: [
38 | '01 Jan',
39 | '02 Jan',
40 | '03 Jan',
41 | '04 Jan',
42 | '05 Jan',
43 | '06 Jan',
44 | '07 Jan',
45 | '08 Jan',
46 | '09 Jan',
47 | '10 Jan',
48 | '11 Jan',
49 | '12 Jan'
50 | ]
51 | },
52 | tooltip: {
53 | y: [
54 | {
55 | title: {
56 | formatter(val) {
57 | return `${val} (mins)`;
58 | }
59 | }
60 | },
61 | {
62 | title: {
63 | formatter(val) {
64 | return `${val} per session`;
65 | }
66 | }
67 | },
68 | {
69 | title: {
70 | formatter(val) {
71 | return val;
72 | }
73 | }
74 | }
75 | ]
76 | },
77 | grid: {
78 | borderColor: '#f1f1f1'
79 | }
80 | },
81 | series: [
82 | {
83 | name: 'Session Duration',
84 | data: [45, 52, 38, 24, 33, 26, 21, 20, 6, 8, 15, 10]
85 | },
86 | {
87 | name: 'Page Views',
88 | data: [35, 41, 62, 42, 13, 18, 29, 37, 36, 51, 32, 35]
89 | },
90 | {
91 | name: 'Total Visits',
92 | data: [87, 57, 74, 99, 75, 38, 62, 47, 82, 56, 45, 47]
93 | }
94 | ]
95 | };
96 | export default chartData;
97 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/line-chart.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 300,
3 | type: 'area',
4 | options: {
5 | chart: {
6 | id: 'line-chart',
7 | animations: {
8 | enabled: true,
9 | easing: 'linear',
10 | dynamicAnimation: {
11 | speed: 2000
12 | }
13 | },
14 | toolbar: {
15 | show: false
16 | },
17 | zoom: {
18 | enabled: false
19 | }
20 | },
21 | dataLabels: {
22 | enabled: false
23 | },
24 | stroke: {
25 | curve: 'smooth'
26 | },
27 | colors: ['#7267ef'],
28 | fill: {
29 | type: 'gradient',
30 | gradient: {
31 | shadeIntensity: 1,
32 | type: 'horizontal',
33 | opacityFrom: 0.8,
34 | opacityTo: 0,
35 | stops: [0, 100]
36 | }
37 | },
38 | markers: {
39 | size: 0
40 | },
41 | xaxis: {
42 | type: 'datetime',
43 | range: 777600000
44 | },
45 | yaxis: {
46 | max: 100
47 | },
48 | legend: {
49 | show: false
50 | }
51 | },
52 | series: [
53 | {
54 | name: 'active Users :',
55 | data: []
56 | }
57 | ]
58 | };
59 | export default chartData;
60 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/mixed-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'line',
4 | options: {
5 | stroke: {
6 | width: [0, 4]
7 | },
8 | colors: ['#7267EF', '#EA4D4D'],
9 | fill: {
10 | type: 'solid'
11 | },
12 | title: {
13 | text: 'Traffic Sources'
14 | },
15 | labels: [
16 | '01 Jan 2001',
17 | '02 Jan 2001',
18 | '03 Jan 2001',
19 | '04 Jan 2001',
20 | '05 Jan 2001',
21 | '06 Jan 2001',
22 | '07 Jan 2001',
23 | '08 Jan 2001',
24 | '09 Jan 2001',
25 | '10 Jan 2001',
26 | '11 Jan 2001',
27 | '12 Jan 2001'
28 | ],
29 | xaxis: {
30 | type: 'datetime'
31 | },
32 | yaxis: [
33 | {
34 | title: {
35 | text: 'Website Blog'
36 | }
37 | },
38 | {
39 | opposite: true,
40 | title: {
41 | text: 'Social Media'
42 | }
43 | }
44 | ]
45 | },
46 | series: [
47 | {
48 | name: 'Website Blog',
49 | type: 'column',
50 | data: [440, 505, 414, 671, 227, 413, 201, 352, 752, 320, 257, 160]
51 | },
52 | {
53 | name: 'Social Media',
54 | type: 'line',
55 | data: [23, 42, 35, 27, 43, 22, 17, 31, 22, 22, 12, 16]
56 | }
57 | ]
58 | };
59 | export default chartData;
60 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/mixed-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'line',
4 | options: {
5 | chart: {
6 | stacked: false
7 | },
8 | stroke: {
9 | width: [0, 2, 5],
10 | curve: 'smooth'
11 | },
12 | plotOptions: {
13 | bar: {
14 | columnWidth: '50%'
15 | }
16 | },
17 | colors: ['#EA4D4D', '#7267EF', '#ffa21d'],
18 | fill: {
19 | type: 'solid'
20 | },
21 | labels: [
22 | '01/01/2003',
23 | '02/01/2003',
24 | '03/01/2003',
25 | '04/01/2003',
26 | '05/01/2003',
27 | '06/01/2003',
28 | '07/01/2003',
29 | '08/01/2003',
30 | '09/01/2003',
31 | '10/01/2003',
32 | '11/01/2003'
33 | ],
34 | markers: {
35 | size: 0
36 | },
37 | xaxis: {
38 | type: 'datetime'
39 | },
40 | yaxis: {
41 | min: 0
42 | },
43 | tooltip: {
44 | shared: true,
45 | intersect: false,
46 | y: {
47 | formatter(y) {
48 | if (typeof y !== 'undefined') {
49 | return `${y.toFixed(0)} views`;
50 | }
51 | return y;
52 | }
53 | }
54 | },
55 | legend: {
56 | labels: {
57 | useSeriesColors: true
58 | },
59 | markers: {
60 | customHTML() {
61 | return '';
62 | }
63 | }
64 | }
65 | },
66 | series: [
67 | {
68 | name: 'Facebook',
69 | type: 'column',
70 | data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]
71 | },
72 | {
73 | name: 'Vine',
74 | type: 'area',
75 | data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43]
76 | },
77 | {
78 | name: 'Dribbble',
79 | type: 'line',
80 | data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]
81 | }
82 | ]
83 | };
84 | export default chartData;
85 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/pie-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 320,
3 | type: 'pie',
4 | options: {
5 | labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],
6 | colors: ['#7267EF', '#17c666', '#3ec9d6', '#ffa21d', '#EA4D4D'],
7 | legend: {
8 | show: true,
9 | position: 'bottom'
10 | },
11 | fill: {
12 | type: 'solid'
13 | },
14 | dataLabels: {
15 | enabled: true,
16 | dropShadow: {
17 | enabled: false
18 | }
19 | },
20 | responsive: [
21 | {
22 | breakpoint: 480,
23 | options: {
24 | legend: {
25 | position: 'bottom'
26 | }
27 | }
28 | }
29 | ]
30 | },
31 | series: [44, 55, 13, 43, 22]
32 | };
33 | export default chartData;
34 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/pie-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 320,
3 | type: 'donut',
4 | options: {
5 | colors: ['#7267EF', '#17c666', '#3ec9d6', '#ffa21d', '#EA4D4D'],
6 | fill: {
7 | type: 'solid'
8 | },
9 | legend: {
10 | show: true,
11 | position: 'bottom'
12 | },
13 | plotOptions: {
14 | pie: {
15 | donut: {
16 | labels: {
17 | show: true,
18 | name: {
19 | show: true
20 | },
21 | value: {
22 | show: true
23 | }
24 | }
25 | }
26 | }
27 | },
28 | dataLabels: {
29 | enabled: true,
30 | dropShadow: {
31 | enabled: false
32 | }
33 | },
34 | responsive: [
35 | {
36 | breakpoint: 480,
37 | options: {
38 | legend: {
39 | position: 'bottom'
40 | }
41 | }
42 | }
43 | ]
44 | },
45 | series: [44, 55, 41, 17, 15]
46 | };
47 | export default chartData;
48 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/radar-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'radar',
4 | options: {
5 | labels: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
6 | plotOptions: {
7 | radar: {
8 | size: 140,
9 | polygons: {
10 | strokeColors: '#f3f6ff',
11 | fill: {
12 | colors: ['#f3f6ff', '#fff']
13 | }
14 | }
15 | }
16 | },
17 | title: {
18 | text: 'Radar with Polygon Fill'
19 | },
20 | colors: ['#ea4d4d'],
21 | markers: {
22 | size: 4,
23 | colors: ['#fff'],
24 | strokeColors: '#ea4d4d',
25 | strokeWidth: 2
26 | },
27 | fill: {
28 | type: 'gradient',
29 | gradient: {
30 | shade: 'light',
31 | type: 'vertical',
32 | shadeIntensity: 0.25,
33 | inverseColors: true,
34 | opacityFrom: 0.5,
35 | opacityTo: 0.7,
36 | stops: [40, 100]
37 | }
38 | },
39 | tooltip: {
40 | y: {
41 | formatter(val) {
42 | return val;
43 | }
44 | }
45 | },
46 | yaxis: {
47 | tickAmount: 7,
48 | labels: {
49 | formatter(val, i) {
50 | if (i % 2 === 0) {
51 | return val;
52 | }
53 | return '';
54 | }
55 | }
56 | }
57 | },
58 | series: [
59 | {
60 | name: 'Series 1',
61 | data: [20, 100, 40, 30, 50, 80, 33]
62 | }
63 | ]
64 | };
65 | export default chartData;
66 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/radar-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'radar',
4 | options: {
5 | chart: {
6 | dropShadow: {
7 | enabled: true,
8 | blur: 1,
9 | left: 1,
10 | top: 1
11 | }
12 | },
13 | title: {
14 | text: 'Radar Chart - Multi Series'
15 | },
16 | colors: ['#7267ef', '#17c666', '#ea4d4d'],
17 | stroke: {
18 | width: 0
19 | },
20 | fill: {
21 | type: 'gradient',
22 | gradient: {
23 | shade: 'light',
24 | type: 'vertical',
25 | shadeIntensity: 0.25,
26 | inverseColors: true,
27 | opacityFrom: 1,
28 | opacityTo: 0.7,
29 | stops: [40, 100]
30 | }
31 | },
32 | markers: {
33 | size: 0
34 | },
35 | labels: ['2011', '2012', '2013', '2014', '2015', '2016']
36 | },
37 | series: [
38 | {
39 | name: 'Series 1',
40 | data: [80, 50, 30, 40, 100, 20]
41 | },
42 | {
43 | name: 'Series 2',
44 | data: [20, 30, 40, 80, 20, 80]
45 | },
46 | {
47 | name: 'Series 3',
48 | data: [44, 76, 78, 13, 43, 10]
49 | }
50 | ]
51 | };
52 | export default chartData;
53 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/radial-bar-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'radialBar',
4 | options: {
5 | plotOptions: {
6 | radialBar: {
7 | hollow: {
8 | size: '60%'
9 | }
10 | }
11 | },
12 | colors: ['#7267EF'],
13 | fill: {
14 | type: 'solid'
15 | },
16 | labels: ['Cricket']
17 | },
18 | series: [60]
19 | };
20 | export default chartData;
21 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/radial-bar-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'radialBar',
4 | options: {
5 | plotOptions: {
6 | radialBar: {
7 | offsetY: -30,
8 | startAngle: 0,
9 | endAngle: 270,
10 | hollow: {
11 | margin: 5,
12 | size: '30%',
13 | background: 'transparent',
14 | image: undefined
15 | },
16 | dataLabels: {
17 | name: {
18 | show: false
19 | },
20 | value: {
21 | show: false
22 | }
23 | }
24 | }
25 | },
26 | colors: ['#7267EF', '#17c666', '#ffa21d', '#EA4D4D'],
27 | fill: {
28 | type: 'solid'
29 | },
30 | labels: ['Vimeo', 'Messenger', 'Facebook', 'LinkedIn'],
31 | legend: {
32 | show: true,
33 | floating: true,
34 | fontSize: '16px',
35 | position: 'left',
36 | offsetX: 0,
37 | offsetY: 0,
38 | labels: {
39 | useSeriesColors: true
40 | },
41 | formatter(seriesName, opts) {
42 | return `${seriesName}: ${opts.w.globals.series[opts.seriesIndex]}`;
43 | },
44 | itemMargin: {
45 | horizontal: 1
46 | }
47 | },
48 | responsive: [
49 | {
50 | breakpoint: 480,
51 | options: {
52 | legend: {
53 | show: false
54 | }
55 | }
56 | }
57 | ]
58 | },
59 | series: [76, 67, 61, 90]
60 | };
61 | export default chartData;
62 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/scatter-chart-1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'scatter',
4 | options: {
5 | chart: {
6 | zoom: {
7 | enabled: true,
8 | type: 'xy'
9 | }
10 | },
11 | dataLabels: {
12 | enabled: false
13 | },
14 | colors: ['#7267ef', '#17c666', '#ea4d4d', '#ffa21d', '#00bcd4'],
15 | xaxis: {
16 | tickAmount: 10,
17 | labels: {
18 | formatter: (val) => parseFloat(val).toFixed(1)
19 | }
20 | },
21 | yaxis: {
22 | tickAmount: 7
23 | }
24 | },
25 | series: [
26 | {
27 | name: 'SAMPLE A',
28 | data: [
29 | [16.4, 5.4],
30 | [21.7, 2],
31 | [25.4, 3],
32 | [19, 2],
33 | [10.9, 1],
34 | [13.6, 3.2],
35 | [10.9, 7.4],
36 | [10.9, 0],
37 | [10.9, 8.2],
38 | [16.4, 0],
39 | [16.4, 1.8],
40 | [13.6, 0.3],
41 | [13.6, 0],
42 | [29.9, 0],
43 | [27.1, 2.3],
44 | [16.4, 0],
45 | [13.6, 3.7],
46 | [10.9, 5.2],
47 | [16.4, 6.5],
48 | [10.9, 0],
49 | [24.5, 7.1],
50 | [10.9, 0],
51 | [8.1, 4.7],
52 | [19, 0],
53 | [21.7, 1.8],
54 | [27.1, 0],
55 | [24.5, 0],
56 | [27.1, 0],
57 | [29.9, 1.5],
58 | [27.1, 0.8],
59 | [22.1, 2]
60 | ]
61 | },
62 | {
63 | name: 'SAMPLE B',
64 | data: [
65 | [36.4, 13.4],
66 | [1.7, 11],
67 | [5.4, 8],
68 | [9, 17],
69 | [1.9, 4],
70 | [3.6, 12.2],
71 | [1.9, 14.4],
72 | [1.9, 9],
73 | [1.9, 13.2],
74 | [1.4, 7],
75 | [6.4, 8.8],
76 | [3.6, 4.3],
77 | [1.6, 10],
78 | [9.9, 2],
79 | [7.1, 15],
80 | [1.4, 0],
81 | [3.6, 13.7],
82 | [1.9, 15.2],
83 | [6.4, 16.5],
84 | [0.9, 10],
85 | [4.5, 17.1],
86 | [10.9, 10],
87 | [0.1, 14.7],
88 | [9, 10],
89 | [12.7, 11.8],
90 | [2.1, 10],
91 | [2.5, 10],
92 | [27.1, 10],
93 | [2.9, 11.5],
94 | [7.1, 10.8],
95 | [2.1, 12]
96 | ]
97 | },
98 | {
99 | name: 'SAMPLE C',
100 | data: [
101 | [21.7, 3],
102 | [23.6, 3.5],
103 | [24.6, 3],
104 | [29.9, 3],
105 | [21.7, 20],
106 | [23, 2],
107 | [10.9, 3],
108 | [28, 4],
109 | [27.1, 0.3],
110 | [16.4, 4],
111 | [13.6, 0],
112 | [19, 5],
113 | [22.4, 3],
114 | [24.5, 3],
115 | [32.6, 3],
116 | [27.1, 4],
117 | [29.6, 6],
118 | [31.6, 8],
119 | [21.6, 5],
120 | [20.9, 4],
121 | [22.4, 0],
122 | [32.6, 10.3],
123 | [29.7, 20.8],
124 | [24.5, 0.8],
125 | [21.4, 0],
126 | [21.7, 6.9],
127 | [28.6, 7.7],
128 | [15.4, 0],
129 | [18.1, 0],
130 | [33.4, 0],
131 | [16.4, 0]
132 | ]
133 | }
134 | ]
135 | };
136 | export default chartData;
137 |
--------------------------------------------------------------------------------
/src/views/charts/apex-chart/chart/scatter-chart-2.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'scatter',
4 | options: {
5 | chart: {
6 | zoom: {
7 | type: 'xy'
8 | }
9 | },
10 | dataLabels: {
11 | enabled: false
12 | },
13 | colors: ['#7267ef', '#17c666', '#ea4d4d', '#ffa21d', '#00bcd4'],
14 | grid: {
15 | xaxis: {
16 | lines: {
17 | show: true
18 | }
19 | },
20 | yaxis: {
21 | lines: {
22 | show: true
23 | }
24 | }
25 | },
26 | xaxis: {
27 | type: 'datetime'
28 | },
29 | yaxis: {
30 | max: 70
31 | }
32 | },
33 | series: [
34 | {
35 | name: 'TEAM 1',
36 | data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 20, {
37 | min: 10,
38 | max: 60
39 | })
40 | },
41 | {
42 | name: 'TEAM 2',
43 | data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 20, {
44 | min: 10,
45 | max: 60
46 | })
47 | },
48 | {
49 | name: 'TEAM 3',
50 | data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 30, {
51 | min: 10,
52 | max: 60
53 | })
54 | },
55 | {
56 | name: 'TEAM 4',
57 | data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 10, {
58 | min: 10,
59 | max: 60
60 | })
61 | },
62 | {
63 | name: 'TEAM 5',
64 | data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 30, {
65 | min: 10,
66 | max: 60
67 | })
68 | }
69 | ]
70 | };
71 | export default chartData;
72 |
73 | function generateDayWiseTimeSeries(baseval, count, yrange) {
74 | let i = 0;
75 | const series = [];
76 | while (i < count) {
77 | const y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
78 |
79 | series.push([baseval, y]);
80 | baseval += 86400000;
81 | i += 1;
82 | }
83 | return series;
84 | }
85 |
--------------------------------------------------------------------------------
/src/views/dashboard/DashSales/chart/sales-account-chart.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 350,
3 | type: 'line',
4 | options: {
5 | stroke: {
6 | width: [0, 3],
7 | curve: 'smooth'
8 | },
9 | plotOptions: {
10 | bar: {
11 | columnWidth: '50%'
12 | }
13 | },
14 | colors: ['#7267EF', '#c7d9ff'],
15 | fill: {
16 | opacity: [0.85, 1]
17 | },
18 | labels: [
19 | '01/01/2003',
20 | '02/01/2003',
21 | '03/01/2003',
22 | '04/01/2003',
23 | '05/01/2003',
24 | '06/01/2003',
25 | '07/01/2003',
26 | '08/01/2003',
27 | '09/01/2003',
28 | '10/01/2003',
29 | '11/01/2003'
30 | ],
31 | markers: {
32 | size: 0
33 | },
34 | xaxis: {
35 | type: 'datetime'
36 | },
37 | yaxis: {
38 | min: 0
39 | },
40 | tooltip: {
41 | shared: true,
42 | intersect: false,
43 | y: {
44 | formatter(y) {
45 | if (typeof y !== 'undefined') {
46 | return `$ ${y.toFixed(0)}`;
47 | }
48 | return y;
49 | }
50 | }
51 | },
52 | legend: {
53 | labels: {
54 | useSeriesColors: true
55 | },
56 | markers: {
57 | customHTML() {
58 | return '';
59 | }
60 | }
61 | }
62 | },
63 | series: [
64 | {
65 | name: 'Total Sales',
66 | type: 'column',
67 | data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]
68 | },
69 | {
70 | name: 'Average',
71 | type: 'line',
72 | data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]
73 | }
74 | ]
75 | };
76 | export default chartData;
77 |
--------------------------------------------------------------------------------
/src/views/dashboard/DashSales/chart/sales-customer-satisfication-chart.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 260,
3 | // type: 'pie',
4 | options: {
5 | labels: ['extremely Satisfied', 'Satisfied', 'Poor', 'Very Poor'],
6 | legend: {
7 | show: true,
8 | offsetY: 50
9 | },
10 | dataLabels: {
11 | enabled: true,
12 | dropShadow: {
13 | enabled: false
14 | }
15 | },
16 | theme: {
17 | monochrome: {
18 | enabled: true,
19 | color: '#7267EF'
20 | }
21 | },
22 | responsive: [
23 | {
24 | breakpoint: 768,
25 | options: {
26 | chart: {
27 | height: 320
28 | },
29 | legend: {
30 | position: 'bottom',
31 | offsetY: 0
32 | }
33 | }
34 | }
35 | ]
36 | },
37 | series: [66, 50, 40, 30]
38 | };
39 | export default chartData;
40 |
--------------------------------------------------------------------------------
/src/views/dashboard/DashSales/chart/sales-support-chart.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | type: 'area',
3 | height: 85,
4 | options: {
5 | chart: {
6 | width: '100%',
7 | sparkline: {
8 | enabled: true
9 | }
10 | },
11 | colors: ['#7267EF'],
12 | stroke: {
13 | curve: 'smooth',
14 | width: 2
15 | },
16 | tooltip: {
17 | fixed: {
18 | enabled: false
19 | },
20 | x: {
21 | show: false
22 | },
23 | y: {
24 | title: {
25 | formatter() {
26 | return 'Ticket ';
27 | }
28 | }
29 | },
30 | marker: {
31 | show: false
32 | }
33 | }
34 | },
35 | series: [
36 | {
37 | data: [0, 20, 10, 45, 30, 55, 20, 30, 0]
38 | }
39 | ]
40 | };
41 |
42 | export default chartData;
43 |
--------------------------------------------------------------------------------
/src/views/dashboard/DashSales/chart/sales-support-chart1.js:
--------------------------------------------------------------------------------
1 | const chartData = {
2 | height: 85,
3 | type: 'bar',
4 | options: {
5 | chart: {
6 | sparkline: {
7 | enabled: true
8 | }
9 | },
10 | colors: ['#7267EF'],
11 | plotOptions: {
12 | bar: {
13 | columnWidth: '70%'
14 | }
15 | },
16 | xaxis: {
17 | crosshairs: {
18 | width: 1
19 | }
20 | },
21 | tooltip: {
22 | fixed: {
23 | enabled: false
24 | },
25 | x: {
26 | show: false
27 | },
28 | y: {
29 | title: {
30 | formatter() {
31 | return '';
32 | }
33 | }
34 | },
35 | marker: {
36 | show: false
37 | }
38 | }
39 | },
40 | series: [
41 | {
42 | data: [
43 | 25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54, 44, 12, 36, 9, 54, 25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 25, 44, 12, 36, 9, 54
44 | ]
45 | }
46 | ]
47 | };
48 | export default chartData;
49 |
--------------------------------------------------------------------------------
/src/views/maps/GmapSearchAPI.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Row, Col, Card, Button, Form, InputGroup, ButtonGroup } from 'react-bootstrap';
5 |
6 | // project imports
7 | import GmapSearch from './google-maps/GmapSearch';
8 |
9 | // -----------------------|| GOOGLE MAP SEARCH ||-----------------------//
10 | const GoogleMapsSearch = () => (
11 | <>
12 |
13 |
14 |
15 |
16 | Google Map Search
17 |
18 |
19 |
20 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | -
40 |
41 |
42 | Reset
43 |
44 |
45 | +
46 |
47 |
48 |
49 |
50 | Go to Stockholm
51 |
52 |
53 | Go to Berlin
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | >
63 | );
64 |
65 | export default GoogleMapsSearch;
66 |
--------------------------------------------------------------------------------
/src/views/maps/google-maps/BasicMap.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { withScriptjs, withGoogleMap, GoogleMap } from 'react-google-maps';
5 | import { compose, withProps } from 'recompose';
6 |
7 | // -----------------------|| BASIC MAP ||-----------------------//
8 | const BasicMap = compose(
9 | withProps({
10 | googleMapURL:
11 | 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAChufWiMfwsmyX3Se1dRaN4t31z0xmIMo&v=3.exp&libraries=geometry,drawing,places',
12 | loadingElement:
,
13 | containerElement:
,
14 | mapElement:
15 | }),
16 | withScriptjs,
17 | withGoogleMap
18 | )(() => );
19 |
20 | export default BasicMap;
21 |
--------------------------------------------------------------------------------
/src/views/maps/google-maps/GmapSearch.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { withScriptjs, withGoogleMap, GoogleMap } from 'react-google-maps';
5 | import { compose, withProps } from 'recompose';
6 |
7 | // -----------------------|| GMAP SEARCH ||-----------------------//
8 | const GmapSearch = compose(
9 | withProps({
10 | googleMapURL: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyBIwzALxUPNbatRBj3Xi1Uhp0fFzwWNBkE&libraries=places&v=weekly',
11 | loadingElement:
,
12 | containerElement:
,
13 | mapElement:
14 | }),
15 | withScriptjs,
16 | withGoogleMap
17 | )(() => );
18 |
19 | export default GmapSearch;
20 |
--------------------------------------------------------------------------------
/src/views/maps/google-maps/Marker.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { withScriptjs, withGoogleMap, GoogleMap, Marker } from 'react-google-maps';
5 | import InfoBox from 'react-google-maps/lib/components/addons/InfoBox';
6 | import { compose, withProps, withStateHandlers } from 'recompose';
7 |
8 | // -----------------------|| MAP WITH A MARKER ||-----------------------//
9 | const MapWithAMarker = compose(
10 | withProps({
11 | googleMapURL:
12 | 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAChufWiMfwsmyX3Se1dRaN4t31z0xmIMo&v=3.exp&libraries=geometry,drawing,places',
13 | loadingElement:
,
14 | containerElement:
,
15 | mapElement:
16 | }),
17 | withStateHandlers(
18 | () => ({
19 | isOpen: false
20 | }),
21 | {
22 | onToggleOpen:
23 | ({ isOpen }) =>
24 | () => ({
25 | isOpen: !isOpen
26 | })
27 | }
28 | ),
29 | withScriptjs,
30 | withGoogleMap
31 | )((props) => (
32 |
33 |
34 | {props.isOpen && (
35 |
36 |
44 |
45 | )}
46 |
47 |
48 | ));
49 |
50 | export default MapWithAMarker;
51 |
--------------------------------------------------------------------------------
/src/views/maps/google-maps/MarkerClusterer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { withScriptjs, withGoogleMap, GoogleMap, Marker } from 'react-google-maps';
5 | import { compose, withProps, withHandlers } from 'recompose';
6 | import MarkerClusterer from 'react-google-maps/lib/components/addons/MarkerClusterer';
7 |
8 | // -----------------------|| MAP WITH A MARKER CLUSTERER ||-----------------------//
9 | const MapWithAMarkerClusterer = compose(
10 | withProps({
11 | googleMapURL:
12 | 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAChufWiMfwsmyX3Se1dRaN4t31z0xmIMo&v=3.exp&libraries=geometry,drawing,places',
13 | loadingElement:
,
14 | containerElement:
,
15 | mapElement:
16 | }),
17 | withHandlers({
18 | onMarkerClustererClick: () => (markerClusterer) => {
19 | const clickedMarkers = markerClusterer.getMarkers();
20 | console.log(`Current clicked markers length: ${clickedMarkers.length}`);
21 | console.log(clickedMarkers);
22 | }
23 | }),
24 | withScriptjs,
25 | withGoogleMap
26 | )((props) => (
27 |
28 |
29 | {props.markers.map((marker) => (
30 |
31 | ))}
32 |
33 |
34 | ));
35 |
36 | export default MapWithAMarkerClusterer;
37 |
--------------------------------------------------------------------------------
/src/views/maps/google-maps/StreetViewPanorma.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // third party
4 | import { compose, withProps } from 'recompose';
5 | import { withScriptjs, withGoogleMap, GoogleMap, StreetViewPanorama, OverlayView } from 'react-google-maps';
6 |
7 | const getPixelPositionOffset = (width, height) => ({
8 | x: -(width / 2),
9 | y: -(height / 2)
10 | });
11 |
12 | // -----------------------|| STREET VIEW PANORMA WITH OVERLAY VIEW ||-----------------------//
13 | const StreetViewPanormaWithAnOverlayView = compose(
14 | withProps({
15 | googleMapURL:
16 | 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAChufWiMfwsmyX3Se1dRaN4t31z0xmIMo&v=3.exp&libraries=geometry,drawing,places',
17 | loadingElement:
,
18 | containerElement:
,
19 | mapElement:
,
20 | center: { lat: 49.2853171, lng: -123.1119202 }
21 | }),
22 | withScriptjs,
23 | withGoogleMap
24 | )((props) => (
25 |
26 |
27 |
32 | OverlayView
33 |
34 |
35 |
36 | ));
37 |
38 | export default StreetViewPanormaWithAnOverlayView;
39 |
--------------------------------------------------------------------------------
/src/views/page-layouts/vertical/CollapseMenu.js:
--------------------------------------------------------------------------------
1 | import React, { useContext, useEffect } from 'react';
2 |
3 | // project imports
4 | import { ConfigContext } from 'contexts/ConfigContext';
5 | import * as actionType from 'store/actions';
6 | import CommonContent from '../CommonContent';
7 |
8 | // -----------------------|| VERTICAL ||-----------------------//
9 | const Vertical = () => {
10 | const configContext = useContext(ConfigContext);
11 | const { layout, collapseLayout } = configContext.state;
12 | const { dispatch } = configContext;
13 | useEffect(() => {
14 | if (layout !== 'vertical') {
15 | dispatch({ type: actionType.CHANGE_LAYOUT, layout: 'vertical' });
16 | }
17 | if (!collapseLayout) {
18 | dispatch({ type: actionType.COLLAPSE_LAYOUT });
19 | dispatch({ type: actionType.COLLAPSE_MENU });
20 | }
21 | }, [collapseLayout, dispatch, layout]);
22 |
23 | return (
24 | <>
25 |
26 | >
27 | );
28 | };
29 |
30 | export default Vertical;
31 |
--------------------------------------------------------------------------------
/src/views/sample/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // react-bootstrap
4 | import { Card, Row, Col } from 'react-bootstrap';
5 |
6 | // -----------------------|| SAMPLE ||-----------------------//
7 | const Sample = () => (
8 |
9 |
10 |
11 |
12 | Hello card
13 |
14 |
15 |
16 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
17 | aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
18 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
19 | sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
20 |
21 |
22 |
23 |
24 |
25 | );
26 |
27 | export default Sample;
28 |
--------------------------------------------------------------------------------
/src/views/ui-elements/icons/Feather.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react';
2 |
3 | // react-bootstrap
4 | import { Row, Col, Card, OverlayTrigger, Tooltip } from 'react-bootstrap';
5 |
6 | // third party
7 | import { CopyToClipboard } from 'react-copy-to-clipboard';
8 | import FeatherIcon from 'feather-icons-react';
9 |
10 | // project imports
11 | import iconlist from './data/feather-icon';
12 |
13 | // -----------------------|| FEATHER ||-----------------------//
14 | const Feather = () => {
15 | const [iconFilter, setIconFilter] = useState(iconlist);
16 |
17 | const iconSearchFilter = (e) => {
18 | setIconFilter(iconlist.filter((name) => name.includes(e.target?.value)));
19 | };
20 |
21 | const copyHandler = (icon) => {
22 | document.querySelector(`[data-clipboard-text="${icon}"]`)?.querySelector('.ic-badge')?.remove();
23 | document
24 | .querySelector(`[data-clipboard-text="${icon}"]`)
25 | ?.insertAdjacentHTML('beforeend', 'copied ');
26 | setTimeout(() => {
27 | document.querySelector(`[data-clipboard-text="${icon}"]`)?.querySelector('.ic-badge')?.remove();
28 | }, 3000);
29 | };
30 | return (
31 | <>
32 |
33 |
34 |
35 |
36 | Feather Icon
37 |
38 | Use svg icon with <FeatherIcon icon="<< Copyed code >>">
in you html code
39 |
40 |
41 |
42 |
43 |
44 |
51 |
52 |
53 |
54 | {iconFilter.map((icon) => (
55 |
{icon}}>
56 |
57 |
66 |
67 |
68 |
69 |
70 | ))}
71 |
72 |
73 |
74 |
75 |
76 | >
77 | );
78 | };
79 |
80 | export default Feather;
81 |
--------------------------------------------------------------------------------
/src/views/ui-elements/icons/data/feather-icon.js:
--------------------------------------------------------------------------------
1 | const iconlist = [
2 | 'alert-octagon',
3 | 'alert-circle',
4 | 'activity',
5 | 'alert-triangle',
6 | 'align-center',
7 | 'airplay',
8 | 'align-justify',
9 | 'align-left',
10 | 'align-right',
11 | 'arrow-down-left',
12 | 'arrow-down-right',
13 | 'anchor',
14 | 'aperture',
15 | 'arrow-left',
16 | 'arrow-right',
17 | 'arrow-down',
18 | 'arrow-up-left',
19 | 'arrow-up-right',
20 | 'arrow-up',
21 | 'award',
22 | 'bar-chart',
23 | 'at-sign',
24 | 'bar-chart-2',
25 | 'battery-charging',
26 | 'bell-off',
27 | 'battery',
28 | 'bluetooth',
29 | 'bell',
30 | 'book',
31 | 'briefcase',
32 | 'camera-off',
33 | 'calendar',
34 | 'bookmark',
35 | 'box',
36 | 'camera',
37 | 'check-circle',
38 | 'check',
39 | 'check-square',
40 | 'cast',
41 | 'chevron-down',
42 | 'chevron-left',
43 | 'chevron-right',
44 | 'chevron-up',
45 | 'chevrons-down',
46 | 'chevrons-right',
47 | 'chevrons-up',
48 | 'chevrons-left',
49 | 'circle',
50 | 'clipboard',
51 | 'chrome',
52 | 'clock',
53 | 'cloud-lightning',
54 | 'cloud-drizzle',
55 | 'cloud-rain',
56 | 'cloud-off',
57 | 'codepen',
58 | 'cloud-snow',
59 | 'compass',
60 | 'copy',
61 | 'corner-down-right',
62 | 'corner-down-left',
63 | 'corner-left-down',
64 | 'corner-left-up',
65 | 'corner-up-left',
66 | 'corner-up-right',
67 | 'corner-right-down',
68 | 'corner-right-up',
69 | 'cpu',
70 | 'credit-card',
71 | 'crosshair',
72 | 'disc',
73 | 'delete',
74 | 'download-cloud',
75 | 'download',
76 | 'droplet',
77 | 'edit-2',
78 | 'edit',
79 | 'external-link',
80 | 'eye',
81 | 'feather',
82 | 'facebook',
83 | 'file-minus',
84 | 'eye-off',
85 | 'fast-forward',
86 | 'file-text',
87 | 'film',
88 | 'file',
89 | 'file-plus',
90 | 'folder',
91 | 'filter',
92 | 'flag',
93 | 'globe',
94 | 'grid',
95 | 'heart',
96 | 'home',
97 | 'github',
98 | 'image',
99 | 'inbox',
100 | 'layers',
101 | 'info',
102 | 'instagram',
103 | 'layout',
104 | 'link-2',
105 | 'life-buoy',
106 | 'link',
107 | 'log-in',
108 | 'list',
109 | 'lock',
110 | 'log-out',
111 | 'loader',
112 | 'mail',
113 | 'maximize-2',
114 | 'map',
115 | 'map-pin',
116 | 'menu',
117 | 'message-circle',
118 | 'message-square',
119 | 'minimize-2',
120 | 'mic-off',
121 | 'minus-circle',
122 | 'mic',
123 | 'minus-square',
124 | 'minus',
125 | 'moon',
126 | 'monitor',
127 | 'more-vertical',
128 | 'more-horizontal',
129 | 'move',
130 | 'music',
131 | 'navigation-2',
132 | 'navigation',
133 | 'octagon',
134 | 'package',
135 | 'pause-circle',
136 | 'pause',
137 | 'percent',
138 | 'phone-call',
139 | 'phone-forwarded',
140 | 'phone-missed',
141 | 'phone-off',
142 | 'phone-incoming',
143 | 'phone',
144 | 'phone-outgoing',
145 | 'pie-chart',
146 | 'play-circle',
147 | 'play',
148 | 'plus-square',
149 | 'plus-circle',
150 | 'plus',
151 | 'pocket',
152 | 'printer',
153 | 'power',
154 | 'radio',
155 | 'repeat',
156 | 'refresh-ccw',
157 | 'rewind',
158 | 'rotate-ccw',
159 | 'refresh-cw',
160 | 'rotate-cw',
161 | 'save',
162 | 'search',
163 | 'server',
164 | 'scissors',
165 | 'share-2',
166 | 'share',
167 | 'shield',
168 | 'settings',
169 | 'skip-back',
170 | 'shuffle',
171 | 'sidebar',
172 | 'skip-forward',
173 | 'slack',
174 | 'slash',
175 | 'smartphone',
176 | 'square',
177 | 'speaker',
178 | 'star',
179 | 'stop-circle',
180 | 'sun',
181 | 'sunrise',
182 | 'tablet',
183 | 'tag',
184 | 'sunset',
185 | 'target',
186 | 'thermometer',
187 | 'thumbs-up',
188 | 'thumbs-down',
189 | 'toggle-left',
190 | 'toggle-right',
191 | 'trash-2',
192 | 'trash',
193 | 'trending-up',
194 | 'trending-down',
195 | 'triangle',
196 | 'type',
197 | 'twitter',
198 | 'upload',
199 | 'umbrella',
200 | 'upload-cloud',
201 | 'unlock',
202 | 'user-check',
203 | 'user-minus',
204 | 'user-plus',
205 | 'user-x',
206 | 'user',
207 | 'users',
208 | 'video-off',
209 | 'video',
210 | 'voicemail',
211 | 'volume-x',
212 | 'volume-2',
213 | 'volume-1',
214 | 'volume',
215 | 'watch',
216 | 'wifi',
217 | 'x-square',
218 | 'wind',
219 | 'x',
220 | 'x-circle',
221 | 'zap',
222 | 'zoom-in',
223 | 'zoom-out',
224 | 'command',
225 | 'cloud',
226 | 'hash',
227 | 'headphones',
228 | 'underline',
229 | 'italic',
230 | 'bold',
231 | 'crop',
232 | 'help-circle',
233 | 'paperclip',
234 | 'shopping-cart',
235 | 'tv',
236 | 'wifi-off',
237 | 'minimize',
238 | 'maximize',
239 | 'gitlab',
240 | 'sliders'
241 | ];
242 |
243 | export default iconlist;
244 |
--------------------------------------------------------------------------------