diff --git a/.env b/.env new file mode 100644 index 0000000..cf96c47 --- /dev/null +++ b/.env @@ -0,0 +1,5 @@ +REACT_APP_VERSION = v2.0.0 +GENERATE_SOURCEMAP = false + +## Public URL +PUBLIC_URL = https://codedthemes.com/demos/admin-templates/datta-able/react/free/ \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..886a6fc --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +REACT_APP_VERSION = v2.0.0 +GENERATE_SOURCEMAP = false + +## Public URL +PUBLIC_URL \ No newline at end of file diff --git a/.env.qa b/.env.qa new file mode 100644 index 0000000..83667ff --- /dev/null +++ b/.env.qa @@ -0,0 +1,5 @@ +REACT_APP_VERSION = v2.0.0 +GENERATE_SOURCEMAP = false + +## Public URL +PUBLIC_URL = https://codedthemes.com/demos/admin-templates/datta-able/react/free \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..c14a995 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,96 @@ +{ + "root": true, + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "react-app", + "prettier", + "plugin:react/jsx-runtime", + "plugin:jsx-a11y/recommended", + "plugin:react-hooks/recommended", + "eslint:recommended", + "plugin:react/recommended" + ], + "settings": { + "react": { + "createClass": "createReactClass", // Regex for Component Factory to use, + // default to "createReactClass" + "pragma": "React", // Pragma to use, default to "React" + "fragment": "Fragment", // Fragment to use (may be a property of ), default to "Fragment" + "version": "detect", // React version. "detect" automatically picks the version you have installed. + // You can also use `16.0`, `16.3`, etc, if you want to override the detected value. + // It will default to "latest" and warn if missing, and to "detect" in the future + "flowVersion": "0.53" // Flow version + }, + "import/resolver": { + "node": { + "moduleDirectory": ["node_modules", "src/"] + } + } + }, + "parser": "@babel/eslint-parser", + "parserOptions": { + "requireConfigFile": false, + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "impliedStrict": true, + "jsx": true + }, + "babelOptions": { + "presets": ["@babel/preset-react"] + }, + "ecmaVersion": 12 + }, + "plugins": ["prettier", "react", "react-hooks"], + "rules": { + "react/jsx-uses-react": "error", + "react/jsx-uses-vars": "error", + "react/react-in-jsx-scope": "off", + "no-undef": "off", + "react/display-name": "off", + "react/jsx-filename-extension": "off", + "no-param-reassign": "off", + "react/prop-types": "error", + "react/require-default-props": "off", + "react/no-array-index-key": "off", + "react/jsx-props-no-spreading": "off", + "react/forbid-prop-types": "off", + "import/order": "off", + "import/no-cycle": "off", + "no-console": "off", + "jsx-a11y/anchor-is-valid": "off", + "jsx-a11y/label-has-for": "off", + "jsx-a11y/label-has-associated-control": "off", + "prefer-destructuring": "off", + "no-shadow": "off", + "import/no-named-as-default": "off", + "import/no-extraneous-dependencies": "off", + "jsx-a11y/no-autofocus": "off", + "no-restricted-imports": [ + "error", + { + "patterns": ["@mui/*/*/*", "!@mui/material/test-utils/*"] + } + ], + "no-unused-vars": [ + "error", + { + "ignoreRestSiblings": false + } + ], + "prettier/prettier": [ + "warn", + { + "bracketSpacing": true, + "printWidth": 140, + "singleQuote": true, + "trailingComma": "none", + "tabWidth": 2, + "useTabs": false, + "endOfLine": "auto" + } + ] + } +} diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index d088dea..f5171f6 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -20,12 +20,12 @@ jobs: steps: - name: 🚚 Get latest code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - - name: Use Node.js 16 - uses: actions/setup-node@v2-beta + - name: Use Node.js 18 + uses: actions/setup-node@v3 with: - node-version: "16" + node-version: '18' - name: 🔨 Build Project run: | @@ -34,13 +34,13 @@ jobs: CI=false yarn build - name: 📂 Deploy to Server - uses: easingthemes/ssh-deploy@v2.1.5 + uses: easingthemes/ssh-deploy@main env: SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} # ARGS: "-rltgoDzvO --delete" - SOURCE: "template/build/" + SOURCE: 'template/build/' REMOTE_HOST: 217.21.92.35 REMOTE_USER: u778408432 - REMOTE_PORT: "65002" + REMOTE_PORT: '65002' TARGET: domains/codedthemes.com/public_html/demos/admin-templates/datta-able/react/free - EXCLUDE: "/template/dist/, /template/node_modules/" + EXCLUDE: '/template/dist/, /template/node_modules/' diff --git a/template/.gitignore b/.gitignore similarity index 100% rename from template/.gitignore rename to .gitignore diff --git a/template/.prettierignore b/.prettierignore similarity index 95% rename from template/.prettierignore rename to .prettierignore index 4d29575..f491785 100644 --- a/template/.prettierignore +++ b/.prettierignore @@ -2,8 +2,6 @@ # dependencies /node_modules -/.pnp -.pnp.js # testing /coverage diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d5fba07 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "bracketSpacing": true, + "printWidth": 140, + "singleQuote": true, + "trailingComma": "none", + "tabWidth": 2, + "useTabs": false +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9e77a41 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 CodedThemes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index f0e1a5d..74c4fa5 100644 --- a/README.md +++ b/README.md @@ -1,146 +1,157 @@ -# Datta Able React Free Admin Template +# Datta Able React Free Admin Template [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Download%20Datta%20Able%20-%20The%20professional%20Bootstrap%20designed%20React%20Admin%20Dashboard%20Template%20&url=https://codedthemes.com/demos/admin-templates/datta-able/react/default&via=codedthemes&hashtags=reactjs,webdev,developers,javascript) -Datta Able React Free Admin Template made using Bootstrap 4 framework, It is a free lite version of [Datta Able Pro](https://codedthemes.com/item/datta-able-react-admin-template/) Dashboard Template that makes you fulfill your Dashboard needs. - -![Datta Able React Free Admin Template Preview Image](https://codedthemes.com/wp-content/uploads/edd/2019/05/datta-bootstrap-free.jpg) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/codedthemes/datta-able-free-react-admin-template/blob/main/LICENSE) +[![GitHub package version](https://img.shields.io/github/package-json/v/codedthemes/datta-able-free-react-admin-template)](https://github.com/codedthemes/datta-able-free-react-admin-template) Datta Able React Free Admin Template comes with variety of components like Button, Badges, Tabs, Breadcrumb, Icons, Form elements, Table, Charts & Authentication pages. -The code structure is high flexible to use and modify. +The code structure is high flexible to use and modify. Its design adapt any screen size easily even if retina screens. It is modern concept dashboard design with eye catchy colors. Wish you happy to use our product in your project. -## Free Version Preview & Download +:star: :star: :star: Support us by giving star (Top right of this page) if you like the theme :star: :star: :star: + +![Datta Able React Free Admin Template Preview Image](https://org-public-assets.s3.us-west-2.amazonaws.com/Free-Version-Banners/GITHUB-FREE-REACT-REPO%20-%20Datta%20able.jpg) + +The [Pro version](https://codedthemes.com/demos/admin-templates/datta-able/react/default) of Datta able react template includes features such as TypeScript, apps, authentication methods (i.e. JWT, Auth0, Firebase), advance components, form plugins, layouts, widgets, and more. + +| [Datta Able Free](https://codedthemes.com/demos/admin-templates/datta-able/react/free) | [Datta able Pro](https://codedthemes.com/demos/admin-templates/datta-able/react/default) | +| ---------------------------------------------- | :------------------------------------------------------------------------------- | +| **7+** Demo pages | **85+** Demo pages | +| - | ✓ Multi-Layout | +| - | ✓ Dark/Light Mode 🌓 | +| - | ✓ TypeScript version | +| - | ✓ Multiple color options | +| - | ✓ RTL | +| - | ✓ JWT, Firebase, Auth0, AWS authentication | +| - | ✓ [More components](https://codedthemes.com/demos/admin-templates/datta-able/react/default/basic/alert) | +| ✓ MIT License | ✓ [Pro License](https://codedthemes.com/item/datta-able-react-admin-template/) | + +## Why Datta Able? + +Datta Able offers everything needed to build an advanced dashboard application. In the initial release, we included following high-end features, + +- Support React18. +- Professional user interface. +- Bootstrap React components. +- Fully responsive, all modern browser supported. +- Easy to use code structure +- Flexible & high-Performance code +- Simple documentation -Check out live preview of Datta Able lite version & download it. +## Free Datta Able React version #### Preview - - [Demo](https://codedthemes.com/demos/admin-templates/datta-able/react/free) +- [Demo](https://codedthemes.com/demos/admin-templates/datta-able/react/free) #### Download - - [Download from Github](https://github.com/codedthemes/datta-able-free-react-admin-template) - - [Download from CodedThemes](https://codedthemes.com/item/datta-able-react-free-admin-template/) & receive important notification instantly in your maiL. - - ## Premium Version Preview & Download +- [Download from GitHub](https://github.com/codedthemes/datta-able-free-react-admin-template) + +## Datta Able Pro version + +#### Preview + +- [Demo](https://codedthemes.com/demos/admin-templates/datta-able/react/default) + +#### Purchase + +- [Buy now](https://codedthemes.com/item/datta-able-react-admin-template/) + +## Premium Version Preview & Download Datta Able Pro Admin Template is available to purchase. Visit its numerous demos and make your purchase decision. #### Preview - - [Demo](https://codedthemes.com/demos/admin-templates/datta-able/react/default/dashboard/default) +- [Demo](https://codedthemes.com/demos/admin-templates/datta-able/react/default/dashboard/default) #### Download - - [Purchase from CodedThemes](https://codedthemes.com/item/datta-able-react-admin-template/) +- [Purchase from CodedThemes](https://codedthemes.com/item/datta-able-react-admin-template/) ## Table of contents - * [Getting Started](#getting-started) - * [Online Documentation](#online-documentation) - * [Build With](#build-with) - * [Directory-structure](#directory-structure) - * [RoadMap](#roadmap) - * [Author](#author) - * [Contributing](#contributing) - * [Issues?](#issues) - * [License](#license) - * [Other Dashboard Products](#other-dashboard-products) - * [Social Profiles](#social-profiles) - +- [Getting started](#getting-started) +- [Documentation](#documentation) +- [Technology stack](#technology-stack) +- [Author](#author) +- [Issues?](#issues) +- [License](#license) +- [More Free React Templates](#more-free-react-material-admin-dashboard-templates) +- [More Pro React Templates](#more-premium-react-material-admin-dashboard-templates) +- [Follow us](#follow-us) + ## Getting Started -Clone from Github +1. Clone from Github + ``` git clone https://github.com/codedthemes/datta-able-bootstrap-dashboard.git ``` -*no other dependencies required to run the Datta Able Template* - -## Online Documentation -Datta Able Lite version documentation cover in its Pro version documentation - check our [website.](https://codedthemes.com/demos/admin-templates/datta-able/react/docs/) +2. Install packages -## Build With +``` +yarn +``` - - [Bootstrap 4](https://getbootstrap.com/) - - [SASS](https://sass-lang.com/) - SCSS file not included in lite version v1.0 - -## Directory Structure +3. Run project ``` -template/ -├── public/ -│ ├── index.html -│ ├── ... -├── src/ -│ ├── assets -│ ├── components -│ ├── config -│ ├── contexts -│ ├── data -│ ├── firebase -│ ├── hooks -│ ├── layouts -│ ├── store -│ ├── utils -│ ├── views -│ ├── app.js -│ ├── index.js -│ ├── index.scss -│ ├── menu-items.js -│ ├── routes.js -│ ├── .... -├── package.json -├── ... +yarn start ``` -## RoadMap - -We are continuously working in Datta Able Project and going to make it a awesome dashboard template via your support. Give us the ideas, suggestion for include more components, pages, plugins. Few of future release pages are - -#### Layouts - - Horizontal version - - Sidebar Image version - - Introduce Live Customizer (i.e. only for demo) +## Documentation -#### Pages - - Pricing - - Login/Register pages version 2 - - User profile - - Maintenance Pages like 404, Error Pages, Coming Soon +[Datta Able documentation](https://codedthemes.com/demos/admin-templates/datta-able/react/docs/) helps you out in all aspects from Installation to deployment. -#### Basic & Advance Components - - Alert, Cards, Progress, Modal - - Datepicker, Notification, Slider +## Technology stack -*All above pages already included in Pro version. We need your support to include those pages in lite version too.* +- [Bootstrap V5](https://react-bootstrap.netlify.app/) +- Built with React Hooks API. +- Redux & React context API for state management. +- Redux toolkit. +- React Router for navigation routing. +- Support for react-script. +- Code splitting. +- CSS-in-JS. ## Author -Design and code is completely written by CodedThemes's design and development team. We are happy to welcome the contributors work for our all repositories. +Datta Able is managed by team [CodedThemes](https://codedthemes.com). ## Issues -Please generate Github issue if you found bug in any version. We are try to be responsive to resolve the issue. +Please generate a [GitHub issue](https://github.com/codedthemes/datta-able-free-react-admin-template/issues) if you found a bug in any version. We are try our best to resolve the issue. ## License - - Design and Code is Copyright © [CodedThemes](https://www.codedthemes.com) - - Licensed cover under [MIT](https://github.com/codedthemes/datta-able-bootstrap-dashboard/blob/master/LICENSE) - -## Other Dashboard Products - - - [Free Bootstrap 4 Admin Template](https://codedthemes.com/item/category/free-templates/free-bootstrap-admin-templates) - - [Free React Dashboard Template](https://codedthemes.com/item/category/free-templates/free-react-admin-templates) - - [Free Angular Dashboard Template](https://codedthemes.com/item/category/free-templates/free-angular-admin-templates) - - [Premium Bootstrap & Angular Admin Template](https://codedthemes.com/item/category/templates/admin-templates/) - -## Social Profiles - - Dribbble [https://dribbble.com/codedthemes](https://dribbble.com/codedthemes) - - Behance [https://www.behance.net/codedthemes](https://www.behance.net/codedthemes) - - Facebook [https://www.facebook.com/codedthemes](https://www.facebook.com/codedthemes) - - Twitter [https://twitter.com/codedthemes](https://twitter.com/codedthemes) - - Instagram [https://www.instagram.com/codedthemes/](https://www.instagram.com/codedthemes/) +- Licensed under [MIT](https://github.com/codedthemes/datta-able-bootstrap-dashboard/blob/master/LICENSE) + +## More Free React Material Admin Dashboard Templates + +- [Free Mantis](https://github.com/codedthemes/mantis-free-react-admin-template) +- [Free Materially](https://codedthemes.com/item/materially-free-reactjs-admin-template/) +- [Free Berry](https://mui.com/store/items/berry-react-material-admin-free/) +- [Free Gradient](https://github.com/codedthemes/gradient-able-free-admin-template/tree/main/react) + +## More premium React Material Admin Dashboard Templates + +- [Mantis](https://codedthemes.com/item/mantis-mui-react-dashboard-template/) +- [Materially](https://codedthemes.com/item/materially-reactjs-admin-dashboard/) +- [Berry](https://mui.com/store/items/berry-react-material-admin/) +- [Gradient](https://codedthemes.com/item/gradient-able-reactjs-admin-dashboard/) + +## Follow us + +- Website [https://codedthemes.com/demos/admin-templates/datta-able/react/default/dashboard/default](https://codedthemes.com/demos/admin-templates/datta-able/react/default/dashboard/default) +- Blog [https://blog.codedthemes.com/](https://blog.codedthemes.com/) +- CodedThemes [https://codedthemes.com](https://codedthemes.com) +- Dribbble [https://dribbble.com/codedthemes](https://dribbble.com/codedthemes) +- Facebook [https://www.facebook.com/codedthemes](https://www.facebook.com/codedthemes) +- Twitter [https://twitter.com/codedthemes](https://twitter.com/codedthemes) diff --git a/package.json b/package.json new file mode 100644 index 0000000..8b5f9be --- /dev/null +++ b/package.json @@ -0,0 +1,81 @@ +{ + "name": "datta-able-free-react-admin-template", + "version": "2.0.0", + "private": false, + "homepage": "https://codedthemes.com/demos/admin-templates/datta-able/react/free/", + "license": "MIT", + "dependencies": { + "@reduxjs/toolkit": "^1.9.5", + "@tanem/react-nprogress": "^5.0.42", + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.4.3", + "axios": "^1.4.0", + "axios-mock-adapter": "^1.21.4", + "bootstrap": "^5.3.0", + "chance": "^1.1.11", + "formik": "^2.4.1", + "jquery": "^3.7.0", + "jsonwebtoken": "^9.0.0", + "process": "^0.11.10", + "react": "^18.2.0", + "react-app-polyfill": "^3.0.0", + "react-bootstrap": "^2.7.4", + "react-copy-to-clipboard": "^5.1.0", + "react-dom": "^18.2.0", + "react-google-maps": "^9.4.5", + "react-icons": "^4.9.0", + "react-nvd3": "^0.5.7", + "react-perfect-scrollbar": "^1.5.8", + "react-redux": "^8.1.0", + "react-router-dom": "^6.12.1", + "react-scripts": "5.0.1", + "redux": "^4.2.1", + "redux-form": "^8.3.10", + "rodal": "^2.0.1", + "sass": "^1.63.3", + "styled-components": "^5.3.11", + "web-vitals": "^3.3.2", + "yup": "^1.2.0" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "overrides": { + "autoprefixer": "10.4.5" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@babel/core": "^7.21.4", + "@babel/eslint-parser": "^7.21.3", + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@babel/preset-react": "^7.18.6", + "env-cmd": "^10.1.0", + "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", + "eslint-config-react-app": "^7.0.1", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "immutable": "^4.3.0", + "prettier": "2.8.8", + "react-error-overlay": "6.0.11" + } +} diff --git a/template/public/favicon.ico b/public/favicon.ico similarity index 100% rename from template/public/favicon.ico rename to public/favicon.ico diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..d891d7d --- /dev/null +++ b/public/index.html @@ -0,0 +1,47 @@ + + + + + Welcome | Datta Able Free + + + + + + + + + + + + + + + + + + +
+ + + + + diff --git a/template/public/robots.txt b/public/robots.txt similarity index 100% rename from template/public/robots.txt rename to public/robots.txt diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000..eb78023 --- /dev/null +++ b/src/App.js @@ -0,0 +1,16 @@ +import React from 'react'; +import { BrowserRouter } from 'react-router-dom'; + +// auth provider + +import routes, { renderRoutes } from './routes'; + +const App = () => { + return ( + + {renderRoutes(routes)} + + ); +}; + +export default App; diff --git a/src/assets/images/logo-dark.png b/src/assets/images/logo-dark.png new file mode 100644 index 0000000..eccece0 Binary files /dev/null and b/src/assets/images/logo-dark.png differ diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 0000000..eccece0 Binary files /dev/null and b/src/assets/images/logo.png differ diff --git a/src/assets/images/sidebar.png b/src/assets/images/sidebar.png new file mode 100644 index 0000000..fbe644e Binary files /dev/null and b/src/assets/images/sidebar.png differ diff --git a/template/src/assets/images/user/avatar-1.jpg b/src/assets/images/user/avatar-1.jpg similarity index 100% rename from template/src/assets/images/user/avatar-1.jpg rename to src/assets/images/user/avatar-1.jpg diff --git a/template/src/assets/images/user/avatar-2.jpg b/src/assets/images/user/avatar-2.jpg similarity index 100% rename from template/src/assets/images/user/avatar-2.jpg rename to src/assets/images/user/avatar-2.jpg diff --git a/template/src/assets/images/user/avatar-3.jpg b/src/assets/images/user/avatar-3.jpg similarity index 100% rename from template/src/assets/images/user/avatar-3.jpg rename to src/assets/images/user/avatar-3.jpg diff --git a/template/src/assets/images/user/avatar-4.jpg b/src/assets/images/user/avatar-4.jpg similarity index 100% rename from template/src/assets/images/user/avatar-4.jpg rename to src/assets/images/user/avatar-4.jpg diff --git a/template/src/assets/images/user/avatar-5.jpg b/src/assets/images/user/avatar-5.jpg similarity index 100% rename from template/src/assets/images/user/avatar-5.jpg rename to src/assets/images/user/avatar-5.jpg diff --git a/template/src/assets/scss/partials/_general.scss b/src/assets/scss/partials/_general.scss similarity index 89% rename from template/src/assets/scss/partials/_general.scss rename to src/assets/scss/partials/_general.scss index 002779c..b5f5236 100644 --- a/template/src/assets/scss/partials/_general.scss +++ b/src/assets/scss/partials/_general.scss @@ -19,8 +19,9 @@ body { a { &:hover { outline: none; - text-decoration: none; } + + text-decoration: none; } h1, @@ -65,6 +66,10 @@ strong { font-weight: 400; } +label { + margin-bottom: 0.5rem; +} + .img-radius { border-radius: 50%; } @@ -92,11 +97,13 @@ strong { .theme-bg2 { background: $theme-color2; } + /* ========== card css start =========== */ .anim-rotate { animation: anim-rotate 1s linear infinite; } + @keyframes anim-rotate { 100% { transform: rotate(360deg); @@ -106,6 +113,7 @@ strong { .anim-close-card { animation: anim-close-card 1.4s linear; } + @keyframes anim-close-card { 100% { opacity: 0.3; @@ -123,17 +131,13 @@ p.text-muted { border: none; margin-bottom: 30px; transition: all 0.5s ease-in-out; - + --bs-card-title-color: #111; .card-header { background-color: transparent; border-bottom: 1px solid #f1f1f1; padding: 20px 25px; position: relative; - + .card-block, - + .card-body { - } - h5 { margin-bottom: 0; color: #000; @@ -170,6 +174,7 @@ p.text-muted { float: right; padding: 0; position: absolute; + @media only screen and (max-width: 575px) { display: none; } @@ -248,11 +253,13 @@ p.text-muted { border-radius: 0; } } + /* ========== scrollbar End =========== */ .scroll-y { z-index: 1027; } + /* ========== scrollbar End =========== ========== card css End =========== ================================ Dropdown Start ===================== */ @@ -268,7 +275,7 @@ p.text-muted { content: '\63'; font-family: 'pct'; position: absolute; - left: 15px; + left: 115px; top: -5px; z-index: 1001; font-size: 40px; @@ -328,17 +335,20 @@ p.text-muted { } } } + /* ================================ Dropdown End ===================== */ @media (min-width: 1600px) { .container { max-width: 1540px; } } + @media (max-width: 992px) { .container { max-width: 100%; } } + /* ======================================================== =============== document ====================== ======================================================== @@ -386,6 +396,7 @@ p.text-muted { margin: 1rem; border: solid #ddd; border-width: 0.2rem 0 0; + @media only screen and (max-height: 575px) { padding: 1.5rem; margin-right: 0; @@ -393,6 +404,7 @@ p.text-muted { border-width: 0.2rem; } } + /* Example modals */ .modal { @@ -427,6 +439,7 @@ p.text-muted { margin-left: auto; } } + /* Example tabbable tabs */ .bd-example-tabs .nav-tabs { @@ -441,6 +454,7 @@ p.text-muted { margin-bottom: 1rem; background-color: #f3f2fb; -ms-overflow-style: -ms-autohiding-scrollbar; + @media only screen and (max-height: 575px) { padding: 1.5rem; } @@ -449,6 +463,7 @@ p.text-muted { .bd-content .highlight { margin-right: 15px; margin-left: 15px; + @media only screen and (max-height: 575px) { margin-right: 0; margin-left: 0; @@ -518,6 +533,7 @@ p.text-muted { opacity: 1; } } + /* Modal */ .datta-example-modal { @@ -548,6 +564,7 @@ p.text-muted { padding: 50px; height: 100vh; overflow: auto; + > pre { overflow: hidden; width: fit-content; @@ -614,10 +631,12 @@ p.text-muted { opacity: 0.9; } } + /* Code */ .cui-bottom-spacer { height: 12rem; } + /* editor style for model */ .hljs { padding: 0.5em; @@ -693,11 +712,13 @@ p.text-muted { .hljs-link { text-decoration: underline; } + /* ================================ md animated mode start ===================== */ .md-show.md-effect-12 ~ .md-overlay { background: $theme-color; } + /* ================================ md animated mode End ===================== */ /* ================================ range slider Start ===================== */ @@ -728,22 +749,7 @@ p.text-muted { } } /* ================================ range slider End ===================== */ -/* ================================ owl-carousel slider Start ===================== */ - -.owl-carousel { - .owl-nav { - button { - &.owl-next, - &.owl-prev { - padding: 3px 9px; - } - } - } - button.owl-dot { - } -} -/* ================================ owl-carousel slider End ===================== */ /* ================================ Bootstrap tags input Start ===================== */ .bootstrap-tagsinput { @@ -770,12 +776,14 @@ p.text-muted { } } } + /* ================================ Bootstrap tags input End ===================== */ /* ================================ Multi-Select Start ===================== */ .ms-container { width: 100%; } + /* ================================ Multi-Select End ===================== */ /* ================================ Blockquote Start ===================== */ @@ -788,6 +796,7 @@ p.text-muted { border-right: 0.25rem solid $theme-border; } } + /* ================================ Blockquote End ===================== */ /* ================================ animation start ===================== */ @@ -797,6 +806,7 @@ p.text-muted { margin-bottom: 30px; box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2); } + /* ================================ animation End ===================== */ /* ================================ browser warning Start ===================== */ @@ -857,6 +867,7 @@ p.text-muted { } } } + /* ================================ browser warning End ===================== */ /* material icon for material datetime picker */ /* fallback */ @@ -882,4 +893,118 @@ p.text-muted { -webkit-font-feature-settings: 'liga'; -webkit-font-smoothing: antialiased; } + /* material icon for material datetime picker */ +.btn-link { + text-decoration: none; +} + +.react-datepicker-wrapper { + display: block !important; +} + +.table-dark { + --bs-table-bg: #37474f; +} + +.table-info, +.table-info > td, +.table-info > th { + --bs-table-bg: #bee5eb; + background-color: #bee5eb; +} + +.table { + --bs-table-striped-bg: rgba(4, 169, 245, 0.05); +} + +.table-hover tbody tr:hover { + color: #212529; + background: rgba(4, 169, 245, 0.05); + + > * { + --bs-table-color-state: #212529; + } +} + +.table-hover > tbody > tr:hover > * { + --bs-table-bg-state: rgba(4, 169, 245, 0.05); +} + +.btn-check:checked + .btn:not([class*='btn-']), +:not(.btn-check) + .btn:active, +.btn:first-child:active, +.btn.active, +.btn.show { + --bs-btn-active-bg: #04a9f5; + --bs-btn-active-border-color: #04a9f5; +} + +.invoice-table.table tr td { + background: transparent; +} + +.recent-users { + tr { + td { + &:first-child { + width: 60px; + padding-left: 20px; + padding-right: 0; + } + + &:last-child { + text-align: center; + } + } + } +} + +.blockquote-footer { + margin-top: 0; +} + +.adv-task-board { + header { + display: flex; + align-items: center; + + span { + span { + margin-right: 8px; + } + } + } +} + +.swatches-picker, +.photoshop-picker, +.hue-picker, +.alpha-picker { + width: 100% !important; +} + +.grid figure.effect-moses figcaption { + @media (max-width: 575px) { + padding: 8px !important; + + h2 { + font-size: 20px; + } + } +} + +.btn.text-secondary.btn-link { + &:active, + &.active, + &.show { + color: #fff !important; + } +} + +.alert-inverse { + .btn-close { + color: $yiq-light-color !important; + filter: invert(1) grayscale(100%) brightness(200%) !important; + } +} diff --git a/template/src/assets/scss/partials/_generic.scss b/src/assets/scss/partials/_generic.scss similarity index 100% rename from template/src/assets/scss/partials/_generic.scss rename to src/assets/scss/partials/_generic.scss diff --git a/template/src/assets/scss/partials/_variables.scss b/src/assets/scss/partials/_variables.scss similarity index 96% rename from template/src/assets/scss/partials/_variables.scss rename to src/assets/scss/partials/_variables.scss index d1dd39a..c1600ee 100644 --- a/template/src/assets/scss/partials/_variables.scss +++ b/src/assets/scss/partials/_variables.scss @@ -40,7 +40,7 @@ $warning-color: #f4c22b; $danger-color: #f44236; $success-color: #1de9b6; $purple-color: #a389d4; -$info-color: #3ebfea; +$info-color: #17a2b8; $secondary-color: #748892; $default-color: #d6d6d6; $light-color: #f2f2f2; @@ -120,3 +120,12 @@ $theme-color-interval: 8% !default; $alert-bg-level: -10 !default; $alert-border-level: -9 !default; $alert-color-level: 6 !default; + +:root { + --bs-body-color: #888; +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 1rem; + --bs-breadcrumb-padding-y: 0.75rem; +} diff --git a/template/src/assets/scss/partials/font/_cryptofont.scss b/src/assets/scss/partials/font/_cryptofont.scss similarity index 100% rename from template/src/assets/scss/partials/font/_cryptofont.scss rename to src/assets/scss/partials/font/_cryptofont.scss diff --git a/template/src/assets/scss/partials/font/_datta-icon.scss b/src/assets/scss/partials/font/_datta-icon.scss similarity index 100% rename from template/src/assets/scss/partials/font/_datta-icon.scss rename to src/assets/scss/partials/font/_datta-icon.scss diff --git a/template/src/assets/scss/partials/font/_feather.scss b/src/assets/scss/partials/font/_feather.scss similarity index 100% rename from template/src/assets/scss/partials/font/_feather.scss rename to src/assets/scss/partials/font/_feather.scss diff --git a/template/src/assets/scss/partials/font/_flaticon.scss b/src/assets/scss/partials/font/_flaticon.scss similarity index 100% rename from template/src/assets/scss/partials/font/_flaticon.scss rename to src/assets/scss/partials/font/_flaticon.scss diff --git a/template/src/assets/scss/partials/font/_fontawesome.scss b/src/assets/scss/partials/font/_fontawesome.scss similarity index 100% rename from template/src/assets/scss/partials/font/_fontawesome.scss rename to src/assets/scss/partials/font/_fontawesome.scss diff --git a/template/src/assets/scss/partials/font/_next-icon.scss b/src/assets/scss/partials/font/_next-icon.scss similarity index 100% rename from template/src/assets/scss/partials/font/_next-icon.scss rename to src/assets/scss/partials/font/_next-icon.scss diff --git a/template/src/assets/scss/partials/font/_theme-font.scss b/src/assets/scss/partials/font/_theme-font.scss similarity index 100% rename from template/src/assets/scss/partials/font/_theme-font.scss rename to src/assets/scss/partials/font/_theme-font.scss diff --git a/template/src/assets/scss/partials/font/fonts/Flaticon.eot b/src/assets/scss/partials/font/fonts/Flaticon.eot similarity index 100% rename from template/src/assets/scss/partials/font/fonts/Flaticon.eot rename to src/assets/scss/partials/font/fonts/Flaticon.eot diff --git a/template/src/assets/scss/partials/font/fonts/Flaticon.svg b/src/assets/scss/partials/font/fonts/Flaticon.svg similarity index 100% rename from template/src/assets/scss/partials/font/fonts/Flaticon.svg rename to src/assets/scss/partials/font/fonts/Flaticon.svg diff --git a/template/src/assets/scss/partials/font/fonts/Flaticon.ttf b/src/assets/scss/partials/font/fonts/Flaticon.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/Flaticon.ttf rename to src/assets/scss/partials/font/fonts/Flaticon.ttf diff --git a/template/src/assets/scss/partials/font/fonts/Flaticon.woff b/src/assets/scss/partials/font/fonts/Flaticon.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/Flaticon.woff rename to src/assets/scss/partials/font/fonts/Flaticon.woff diff --git a/template/src/assets/scss/partials/font/fonts/Flaticon.woff2 b/src/assets/scss/partials/font/fonts/Flaticon.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/Flaticon.woff2 rename to src/assets/scss/partials/font/fonts/Flaticon.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/cryptocoins.ttf b/src/assets/scss/partials/font/fonts/cryptocoins.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/cryptocoins.ttf rename to src/assets/scss/partials/font/fonts/cryptocoins.ttf diff --git a/template/src/assets/scss/partials/font/fonts/cryptocoins.woff b/src/assets/scss/partials/font/fonts/cryptocoins.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/cryptocoins.woff rename to src/assets/scss/partials/font/fonts/cryptocoins.woff diff --git a/template/src/assets/scss/partials/font/fonts/cryptocoins.woff2 b/src/assets/scss/partials/font/fonts/cryptocoins.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/cryptocoins.woff2 rename to src/assets/scss/partials/font/fonts/cryptocoins.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/fa-brands-400.eot b/src/assets/scss/partials/font/fonts/fa-brands-400.eot similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-brands-400.eot rename to src/assets/scss/partials/font/fonts/fa-brands-400.eot diff --git a/template/src/assets/scss/partials/font/fonts/fa-brands-400.svg b/src/assets/scss/partials/font/fonts/fa-brands-400.svg similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-brands-400.svg rename to src/assets/scss/partials/font/fonts/fa-brands-400.svg diff --git a/template/src/assets/scss/partials/font/fonts/fa-brands-400.ttf b/src/assets/scss/partials/font/fonts/fa-brands-400.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-brands-400.ttf rename to src/assets/scss/partials/font/fonts/fa-brands-400.ttf diff --git a/template/src/assets/scss/partials/font/fonts/fa-brands-400.woff b/src/assets/scss/partials/font/fonts/fa-brands-400.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-brands-400.woff rename to src/assets/scss/partials/font/fonts/fa-brands-400.woff diff --git a/template/src/assets/scss/partials/font/fonts/fa-brands-400.woff2 b/src/assets/scss/partials/font/fonts/fa-brands-400.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-brands-400.woff2 rename to src/assets/scss/partials/font/fonts/fa-brands-400.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/fa-regular-400.eot b/src/assets/scss/partials/font/fonts/fa-regular-400.eot similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-regular-400.eot rename to src/assets/scss/partials/font/fonts/fa-regular-400.eot diff --git a/template/src/assets/scss/partials/font/fonts/fa-regular-400.svg b/src/assets/scss/partials/font/fonts/fa-regular-400.svg similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-regular-400.svg rename to src/assets/scss/partials/font/fonts/fa-regular-400.svg diff --git a/template/src/assets/scss/partials/font/fonts/fa-regular-400.ttf b/src/assets/scss/partials/font/fonts/fa-regular-400.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-regular-400.ttf rename to src/assets/scss/partials/font/fonts/fa-regular-400.ttf diff --git a/template/src/assets/scss/partials/font/fonts/fa-regular-400.woff b/src/assets/scss/partials/font/fonts/fa-regular-400.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-regular-400.woff rename to src/assets/scss/partials/font/fonts/fa-regular-400.woff diff --git a/template/src/assets/scss/partials/font/fonts/fa-regular-400.woff2 b/src/assets/scss/partials/font/fonts/fa-regular-400.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-regular-400.woff2 rename to src/assets/scss/partials/font/fonts/fa-regular-400.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/fa-solid-900.eot b/src/assets/scss/partials/font/fonts/fa-solid-900.eot similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-solid-900.eot rename to src/assets/scss/partials/font/fonts/fa-solid-900.eot diff --git a/template/src/assets/scss/partials/font/fonts/fa-solid-900.svg b/src/assets/scss/partials/font/fonts/fa-solid-900.svg similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-solid-900.svg rename to src/assets/scss/partials/font/fonts/fa-solid-900.svg diff --git a/template/src/assets/scss/partials/font/fonts/fa-solid-900.ttf b/src/assets/scss/partials/font/fonts/fa-solid-900.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-solid-900.ttf rename to src/assets/scss/partials/font/fonts/fa-solid-900.ttf diff --git a/template/src/assets/scss/partials/font/fonts/fa-solid-900.woff b/src/assets/scss/partials/font/fonts/fa-solid-900.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-solid-900.woff rename to src/assets/scss/partials/font/fonts/fa-solid-900.woff diff --git a/template/src/assets/scss/partials/font/fonts/fa-solid-900.woff2 b/src/assets/scss/partials/font/fonts/fa-solid-900.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/fa-solid-900.woff2 rename to src/assets/scss/partials/font/fonts/fa-solid-900.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/feather.eot b/src/assets/scss/partials/font/fonts/feather.eot similarity index 100% rename from template/src/assets/scss/partials/font/fonts/feather.eot rename to src/assets/scss/partials/font/fonts/feather.eot diff --git a/template/src/assets/scss/partials/font/fonts/feather.svg b/src/assets/scss/partials/font/fonts/feather.svg similarity index 100% rename from template/src/assets/scss/partials/font/fonts/feather.svg rename to src/assets/scss/partials/font/fonts/feather.svg diff --git a/template/src/assets/scss/partials/font/fonts/feather.ttf b/src/assets/scss/partials/font/fonts/feather.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/feather.ttf rename to src/assets/scss/partials/font/fonts/feather.ttf diff --git a/template/src/assets/scss/partials/font/fonts/feather.woff b/src/assets/scss/partials/font/fonts/feather.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/feather.woff rename to src/assets/scss/partials/font/fonts/feather.woff diff --git a/template/src/assets/scss/partials/font/fonts/pct.eot b/src/assets/scss/partials/font/fonts/pct.eot similarity index 100% rename from template/src/assets/scss/partials/font/fonts/pct.eot rename to src/assets/scss/partials/font/fonts/pct.eot diff --git a/template/src/assets/scss/partials/font/fonts/pct.svg b/src/assets/scss/partials/font/fonts/pct.svg similarity index 100% rename from template/src/assets/scss/partials/font/fonts/pct.svg rename to src/assets/scss/partials/font/fonts/pct.svg diff --git a/template/src/assets/scss/partials/font/fonts/pct.ttf b/src/assets/scss/partials/font/fonts/pct.ttf similarity index 100% rename from template/src/assets/scss/partials/font/fonts/pct.ttf rename to src/assets/scss/partials/font/fonts/pct.ttf diff --git a/template/src/assets/scss/partials/font/fonts/pct.woff b/src/assets/scss/partials/font/fonts/pct.woff similarity index 100% rename from template/src/assets/scss/partials/font/fonts/pct.woff rename to src/assets/scss/partials/font/fonts/pct.woff diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z11lFc-K.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z11lFc-K.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z11lFc-K.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z11lFc-K.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJfecg.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJfecg.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJfecg.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJfecg.woff2 diff --git a/template/src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJnecmNE.woff2 b/src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJnecmNE.woff2 similarity index 100% rename from template/src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJnecmNE.woff2 rename to src/assets/scss/partials/font/fonts/poppins/pxiEyp8kv8JHgFVrJJnecmNE.woff2 diff --git a/src/assets/scss/partials/menu/_menu-lite.scss b/src/assets/scss/partials/menu/_menu-lite.scss new file mode 100644 index 0000000..dcbd88b --- /dev/null +++ b/src/assets/scss/partials/menu/_menu-lite.scss @@ -0,0 +1,1536 @@ +/* new logo start */ + +.b-brand { + display: flex; + align-items: center; + + .b-bg { + background: $theme-color; + border-radius: 10px; + width: 35px; + height: 35px; + display: inline-flex; + align-items: center; + justify-content: center; + + i { + color: #fff; + } + } + + .b-title { + margin-left: 10px; + font-weight: 100; + color: #fff; + font-size: 18px; + } +} + +.navbar-collapsed { + .b-brand .b-title { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + + .mobile-menu { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + + &:hover { + .b-brand .b-title { + transform: rotateY(0deg); + opacity: 1; + } + + .mobile-menu { + transition-delay: 0.3s; + transform: rotateY(0deg); + opacity: 1; + } + } +} + +/* header css start */ +.pcoded-header { + z-index: 1028; + position: relative; + display: flex; + min-height: $header-height; + padding: 0; + position: relative; + top: 0; + background: transparent; + color: $header-light-text-color; + width: calc(100% - #{$Menu-width}); + margin-left: $Menu-width; + transition: all 0.3s ease-in-out; + + .m-header { + display: none; + + .logo-dark, + .logo-thumb { + display: none; + } + } + + .input-group { + background: transparent; + + .input-group-text { + margin-right: 0; + } + } + + .input-group { + background: transparent; + } + + .input-group .input-group-text, + a, + .btn, + &.dropdown-toggle { + color: $header-light-text-color; + + &:hover { + color: $primary-color; + } + } + + .navbar-nav { + padding-left: 0; + list-style: none; + margin-bottom: 0; + display: inline-block; + + > li { + line-height: $header-height; + display: inline-block; + padding: 0 12px; + + .nav-link { + padding: 0; + } + + &:first-child { + padding-left: 25px; + } + + &:last-child { + padding-right: 40px; + } + } + } + + .mr-auto { + .dropdown-menu { + margin-left: -20px; + } + } + + .ml-auto { + float: right; + } + + .main-search { + .input-group { + border-radius: 20px; + padding: 0; + display: flex; + align-items: center; + + .form-control, + .input-group-text { + background: transparent; + border: none; + border-radius: 0; + padding: 0; + } + + .search-close { + display: none; + } + + .search-btn { + border-radius: 50%; + padding: 0; + background: transparent; + border-color: transparent; + box-shadow: none; + } + + .form-control { + transition: all 0.3s ease-in-out; + width: 0; + font-size: 14px; + } + + .form-control, + .search-btn { + &:active, + &:focus, + &:hover { + outline: none; + box-shadow: none; + } + } + } + + &.open { + .input-group { + background: #fff; + border: 1px solid #f1f1f1; + box-shadow: 0 6px 12px -5px rgba(65, 76, 78, 0.08); + padding: 5px 5px 5px 20px; + + .search-close { + display: flex; + } + + .search-btn { + padding: 5px; + margin-left: 5px; + background: $primary-color; + border-color: $primary-color; + + .input-group-text { + color: #fff; + } + } + + .form-control { + transition: all 0.3s ease-in-out; + width: 0; + } + + .form-control, + .search-btn { + &:active, + &:focus, + &:hover { + outline: none; + box-shadow: none; + } + } + } + } + } + + .dropdown { + .dropdown-toggle { + line-height: $header-height; + display: inline-block; + padding-right: 15px; + + &.show, + &:active { + background: transparent; + } + + &:after { + content: '\e842'; + font-family: 'feather'; + font-size: 15px; + border: none; + position: absolute; + top: 0; + right: 0; + } + } + + .dropdown-menu { + position: absolute; + border: none; + margin-top: -6px; + min-width: 290px; + + &.show { + &:before { + display: none; + } + } + + li { + line-height: 1.2; + + a { + padding: 10px; + font-size: 14px; + } + + &.active, + &:active, + &:focus, + &:hover { + a { + color: $theme-font-color; + } + } + } + } + + &.show { + &:before { + content: '\63'; + font-family: 'pct'; + position: absolute; + left: -9px; + top: $header-height - 8; + z-index: 1001; + font-size: 40px; + line-height: 0; + color: #fff; + text-shadow: 0 -2px 2px rgba(65, 76, 78, 0.12); + } + } + + .notification { + width: 350px; + padding: 0; + line-height: 1.4; + overflow: hidden; + + .noti-head { + border-bottom: 1px solid #f1f1f1; + padding: 15px 20px; + + a { + text-decoration: underline; + font-size: 13px; + } + } + + .noti-body { + padding: 0; + + img { + width: 40px; + margin-right: 20px; + } + + li { + padding: 15px 20px; + transition: all 0.3s ease-in-out; + + &.n-title { + padding-bottom: 0; + + p { + margin-bottom: 5px; + } + } + + &.notification:hover { + background: transparentize($primary-color, 0.9); + } + + p { + margin-bottom: 5px; + font-size: 13px; + + strong { + color: #222; + } + } + + .n-time { + font-size: 80%; + float: right; + } + } + } + + .noti-footer { + border-top: 1px solid #f1f1f1; + padding: 15px 20px; + text-align: center; + + a { + text-decoration: underline; + font-size: 13px; + } + } + + ul { + padding-left: 0; + margin-bottom: 0; + list-style: none; + + li { + padding: 20px 15px; + } + } + } + + .profile-notification { + padding: 0; + line-height: 1.4; + overflow: hidden; + + .pro-head { + color: #fff; + border-radius: 0.25rem 0.25rem 0 0; + padding: 15px; + position: relative; + background: $primary-color; + + img { + width: 40px; + margin-right: 10px; + } + + .dud-logout { + color: #fff; + padding-right: 0; + position: absolute; + right: 0; + top: 0; + height: 100%; + width: 40px; + display: flex; + align-items: center; + justify-content: center; + } + } + + .pro-body { + padding: 20px 0; + margin-bottom: 0; + list-style: none; + + li { + a { + color: $theme-font-color; + font-size: 14px; + padding: 10px 20px; + + i { + margin-right: 10px; + } + } + + &.active, + &:active, + &:focus, + &:hover { + background: transparentize($primary-color, 0.9); + + > a { + background: transparent; + } + } + } + } + } + + &.drp-user.show { + &:before { + color: $primary-color; + } + } + } +} + +/* header css end */ +/* menu[ vertical ] css start */ +.mobile-menu { + display: flex; + align-items: center; + justify-content: center; + width: 37px; + height: $header-height; + position: absolute; + right: 0; + top: 0; + padding: 0 10px; + + span { + position: relative; + display: block; + width: 100%; + height: 2.8px; + background-color: #fff; + transition: all 0.3s ease-in-out; + backface-visibility: hidden; + border-radius: 2px; + + &:after, + &:before { + content: ''; + position: absolute; + left: 0; + height: 2.8px; + background-color: #fff; + transition: all 0.3s; + backface-visibility: hidden; + border-radius: 2px; + } + + &:after { + top: 5px; + width: 70%; + } + + &:before { + top: -5px; + width: 40%; + } + } + + &.on { + span { + background-color: transparent; + + &:after, + &:before { + height: 2px; + width: 100%; + } + + &:before { + transform: rotate(45deg) translate(4px, 4px); + } + + &:after { + transform: rotate(-45deg) translate(3px, -3px); + } + } + } +} + +.navbar-brand { + background: $menu-dark-background; + font-size: 1.25rem; +} + +.pcoded-header, +.pcoded-main-container { + &:before { + content: ''; + transition: all 0.3s ease-in-out; + } + + @media screen and (max-width: 991px) { + .pcoded-content .pcoded-inner-content { + margin-top: 70px; + } + } +} + +.pcoded-navbar { + display: block; + z-index: 1029; + position: fixed; + transition: all 0.3s ease-in-out; + box-shadow: 1px 0 20px 0 rgb(63, 77, 103); + + ul { + padding-left: 0; + list-style: none; + margin-bottom: 0; + } + + .datta-scroll.navbar-content { + height: calc(100vh - #{$header-height}); + } + + .header-logo { + position: relative; + align-items: center; + display: inline-flex; + float: left; + height: $header-height; + text-align: center; + width: $Menu-width; + margin-right: 0; + padding: 10px 20px; + transition: all 0.3s ease-in-out; + + .logo-dark { + display: none; + } + + .logo-thumb { + transform: rotateY(-90deg); + opacity: 0; + position: absolute; + transition: unset; + } + + + .datta-scroll { + float: left; + display: inline-block; + } + } + + .mobile-menu { + display: flex; + align-items: center; + justify-content: center; + width: 37px; + height: $header-height; + position: absolute; + right: 10px; + top: 0; + padding: 0 10px; + transition: all 0.3s ease-in-out; + + span { + position: relative; + display: block; + width: 100%; + height: 2.8px; + background-color: $menu-dark-text-color; + transition: all 0.3s ease-in-out; + backface-visibility: hidden; + border-radius: 2px; + + &:after, + &:before { + content: ''; + position: absolute; + left: 0; + height: 2.8px; + background-color: $menu-dark-text-color; + transition: all 0.3s; + backface-visibility: hidden; + border-radius: 2px; + } + + &:after { + top: 5px; + width: 70%; + } + + &:before { + top: -5px; + width: 40%; + } + } + + &.on { + span { + background-color: transparent; + + &:after, + &:before { + height: 2px; + width: 100%; + } + + &:before { + transform: rotate(45deg) translate(4px, 4px); + } + + &:after { + transform: rotate(-45deg) translate(3px, -3px); + } + } + } + } + + .pcoded-badge { + color: #fff; + font-size: 75%; + position: absolute; + right: 30px; + top: 8px; + padding: 2px 7px; + border-radius: 2px; + } + + .pcoded-inner-navbar { + flex-direction: column; + + > li { + > a { + .pcoded-badge { + top: 12px; + } + } + } + + li { + position: relative; + + > a { + text-align: left; + padding: 7px 15px; + margin: 5px 0 0; + display: block; + border-radius: 0; + position: relative; + + .pcoded-mtext { + position: relative; + } + + > .pcoded-micon { + font-size: 1rem; + padding: 4px 7px; + margin-right: 7px; + border-radius: 4px; + width: 30px; + display: inline-flex; + align-items: center; + height: 30px; + text-align: center; + + + .pcoded-mtext { + position: absolute; + top: 11px; + } + } + } + + &.pcoded-hasmenu { + > a { + &:after { + content: '\e844'; + font-family: 'feather'; + font-size: 15px; + border: none; + position: absolute; + top: 11px; + right: 20px; + transition: 0.3s ease-in-out; + } + } + + .pcoded-hasmenu { + > a { + &:after { + top: 6px; + } + } + } + + &.pcoded-trigger { + > a { + &:after { + transform: rotate(90deg); + } + } + } + + .pcoded-submenu { + display: none; + } + + &.pcoded-trigger { + > .pcoded-submenu { + display: block; + } + + > a { + position: relative; + } + } + + .pcoded-submenu { + li { + > a { + text-align: left; + padding: 7px 7px 7px 60px; + margin: 0; + display: block; + + &:before { + content: ''; + border-radius: 50%; + position: absolute; + top: 16px; + left: 35px; + width: 5px; + height: 5px; + } + } + + .pcoded-submenu { + > li { + > a { + padding: 7px 7px 7px 80px; + + &:before { + left: 55px; + } + } + } + } + } + } + } + + &.pcoded-menu-caption { + font-size: 10px; + font-weight: 600; + padding: 25px 20px 5px; + text-transform: uppercase; + position: relative; + } + + &.disabled { + > a { + cursor: default; + opacity: 0.5; + } + } + } + } + + width: $Menu-width; + height: 100vh; + top: 0; + background: $menu-dark-background; + color: $menu-dark-text-color; + + .pcoded-submenu { + background: darken($header-dark-background, 3%); + padding: 15px 0; + } + + a { + color: $menu-dark-text-color; + } + + .navbar-content, + .navbar-wrapper { + width: 100%; + height: 100%; + } + + &.navbar-collapsed { + width: $Menu-collapsed-width; + height: 100%; + transition: all 0.3s ease-in-out; + + .header-logo { + width: $Menu-collapsed-width; + + img { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: unset; + } + + .logo-thumb { + transform: rotateY(0deg); + transform-origin: 0 0; + opacity: 1; + left: calc((#{$Menu-collapsed-width} / 2) - 20px); + } + + .mobile-menu { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + } + } + + .navbar-content { + &.ps { + overflow: visible; + } + } + + .pcoded-menu-caption { + position: relative; + width: 100%; + height: auto; + white-space: nowrap; + overflow: hidden; + + > label { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + + &:after { + content: ''; + position: absolute; + top: 25px; + left: 15px; + width: calc(100% - 30px); + height: 1px; + background: rgba(0, 0, 0, 0.1); + } + } + + .pcoded-inner-navbar { + > li { + > a { + z-index: 1026; + padding: 7px 25px; + + > .pcoded-mtext { + transform: rotateY(-90deg); + transform-origin: 0 0; + opacity: 0; + transition: all 0.3s ease-in-out; + } + } + + &.pcoded-hasmenu { + > a { + &:after { + right: 12px; + } + } + } + } + + > li { + &.pcoded-trigger { + .pcoded-submenu { + &:after { + content: ''; + position: absolute; + top: 49px; + left: calc(calc(#{$Menu-collapsed-width} / 2) - 3px); + width: 1px; + height: calc(100% - 49px); + background: transparentize($menu-dark-text-color, 0.8); + } + + li { + a { + color: transparent; + white-space: nowrap; + } + } + + .pcoded-submenu { + li { + a:before { + opacity: 0; + } + } + } + } + } + } + } + + ~ .pcoded-header { + width: calc(100% - #{$Menu-collapsed-width}); + } + + ~ .pcoded-header, + ~ .pcoded-main-container { + margin-left: $Menu-collapsed-width; + } + + .pcoded-badge { + transform: rotateX(-90deg); + transform-origin: 50% 50%; + opacity: 0; + transition: all 0.15s ease-in-out; + } + + &:hover { + width: $Menu-width !important; + + .pcoded-badge { + transition-delay: 0.3s; + transform: rotateX(0deg); + opacity: 1; + } + + .header-logo { + width: $Menu-width; + + img { + transform: rotateY(0deg); + opacity: 1; + } + + .logo-thumb { + transform: rotateY(-90deg); + opacity: 0; + } + + .mobile-menu { + display: flex; + right: 10px; + } + } + + .pcoded-menu-caption { + > label { + transform: rotateY(0deg); + opacity: 1; + } + + &:after { + background: transparent; + } + } + + .mobile-menu { + transform: rotateY(0deg); + opacity: 1; + } + + .pcoded-inner-navbar { + > li { + > a { + > .pcoded-mtext { + transform: rotateY(0deg); + opacity: 1; + + &:after { + opacity: 1; + visibility: visible; + } + } + } + + &.pcoded-hasmenu { + > a { + &:after { + transform: rotateX(0deg); + } + } + + &.pcoded-trigger { + > a { + &:after { + transform: rotateX(0deg) rotate(90deg); + } + } + } + } + } + + > li { + &.pcoded-trigger { + .pcoded-submenu { + &:after { + display: none; + } + + li { + a { + color: inherit; + } + } + + .pcoded-submenu { + li { + a:before { + opacity: 1; + } + } + } + } + } + } + } + } + } + + .pcoded-menu-caption { + color: #e8edf7; + } + + .pcoded-inner-navbar { + li > a { + &.active, + &:focus, + &:hover { + color: #1dc4e9; + } + + .pcoded-submenu > li { + &.active, + &:focus, + &:hover { + > a { + &:before { + background: #1dc4e9; + } + } + } + } + } + + > li { + &.active, + &.pcoded-trigger { + &:after { + content: ''; + background-color: #1dc4e9; + z-index: 1027; + position: absolute; + left: 0; + top: 5px; + width: 3px; + height: calc(100% - 5px); + } + + > a { + background: darken($menu-dark-background, 6%); + color: #fff; + } + } + } + + > .pcoded-menu-caption { + &.active, + &.pcoded-trigger { + &:after { + display: none; + } + } + } + } +} + +.pcoded-navbar { + &.mob-open, + &.navbar-collapsed:hover { + ~ .pcoded-header, + ~ .pcoded-main-container { + margin-left: $Menu-collapsed-width; + + &:before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.2); + z-index: 1; + } + } + } +} + +/* menu [ vertical ] css end */ + +/* main content start */ +.pcoded-content { + position: relative; + display: block; + padding: 30px; +} + +.pcoded-main-container { + position: relative; + margin: 0 auto; + display: block; + clear: both; + float: unset; + right: 0; + margin-left: $Menu-width; + min-height: 100vh; + transition: all 0.3s ease-in-out; +} + +/* main content end*/ +/* ========================== Rsponsive Menu start ====================== */ +.mob-toggler { + display: none; +} + +@media only screen and (max-width: 991px) { + .pcoded-header { + background: $header-dark-background; + color: $header-dark-text-color; + + .input-group-text, + a, + dropdown-toggle { + color: $header-light-text-color; + + &:hover { + color: $primary-color; + } + } + + > .collapse.show { + display: flex; + background: #fff; + box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08); + } + + .mob-toggler { + display: flex; + color: #fff; + position: absolute; + right: 60px; + } + + .dropdown-menu, + .dropdown-menu a, + .search-close .input-group-text { + color: $header-dark-background; + } + + .m-header { + display: flex; + justify-content: flex-start; + align-items: center; + width: 100%; + height: $header-height; + + .b-brand { + margin-left: 20px; + } + + .mobile-menu { + right: 20px; + } + } + + .full-screen { + display: none; + } + + .navbar-nav { + > li { + &:last-child { + padding-right: 60px; + } + } + } + } + + .pcoded-navbar { + margin-left: -#{$Menu-width}; + position: fixed; + height: 100%; + box-shadow: none; + + .datta-scroll.navbar-content { + height: 100%; + } + + ~ .pcoded-header, + ~ .pcoded-main-container { + margin-left: 0; + } + + ~ .pcoded-header { + width: 100%; + } + + .navbar-brand { + display: none; + } + + &.mob-open { + margin-left: 0; + + ~ .pcoded-header, + ~ .pcoded-main-container { + margin-left: 0; + } + } + } +} + +@media only screen and (max-width: 575px) { + .pcoded-header { + .navbar-nav { + > li:first-child { + padding-left: 0; + } + + > li:last-child { + padding-right: 20px; + } + } + + .navbar-nav.mr-auto { + li { + display: none; + + &.nav-item:not(.dropdown) { + display: block; + padding-right: 0; + } + } + } + + .dropdown { + &.show { + position: static; + + a:after { + display: none; + } + + &:before { + display: none; + } + } + + .notification { + width: 100%; + } + + .dropdown-menu { + width: 95%; + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + } + } + } + + .header-chat.open, + .header-user-list.open { + width: 280px; + } + + .pcoded-content { + padding: 30px 15px; + } + + .card { + margin-bottom: 15px; + } +} + +@media only screen and (max-width: 1200px) and (min-width: 768px) { + .pcoded-navbar { + .header-logo { + transition: none; + } + + &.navbar-collapsed { + transition: none; + + .header-logo { + img { + transition: none; + } + } + + .pcoded-menu-caption { + > label { + transition: none; + } + } + + .pcoded-inner-navbar { + > li { + > a { + > .pcoded-mtext { + transition: none; + } + } + + &.pcoded-hasmenu { + > a { + &:after { + transition: none; + transition-delay: unset; + } + } + } + } + } + + .pcoded-badge { + transition: none; + } + + &:hover { + .pcoded-badge { + transition-delay: unset; + } + } + } + } +} + +.pro-card { + background: #5c6a83; + border: #465673; + border-radius: 8px; +} + +/* ========================== Responsive Menu end ====================== */ + +/* =================================================================================== + ========================== Different Layout Styles Start ==================== + =================================================================================== + ====== [ light menu style start ] ======== */ +.pcoded-navbar.menu-light { + background-color: $menu-light-background; + color: $menu-light-text-color; + box-shadow: 7px 0 15px 0 rgba(69, 90, 100, 0.09); + + .header-logo { + background-color: $menu-dark-background; + + .logo-dark { + display: none; + } + + .logo-main { + display: block; + } + } + + .mobile-menu { + span { + background-color: $menu-dark-text-color; + + &:after, + &:before { + background-color: $menu-dark-text-color; + } + } + + &.on { + span { + background-color: transparent; + } + } + } + + .pcoded-submenu { + background: darken($menu-light-background, 1.5%); + } + + a { + color: $menu-light-text-color; + } + + &.navbar-collapsed { + .pcoded-menu-caption { + &:after { + background: rgba(0, 0, 0, 0.1); + } + } + + &:hover { + .pcoded-menu-caption { + &:after { + background: transparent; + } + } + } + } + + .pcoded-menu-caption { + color: $menu-light-text-color; + } + + .pcoded-inner-navbar { + > li { + &.active, + &.pcoded-trigger { + > a { + background: #f1f1f1; + color: #111; + } + } + } + } +} + +/* ====== [ light menu style end ] ======== */ + +/* ====== [ menu static start ] ======== */ +.pcoded-navbar.menupos-static { + position: absolute; + height: 100%; + min-height: 100%; + + .datta-scroll.navbar-content { + height: calc(100% - #{$header-height}); + min-height: 100vh; + } +} + +/* ====== [ menu static end ] ======== */ + +/* ========================== Different Layout Styles end ====================== */ +/* temp SCSS for document */ + +@each $value in $color-menu-name { + $i: index($color-menu-name, $value); + + .nav-link { + &.active.h-#{'' + $value} { + background: nth($color-menu-color, $i) !important; + } + } +} + +@media all and (-ms-high-contrast: none) { + .pcoded-header .dropdown.show::before { + line-height: 0.1; + } + + .pcoded-header .navbar-nav > li { + display: inline-flex; + } + + .pcoded-header .navbar-nav > li.dropdown { + display: inline-block; + } + + .dropdown-menu.show::before { + top: -2px; + } + + .pcoded-navbar.navbar-collapsed .pcoded-inner-navbar > li.pcoded-trigger .pcoded-submenu::after { + left: 40px; + } +} + +// === scroll bar ===== + +.navbar-content { + position: relative; +} + +.ps .ps__rail-x.ps--clicking, +.ps .ps__rail-x:focus, +.ps .ps__rail-x:hover, +.ps .ps__rail-y.ps--clicking, +.ps .ps__rail-y:focus, +.ps .ps__rail-y:hover { + background: transparent; +} + +.ps__thumb-y { + background: #2a3446; +} + +.ps__rail-y.ps--clicking .ps__thumb-y, +.ps__rail-y:focus > .ps__thumb-y, +.ps__rail-y:hover > .ps__thumb-y { + background: #222a38; +} + +/* nav-outside */ +.nav-outside { + position: absolute; + width: 100%; + height: 100%; +} + +// carousel-card +.carousel { + z-index: -1; +} + +// landing page nav +.landing-nav { + z-index: 1201; +} diff --git a/template/src/assets/scss/partials/mixins/_buttons.scss b/src/assets/scss/partials/mixins/_buttons.scss similarity index 100% rename from template/src/assets/scss/partials/mixins/_buttons.scss rename to src/assets/scss/partials/mixins/_buttons.scss diff --git a/template/src/assets/scss/partials/mixins/_function.scss b/src/assets/scss/partials/mixins/_function.scss similarity index 90% rename from template/src/assets/scss/partials/mixins/_function.scss rename to src/assets/scss/partials/mixins/_function.scss index a559cca..b9e08b1 100644 --- a/template/src/assets/scss/partials/mixins/_function.scss +++ b/src/assets/scss/partials/mixins/_function.scss @@ -2,7 +2,7 @@ $r: red($color); $g: green($color); $b: blue($color); - $yiq: calc((($r * 299) + ($g * 587) + ($b * 114)) / 1000); + $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * 0.001; @if ($yiq >= $yiq-contrasted-threshold) { @return $yiq-dark-color; } @else { diff --git a/template/src/assets/scss/partials/mixins/_pagination.scss b/src/assets/scss/partials/mixins/_pagination.scss similarity index 100% rename from template/src/assets/scss/partials/mixins/_pagination.scss rename to src/assets/scss/partials/mixins/_pagination.scss diff --git a/src/assets/scss/partials/other/_chart.scss b/src/assets/scss/partials/other/_chart.scss new file mode 100644 index 0000000..899f9ea --- /dev/null +++ b/src/assets/scss/partials/other/_chart.scss @@ -0,0 +1,8 @@ +/** ===================== + Chart css start +========================== **/ +.nvtooltip { + position: fixed !important; +} + +/**====== Chart css end ======**/ diff --git a/template/src/assets/scss/partials/other/_chat.scss b/src/assets/scss/partials/other/_chat.scss similarity index 87% rename from template/src/assets/scss/partials/other/_chat.scss rename to src/assets/scss/partials/other/_chat.scss index 6f2a666..7a10c2a 100644 --- a/template/src/assets/scss/partials/other/_chat.scss +++ b/src/assets/scss/partials/other/_chat.scss @@ -133,7 +133,7 @@ height: 25px; width: 25px; position: absolute; - top: 35px; + top: 28px; right: 20px; border-radius: 100%; color: #fff; @@ -212,7 +212,7 @@ } .btn-attach { - border-radius: 50%; + border-radius: 50% !important; padding: 5px; margin-right: 5px; @@ -222,9 +222,9 @@ } .btn-send { - border-radius: 50%; + border-radius: 50% !important; padding: 10px; - margin-left: 5px; + margin-left: 5px !important; position: absolute; right: -45px; top: 2px; @@ -262,9 +262,9 @@ .h-list-body { .chat-messages { - padding-bottom: 20px; - padding-left: 15px; - padding-right: 15px; + padding-bottom: 20px !important; + padding-left: 15px !important; + padding-right: 15px !important; .photo-table { padding-right: 15px; @@ -368,56 +368,10 @@ } /* massage page start */ -.msg-card { - .msg-user-list { - height: calc(100vh - 300px); - } - - .msg-user-chat { - background: lighten($primary-color, 45%); - height: calc(100vh - 330px); - padding-top: 25px; - padding-bottom: 25px; - padding-left: 5px; - padding-right: 5px; - } - - .msg-block { - > .row { - > div { - &:before { - content: ''; - width: 1px; - height: 100%; - background: #f1f1f1; - position: absolute; - top: 0; - } - - &:first-child { - &:before { - right: 0; - } - } - - &:last-child { - &:before { - left: -1px; - } - } - } - } - } -} .main-friend-chat { padding-bottom: 15px; } -@media screen and (max-width: 991px) { - .msg-card .msg-block > .row > div:before { - background: none; - } -} /* massage page end */ /**====== Chat css end ======**/ diff --git a/template/src/assets/scss/partials/theme-elements/_authentication.scss b/src/assets/scss/partials/theme-elements/_authentication.scss similarity index 97% rename from template/src/assets/scss/partials/theme-elements/_authentication.scss rename to src/assets/scss/partials/theme-elements/_authentication.scss index aaba24c..df3c03a 100644 --- a/template/src/assets/scss/partials/theme-elements/_authentication.scss +++ b/src/assets/scss/partials/theme-elements/_authentication.scss @@ -126,7 +126,6 @@ /* image variant start */ .aut-bg-img { background-size: cover; - /*background-image: url('../../../images/bg-images/bg4.jpg');*/ // amit images background-repeat: no-repeat; background-position: center; } diff --git a/template/src/assets/scss/partials/theme-elements/_breadcrumb-pagination.scss b/src/assets/scss/partials/theme-elements/_breadcrumb-pagination.scss similarity index 89% rename from template/src/assets/scss/partials/theme-elements/_breadcrumb-pagination.scss rename to src/assets/scss/partials/theme-elements/_breadcrumb-pagination.scss index 89db2f3..ca3b638 100644 --- a/template/src/assets/scss/partials/theme-elements/_breadcrumb-pagination.scss +++ b/src/assets/scss/partials/theme-elements/_breadcrumb-pagination.scss @@ -11,9 +11,6 @@ .breadcrumb-item { + .breadcrumb-item { color: $primary-color; - &::before { - /* content: $breadcrumb-divider; */ - } } &.active { diff --git a/template/src/assets/scss/partials/theme-elements/_button.scss b/src/assets/scss/partials/theme-elements/_button.scss similarity index 100% rename from template/src/assets/scss/partials/theme-elements/_button.scss rename to src/assets/scss/partials/theme-elements/_button.scss diff --git a/template/src/assets/scss/partials/theme-elements/_data-tables.scss b/src/assets/scss/partials/theme-elements/_data-tables.scss similarity index 94% rename from template/src/assets/scss/partials/theme-elements/_data-tables.scss rename to src/assets/scss/partials/theme-elements/_data-tables.scss index 3292811..a70fb47 100644 --- a/template/src/assets/scss/partials/theme-elements/_data-tables.scss +++ b/src/assets/scss/partials/theme-elements/_data-tables.scss @@ -89,13 +89,6 @@ } /* fixed header position */ -table.dataTable.fixedHeader-floating { - top: 0 !important; - @media screen and (max-width: 992px) { - display: none !important; - } -} - @media screen and (max-width: 992px) { .fixedHeader-locked { display: none !important; diff --git a/template/src/assets/scss/partials/theme-elements/_form.scss b/src/assets/scss/partials/theme-elements/_form.scss similarity index 100% rename from template/src/assets/scss/partials/theme-elements/_form.scss rename to src/assets/scss/partials/theme-elements/_form.scss diff --git a/template/src/assets/scss/partials/theme-elements/_labels-badges.scss b/src/assets/scss/partials/theme-elements/_labels-badges.scss similarity index 100% rename from template/src/assets/scss/partials/theme-elements/_labels-badges.scss rename to src/assets/scss/partials/theme-elements/_labels-badges.scss diff --git a/template/src/assets/scss/partials/theme-elements/_nav.scss b/src/assets/scss/partials/theme-elements/_nav.scss similarity index 100% rename from template/src/assets/scss/partials/theme-elements/_nav.scss rename to src/assets/scss/partials/theme-elements/_nav.scss diff --git a/src/assets/scss/partials/theme-elements/_progress.scss b/src/assets/scss/partials/theme-elements/_progress.scss new file mode 100644 index 0000000..63490db --- /dev/null +++ b/src/assets/scss/partials/theme-elements/_progress.scss @@ -0,0 +1,50 @@ +/** ===================== + Progress css start +========================== **/ +@keyframes progress-bar-stripes { + from { + background-position: 16px 0; + } + + to { + background-position: 0 0; + } +} + +.progress { + height: 12px; + font-size: 10px; + background-color: $theme-background; + border-radius: 0; + overflow: visible; + + .progress-bar { + background-color: $primary-color; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.3); + + @each $value in $color-name { + $i: index($color-name, $value); + + &.progress-#{$value}, + &.bg-#{$value} { + background: nth($color-color, $i); + } + } + + &.progress-c-theme { + background: $theme-color; + } + + &.progress-c-theme2 { + background: $theme-color2; + } + + @each $color, $value in $theme-colors { + &.bg-#{$color} { + background-color: $value !important; + } + } + } +} + +/**====== Progress css end ======**/ diff --git a/template/src/assets/scss/partials/theme-elements/_radiobox-checkbox.scss b/src/assets/scss/partials/theme-elements/_radiobox-checkbox.scss similarity index 100% rename from template/src/assets/scss/partials/theme-elements/_radiobox-checkbox.scss rename to src/assets/scss/partials/theme-elements/_radiobox-checkbox.scss diff --git a/src/assets/scss/partials/third-party/_datatables.scss b/src/assets/scss/partials/third-party/_datatables.scss new file mode 100644 index 0000000..937a89d --- /dev/null +++ b/src/assets/scss/partials/third-party/_datatables.scss @@ -0,0 +1,3 @@ +.table > :not(caption) > * > * { + border-bottom-width: 0px; +} diff --git a/template/src/assets/scss/partials/third-party/_google-map.scss b/src/assets/scss/partials/third-party/_google-map.scss similarity index 100% rename from template/src/assets/scss/partials/third-party/_google-map.scss rename to src/assets/scss/partials/third-party/_google-map.scss diff --git a/template/src/assets/scss/partials/third-party/_ngx-perfect-scrollbar.scss b/src/assets/scss/partials/third-party/_ngx-perfect-scrollbar.scss similarity index 100% rename from template/src/assets/scss/partials/third-party/_ngx-perfect-scrollbar.scss rename to src/assets/scss/partials/third-party/_ngx-perfect-scrollbar.scss diff --git a/src/assets/scss/partials/third-party/_third-party.scss b/src/assets/scss/partials/third-party/_third-party.scss new file mode 100644 index 0000000..e2ddfac --- /dev/null +++ b/src/assets/scss/partials/third-party/_third-party.scss @@ -0,0 +1,40 @@ +@import '~react-perfect-scrollbar/dist/css/styles.css'; +@import '~nvd3/build/nv.d3.css'; +@import 'ngx-perfect-scrollbar'; +@import 'datatables'; +@import 'google-map'; +@import 'react-bootstrap/react-bootstrap'; + +.pcoded-header .main-search .input-group-text { + line-height: 1; +} + +.text-muted { + color: #6c757d !important; +} + +.card-event { + .label { + border-radius: 15px; + margin: 0; + padding: 5px 16px; + } + + i { + position: absolute; + bottom: 36px; + right: 27px; + } +} + +.carousel { + z-index: 1 !important; +} + +.rodal .rodal-dialog { + max-width: 100%; +} + +.page-link { + font-size: 0.9rem !important; +} diff --git a/template/src/assets/scss/partials/third-party/react-bootstrap/_header.scss b/src/assets/scss/partials/third-party/react-bootstrap/_header.scss similarity index 90% rename from template/src/assets/scss/partials/third-party/react-bootstrap/_header.scss rename to src/assets/scss/partials/third-party/react-bootstrap/_header.scss index bcea6d0..3aa4d95 100644 --- a/template/src/assets/scss/partials/third-party/react-bootstrap/_header.scss +++ b/src/assets/scss/partials/third-party/react-bootstrap/_header.scss @@ -20,9 +20,8 @@ } } .main-search { - margin-left: 5px; .input-group-text { - line-height: 1; + line-height: 1.5; } } diff --git a/template/src/assets/scss/partials/third-party/react-bootstrap/react-bootstrap.scss b/src/assets/scss/partials/third-party/react-bootstrap/react-bootstrap.scss similarity index 100% rename from template/src/assets/scss/partials/third-party/react-bootstrap/react-bootstrap.scss rename to src/assets/scss/partials/third-party/react-bootstrap/react-bootstrap.scss diff --git a/src/assets/scss/partials/widget/_widget.scss b/src/assets/scss/partials/widget/_widget.scss new file mode 100644 index 0000000..9e4d7b1 --- /dev/null +++ b/src/assets/scss/partials/widget/_widget.scss @@ -0,0 +1,71 @@ +.user-list { + .table { + td { + vertical-align: middle; + } + + thead { + th { + border: 0; + } + } + } +} + +.Recent-Users { + .table { + tr { + &:first-child { + td { + border-top: 0; + } + } + } + + td { + vertical-align: middle; + } + + .label { + border-radius: 15px; + box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.2); + } + } +} + +.card-social { + &:hover { + i { + font-size: 40px; + transition: all 0.3s ease-in-out; + } + } + + .progress { + height: 6px; + } + + .card-active > div + div { + border-left: 1px solid $theme-border; + } +} + +.card { + .card-block, + .card-body { + code { + background-color: #eee; + margin: 5px; + display: inline-block; + border-radius: 3px; + padding: 0 3px; + } + } +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_filter label { + float: none !important; + text-align: center; + } +} diff --git a/template/src/assets/scss/style.scss b/src/assets/scss/style.scss similarity index 95% rename from template/src/assets/scss/style.scss rename to src/assets/scss/style.scss index c4fdb64..072903f 100644 --- a/template/src/assets/scss/style.scss +++ b/src/assets/scss/style.scss @@ -11,7 +11,7 @@ File: style.css - Margin, Padding, Font class, text align, position, floating, overflow, background class, text color, display class, boarder class - Theme Elements - Accordion, Button, tabs, typography, buttons, box shadow, Lable & Badges, Alert, Pagination, Breadcumb, Cards, Collapse, - - Carousel, Grid, Progress, Model, tooltip, popover, Datepicker, Gridstack, lightbox, notification, Nestable, pnotify, rating, + - Carousel, Grid, Progress, Model, tooltip, popover, Datepicker, Gridstack, lightbox, notification, Nestable, rating, - Rangeslider, Slider, Syntax Highlighter, Tour, Treeview, Toolbar, Session Timeout, Session idle Timeout, offline, Animation - Forms - Forms Elements, Advance Form Control, Validation, Masking, Wizard, Picker, Select @@ -46,11 +46,11 @@ File: style.css @import 'partials/theme-elements/authentication'; @import 'partials/theme-elements/button'; @import 'partials/theme-elements/breadcrumb-pagination'; +@import 'partials/theme-elements/progress'; @import 'partials/theme-elements/nav'; // Other @import 'partials/other/chat'; @import 'partials/other/chart'; - @import 'partials/third-party/third-party'; diff --git a/template/src/components/Card/MainCard.js b/src/components/Card/MainCard.js similarity index 92% rename from template/src/components/Card/MainCard.js rename to src/components/Card/MainCard.js index 3880a11..866ab38 100644 --- a/template/src/components/Card/MainCard.js +++ b/src/components/Card/MainCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React, { useState } from 'react'; import { Dropdown, Card, Collapse } from 'react-bootstrap'; import { Link } from 'react-router-dom'; @@ -32,7 +33,7 @@ const MainCard = (props) => { if (isOption) { cardHeaderRight = (
- + @@ -103,4 +104,12 @@ const MainCard = (props) => { return {card}; }; +MainCard.propTypes = { + isOption: PropTypes.bool, + title: PropTypes.string, + children: PropTypes.node, + cardClass: PropTypes.string, + optionClass: PropTypes.string +}; + export default MainCard; diff --git a/template/src/components/Loader/Bar.js b/src/components/Loader/Bar.js similarity index 85% rename from template/src/components/Loader/Bar.js rename to src/components/Loader/Bar.js index 0b2abd3..9fdf3a8 100644 --- a/template/src/components/Loader/Bar.js +++ b/src/components/Loader/Bar.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Bar = ({ animationDuration, progress }) => { @@ -31,4 +32,9 @@ const Bar = ({ animationDuration, progress }) => { ); }; +Bar.propTypes = { + animationDuration: PropTypes.number, + progress: PropTypes.number +}; + export default Bar; diff --git a/template/src/components/Loader/Container.js b/src/components/Loader/Container.js similarity index 67% rename from template/src/components/Loader/Container.js rename to src/components/Loader/Container.js index f841bad..dac70a9 100644 --- a/template/src/components/Loader/Container.js +++ b/src/components/Loader/Container.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Container = ({ animationDuration, children, isFinished }) => { @@ -14,4 +15,10 @@ const Container = ({ animationDuration, children, isFinished }) => { ); }; +Container.propTypes = { + animationDuration: PropTypes.number, + children: PropTypes.node, + isFinished: PropTypes.bool +}; + export default Container; diff --git a/template/src/components/Loader/Loader.js b/src/components/Loader/Loader.js similarity index 100% rename from template/src/components/Loader/Loader.js rename to src/components/Loader/Loader.js diff --git a/template/src/components/Loader/Progress.js b/src/components/Loader/Progress.js similarity index 75% rename from template/src/components/Loader/Progress.js rename to src/components/Loader/Progress.js index e84fac5..0f05b22 100644 --- a/template/src/components/Loader/Progress.js +++ b/src/components/Loader/Progress.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { withNProgress } from '@tanem/react-nprogress'; @@ -14,4 +15,10 @@ const Progress = ({ isFinished, progress, animationDuration }) => { ); }; +Progress.propTypes = { + animationDuration: PropTypes.number, + progress: PropTypes.number, + isFinished: PropTypes.bool +}; + export default withNProgress(Progress); diff --git a/template/src/components/Loader/Spinner.js b/src/components/Loader/Spinner.js similarity index 100% rename from template/src/components/Loader/Spinner.js rename to src/components/Loader/Spinner.js diff --git a/template/src/components/Widgets/Statistic/IcoCard.js b/src/components/Widgets/Statistic/IcoCard.js similarity index 84% rename from template/src/components/Widgets/Statistic/IcoCard.js rename to src/components/Widgets/Statistic/IcoCard.js index d41843e..a2d16cc 100644 --- a/template/src/components/Widgets/Statistic/IcoCard.js +++ b/src/components/Widgets/Statistic/IcoCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Col, Card } from 'react-bootstrap'; import { Link } from 'react-router-dom'; @@ -49,4 +50,15 @@ const IcoCard = (props) => { ); }; +IcoCard.propTypes = { + icon: PropTypes.string, + title: PropTypes.string, + caption: PropTypes.string, + category: PropTypes.string, + totalAmount: PropTypes.number, + amount: PropTypes.number, + percentage: PropTypes.number, + time: PropTypes.string +}; + export default IcoCard; diff --git a/template/src/components/Widgets/Statistic/Notification.js b/src/components/Widgets/Statistic/Notification.js similarity index 76% rename from template/src/components/Widgets/Statistic/Notification.js rename to src/components/Widgets/Statistic/Notification.js index bfe3e4a..141bd3a 100644 --- a/template/src/components/Widgets/Statistic/Notification.js +++ b/src/components/Widgets/Statistic/Notification.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Alert } from 'react-bootstrap'; @@ -14,4 +15,9 @@ const Notification = (props) => { ); }; +Notification.propTypes = { + message: PropTypes.string, + link: PropTypes.string +}; + export default Notification; diff --git a/template/src/components/Widgets/Statistic/NotificationCard.js b/src/components/Widgets/Statistic/NotificationCard.js similarity index 76% rename from template/src/components/Widgets/Statistic/NotificationCard.js rename to src/components/Widgets/Statistic/NotificationCard.js index f3fa98c..ca36ebf 100644 --- a/template/src/components/Widgets/Statistic/NotificationCard.js +++ b/src/components/Widgets/Statistic/NotificationCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Card, Row, Col } from 'react-bootstrap'; @@ -24,4 +25,12 @@ const NotificationCard = ({ params }) => { ); }; +NotificationCard.propTypes = { + params: PropTypes.object, + class: PropTypes.string, + icon: PropTypes.string, + primaryText: PropTypes.string, + secondaryText: PropTypes.string +}; + export default NotificationCard; diff --git a/template/src/components/Widgets/Statistic/OrderCard.js b/src/components/Widgets/Statistic/OrderCard.js similarity index 74% rename from template/src/components/Widgets/Statistic/OrderCard.js rename to src/components/Widgets/Statistic/OrderCard.js index 7a22c84..895aafd 100644 --- a/template/src/components/Widgets/Statistic/OrderCard.js +++ b/src/components/Widgets/Statistic/OrderCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Card } from 'react-bootstrap'; @@ -29,4 +30,14 @@ const OrderCard = ({ params }) => { ); }; +OrderCard.propTypes = { + params: PropTypes.object, + class: PropTypes.string, + icon: PropTypes.string, + primaryText: PropTypes.string, + secondaryText: PropTypes.string, + title: PropTypes.string, + extraText: PropTypes.string +}; + export default OrderCard; diff --git a/template/src/components/Widgets/Statistic/ProductCard.js b/src/components/Widgets/Statistic/ProductCard.js similarity index 78% rename from template/src/components/Widgets/Statistic/ProductCard.js rename to src/components/Widgets/Statistic/ProductCard.js index 44fc6b9..a37b47c 100644 --- a/template/src/components/Widgets/Statistic/ProductCard.js +++ b/src/components/Widgets/Statistic/ProductCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Card, Row, Col } from 'react-bootstrap'; @@ -35,4 +36,14 @@ const ProductCard = ({ params }) => { ); }; +ProductCard.propTypes = { + params: PropTypes.object, + class: PropTypes.string, + icon: PropTypes.string, + primaryText: PropTypes.string, + secondaryText: PropTypes.string, + title: PropTypes.string, + extraText: PropTypes.string +}; + export default ProductCard; diff --git a/template/src/components/Widgets/Statistic/ProductOrderCard.js b/src/components/Widgets/Statistic/ProductOrderCard.js similarity index 90% rename from template/src/components/Widgets/Statistic/ProductOrderCard.js rename to src/components/Widgets/Statistic/ProductOrderCard.js index f7c3a1d..dd3caac 100644 --- a/template/src/components/Widgets/Statistic/ProductOrderCard.js +++ b/src/components/Widgets/Statistic/ProductOrderCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Card, Row, Col } from 'react-bootstrap'; import { Link } from 'react-router-dom'; @@ -61,7 +62,7 @@ const ProductOrderCard = (props) => {
${price}
-
+
Delivered on {delivered}
{description}
@@ -87,4 +88,16 @@ const ProductOrderCard = (props) => { ); }; +ProductOrderCard.propTypes = { + image: PropTypes.string, + orderId: PropTypes.number, + name: PropTypes.string, + rating: PropTypes.string, + price: PropTypes.number, + delivered: PropTypes.bool, + ordered: PropTypes.bool, + description: PropTypes.string, + total: PropTypes.number +}; + export default ProductOrderCard; diff --git a/template/src/components/Widgets/Statistic/SocialCard.js b/src/components/Widgets/Statistic/SocialCard.js similarity index 72% rename from template/src/components/Widgets/Statistic/SocialCard.js rename to src/components/Widgets/Statistic/SocialCard.js index f8737df..a234be1 100644 --- a/template/src/components/Widgets/Statistic/SocialCard.js +++ b/src/components/Widgets/Statistic/SocialCard.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Card, Button } from 'react-bootstrap'; @@ -26,4 +27,15 @@ const SocialCard = ({ params }) => { ); }; +SocialCard.propTypes = { + params: PropTypes.array, + class: PropTypes.string, + icon: PropTypes.string, + primaryTitle: PropTypes.string, + primaryText: PropTypes.number, + secondaryText: PropTypes.string, + variant: PropTypes.string, + label: PropTypes.string +}; + export default SocialCard; diff --git a/src/config/constant.js b/src/config/constant.js new file mode 100644 index 0000000..f6fef74 --- /dev/null +++ b/src/config/constant.js @@ -0,0 +1,8 @@ +export const BASE_URL = '/app/dashboard/default'; +export const BASE_TITLE = ' | Datta Able Premium React Hooks + Redux Admin Template'; + +export const CONFIG = { + layout: 'vertical', + collapseMenu: false, + layoutType: 'menu-dark' +}; diff --git a/src/contexts/ConfigContext.js b/src/contexts/ConfigContext.js new file mode 100644 index 0000000..75145bc --- /dev/null +++ b/src/contexts/ConfigContext.js @@ -0,0 +1,103 @@ +import PropTypes from 'prop-types'; +import React, { createContext, useReducer } from 'react'; +import * as actionType from '../store/actions'; +import { CONFIG } from '../config/constant'; + +const initialState = { + ...CONFIG, + isOpen: [], + isTrigger: [] +}; +const ConfigContext = createContext(initialState); +const { Provider } = ConfigContext; + +const ConfigProvider = ({ children }) => { + let trigger = []; + let open = []; + + const [state, dispatch] = useReducer((state, action) => { + switch (action.type) { + case actionType.CHANGE_LAYOUT: + return { + ...state, + layout: action.layout + }; + case actionType.COLLAPSE_MENU: + return { + ...state, + collapseMenu: !state.collapseMenu + }; + case actionType.COLLAPSE_TOGGLE: + if (action.menu.type === 'sub') { + open = state.isOpen; + trigger = state.isTrigger; + + const triggerIndex = trigger.indexOf(action.menu.id); + if (triggerIndex > -1) { + open = open.filter((item) => item !== action.menu.id); + trigger = trigger.filter((item) => item !== action.menu.id); + } + + if (triggerIndex === -1) { + open = [...open, action.menu.id]; + trigger = [...trigger, action.menu.id]; + } + } else { + open = state.isOpen; + const triggerIndex = state.isTrigger.indexOf(action.menu.id); + trigger = triggerIndex === -1 ? [action.menu.id] : []; + open = triggerIndex === -1 ? [action.menu.id] : []; + } + return { + ...state, + isOpen: open, + isTrigger: trigger + }; + case actionType.LAYOUT_TYPE: + return { + ...state, + layoutType: action.layoutType + }; + case actionType.NAV_COLLAPSE_LEAVE: + if (action.menu.type === 'sub') { + open = state.isOpen; + trigger = state.isTrigger; + + const triggerIndex = trigger.indexOf(action.menu.id); + if (triggerIndex > -1) { + open = open.filter((item) => item !== action.menu.id); + trigger = trigger.filter((item) => item !== action.menu.id); + } + return { + ...state, + isOpen: open, + isTrigger: trigger + }; + } + return { ...state }; + case actionType.NAV_CONTENT_LEAVE: + return { + ...state, + isOpen: open, + isTrigger: trigger + }; + case actionType.RESET: + return { + ...state, + layout: initialState.layout, + collapseMenu: initialState.collapseMenu, + layoutType: initialState.layoutType + }; + default: + throw new Error(); + } + }, initialState); + + return {children}; +}; + +ConfigProvider.propTypes = { + children: PropTypes.object +}; + +export { ConfigContext, ConfigProvider }; diff --git a/src/data/countryData.js b/src/data/countryData.js new file mode 100644 index 0000000..ef9989a --- /dev/null +++ b/src/data/countryData.js @@ -0,0 +1,253 @@ +const initialData = [ + { name: 'Afghanistan', code: 'AF' }, + { name: 'Ã…land Islands', code: 'AX' }, + { name: 'Albania', code: 'AL' }, + { name: 'Algeria', code: 'DZ' }, + { name: 'American Samoa', code: 'AS' }, + { name: 'AndorrA', code: 'AD' }, + { name: 'Angola', code: 'AO' }, + { name: 'Anguilla', code: 'AI' }, + { name: 'Antarctica', code: 'AQ' }, + { name: 'Antigua and Barbuda', code: 'AG' }, + { name: 'Argentina', code: 'AR' }, + { name: 'Armenia', code: 'AM' }, + { name: 'Aruba', code: 'AW' }, + { name: 'Australia', code: 'AU' }, + { name: 'Austria', code: 'AT' }, + { name: 'Azerbaijan', code: 'AZ' }, + { name: 'Bahamas', code: 'BS' }, + { name: 'Bahrain', code: 'BH' }, + { name: 'Bangladesh', code: 'BD' }, + { name: 'Barbados', code: 'BB' }, + { name: 'Belarus', code: 'BY' }, + { name: 'Belgium', code: 'BE' }, + { name: 'Belize', code: 'BZ' }, + { name: 'Benin', code: 'BJ' }, + { name: 'Bermuda', code: 'BM' }, + { name: 'Bhutan', code: 'BT' }, + { name: 'Bolivia', code: 'BO' }, + { name: 'Bosnia and Herzegovina', code: 'BA' }, + { name: 'Botswana', code: 'BW' }, + { name: 'Bouvet Island', code: 'BV' }, + { name: 'Brazil', code: 'BR' }, + { name: 'British Indian Ocean Territory', code: 'IO' }, + { name: 'Brunei Darussalam', code: 'BN' }, + { name: 'Bulgaria', code: 'BG' }, + { name: 'Burkina Faso', code: 'BF' }, + { name: 'Burundi', code: 'BI' }, + { name: 'Cambodia', code: 'KH' }, + { name: 'Cameroon', code: 'CM' }, + { name: 'Canada', code: 'CA' }, + { name: 'Cape Verde', code: 'CV' }, + { name: 'Cayman Islands', code: 'KY' }, + { name: 'Central African Republic', code: 'CF' }, + { name: 'Chad', code: 'TD' }, + { name: 'Chile', code: 'CL' }, + { name: 'China', code: 'CN' }, + { name: 'Christmas Island', code: 'CX' }, + { name: 'Cocos (Keeling) Islands', code: 'CC' }, + { name: 'Colombia', code: 'CO' }, + { name: 'Comoros', code: 'KM' }, + { name: 'Congo', code: 'CG' }, + { name: 'Congo, The Democratic Republic of the', code: 'CD' }, + { name: 'Cook Islands', code: 'CK' }, + { name: 'Costa Rica', code: 'CR' }, + { name: "Cote D'Ivoire", code: 'CI' }, + { name: 'Croatia', code: 'HR' }, + { name: 'Cuba', code: 'CU' }, + { name: 'Cyprus', code: 'CY' }, + { name: 'Czech Republic', code: 'CZ' }, + { name: 'Denmark', code: 'DK' }, + { name: 'Djibouti', code: 'DJ' }, + { name: 'Dominica', code: 'DM' }, + { name: 'Dominican Republic', code: 'DO' }, + { name: 'Ecuador', code: 'EC' }, + { name: 'Egypt', code: 'EG' }, + { name: 'El Salvador', code: 'SV' }, + { name: 'Equatorial Guinea', code: 'GQ' }, + { name: 'Eritrea', code: 'ER' }, + { name: 'Estonia', code: 'EE' }, + { name: 'Ethiopia', code: 'ET' }, + { name: 'Falkland Islands (Malvinas)', code: 'FK' }, + { name: 'Faroe Islands', code: 'FO' }, + { name: 'Fiji', code: 'FJ' }, + { name: 'Finland', code: 'FI' }, + { name: 'France', code: 'FR' }, + { name: 'French Guiana', code: 'GF' }, + { name: 'French Polynesia', code: 'PF' }, + { name: 'French Southern Territories', code: 'TF' }, + { name: 'Gabon', code: 'GA' }, + { name: 'Gambia', code: 'GM' }, + { name: 'Georgia', code: 'GE' }, + { name: 'Germany', code: 'DE' }, + { name: 'Ghana', code: 'GH' }, + { name: 'Gibraltar', code: 'GI' }, + { name: 'Greece', code: 'GR' }, + { name: 'Greenland', code: 'GL' }, + { name: 'Grenada', code: 'GD' }, + { name: 'Guadeloupe', code: 'GP' }, + { name: 'Guam', code: 'GU' }, + { name: 'Guatemala', code: 'GT' }, + { name: 'Guernsey', code: 'GG' }, + { name: 'Guinea', code: 'GN' }, + { name: 'Guinea-Bissau', code: 'GW' }, + { name: 'Guyana', code: 'GY' }, + { name: 'Haiti', code: 'HT' }, + { name: 'Heard Island and Mcdonald Islands', code: 'HM' }, + { name: 'Holy See (Vatican City State)', code: 'VA' }, + { name: 'Honduras', code: 'HN' }, + { name: 'Hong Kong', code: 'HK' }, + { name: 'Hungary', code: 'HU' }, + { name: 'Iceland', code: 'IS' }, + { name: 'India', code: 'IN' }, + { name: 'Indonesia', code: 'ID' }, + { name: 'Iran, Islamic Republic Of', code: 'IR' }, + { name: 'Iraq', code: 'IQ' }, + { name: 'Ireland', code: 'IE' }, + { name: 'Isle of Man', code: 'IM' }, + { name: 'Israel', code: 'IL' }, + { name: 'Italy', code: 'IT' }, + { name: 'Jamaica', code: 'JM' }, + { name: 'Japan', code: 'JP' }, + { name: 'Jersey', code: 'JE' }, + { name: 'Jordan', code: 'JO' }, + { name: 'Kazakhstan', code: 'KZ' }, + { name: 'Kenya', code: 'KE' }, + { name: 'Kiribati', code: 'KI' }, + { name: "Korea, Democratic People'S Republic of", code: 'KP' }, + { name: 'Korea, Republic of', code: 'KR' }, + { name: 'Kuwait', code: 'KW' }, + { name: 'Kyrgyzstan', code: 'KG' }, + { name: "Lao People'S Democratic Republic", code: 'LA' }, + { name: 'Latvia', code: 'LV' }, + { name: 'Lebanon', code: 'LB' }, + { name: 'Lesotho', code: 'LS' }, + { name: 'Liberia', code: 'LR' }, + { name: 'Libyan Arab Jamahiriya', code: 'LY' }, + { name: 'Liechtenstein', code: 'LI' }, + { name: 'Lithuania', code: 'LT' }, + { name: 'Luxembourg', code: 'LU' }, + { name: 'Macao', code: 'MO' }, + { name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK' }, + { name: 'Madagascar', code: 'MG' }, + { name: 'Malawi', code: 'MW' }, + { name: 'Malaysia', code: 'MY' }, + { name: 'Maldives', code: 'MV' }, + { name: 'Mali', code: 'ML' }, + { name: 'Malta', code: 'MT' }, + { name: 'Marshall Islands', code: 'MH' }, + { name: 'Martinique', code: 'MQ' }, + { name: 'Mauritania', code: 'MR' }, + { name: 'Mauritius', code: 'MU' }, + { name: 'Mayotte', code: 'YT' }, + { name: 'Mexico', code: 'MX' }, + { name: 'Micronesia, Federated States of', code: 'FM' }, + { name: 'Moldova, Republic of', code: 'MD' }, + { name: 'Monaco', code: 'MC' }, + { name: 'Mongolia', code: 'MN' }, + { name: 'Montserrat', code: 'MS' }, + { name: 'Morocco', code: 'MA' }, + { name: 'Mozambique', code: 'MZ' }, + { name: 'Myanmar', code: 'MM' }, + { name: 'Namibia', code: 'NA' }, + { name: 'Nauru', code: 'NR' }, + { name: 'Nepal', code: 'NP' }, + { name: 'Netherlands', code: 'NL' }, + { name: 'Netherlands Antilles', code: 'AN' }, + { name: 'New Caledonia', code: 'NC' }, + { name: 'New Zealand', code: 'NZ' }, + { name: 'Nicaragua', code: 'NI' }, + { name: 'Niger', code: 'NE' }, + { name: 'Nigeria', code: 'NG' }, + { name: 'Niue', code: 'NU' }, + { name: 'Norfolk Island', code: 'NF' }, + { name: 'Northern Mariana Islands', code: 'MP' }, + { name: 'Norway', code: 'NO' }, + { name: 'Oman', code: 'OM' }, + { name: 'Pakistan', code: 'PK' }, + { name: 'Palau', code: 'PW' }, + { name: 'Palestinian Territory, Occupied', code: 'PS' }, + { name: 'Panama', code: 'PA' }, + { name: 'Papua New Guinea', code: 'PG' }, + { name: 'Paraguay', code: 'PY' }, + { name: 'Peru', code: 'PE' }, + { name: 'Philippines', code: 'PH' }, + { name: 'Pitcairn', code: 'PN' }, + { name: 'Poland', code: 'PL' }, + { name: 'Portugal', code: 'PT' }, + { name: 'Puerto Rico', code: 'PR' }, + { name: 'Qatar', code: 'QA' }, + { name: 'Reunion', code: 'RE' }, + { name: 'Romania', code: 'RO' }, + { name: 'Russian Federation', code: 'RU' }, + { name: 'RWANDA', code: 'RW' }, + { name: 'Saint Helena', code: 'SH' }, + { name: 'Saint Kitts and Nevis', code: 'KN' }, + { name: 'Saint Lucia', code: 'LC' }, + { name: 'Saint Pierre and Miquelon', code: 'PM' }, + { name: 'Saint Vincent and the Grenadines', code: 'VC' }, + { name: 'Samoa', code: 'WS' }, + { name: 'San Marino', code: 'SM' }, + { name: 'Sao Tome and Principe', code: 'ST' }, + { name: 'Saudi Arabia', code: 'SA' }, + { name: 'Senegal', code: 'SN' }, + { name: 'Serbia and Montenegro', code: 'CS' }, + { name: 'Seychelles', code: 'SC' }, + { name: 'Sierra Leone', code: 'SL' }, + { name: 'Singapore', code: 'SG' }, + { name: 'Slovakia', code: 'SK' }, + { name: 'Slovenia', code: 'SI' }, + { name: 'Solomon Islands', code: 'SB' }, + { name: 'Somalia', code: 'SO' }, + { name: 'South Africa', code: 'ZA' }, + { name: 'South Georgia and the South Sandwich Islands', code: 'GS' }, + { name: 'Spain', code: 'ES' }, + { name: 'Sri Lanka', code: 'LK' }, + { name: 'Sudan', code: 'SD' }, + { name: 'Suriname', code: 'SR' }, + { name: 'Svalbard and Jan Mayen', code: 'SJ' }, + { name: 'Swaziland', code: 'SZ' }, + { name: 'Sweden', code: 'SE' }, + { name: 'Switzerland', code: 'CH' }, + { name: 'Syrian Arab Republic', code: 'SY' }, + { name: 'Taiwan, Province of China', code: 'TW' }, + { name: 'Tajikistan', code: 'TJ' }, + { name: 'Tanzania, United Republic of', code: 'TZ' }, + { name: 'Thailand', code: 'TH' }, + { name: 'Timor-Leste', code: 'TL' }, + { name: 'Togo', code: 'TG' }, + { name: 'Tokelau', code: 'TK' }, + { name: 'Tonga', code: 'TO' }, + { name: 'Trinidad and Tobago', code: 'TT' }, + { name: 'Tunisia', code: 'TN' }, + { name: 'Turkey', code: 'TR' }, + { name: 'Turkmenistan', code: 'TM' }, + { name: 'Turks and Caicos Islands', code: 'TC' }, + { name: 'Tuvalu', code: 'TV' }, + { name: 'Uganda', code: 'UG' }, + { name: 'Ukraine', code: 'UA' }, + { name: 'United Arab Emirates', code: 'AE' }, + { name: 'United Kingdom', code: 'GB' }, + { name: 'United States', code: 'US' }, + { name: 'United States Minor Outlying Islands', code: 'UM' }, + { name: 'Uruguay', code: 'UY' }, + { name: 'Uzbekistan', code: 'UZ' }, + { name: 'Vanuatu', code: 'VU' }, + { name: 'Venezuela', code: 'VE' }, + { name: 'Viet Nam', code: 'VN' }, + { name: 'Virgin Islands, British', code: 'VG' }, + { name: 'Virgin Islands, U.S.', code: 'VI' }, + { name: 'Wallis and Futuna', code: 'WF' }, + { name: 'Western Sahara', code: 'EH' }, + { name: 'Yemen', code: 'YE' }, + { name: 'Zambia', code: 'ZM' }, + { name: 'Zimbabwe', code: 'ZW' } +]; + +export default function makeData() { + const makeDataLevel = () => { + return initialData; + }; + + return makeDataLevel(); +} diff --git a/template/src/data/tableData.js b/src/data/tableData.js similarity index 80% rename from template/src/data/tableData.js rename to src/data/tableData.js index d09510c..9c8aaf3 100644 --- a/template/src/data/tableData.js +++ b/src/data/tableData.js @@ -1,5 +1,6 @@ -import namor from 'namor'; +import { Chance } from 'chance'; +const chance = new Chance(); const range = (len) => { const arr = []; for (let i = 0; i < len; i++) { @@ -11,8 +12,8 @@ const range = (len) => { const newPerson = () => { const statusChance = Math.random(); return { - firstName: namor.generate({ words: 1, numbers: 0 }), - lastName: namor.generate({ words: 1, numbers: 0 }), + firstName: chance.first(), + lastName: chance.last(), age: Math.floor(Math.random() * 30), visits: Math.floor(Math.random() * 100), progress: Math.floor(Math.random() * 100), @@ -23,7 +24,7 @@ const newPerson = () => { export default function makeData(...lens) { const makeDataLevel = (depth = 0) => { const len = lens[depth]; - return range(len).map((d) => { + return range(len).map(() => { return { ...newPerson(), subRows: lens[depth + 1] ? makeDataLevel(depth + 1) : undefined diff --git a/template/src/hooks/useOutsideClick.js b/src/hooks/useOutsideClick.js similarity index 100% rename from template/src/hooks/useOutsideClick.js rename to src/hooks/useOutsideClick.js diff --git a/template/src/hooks/useScriptRef.js b/src/hooks/useScriptRef.js similarity index 100% rename from template/src/hooks/useScriptRef.js rename to src/hooks/useScriptRef.js diff --git a/template/src/hooks/useWindowSize.js b/src/hooks/useWindowSize.js similarity index 100% rename from template/src/hooks/useWindowSize.js rename to src/hooks/useWindowSize.js diff --git a/template/src/index.js b/src/index.js similarity index 70% rename from template/src/index.js rename to src/index.js index cab4f2a..c5523cf 100644 --- a/template/src/index.js +++ b/src/index.js @@ -2,7 +2,9 @@ import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable'; import React from 'react'; -import ReactDOM from 'react-dom'; +import { createRoot } from 'react-dom/client'; + +import './services'; import { Provider } from 'react-redux'; import { ConfigProvider } from './contexts/ConfigContext'; @@ -12,13 +14,14 @@ import App from './App'; import reportWebVitals from './reportWebVitals'; import store from './store'; -ReactDOM.render( +const container = document.getElementById('root'); +const root = createRoot(container); +root.render( - , - document.getElementById('root') + ); reportWebVitals(); diff --git a/template/src/index.scss b/src/index.scss similarity index 59% rename from template/src/index.scss rename to src/index.scss index 41709ad..9cae40f 100644 --- a/template/src/index.scss +++ b/src/index.scss @@ -65,25 +65,10 @@ overflow: hidden; } -.zoom-container { - position: relative; - display: flex; -} - .img-preview-section-container { display: none; } -.zoom-container:hover .img-preview-section-container { - display: block; - position: relative; - left: 50px; -} -.zoom-container:hover .img-preview-section-container { - left: 100%; - position: absolute; - background: #fff; - border: 1px solid $theme-border; -} + .carousel-inner { overflow: visible; z-index: 1050; @@ -122,77 +107,9 @@ header.navbar.pcoded-header.navbar-expand-lg.header-default .mobile-menu.on span background-color: transparent; } -body.datta-rtl .pcoded-navbar.theme-horizontal ~ .pcoded-header { - margin-right: auto; -} - -body.datta-rtl .pcoded-navbar.theme-horizontal ~ .pcoded-main-container { - margin-right: auto; -} - -body.datta-rtl .pcoded-navbar.theme-horizontal .pcoded-inner-navbar > li > a:after { - left: 0; -} - -body.datta-rtl .pcoded-navbar.theme-horizontal .pcoded-inner-navbar > li.active:after, -.pcoded-navbar.theme-horizontal .pcoded-inner-navbar > li.pcoded-trigger:after { - right: 18px; -} - -.theme-horizontal .sidenav-horizontal:after, -.theme-horizontal .sidenav-horizontal:before { - content: ''; - background: $header-dark-background; - width: 100%; - position: absolute; - top: 0; - height: 100%; - z-index: 5; -} - -.theme-horizontal.navbar-blue .sidenav-horizontal:after, -.theme-horizontal.navbar-blue .sidenav-horizontal:before { - background: $primary-color; -} - -.theme-horizontal.navbar-red .sidenav-horizontal:after, -.theme-horizontal.navbar-red .sidenav-horizontal:before { - background: $danger-color; -} - -.theme-horizontal.navbar-purple .sidenav-horizontal:after, -.theme-horizontal.navbar-purple .sidenav-horizontal:before { - background: $purple-color; -} - -.theme-horizontal.navbar-lightblue .sidenav-horizontal:after, -.theme-horizontal.navbar-lightblue .sidenav-horizontal:before { - background: $layout-6-bg-color; -} - -.theme-horizontal.navbar-dark .sidenav-horizontal:after, -.theme-horizontal.navbar-dark .sidenav-horizontal:before { - background: $dark-color; -} - -.theme-horizontal .sidenav-horizontal:before { - left: 100%; -} - -.theme-horizontal .sidenav-horizontal:after { - right: 100%; -} - @media only screen and (max-width: 991px) { .pcoded-navbar { - z-index: 1032; - } - - body.datta-rtl { - .pcoded-header, - .pcoded-main-container { - margin-right: 0; - } + z-index: 1072; } header.navbar.pcoded-header.navbar-expand-lg.header-default.headerpos-fixed { @@ -212,39 +129,26 @@ body.datta-rtl .pcoded-navbar.theme-horizontal .pcoded-inner-navbar > li.active: header.navbar.pcoded-header.navbar-expand-lg.header-default .mobile-menu.on span { background-color: transparent; } - - body.datta-dark .pcoded-header.header-dark .input-group .input-group-text, - .pcoded-header.header-dark a, - .pcoded-header.header-dark .btn, - .pcoded-header.header-dark .dropdown-toggle { - color: $dark-layout-font; - } -} -.to-do-list .checkbox-fade .cr { - float: left; - border-radius: 3px; - width: 22px; - height: 22px; -} -.to-do-list .checkbox-fade label input[type='checkbox']:checked + .cr { - background: #1dd5d2; } .user-activity .tab-content { padding-top: 5px; } -.rodal-dialog { - height: auto !important; - bottom: auto !important; - top: 50% !important; - transform: translateY(-50%); - .card { - box-shadow: none; - margin-bottom: 0px; - .card-footer { - padding-bottom: 0px; +.rodal { + .rodal-dialog { + height: auto !important; + bottom: auto; + top: 25%; + .card { + box-shadow: none; + margin-bottom: 0px; } + padding: 0; + } + .rodal-close:hover:before, + .rodal-close:hover:after { + background: $danger-color; } } @@ -358,28 +262,6 @@ td { .carousel.slide { overflow: hidden; } -.react-datepicker-popper[data-placement^='bottom'] .react-datepicker__triangle, -.react-datepicker-popper[data-placement^='top'] .react-datepicker__triangle, -.react-datepicker__year-read-view--down-arrow, -.react-datepicker__month-read-view--down-arrow, -.react-datepicker__month-year-read-view--down-arrow { - left: 18px !important; -} -.smooth-dnd-container.horizontal { - button { - border: none; - } -} -.ui-pnotify-icon { - > span { - display: inline-flex !important; - align-items: center; - justify-content: center; - border-radius: 50%; - width: 21px; - height: 21px; - } -} .table.table-bordered.table-hover { th { @@ -388,15 +270,12 @@ td { } } } -.filter-bar .navbar { - @media (max-width: 690px) { - padding: 0.5rem 1rem 1rem; - // #dropdown-basic{ - // padding-left: 10px; - // } - .f-view { - padding-left: 25px; - margin-top: 8px; - } +.photoshop-picker { + @media only screen and (max-width: 575px) { + display: none; } } + +.css-1v494f5-Wrapper { + z-index: 20 !important; +} diff --git a/template/src/layouts/AdminLayout/Breadcrumb/index.js b/src/layouts/AdminLayout/Breadcrumb/index.js similarity index 92% rename from template/src/layouts/AdminLayout/Breadcrumb/index.js rename to src/layouts/AdminLayout/Breadcrumb/index.js index 0bae10e..e87b421 100644 --- a/template/src/layouts/AdminLayout/Breadcrumb/index.js +++ b/src/layouts/AdminLayout/Breadcrumb/index.js @@ -1,11 +1,13 @@ import React, { useState, useEffect } from 'react'; import { ListGroup } from 'react-bootstrap'; -import { Link } from 'react-router-dom'; +import { Link, useLocation } from 'react-router-dom'; import navigation from '../../../menu-items'; -import { BASE_TITLE, BASENAME } from '../../../config/constant'; +import { BASE_TITLE } from '../../../config/constant'; const Breadcrumb = () => { + const location = useLocation(); + const [main, setMain] = useState([]); const [item, setItem] = useState([]); @@ -24,7 +26,7 @@ const Breadcrumb = () => { if (collapse.type && collapse.type === 'collapse') { getCollapse(collapse, index); } else if (collapse.type && collapse.type === 'item') { - if (document.location.pathname === BASENAME + collapse.url) { + if (location.pathname === collapse.url) { setMain(item); setItem(collapse); } diff --git a/template/src/layouts/AdminLayout/NavBar/NavLeft/NavSearch/index.js b/src/layouts/AdminLayout/NavBar/NavLeft/NavSearch/index.js similarity index 79% rename from template/src/layouts/AdminLayout/NavBar/NavLeft/NavSearch/index.js rename to src/layouts/AdminLayout/NavBar/NavLeft/NavSearch/index.js index 9c678dd..dbbd9ae 100644 --- a/template/src/layouts/AdminLayout/NavBar/NavLeft/NavSearch/index.js +++ b/src/layouts/AdminLayout/NavBar/NavLeft/NavSearch/index.js @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React, { useState } from 'react'; import { Link } from 'react-router-dom'; @@ -37,7 +38,14 @@ const NavSearch = (props) => { - +
@@ -46,4 +54,8 @@ const NavSearch = (props) => { ); }; +NavSearch.propTypes = { + windowWidth: PropTypes.number +}; + export default NavSearch; diff --git a/template/src/layouts/AdminLayout/NavBar/NavLeft/index.js b/src/layouts/AdminLayout/NavBar/NavLeft/index.js similarity index 81% rename from template/src/layouts/AdminLayout/NavBar/NavLeft/index.js rename to src/layouts/AdminLayout/NavBar/NavLeft/index.js index 81db511..f80db6d 100644 --- a/template/src/layouts/AdminLayout/NavBar/NavLeft/index.js +++ b/src/layouts/AdminLayout/NavBar/NavLeft/index.js @@ -1,20 +1,14 @@ -import React, { useContext } from 'react'; +import React from 'react'; import { ListGroup, Dropdown } from 'react-bootstrap'; import { Link } from 'react-router-dom'; import useWindowSize from '../../../../hooks/useWindowSize'; -import { ConfigContext } from '../../../../contexts/ConfigContext'; import NavSearch from './NavSearch'; const NavLeft = () => { const windowSize = useWindowSize(); - const configContext = useContext(ConfigContext); - const { rtlLayout } = configContext.state; - let dropdownRightAlign = false; - if (rtlLayout) { - dropdownRightAlign = true; - } + let dropdownAlign = 'start'; let navItemClass = ['nav-item']; if (windowSize.width <= 575) { @@ -25,7 +19,7 @@ const NavLeft = () => { - + Dropdown diff --git a/template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/Messages/index.js b/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/Messages/index.js similarity index 58% rename from template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/Messages/index.js rename to src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/Messages/index.js index 04e10c6..d12fc39 100644 --- a/template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/Messages/index.js +++ b/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/Messages/index.js @@ -1,6 +1,7 @@ +import PropTypes from 'prop-types'; import React from 'react'; +import { Card } from 'react-bootstrap'; import { Link } from 'react-router-dom'; -import { Media } from 'react-bootstrap'; const images = require.context('../../../../../../../../assets/images/user', true); @@ -9,7 +10,7 @@ const Messages = ({ message, photo, name }) => { if (message.type) { image = ( - {name} + {name} ); } @@ -23,17 +24,29 @@ const Messages = ({ message, photo, name }) => { return ( - + {image} - +

{message.msg}

{message.time}

-
-
+ +
); }; +Messages.propTypes = { + message: PropTypes.string, + photo: PropTypes.string, + name: PropTypes.string, + type: PropTypes.string, + msg: PropTypes.string, + time: PropTypes.string +}; + export default Messages; diff --git a/template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/chat.js b/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/chat.js similarity index 100% rename from template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/chat.js rename to src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/chat.js diff --git a/template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/index.js b/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/index.js similarity index 73% rename from template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/index.js rename to src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/index.js index 1358f1a..7e481ff 100644 --- a/template/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/index.js +++ b/src/layouts/AdminLayout/NavBar/NavRight/ChatList/Friends/Chat/index.js @@ -1,5 +1,6 @@ +import PropTypes from 'prop-types'; import React from 'react'; -import { Media, FormControl, Button, InputGroup } from 'react-bootstrap'; +import { FormControl, Button, InputGroup, Card } from 'react-bootstrap'; import { Link } from 'react-router-dom'; import PerfectScrollbar from 'react-perfect-scrollbar'; @@ -13,13 +14,13 @@ const Chat = ({ user, chatOpen, listOpen, closed }) => { } let message = ( - - + +

CHAT NOT FOUND

-
-
+ + ); chatMsg.filter((chats) => { @@ -49,11 +50,9 @@ const Chat = ({ user, chatOpen, listOpen, closed }) => {
- - - + +

+ Don’t have an account?{' '} + + Signup + +

+ + + + +
+ + + ); +}; + +export default ResetPassword1; diff --git a/template/src/views/auth/signin/FirebaseLogin.js b/src/views/auth/signin/FirebaseLogin.js similarity index 66% rename from template/src/views/auth/signin/FirebaseLogin.js rename to src/views/auth/signin/FirebaseLogin.js index b4fb9b4..4fb3ff1 100644 --- a/template/src/views/auth/signin/FirebaseLogin.js +++ b/src/views/auth/signin/FirebaseLogin.js @@ -1,29 +1,16 @@ +import PropTypes from 'prop-types'; import React from 'react'; import { Row, Col, Button, Alert } from 'react-bootstrap'; import * as Yup from 'yup'; import { Formik } from 'formik'; -import useAuth from '../../../hooks/useAuth'; -import useScriptRef from '../../../hooks/useScriptRef'; const FirebaseLogin = ({ className, ...rest }) => { - const scriptedRef = useScriptRef(); - - const { firebaseEmailPasswordSignIn, firebaseGoogleSignIn } = useAuth(); - - const googleHandler = async () => { - try { - await firebaseGoogleSignIn(); - } catch (err) { - console.error(err); - } - }; - return ( { email: Yup.string().email('Must be a valid email').max(255).required('Email is required'), password: Yup.string().max(255).required('Password is required') })} - onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => { - try { - await firebaseEmailPasswordSignIn(values.email, values.password); - - if (scriptedRef.current) { - setStatus({ success: true }); - setSubmitting(true); - } - } catch (err) { - console.error(err); - if (scriptedRef.current) { - setStatus({ success: false }); - setErrors({ submit: err.message }); - setSubmitting(false); - } - } - }} > {({ errors, handleBlur, handleChange, handleSubmit, isSubmitting, touched, values }) => (
{ type="email" value={values.email} /> - {touched.email && errors.email && {errors.email}} + {touched.email && errors.email && {errors.email}}
{ type="password" value={values.password} /> - {touched.password && errors.password && {errors.password}} + {touched.password && errors.password && {errors.password}}
{errors.submit && ( @@ -84,7 +52,7 @@ const FirebaseLogin = ({ className, ...rest }) => { )} -
+