├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── .npmrc
├── CHANGELOG.md
├── Documentation
└── documentation.html
├── ISSUE_TEMPLATE.md
├── LICENSE.md
├── README.md
├── genezio.yaml
├── github-assets
├── angular.png
├── black-dashboard-react.gif
├── chrome.png
├── dashboard-page.png
├── edge.png
├── firefox.png
├── html.png
├── maps-page.png
├── notifications-page.png
├── opera.png
├── react.svg
├── safari.png
├── table-page.png
├── user-page.png
└── vuejs.png
├── jsconfig.json
├── package.json
├── public
├── apple-icon.png
├── favicon.png
├── index.html
└── manifest.json
└── src
├── assets
├── css
│ ├── black-dashboard-react.css
│ ├── black-dashboard-react.css.map
│ ├── black-dashboard-react.min.css
│ └── nucleo-icons.css
├── demo
│ └── demo.css
├── fonts
│ ├── nucleo.eot
│ ├── nucleo.ttf
│ ├── nucleo.woff
│ └── nucleo.woff2
├── img
│ ├── anime3.png
│ ├── anime6.png
│ ├── apple-icon.png
│ ├── bg5.jpg
│ ├── default-avatar.png
│ ├── emilyz.jpg
│ ├── favicon.png
│ ├── header.jpg
│ ├── img_3115.jpg
│ ├── james.jpg
│ ├── mike.jpg
│ └── react-logo.png
└── scss
│ ├── black-dashboard-react.scss
│ └── black-dashboard-react
│ ├── custom
│ ├── _alerts.scss
│ ├── _badges.scss
│ ├── _buttons.scss
│ ├── _card.scss
│ ├── _checkboxes-radio.scss
│ ├── _dropdown.scss
│ ├── _fixed-plugin.scss
│ ├── _footer.scss
│ ├── _forms.scss
│ ├── _functions.scss
│ ├── _images.scss
│ ├── _input-group.scss
│ ├── _misc.scss
│ ├── _mixins.scss
│ ├── _modal.scss
│ ├── _navbar.scss
│ ├── _rtl.scss
│ ├── _sidebar-and-main-panel.scss
│ ├── _tables.scss
│ ├── _type.scss
│ ├── _utilities.scss
│ ├── _variables.scss
│ ├── _white-content.scss
│ ├── cards
│ │ ├── _card-chart.scss
│ │ ├── _card-map.scss
│ │ ├── _card-plain.scss
│ │ ├── _card-task.scss
│ │ └── _card-user.scss
│ ├── mixins
│ │ ├── _alert.scss
│ │ ├── _background-variant.scss
│ │ ├── _badges.scss
│ │ ├── _buttons.scss
│ │ ├── _dropdown.scss
│ │ ├── _forms.scss
│ │ ├── _icon.scss
│ │ ├── _inputs.scss
│ │ ├── _modals.scss
│ │ ├── _page-header.scss
│ │ ├── _popovers.scss
│ │ ├── _vendor-prefixes.scss
│ │ ├── _wizard.scss
│ │ └── opacity.scss
│ ├── utilities
│ │ ├── _backgrounds.scss
│ │ ├── _floating.scss
│ │ ├── _helper.scss
│ │ ├── _position.scss
│ │ ├── _shadows.scss
│ │ ├── _sizing.scss
│ │ ├── _spacing.scss
│ │ ├── _text.scss
│ │ └── _transform.scss
│ └── vendor
│ │ ├── _plugin-perfect-scrollbar.scss
│ │ └── _plugin-react-notification-alert.scss
│ └── react-differences
│ ├── _inputs.scss
│ └── react-differences.scss
├── components
├── BackgroundColorWrapper
│ └── BackgroundColorWrapper.js
├── FixedPlugin
│ └── FixedPlugin.js
├── Footer
│ └── Footer.js
├── Navbars
│ ├── AdminNavbar.js
│ └── RTLNavbar.js
├── Sidebar
│ └── Sidebar.js
└── ThemeWrapper
│ └── ThemeWrapper.js
├── contexts
├── BackgroundColorContext.js
└── ThemeContext.js
├── index.js
├── layouts
├── Admin
│ └── Admin.js
└── RTL
│ └── RTL.js
├── logo.svg
├── routes.js
├── variables
└── charts.js
└── views
├── Dashboard.js
├── Icons.js
├── Map.js
├── Notifications.js
├── Rtl.js
├── TableList.js
├── Typography.js
└── UserProfile.js
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Autocloser
2 | on: [issues]
3 | jobs:
4 | autoclose:
5 | runs-on: ubuntu-latest
6 | steps:
7 | - name: Issue auto-closer
8 | uses: roots/issue-closer-action@v1.1
9 | with:
10 | repo-token: ${{ secrets.GITHUB_TOKEN }}
11 | issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow our rules:\n\n
\n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/black-dashboard-react\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉 https://www.creative-tim.com/bundles\n👉 https://www.creative-tim.com\n\n\n \n\n"
12 | issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /node_modules
3 | package-lock.json
4 | /build
5 | .vscode
6 | .eslintcache
7 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | legacy-peer-deps=true
2 | auto-install-peers=true
3 | strict-peer-dependencies=false
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # CHANGELOG
2 |
3 | ## [1.2.2] 2023-05-22
4 |
5 | - Fix issues
6 | - Update dependencies
7 | - Fix installation issues
8 |
9 | ## [1.2.1] 2022-06-29
10 |
11 | - Update dependencies
12 | - Migrate from node-sass to sass
13 |
14 | ## [1.2.0] 2020-12-11
15 |
16 | ### Bug fixing
17 |
18 | - Added hooks support
19 | - https://github.com/creativetimofficial/black-dashboard-react/issues/19
20 | - https://github.com/creativetimofficial/black-dashboard-react/issues/17
21 |
22 | ### Major style changes
23 |
24 | - All Bootstrap imports from `src/assets/scss/black-dashboard-react/bootstrap` have been changed with imports from `node_modules` from `Bootstrap`
25 |
26 | ### Deleted components
27 |
28 | ### Added components
29 |
30 | ### Deleted dependencies
31 |
32 | - history (instead of using `history`, we'll be using `BrowserRouter` from `react-router-dom`)
33 | - @types/googlemaps
34 | - @types/react
35 | - @types/markerclustererplus
36 | - react-google-maps (Instead of it, we're going to use simple plain JS Google maps)
37 |
38 | ### Added dependencies
39 |
40 | - node-sass-package-importer@5.3.2 (for importing `Bootstrap` from `node_modules`)
41 | - bootstrap@4.5.3 (instead of using downloaded zip of `Bootstrap`, we'll use it from `node_modules`)
42 | - jquery@3.5.1 (to stop `Bootstrap` warning on a clean install)
43 |
44 | ### Updated dependencies
45 |
46 | ```
47 | @fortawesome/fontawesome-free 5.13.0 → 5.15.1
48 | chart.js 2.9.3 → 2.9.4
49 | node-sass 4.13.1 → 4.14.1
50 | react 16.13.1 → 17.0.1
51 | react-chartjs-2 2.9.0 → 2.11.1
52 | react-dom 16.13.1 → 17.0.1
53 | react-notification-alert 0.0.12 → 0.0.13
54 | react-router-dom 5.1.2 → 5.2.0
55 | react-scripts 3.4.1 → 4.0.1
56 | reactstrap 8.4.1 → 8.7.1
57 | eslint-plugin-flowtype 3.13.0 → 5.2.0
58 | typescript 3.8.3 → 4.1.2
59 | ```
60 |
61 | ### Important Notes
62 |
63 | **The jQuery and TypeScript dependencies are installed only to stop console warnings on install. They are not actually used in our product. So the product is not based on jQuery, and it is not based on TypeScript!**
64 |
65 | ### Warning
66 |
67 | _Some warnings may appear when running the installation command, but they do not affect the UI or the functionality of the product._
68 | _The following warnings will appear when running the installation command, but they do not affect the UI or the functionality of the product (they will be solved in our next update - they come from the plugins that we are using, and they haven't yet upgraded to the latest React version):_
69 |
70 | ```
71 | npm WARN react-popper@1.3.7 requires a peer of react@0.14.x || ^15.0.0 || ^16.0.0 but none is installed. You must install peer dependencies yourself.
72 | npm WARN create-react-context@0.3.0 requires a peer of react@^0.14.0 || ^15.0.0 || ^16.0.0 but none is installed. You must install peer dependencies yourself.
73 | ```
74 |
75 | Happy Hacking!
76 |
77 | ## [1.1.0] 2020-03-13
78 |
79 | ### Bug fixing
80 |
81 | - Github issues:
82 | - https://github.com/creativetimofficial/black-dashboard-react/issues/8
83 | - https://github.com/creativetimofficial/black-dashboard-react/issues/7
84 | - https://github.com/creativetimofficial/black-dashboard-react/issues/6 (not really an issue, but was old and needed to close it)
85 | - https://github.com/creativetimofficial/black-dashboard-react/issues/4
86 |
87 | ### Major style changes
88 |
89 | ### Deleted components
90 |
91 | ### Added components
92 |
93 | ### Deleted dependencies
94 |
95 | - bootstrap (styles are already added inside the scss folder)
96 |
97 | ### Added dependencies
98 |
99 | - To stop consolde warnings on installation:
100 | - eslint-plugin-flowtype@3.13.0
101 | - @types/markerclustererplus@2.1.33
102 | - @types/googlemaps@3.39.3
103 | - typescript@3.8.3
104 | - For Creative Tim copyrights
105 | - gulp@4.0.2
106 | - gulp-append-prepend@1.0.8
107 |
108 | ### Updated dependencies
109 |
110 | ```
111 | @types/react 16.4.16 → 16.9.23
112 | chart.js ^2.7.2 → 2.9.3
113 | history 4.7.2 → 4.10.1
114 | node-sass 4.9.3 → 4.13.1
115 | perfect-scrollbar 1.4.0 → 1.5.0
116 | prop-types ^15.6.2 → 15.7.2
117 | react 16.5.2 → 16.13.0
118 | react-chartjs-2 ^2.7.4 → 2.9.0
119 | react-dom 16.5.2 → 16.13.0
120 | react-notification-alert 0.0.8 → 0.0.12
121 | react-router-dom 4.3.1 → 5.1.2
122 | react-scripts 2.0.4 → 3.4.0
123 | reactstrap 6.5.0 → 8.4.1
124 | ```
125 |
126 | ### Warning
127 |
128 | **There are some errors that come from the react-google-maps components, since they are using old React v16 syntax, this, at the moment does not affect the UI or the functionality of the product. If the issue will perssit in React v17, we will drop the usage of these components and replace them with other maps components. The following warnings on installation could not be solved, due to some of our dependencies, however, they do not affect the functionality or the UI of the product:**
129 |
130 | ```
131 | npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
132 | npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
133 | npm WARN deprecated popper.js@1.16.1: Popper changed home, find its new releases at @popperjs/core
134 | ```
135 |
136 | **Also, the above, are only present in development, and not in production.**
137 |
138 | ## [1.0.0] 2018-11-29
139 |
140 | ### Original Release
141 |
142 | - Added Reactstrap as base framework
143 | - Added design from PRODUCT NAME by Creative Tim
144 |
--------------------------------------------------------------------------------
/Documentation/documentation.html:
--------------------------------------------------------------------------------
1 |
20 |
21 |
22 |
23 |
24 |
28 |
33 |
34 |
35 | Components Documentation - Black Dashboard React by Creative Tim
36 |
37 |
38 |
42 |
46 |
47 |
48 |
49 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
73 |
81 |
82 |
83 |
84 |
85 |
98 |
99 |
100 |
129 |
130 |
150 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
8 |
9 |
14 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Creative Tim
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/genezio.yaml:
--------------------------------------------------------------------------------
1 | name: black-dashboard-react
2 | region: us-east-1
3 | frontend:
4 | # Specifies the path of your code.
5 | path: .
6 | # Specifies the folder where the build is located.
7 | # This is the folder that will be deployed.
8 | publish: build
9 | # Scripts will run in the specified `path` folder.
10 | scripts:
11 | # The command to build your frontend project. This is custom to your project.
12 | # It must to populate the specified `publish` folder with a `index.html` file.
13 | deploy:
14 | - npm install --legacy-peer-deps
15 | - npm run build
16 | yamlVersion: 2
--------------------------------------------------------------------------------
/github-assets/angular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/angular.png
--------------------------------------------------------------------------------
/github-assets/black-dashboard-react.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/black-dashboard-react.gif
--------------------------------------------------------------------------------
/github-assets/chrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/chrome.png
--------------------------------------------------------------------------------
/github-assets/dashboard-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/dashboard-page.png
--------------------------------------------------------------------------------
/github-assets/edge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/edge.png
--------------------------------------------------------------------------------
/github-assets/firefox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/firefox.png
--------------------------------------------------------------------------------
/github-assets/html.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/html.png
--------------------------------------------------------------------------------
/github-assets/maps-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/maps-page.png
--------------------------------------------------------------------------------
/github-assets/notifications-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/notifications-page.png
--------------------------------------------------------------------------------
/github-assets/opera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/opera.png
--------------------------------------------------------------------------------
/github-assets/react.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/github-assets/safari.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/safari.png
--------------------------------------------------------------------------------
/github-assets/table-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/table-page.png
--------------------------------------------------------------------------------
/github-assets/user-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/user-page.png
--------------------------------------------------------------------------------
/github-assets/vuejs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/github-assets/vuejs.png
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": "src",
4 | "paths": {
5 | "*": ["src/*"]
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "black-dashboard-react",
3 | "version": "1.2.2",
4 | "private": true,
5 | "homepage": "https://demos.creative-tim.com/black-dashboard-react/#/admin/dashboard",
6 | "dependencies": {
7 | "@fortawesome/fontawesome-free": "6.4.0",
8 | "ajv": "^8.16.0",
9 | "bootstrap": "4.6.2",
10 | "chart.js": "3.9.1",
11 | "classnames": "2.3.2",
12 | "perfect-scrollbar": "1.5.5",
13 | "prop-types": "15.8.1",
14 | "react": ">=16.8.0",
15 | "react-chartjs-2": "3.3.0",
16 | "react-dom": ">=16.8.0",
17 | "react-notification-alert": "0.0.13",
18 | "react-router-dom": "6.11.1",
19 | "react-scripts": "5.0.1",
20 | "sass": "1.62.1"
21 | },
22 | "scripts": {
23 | "start": "react-scripts start",
24 | "build": "cross-env PUBLIC_URL=/ cross-env CI=false react-scripts build",
25 | "test": "react-scripts test --env=jsdom",
26 | "eject": "react-scripts eject",
27 | "install:clean": "rm -rf node_modules/ && rm -rf package-lock.json && npm install && npm start",
28 | "compile-scss": "sass src/assets/scss/black-dashboard-react.scss src/assets/css/black-dashboard-react.css",
29 | "minify-scss": "sass src/assets/scss/black-dashboard-react.scss src/assets/css/black-dashboard-react.min.css --style compressed"
30 | },
31 | "eslintConfig": {
32 | "extends": "react-app"
33 | },
34 | "peerDependencies": {
35 | "react": ">=16.8.0",
36 | "react-dom": ">=16.8.0"
37 | },
38 | "browserslist": [
39 | ">0.2%",
40 | "not dead",
41 | "not ie <= 11",
42 | "not op_mini all"
43 | ],
44 | "optionalDependencies": {
45 | "eslint-plugin-flowtype": "8.0.3",
46 | "reactstrap": "8.10.1"
47 | },
48 | "devDependencies": {
49 | "cross-env": "^7.0.3",
50 | "typescript": "5.0.4"
51 | },
52 | "overrides": {
53 | "svgo": "3.0.2"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/public/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/public/apple-icon.png
--------------------------------------------------------------------------------
/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/public/favicon.png
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
20 |
21 |
22 |
23 |
24 |
28 |
29 |
33 |
34 |
40 |
45 |
54 |
55 |
59 | Black Dashboard React by Creative Tim
60 |
61 |
62 |
63 | You need to enable JavaScript to run this app.
64 |
65 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "start_url": "./index.html",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/src/assets/demo/demo.css:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | .tim-row {
19 | margin-bottom: 20px;
20 | }
21 |
22 | .tim-white-buttons {
23 | background-color: #777777;
24 | }
25 |
26 | .typography-line {
27 | padding-left: 25%;
28 | margin-bottom: 35px;
29 | position: relative;
30 | display: block;
31 | width: 100%;
32 | }
33 |
34 | .typography-line span {
35 | bottom: 10px;
36 | color: #c0c1c2;
37 | display: block;
38 | font-weight: 400;
39 | font-size: 13px;
40 | line-height: 13px;
41 | left: 0;
42 | position: absolute;
43 | width: 260px;
44 | text-transform: none;
45 | }
46 |
47 | .tim-row {
48 | padding-top: 60px;
49 | }
50 |
51 | .tim-row h3 {
52 | margin-top: 0;
53 | }
54 |
55 | .offline-doc .page-header {
56 | display: flex;
57 | align-items: center;
58 | }
59 |
60 | .offline-doc .footer {
61 | position: absolute;
62 | width: 100%;
63 | background: transparent;
64 | bottom: 0;
65 | color: #fff;
66 | z-index: 1;
67 | padding-left: 0;
68 | }
69 |
70 | @media all and (min-width: 992px) {
71 | .sidebar .nav > li.active-pro {
72 | position: absolute;
73 | width: 100%;
74 | bottom: 10px;
75 | }
76 | }
77 |
78 | .card.card-upgrade .card-category {
79 | max-width: 530px;
80 | margin: 0 auto;
81 | }
82 |
83 | .offline-doc .page-header {
84 | min-height: 100vh;
85 | max-height: 999px;
86 | padding: 0;
87 | color: #ffffff;
88 | position: relative;
89 | }
90 | .offline-doc .page-header .page-header-image {
91 | position: absolute;
92 | background-size: cover;
93 | background-position: center center;
94 | width: 100%;
95 | height: 100%;
96 | z-index: -1;
97 | }
98 | .offline-doc .page-header .content-center {
99 | position: absolute;
100 | top: 50%;
101 | left: 50%;
102 | z-index: 2;
103 | -ms-transform: translate(-50%, -50%);
104 | -webkit-transform: translate(-50%, -50%);
105 | transform: translate(-50%, -50%);
106 | text-align: center;
107 | color: #ffffff;
108 | padding: 0 15px;
109 | width: 100%;
110 | max-width: 880px;
111 | }
112 | .offline-doc .page-header footer {
113 | position: absolute;
114 | bottom: 0;
115 | width: 100%;
116 | }
117 | .offline-doc .page-header .container {
118 | height: 100%;
119 | z-index: 1;
120 | }
121 | .offline-doc .page-header .category,
122 | .offline-doc .page-header .description {
123 | color: rgba(255, 255, 255, 0.8);
124 | }
125 | .offline-doc .page-header.page-header-small {
126 | min-height: 60vh;
127 | max-height: 440px;
128 | }
129 | .offline-doc .page-header.page-header-mini {
130 | min-height: 40vh;
131 | max-height: 340px;
132 | }
133 | .offline-doc .page-header .title {
134 | margin-bottom: 15px;
135 | }
136 | .offline-doc .page-header .title + h4 {
137 | margin-top: 10px;
138 | }
139 | .offline-doc .page-header:after,
140 | .offline-doc .page-header:before {
141 | position: absolute;
142 | z-index: 0;
143 | width: 100%;
144 | height: 100%;
145 | display: block;
146 | left: 0;
147 | top: 0;
148 | content: "";
149 | }
150 | .offline-doc .page-header:before {
151 | background-color: rgba(0, 0, 0, 0.8);
152 | }
153 |
--------------------------------------------------------------------------------
/src/assets/fonts/nucleo.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/fonts/nucleo.eot
--------------------------------------------------------------------------------
/src/assets/fonts/nucleo.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/fonts/nucleo.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/nucleo.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/fonts/nucleo.woff
--------------------------------------------------------------------------------
/src/assets/fonts/nucleo.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/fonts/nucleo.woff2
--------------------------------------------------------------------------------
/src/assets/img/anime3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/anime3.png
--------------------------------------------------------------------------------
/src/assets/img/anime6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/anime6.png
--------------------------------------------------------------------------------
/src/assets/img/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/apple-icon.png
--------------------------------------------------------------------------------
/src/assets/img/bg5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/bg5.jpg
--------------------------------------------------------------------------------
/src/assets/img/default-avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/default-avatar.png
--------------------------------------------------------------------------------
/src/assets/img/emilyz.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/emilyz.jpg
--------------------------------------------------------------------------------
/src/assets/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/favicon.png
--------------------------------------------------------------------------------
/src/assets/img/header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/header.jpg
--------------------------------------------------------------------------------
/src/assets/img/img_3115.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/img_3115.jpg
--------------------------------------------------------------------------------
/src/assets/img/james.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/james.jpg
--------------------------------------------------------------------------------
/src/assets/img/mike.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/mike.jpg
--------------------------------------------------------------------------------
/src/assets/img/react-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/creativetimofficial/black-dashboard-react/26b59be1f1e5e3111f67461ebae393c31f95fa50/src/assets/img/react-logo.png
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react.scss:
--------------------------------------------------------------------------------
1 | /*
2 | =========================================================
3 | * Black Dashboard React v1.2.0 based on Black Dashboard - v1.2.0
4 | =========================================================
5 |
6 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
7 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
8 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
9 |
10 | * Coded by Creative Tim
11 |
12 | =========================================================
13 |
14 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
15 |
16 | */
17 |
18 | // Core
19 |
20 | @import "black-dashboard-react/custom/functions";
21 | @import "../../../node_modules/bootstrap/scss/functions";
22 |
23 | @import "black-dashboard-react/custom/variables";
24 | @import "../../../node_modules/bootstrap/scss/variables";
25 |
26 | @import "black-dashboard-react/custom/mixins";
27 | @import "../../../node_modules/bootstrap/scss/mixins";
28 |
29 | // Bootstrap components
30 |
31 | @import "../../../node_modules/bootstrap/scss/root";
32 | @import "../../../node_modules/bootstrap/scss/reboot";
33 | @import "../../../node_modules/bootstrap/scss/type";
34 | @import "../../../node_modules/bootstrap/scss/images";
35 | @import "../../../node_modules/bootstrap/scss/code";
36 | @import "../../../node_modules/bootstrap/scss/grid";
37 | @import "../../../node_modules/bootstrap/scss/tables";
38 | @import "../../../node_modules/bootstrap/scss/forms";
39 | @import "../../../node_modules/bootstrap/scss/buttons";
40 | @import "../../../node_modules/bootstrap/scss/transitions";
41 | @import "../../../node_modules/bootstrap/scss/dropdown";
42 | @import "../../../node_modules/bootstrap/scss/button-group";
43 | @import "../../../node_modules/bootstrap/scss/input-group";
44 | @import "../../../node_modules/bootstrap/scss/custom-forms";
45 | @import "../../../node_modules/bootstrap/scss/nav";
46 | @import "../../../node_modules/bootstrap/scss/navbar";
47 | @import "../../../node_modules/bootstrap/scss/card";
48 | @import "../../../node_modules/bootstrap/scss/breadcrumb";
49 | @import "../../../node_modules/bootstrap/scss/pagination";
50 | @import "../../../node_modules/bootstrap/scss/badge";
51 | @import "../../../node_modules/bootstrap/scss/jumbotron";
52 | @import "../../../node_modules/bootstrap/scss/alert";
53 | @import "../../../node_modules/bootstrap/scss/progress";
54 | @import "../../../node_modules/bootstrap/scss/media";
55 | @import "../../../node_modules/bootstrap/scss/list-group";
56 | @import "../../../node_modules/bootstrap/scss/close";
57 | @import "../../../node_modules/bootstrap/scss/modal";
58 | @import "../../../node_modules/bootstrap/scss/tooltip";
59 | @import "../../../node_modules/bootstrap/scss/popover";
60 | @import "../../../node_modules/bootstrap/scss/carousel";
61 | @import "../../../node_modules/bootstrap/scss/utilities";
62 | @import "../../../node_modules/bootstrap/scss/print";
63 |
64 | // Custom components
65 |
66 | @import "black-dashboard-react/custom/alerts.scss";
67 | @import "black-dashboard-react/custom/badges.scss";
68 | @import "black-dashboard-react/custom/buttons.scss";
69 | @import "black-dashboard-react/custom/dropdown.scss";
70 | @import "black-dashboard-react/custom/footer.scss";
71 | @import "black-dashboard-react/custom/forms.scss";
72 | @import "black-dashboard-react/custom/images.scss";
73 | @import "black-dashboard-react/custom/modal.scss";
74 | @import "black-dashboard-react/custom/navbar.scss";
75 | @import "black-dashboard-react/custom/type.scss";
76 | @import "black-dashboard-react/custom/tables";
77 | @import "black-dashboard-react/custom/checkboxes-radio";
78 | @import "black-dashboard-react/custom/fixed-plugin";
79 | @import "black-dashboard-react/custom/sidebar-and-main-panel.scss";
80 | @import "black-dashboard-react/custom/misc.scss";
81 | @import "black-dashboard-react/custom/rtl.scss";
82 | @import "black-dashboard-react/custom/input-group.scss";
83 |
84 | // Vendor / Plugins
85 |
86 | @import "black-dashboard-react/custom/vendor/plugin-perfect-scrollbar.scss";
87 | @import "black-dashboard-react/custom/vendor/plugin-react-notification-alert.scss";
88 |
89 | // light mode
90 |
91 | @import "black-dashboard-react/custom/white-content.scss";
92 |
93 | // Cards
94 |
95 | @import "black-dashboard-react/custom/card";
96 | @import "black-dashboard-react/custom/cards/card-chart";
97 | @import "black-dashboard-react/custom/cards/card-map";
98 | @import "black-dashboard-react/custom/cards/card-user";
99 | @import "black-dashboard-react/custom/cards/card-task";
100 | @import "black-dashboard-react/custom/cards/card-plain";
101 |
102 | // React differences
103 | @import "black-dashboard-react/react-differences/react-differences";
104 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_alerts.scss:
--------------------------------------------------------------------------------
1 | .alert{
2 | border: 0;
3 | color: $white;
4 |
5 | .alert-link{
6 | color: $white;
7 | }
8 |
9 | &.alert-success{
10 | background-color: darken($success, 10%);
11 | }
12 |
13 | i.fa,
14 | i.tim-icons{
15 | font-size: $font-paragraph;
16 | }
17 |
18 | .close{
19 | color: $white;
20 | opacity: .9;
21 | text-shadow: none;
22 | line-height: 0;
23 | outline: 0;
24 | &::after{
25 | display: inline-block;
26 | font: normal normal normal 1em/1 'Nucleo';
27 | vertical-align: middle;
28 | speak: none;
29 | text-transform: none;
30 | -webkit-font-smoothing: antialiased;
31 | font-size: 1rem;
32 | content: "\ea48"
33 | }
34 | span {
35 | display: none !important;
36 | }
37 | }
38 |
39 | span[data-notify="icon"]{
40 | font-size: 22px;
41 | display: block;
42 | left: 19px;
43 | position: absolute;
44 | top: 50%;
45 | margin-top: -11px;
46 | }
47 |
48 | button.close{
49 | position: absolute;
50 | right: 15px;
51 | top: 50%;
52 | margin-top: -13px;
53 | width: 25px;
54 | height: 25px;
55 | padding: 3px;
56 | }
57 |
58 | .close ~ span{
59 | display: block;
60 | max-width: 89%;
61 | }
62 |
63 | &.alert-with-icon{
64 | padding-left: 65px;
65 | }
66 | }
67 |
68 | .alert-dismissible {
69 | padding-right: 1.25rem;
70 | .close {
71 |
72 | &:hover,
73 | &:focus {
74 | color: rgba($white, .9);
75 | opacity: 1 !important;
76 | }
77 |
78 | @include media-breakpoint-down(xs) {
79 | top: 1rem;
80 | right: .5rem;
81 | }
82 |
83 | &>span:not(.sr-only) {
84 | font-size: 1.5rem;
85 | background-color: transparent;
86 | color: rgba($white, .6);
87 | }
88 |
89 | &:hover,
90 | &:focus {
91 | &>span:not(.sr-only) {
92 | background-color: transparent;
93 | color: rgba($white, .9);
94 | }
95 | }
96 | }
97 | &.animated {
98 | z-index: 9999;
99 | .close {
100 | right: 10px;
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_badges.scss:
--------------------------------------------------------------------------------
1 | .badge + .badge {
2 | margin-left: 5px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_buttons.scss:
--------------------------------------------------------------------------------
1 | .btn,
2 | .navbar .navbar-nav > a.btn{
3 | border-width: $border-thick;
4 | border: none;
5 | position: relative;
6 | overflow: hidden;
7 | margin:4px 1px;
8 | border-radius: $border-radius-lg;
9 | cursor: pointer;
10 |
11 | @include btn-styles($default, $default-states);
12 |
13 | &:hover,
14 | &:focus{
15 | @include opacity(1);
16 | outline: 0 !important;
17 | }
18 | &:active,
19 | &.active,
20 | .open > &.dropdown-toggle {
21 | @include box-shadow(none);
22 | outline: 0 !important;
23 | }
24 |
25 | .badge{
26 | margin: 0;
27 | }
28 |
29 | &.btn-icon {
30 | // see above for color variations
31 | height: $icon-size-regular;
32 | min-width: $icon-size-regular;
33 | width: $icon-size-regular;
34 | padding: 0;
35 | font-size: $icon-font-size-regular;
36 | overflow: hidden;
37 | position: relative;
38 | line-height: normal;
39 |
40 | &.btn-simple{
41 | padding: 0;
42 | }
43 |
44 | &.btn-sm{
45 | height: $icon-size-sm;
46 | min-width: $icon-size-sm;
47 | width: $icon-size-sm;
48 |
49 | .fa,
50 | .far,
51 | .fas,
52 | .tim-icons{
53 | font-size: $icon-font-size-sm;
54 | }
55 | }
56 |
57 | &.btn-lg{
58 | height: $icon-size-lg;
59 | min-width: $icon-size-lg;
60 | width: $icon-size-lg;
61 |
62 | .fa,
63 | .far,
64 | .fas,
65 | .tim-icons{
66 | font-size: $icon-font-size-lg;
67 | }
68 | }
69 |
70 | &:not(.btn-footer) .tim-icons,
71 | &:not(.btn-footer) .fa,
72 | &:not(.btn-footer) .far,
73 | &:not(.btn-footer) .fas{
74 | position: absolute;
75 | font-size: 1em;
76 | top: 50%;
77 | left: 50%;
78 | transform: translate(-12px, -12px);
79 | line-height: 1.5626rem;
80 | width: 24px;
81 | }
82 |
83 | }
84 |
85 | &:not(.btn-icon) .tim-icons{
86 | position: relative;
87 | top: 1px;
88 | }
89 |
90 | span{
91 | position: relative;
92 | display: block;
93 | }
94 |
95 | &.btn-link.dropdown-toggle {
96 | color: $dark-gray;
97 | }
98 |
99 | &.dropdown-toggle:after {
100 | margin-left: 30px !important;
101 | }
102 | }
103 |
104 | // Apply the mixin to the buttons
105 | // .btn-default { @include btn-styles($default-color, $default-states-color); }
106 | .btn-primary { @include btn-styles($primary, $primary-states);
107 |
108 | }
109 | .btn-success { @include btn-styles($success, $success-states);
110 |
111 | }
112 | .btn-info { @include btn-styles($info, $info-states);
113 |
114 | }
115 | .btn-warning { @include btn-styles($warning, $warning-states);
116 | &:not(:disabled):not(.disabled):active{
117 | color: $white;
118 | }
119 | }
120 | .btn-danger { @include btn-styles($danger, $danger-states);
121 |
122 | }
123 | .btn-neutral { @include btn-styles($white, $white); }
124 |
125 | .btn{
126 | &:disabled,
127 | &[disabled],
128 | &.disabled{
129 | @include opacity(.5);
130 | pointer-events: none;
131 | }
132 | }
133 | .btn-simple{
134 | border: $border;
135 | border-color: $default;
136 | box-shadow: none;
137 | padding: $padding-btn-vertical - 1 $padding-round-horizontal - 1;
138 | background-color: $transparent-bg;
139 | }
140 |
141 | .btn-simple,
142 | .btn-link{
143 | &.disabled,
144 | &:disabled,
145 | &[disabled],
146 | fieldset[disabled] & {
147 | &,
148 | &:hover,
149 | &:focus,
150 | &.focus,
151 | &:active,
152 | &.active {
153 | background: $transparent-bg;
154 | }
155 | }
156 | }
157 |
158 | .btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active{
159 | box-shadow: 2px 2px 6px rgba(0,0,0,.4);
160 | }
161 | .btn-link{
162 | border: $none;
163 | box-shadow: none;
164 | padding: $padding-base-vertical $padding-base-horizontal;
165 | background: $transparent-bg;
166 | color: $gray-300;
167 | font-weight: $font-weight-bold;
168 |
169 | &:hover {
170 | box-shadow: none !important;
171 | transform: none !important;
172 | }
173 | }
174 |
175 | .btn-lg{
176 | @include btn-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-base, $border-radius-lg);
177 | }
178 | .btn-sm{
179 | @include btn-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-base, $border-radius-sm);
180 | }
181 |
182 | .btn-wd {
183 | min-width: 140px;
184 | }
185 | .btn-group.select{
186 | width: 100%;
187 | }
188 |
189 | .btn-group {
190 | .btn.active {
191 | box-shadow: 2px 2px 6px rgba(0,0,0,.4);
192 | transform: translateY(-1px);
193 | -webkit-transform: translateY(-1px);
194 | }
195 | }
196 |
197 |
198 | .btn-group.select .btn{
199 | text-align: left;
200 | }
201 | .btn-group.select .caret{
202 | position: absolute;
203 | top: 50%;
204 | margin-top: -1px;
205 | right: 8px;
206 | }
207 |
208 | .btn-group .btn.active {
209 | box-shadow: 2px 2px 6px rgba(0,0,0,.4);
210 | transform: translateY(-1px);
211 | -webkit-transform: translateY(-1px);
212 | }
213 |
214 | .btn-round{
215 | border-width: $border-thin;
216 | border-radius: $btn-round-radius;
217 |
218 | &.btn-simple{
219 | padding: $padding-btn-vertical - 1 $padding-round-horizontal - 1;
220 | }
221 | }
222 |
223 | .no-caret {
224 | &.dropdown-toggle::after {
225 | display: none;
226 | }
227 | }
228 |
229 | .btn-secondary:not(:disabled):not(.disabled):active,
230 | .btn-secondary:not(:disabled):not(.disabled).active,
231 | .show > .btn-secondary.dropdown-toggle {
232 | color: $white;
233 | }
234 |
235 | .btn-group label.btn.active {
236 | transform: translateY(0);
237 | -webkit-transform: translateY(0);
238 | }
239 |
240 | .btn + .btn {
241 | margin-left: 5px;
242 | }
243 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_card.scss:
--------------------------------------------------------------------------------
1 | .card{
2 | background: $card-black-background;
3 | border: 0;
4 | position: relative;
5 | width: 100%;
6 | margin-bottom: 30px;
7 | box-shadow: $box-shadow;
8 |
9 |
10 | label{
11 | color: rgba($white, 0.6);
12 | }
13 |
14 | .card-title {
15 | margin-bottom: .75rem;
16 | }
17 |
18 | .card-body{
19 | padding: 15px;
20 |
21 | &.table-full-width{
22 | padding-left: 0;
23 | padding-right: 0;
24 | }
25 |
26 | .card-title{
27 | color: $white;
28 | text-transform: inherit;
29 | font-weight: $font-weight-light;
30 | margin-bottom: .75rem;
31 | }
32 |
33 | .card-description, .card-category{
34 | color: rgba($white, 0.6);
35 | }
36 |
37 | }
38 |
39 | .card-header{
40 | &:not([data-background-color]){
41 | background-color: transparent;
42 | }
43 | padding: 15px 15px 0;
44 | border: 0;
45 | color: rgba($white,0.8);
46 |
47 | .card-title{
48 | color: $white;
49 | font-weight: 100;
50 | }
51 |
52 | .card-category{
53 | color: $dark-gray;
54 | margin-bottom: 5px;
55 | font-weight: 300;
56 | }
57 | }
58 |
59 | .map{
60 | border-radius: $border-radius-sm;
61 |
62 | &.map-big{
63 | height: 420px;
64 | }
65 | }
66 |
67 | &.card-white{
68 | background: $white;
69 |
70 | .card-title{
71 | color: $black;
72 | }
73 | .card-category, .stats{
74 | color: $card-stats-gray;
75 | }
76 |
77 | //style for inputs
78 |
79 | @include form-control-placeholder(rgba($black,0.4), 1);
80 | .has-danger{
81 | .form-control, .input-group-prepend .input-group-text{
82 | border-color: $danger-states;
83 | }
84 | }
85 |
86 | .input-group-prepend .input-group-text{
87 | border-color: rgba($black-states,0.2);
88 | color: $black-states;
89 | }
90 |
91 | .form-control{
92 | color: $black;
93 | border-color: rgba($black-states,0.2);
94 | &:focus{
95 | border-color: $primary;
96 | }
97 | }
98 | label:not(.btn){
99 | color: $default;
100 | }
101 |
102 | .form-group.no-border,
103 | .input-group.no-border {
104 | .form-control,
105 | .form-control + .input-group-prepend .input-group-text,
106 | .form-control + .input-group-append .input-group-text,
107 | .input-group-prepend .input-group-text,
108 | .input-group-append .input-group-text{
109 | background-color: $opacity-gray-3;
110 | &:focus,
111 | &:active,
112 | &:active{
113 | background-color: $opacity-gray-5;
114 | }
115 | }
116 |
117 | .form-control {
118 | &:focus {
119 | & + .input-group-prepend .input-group-text,
120 | & + .input-group-append .input-group-text{
121 | background-color: $transparent-bg;
122 | }
123 | }
124 | }
125 |
126 |
127 | }
128 |
129 | .input-group[disabled]{
130 | .input-group-prepend .input-group-text,
131 | .input-group-append .input-group-text{
132 | background-color: $black;
133 | }
134 | }
135 |
136 | .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control{
137 | background: $light-gray;
138 | border-color: rgba($black-states,0.3);
139 | }
140 |
141 | .input-group-focus{
142 | .input-group-prepend .input-group-text,
143 | .input-group-append .input-group-text,
144 | .form-control{
145 | background-color: $white;
146 | border-color: $primary;
147 | }
148 |
149 | &.no-border{
150 | .input-group-prepend .input-group-text,
151 | .input-group-append .input-group-text{
152 |
153 | background-color: $opacity-gray-5;
154 | }
155 | }
156 | }
157 | .input-group-prepend .input-group-text {
158 | border-right: none;
159 | }
160 |
161 | .input-group-append .input-group-text {
162 | border-left: none;
163 | }
164 |
165 | .has-danger .form-control:focus, .has-success.input-group-focus .input-group-append .input-group-text, .has-success.input-group-focus .input-group-prepend .input-group-text {
166 | border-color: $danger-states;
167 | }
168 |
169 | .has-success .form-control:focus, .has-success.input-group-focus .input-group-append .input-group-text, .has-success.input-group-focus .input-group-prepend .input-group-text {
170 | border-color: darken($success, 10%);
171 | }
172 | }
173 |
174 |
175 | &.card-plain {
176 | background: transparent;
177 | box-shadow: none;
178 | }
179 |
180 | .image{
181 | overflow: hidden;
182 | height: 200px;
183 | position: relative;
184 | }
185 |
186 | .avatar{
187 | width: 30px;
188 | height: 30px;
189 | overflow: hidden;
190 | border-radius: 50%;
191 | margin-bottom: 15px;
192 | }
193 |
194 | label{
195 | font-size: $font-size-sm;
196 | margin-bottom: 5px;
197 |
198 | }
199 |
200 | .card-footer{
201 | background-color: transparent;
202 | border: 0;
203 | padding: 15px;
204 |
205 |
206 | .stats{
207 | i{
208 | margin-right: 5px;
209 | position: relative;
210 |
211 | }
212 | }
213 |
214 | h6{
215 | margin-bottom: 0;
216 | padding: 7px 0;
217 | }
218 | }
219 | }
220 |
221 | .card-body{
222 | padding: $card-spacer-y;
223 | }
224 |
225 | @include media-breakpoint-down(sm) {
226 | .card.card-chart .card-header {
227 | .btn-group-toggle .tim-icons {
228 | font-size: .875rem;
229 | top: -1px;
230 | }
231 | }
232 | }
233 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_checkboxes-radio.scss:
--------------------------------------------------------------------------------
1 | .form-check{
2 | margin-top: .5rem;
3 | padding-left: 0;
4 | }
5 |
6 | .form-check .form-check-label{
7 | display: inline-block;
8 | position: relative;
9 | cursor: pointer;
10 | padding-left: 25px;
11 | line-height: 18px;
12 | margin-bottom: 0;
13 | -webkit-transition: color 0.3s linear;
14 | -moz-transition: color 0.3s linear;
15 | -o-transition: color 0.3s linear;
16 | -ms-transition: color 0.3s linear;
17 | transition: color 0.3s linear;
18 | }
19 | .radio .form-check-sign{
20 | padding-left: 28px;
21 | }
22 |
23 | .form-check-radio.form-check-inline .form-check-label {
24 | padding-left: 5px;
25 | margin-right: 10px;
26 | }
27 |
28 | .form-check .form-check-sign::before,
29 | .form-check .form-check-sign::after{
30 | content: " ";
31 | display: inline-block;
32 | position: absolute;
33 | width: 17px;
34 | height: 17px;
35 | left: 0;
36 | cursor: pointer;
37 | border-radius: 3px;
38 | top: 0;
39 | border: 1px solid darken($dark-gray,10%);
40 | -webkit-transition: opacity 0.3s linear;
41 | -moz-transition: opacity 0.3s linear;
42 | -o-transition: opacity 0.3s linear;
43 | -ms-transition: opacity 0.3s linear;
44 | transition: opacity 0.3s linear;
45 | }
46 |
47 | .form-check input[type="checkbox"]:checked + .form-check-sign::before,
48 | .form-check input[type="checkbox"]:checked + .form-check-sign::before{
49 | border: none;
50 | background-color: $primary;
51 | }
52 |
53 | .form-check .form-check-sign::after{
54 | font-family: 'nucleo';
55 | content: "\ea1b";
56 | top: 0px;
57 | text-align: center;
58 | font-size: 14px;
59 | opacity: 0;
60 | color: $white;
61 | font-weight: $font-weight-bold;
62 | border: 0;
63 | background-color: inherit;
64 | }
65 |
66 | .form-check.disabled .form-check-label,
67 | .form-check.disabled .form-check-label {
68 | color: $dark-gray;
69 | opacity: .5;
70 | cursor: not-allowed;
71 | }
72 |
73 | .form-check input[type="checkbox"],
74 | .radio input[type="radio"]{
75 | opacity: 0;
76 | position: absolute;
77 | visibility: hidden;
78 | }
79 | .form-check input[type="checkbox"]:checked + .form-check-sign::after{
80 | opacity: 1;
81 | font-size: 10px;
82 | margin-top: 0;
83 | }
84 |
85 |
86 | .form-check input[type="checkbox"]+ .form-check-sign::after{
87 | opacity: 0;
88 | font-size: 10px;
89 | margin-top: 0;
90 | }
91 |
92 | .form-control input[type="checkbox"]:disabled + .form-check-sign::before,
93 | .checkbox input[type="checkbox"]:disabled + .form-check-sign::after{
94 | cursor: not-allowed;
95 | }
96 |
97 | .form-check input[type="checkbox"]:disabled + .form-check-sign,
98 | .form-check input[type="radio"]:disabled + .form-check-sign{
99 | pointer-events: none;
100 | }
101 |
102 | .form-check-radio .form-check-label{
103 | padding-top: 3px;
104 | }
105 | .form-check-radio .form-check-sign::before,
106 | .form-check-radio .form-check-sign::after{
107 | content: " ";
108 | width: 18px;
109 | height: 18px;
110 | border-radius: 50%;
111 | border: 1px solid darken($dark-gray,10%);
112 | display: inline-block;
113 | position: absolute;
114 | left: 0px;
115 | top: 3px;
116 | padding: 1px;
117 | -webkit-transition: opacity 0.3s linear;
118 | -moz-transition: opacity 0.3s linear;
119 | -o-transition: opacity 0.3s linear;
120 | -ms-transition: opacity 0.3s linear;
121 | transition: opacity 0.3s linear;
122 | }
123 |
124 | .form-check-radio input[type="radio"] + .form-check-sign:after,
125 | .form-check-radio input[type="radio"] {
126 | opacity: 0;
127 | }
128 | .form-check-radio input[type="radio"]:checked + .form-check-sign::after {
129 | width: 6px;
130 | height: 6px;
131 | background-color: $primary;
132 | border-color: $primary;
133 | top: 9px;
134 | left: 6px;
135 | opacity: 1;
136 | }
137 |
138 | .form-check-radio input[type="radio"]:checked + .form-check-sign::before {
139 | border-color: $primary;
140 | }
141 |
142 |
143 | .form-check-radio input[type="radio"]:checked + .form-check-sign::after{
144 | opacity: 1;
145 | }
146 |
147 | .form-check-radio input[type="radio"]:disabled + .form-check-sign {
148 | color: $dark-gray;
149 | }
150 |
151 | .form-check-radio input[type="radio"]:disabled + .form-check-sign::before,
152 | .form-check-radio input[type="radio"]:disabled + .form-check-sign::after {
153 | color: $dark-gray;
154 | }
155 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_fixed-plugin.scss:
--------------------------------------------------------------------------------
1 | .fixed-plugin{
2 | position: fixed;
3 | right: 0;
4 | width: 64px;
5 | background: rgba(0,0,0,.3);
6 | z-index: 1031;
7 | border-radius: 8px 0 0 8px;
8 | text-align: center;
9 | top: 130px;
10 |
11 | li > a,
12 | .badge{
13 | transition: all .34s;
14 | -webkit-transition: all .34s;
15 | -moz-transition: all .34s;
16 | }
17 |
18 | .fa-cog{
19 | color: $white;
20 | padding: 10px;
21 | border-radius: 0 0 6px 6px;
22 | width: auto;
23 | }
24 |
25 | .dropdown-menu{
26 | right: 80px;
27 | left: auto !important;
28 | top: -52px !important;
29 | width: 290px;
30 | border-radius: 0.1875rem;
31 | padding: 0 10px;
32 | background: linear-gradient($black, $black-states);
33 | }
34 |
35 | .dropdown .dropdown-menu .tim-icons{
36 | top: 5px;
37 | }
38 |
39 | .dropdown-menu:after,
40 | .dropdown-menu:before{
41 | right: 10px;
42 | margin-left: auto;
43 | left: auto;
44 | }
45 |
46 | .fa-circle-thin{
47 | color: $white;
48 | }
49 |
50 | .active .fa-circle-thin{
51 | color: $active-blue;
52 | }
53 |
54 | .dropdown-menu > .active > a,
55 | .dropdown-menu > .active > a:hover,
56 | .dropdown-menu > .active > a:focus{
57 | color: $active-gray;
58 | text-align: center;
59 | }
60 |
61 | img{
62 | border-radius: 0;
63 | width: 100%;
64 | height: 100px;
65 | margin: 0 auto;
66 | }
67 |
68 | .dropdown-menu li > a:hover,
69 | .dropdown-menu li > a:focus{
70 | box-shadow: none;
71 | }
72 |
73 | .badge{
74 | border: 2px solid $white;
75 | border-radius: 50%;
76 | cursor: pointer;
77 | display: inline-block;
78 | height: 23px;
79 | margin-right: 5px;
80 | position: relative;
81 | width: 23px;
82 | }
83 |
84 | .badge.active,
85 | .badge:hover{
86 | border-color: $black-states;
87 | }
88 |
89 | .light-badge, .dark-badge{
90 | margin:0;
91 | border: 1px solid $info;
92 | &:hover{
93 | border: 1px solid $info;
94 | }
95 | }
96 |
97 | .light-badge{
98 | background: $white;
99 | &:hover{
100 | background: $white;
101 | }
102 | }
103 |
104 | .dark-badge{
105 | background: $black;
106 | &:hover{
107 | background: $black;
108 | }
109 | }
110 |
111 | h5{
112 | margin: 10px;
113 | }
114 |
115 | .dropdown-menu li{
116 | display: block;
117 | padding: 18px 2px;
118 | width: 25%;
119 | float: left;
120 | }
121 |
122 | li.adjustments-line,
123 | li.header-title,
124 | li.button-container{
125 | width: 100%;
126 | height: 50px;
127 | min-height: inherit;
128 | }
129 |
130 | li.button-container{
131 | height: auto;
132 |
133 | div{
134 | margin-bottom: 5px;
135 | }
136 | }
137 |
138 | #sharrreTitle{
139 | text-align: center;
140 | padding: 10px 0;
141 | height: 50px;
142 | }
143 |
144 | li.header-title{
145 | color: $white;
146 | height: 30px;
147 | line-height: 25px;
148 | font-size: 12px;
149 | font-weight: 600;
150 | text-align: center;
151 | text-transform: uppercase;
152 | }
153 |
154 | .adjustments-line{
155 |
156 | a{
157 | color: transparent;
158 |
159 | .badge-colors{
160 | position: relative;
161 | top: -2px;
162 | }
163 |
164 | a:hover,
165 | a:focus{
166 | color: transparent;
167 | }
168 | }
169 |
170 | .togglebutton{
171 | text-align: center;
172 |
173 | .label-switch{
174 | position: relative;
175 | left: -10px;
176 | font-size: $font-size-xs;
177 | color: $white;
178 |
179 | &.label-right{
180 | left: 10px;
181 | }
182 | }
183 |
184 | .toggle{
185 | margin-right: 0;
186 | }
187 | }
188 |
189 | .color-label{
190 | position: relative;
191 | top: -7px;
192 | font-size: $font-size-xs;
193 | color: $white;
194 | }
195 |
196 | .dropdown-menu > li.adjustments-line > a{
197 | padding-right: 0;
198 | padding-left: 0;
199 | border-bottom: 1px solid #ddd;
200 | border-radius: 0;
201 | margin: 0;
202 | }
203 | }
204 |
205 |
206 |
207 | .dropdown-menu{
208 | > li{
209 | & > a.img-holder{
210 | font-size: $font-paragraph;
211 | text-align: center;
212 | border-radius: 10px;
213 | background-color: $white;
214 | border: 3px solid $white;
215 | padding-left: 0;
216 | padding-right: 0;
217 | opacity: 1;
218 | cursor: pointer;
219 | display: block;
220 | max-height: 100px;
221 | overflow: hidden;
222 | padding: 0;
223 |
224 | img{
225 | margin-top: auto;
226 | }
227 | }
228 |
229 | a.switch-trigger:hover,
230 | & > a.switch-trigger:focus{
231 | background-color: transparent;
232 | }
233 |
234 | &:hover,
235 | &:focus{
236 | > a.img-holder{
237 | border-color: rgba(0, 187, 255, 0.53);;
238 | }
239 | }
240 | }
241 |
242 | > .active > a.img-holder,
243 | > .active > a.img-holder{
244 | border-color: $active-blue;
245 | background-color: $white;
246 | }
247 |
248 | }
249 |
250 | .btn-social{
251 | width: 50%;
252 | display: block;
253 | width: 48%;
254 | float: left;
255 | font-weight: 600;
256 | }
257 |
258 | .btn-social{
259 | i{
260 | margin-right: 5px;
261 | }
262 |
263 | &:first-child{
264 | margin-right: 2%;
265 | }
266 | }
267 |
268 | .dropdown{
269 | .dropdown-menu{
270 | -webkit-transform: translateY(-15%);
271 | -moz-transform: translateY(-15%);
272 | -o-transform: translateY(-15%);
273 | -ms-transform: translateY(-15%);
274 | transform: translateY(-15%);
275 | top: 27px;
276 | opacity: 0;
277 |
278 | transform-origin: 0 0;
279 |
280 | &:before{
281 | border-bottom: .4em solid rgba(0, 0, 0, 0);
282 | border-left: .4em solid rgba(0,0,0,0.2);
283 | border-top: .4em solid rgba(0,0,0,0);
284 | right: -16px;
285 | top: 46px;
286 | }
287 |
288 | &:after{
289 | border-bottom: .4em solid rgba(0, 0, 0, 0);
290 | border-left: .4em solid $black;
291 | border-top: .4em solid rgba(0,0,0,0);
292 | right: -16px;
293 | }
294 |
295 | &:before,
296 | &:after{
297 | content: "";
298 | display: inline-block;
299 | position: absolute;
300 | top: 74px;
301 | width: 16px;
302 | transform: translateY(-50%);
303 | -webkit-transform: translateY(-50%);
304 | -moz-transform: translateY(-50%);
305 | }
306 | }
307 |
308 | &.show .dropdown-menu{
309 | opacity: 1;
310 |
311 | -webkit-transform: translateY(-13%);
312 | -moz-transform: translateY(-13%);
313 | -o-transform: translateY(-13%);
314 | -ms-transform: translateY(-13%);
315 | transform: translateY(-13%);
316 |
317 | transform-origin: 0 0;
318 | }
319 | }
320 |
321 | .bootstrap-switch{
322 | margin:0;
323 | }
324 | }
325 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_footer.scss:
--------------------------------------------------------------------------------
1 | .footer{
2 | padding: 24px 0 24px 250px;
3 |
4 | [class*="container-"] {
5 | padding: 0;
6 | }
7 |
8 | .nav{
9 | display: inline-block;
10 | float: left;
11 | margin-bottom: 0;
12 | padding-left: 30px;
13 | list-style: none;
14 | }
15 |
16 | .nav-item{
17 | display: inline-block;
18 |
19 | &:first-child a {
20 | padding-left: 0;
21 | }
22 | }
23 |
24 | .nav-link {
25 | color: $white;
26 | padding: 0 $padding-base-vertical;
27 | font-size: $font-size-sm;
28 | text-transform: uppercase;
29 | text-decoration: none;
30 |
31 | &:hover{
32 | text-decoration: none;
33 | }
34 | }
35 |
36 |
37 |
38 | .copyright{
39 | font-size: $font-size-sm;
40 | line-height: 1.8;
41 | color: $white;
42 | }
43 |
44 | &:after{
45 | display: table;
46 | clear: both;
47 | content: " ";
48 | }
49 | }
50 |
51 |
52 | @media screen and (max-width: 991px){
53 | .footer {
54 | padding-left: 0px;
55 |
56 | .copyright {
57 | text-align: right;
58 | margin-right: 15px;
59 | }
60 | }
61 | }
62 |
63 | @media screen and (min-width: 992px){
64 | .footer {
65 | .copyright {
66 | float: right;
67 | padding-right: 30px;
68 | }
69 | }
70 | }
71 |
72 | @media screen and (max-width: 768px){
73 | .footer {
74 | nav {
75 | display: block;
76 | margin-bottom: 5px;
77 | float: none;
78 | }
79 | }
80 | }
81 |
82 | @media screen and (max-width: 576px){
83 | .footer {
84 | text-align: center;
85 | .copyright {
86 | text-align: center;
87 | }
88 |
89 | .nav{
90 | float: none;
91 | padding-left: 0;
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_forms.scss:
--------------------------------------------------------------------------------
1 | /* Form controls */
2 | @include form-control-placeholder(#6c757c, 1);
3 |
4 | .form-control{
5 | border-color: lighten($black,5%);
6 | border-radius: $border-radius-lg;
7 | font-size: $font-size-sm;
8 | @include transition-input-focus-color();
9 |
10 |
11 | &:focus{
12 | border-color: $primary;
13 | background-color: $input-bg;
14 | @include box-shadow(none);
15 |
16 | & + .input-group-append .input-group-text,
17 | & ~ .input-group-append .input-group-text,
18 | & + .input-group-prepend .input-group-text,
19 | & ~ .input-group-prepend .input-group-text{
20 | border: 1px solid $primary;
21 | border-left: none;
22 | background-color: $transparent-bg;
23 | }
24 | }
25 |
26 | .has-success &,
27 | .has-error &,
28 | .has-success &:focus,
29 | .has-error &:focus{
30 | @include box-shadow(none);
31 | }
32 |
33 | .has-danger &,
34 | .has-success &{
35 | &.form-control-success,
36 | &.form-control-danger{
37 | background-image: none;
38 | }
39 | }
40 |
41 | & + .form-control-feedback{
42 | border-radius: $border-radius-lg;
43 | margin-top: -7px;
44 | position: absolute;
45 | right: 10px;
46 | top: 50%;
47 | vertical-align: middle;
48 | }
49 |
50 | .open &{
51 | border-radius: $border-radius-lg $border-radius-lg 0 0;
52 | border-bottom-color: $transparent-bg;
53 | }
54 |
55 | & + .input-group-append .input-group-text,
56 | & + .input-group-prepend .input-group-text{
57 | background-color: $white;
58 | }
59 |
60 | }
61 |
62 | .has-success .input-group-append .input-group-text,
63 | .has-success .input-group-prepend .input-group-text,
64 | .has-success .form-control{
65 | border-color: lighten($black,5%);
66 | }
67 |
68 | .has-success .form-control:focus,
69 | .has-success.input-group-focus .input-group-append .input-group-text,
70 | .has-success.input-group-focus .input-group-prepend .input-group-text{
71 | border-color: darken($success, 10%);
72 | }
73 |
74 | .has-danger .form-control,
75 | .has-danger .input-group-append .input-group-text,
76 | .has-danger .input-group-prepend .input-group-text,
77 | .has-danger.input-group-focus .input-group-prepend .input-group-text,
78 | .has-danger.input-group-focus .input-group-append .input-group-text{
79 | border-color: lighten($danger-states,5%);
80 | color: $danger-states;
81 | background-color: rgba(222,222,222, .1);
82 |
83 | &:focus{
84 | background-color: $transparent-bg;
85 | }
86 | }
87 |
88 | .has-success,
89 | .has-danger{
90 | &:after{
91 | font-family: 'nucleo';
92 | content: "\ea1b";
93 | display: inline-block;
94 | position: absolute;
95 | right: 20px;
96 | top: 13px;
97 | color: $success;
98 | font-size: 11px;
99 | }
100 |
101 | &.form-control-lg{
102 | &:after{
103 | font-size: 13px;
104 | top: 24px;
105 | }
106 | }
107 |
108 | &.has-label{
109 | &:after{
110 | top: 37px;
111 | }
112 | }
113 |
114 |
115 | &.form-check:after{
116 | display: none !important;
117 | }
118 |
119 | &.form-check .form-check-label{
120 | color: $success;
121 | }
122 | }
123 |
124 | .has-danger{
125 | &:after{
126 | content: "\ea48";
127 | color: $danger-states;
128 | }
129 |
130 | &.form-check .form-check-label{
131 | color: $danger-states;
132 | }
133 | }
134 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_functions.scss:
--------------------------------------------------------------------------------
1 | // Retrieve color Sass maps
2 |
3 | @function section-color($key: "primary") {
4 | @return map-get($section-colors, $key);
5 | }
6 |
7 | // Lines colors
8 |
9 | @function shapes-primary-color($key: "step-1-gradient-bg") {
10 | @return map-get($shapes-primary-colors, $key);
11 | }
12 |
13 | @function shapes-default-color($key: "step-1-gradient-bg") {
14 | @return map-get($shapes-default-colors, $key);
15 | }
16 |
17 | @function lines-light-color($key: "step-1-gradient-bg") {
18 | @return map-get($shapes-light-colors, $key);
19 | }
20 |
21 | @function shapes-dark-color($key: "step-1-gradient-bg") {
22 | @return map-get($shapes-dark-colors, $key);
23 | }
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_images.scss:
--------------------------------------------------------------------------------
1 | img{
2 | max-width: 100%;
3 | border-radius: $border-radius-sm;
4 | }
5 | .img-raised{
6 | box-shadow: $box-shadow-raised;
7 | }
8 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_input-group.scss:
--------------------------------------------------------------------------------
1 | .form-group.has-danger .error,
2 | .input-group.has-danger .error {
3 | color: $danger-states;
4 | }
5 |
6 |
7 | .form-group.has-success .error,
8 | .input-group.has-success .error {
9 | color: $success;
10 | }
11 |
12 | @include form-control-lg-padding($padding-lg-vertical, $padding-input-horizontal);
13 | @include input-base-padding($padding-input-vertical, $padding-input-horizontal);
14 |
15 | .form-group.no-border,
16 | .input-group.no-border{
17 | .form-control,
18 | .form-control + .input-group-prepend .input-group-text,
19 | .form-control + .input-group-append .input-group-text{
20 |
21 | background-color: lighten($black,1%);
22 | border: medium none;
23 | &:focus,
24 | &:active,
25 | &:active{
26 | border: medium none;
27 | background-color: lighten($black,2%);
28 | }
29 | }
30 |
31 | .form-control{
32 | &:focus{
33 | & + .input-group-prepend .input-group-text,
34 | & + .input-group-append .input-group-text{
35 | background-color: lighten($black,2%);
36 | }
37 | }
38 | }
39 |
40 | .input-group-prepend .input-group-text,
41 | .input-group-append .input-group-text{
42 | background-color: lighten($black,1%);;
43 | border: none;
44 | }
45 | }
46 |
47 | .has-error{
48 | .form-control-feedback, .control-label{
49 | color: $danger-states;
50 | }
51 | }
52 | .has-success{
53 | .form-control-feedback, .control-label{
54 | color: $success;
55 | }
56 | }
57 |
58 | .input-group-append .input-group-text,
59 | .input-group-prepend .input-group-text {
60 | background-color: transparent;
61 | border: 1px solid lighten($black,5%);
62 | border-radius: $border-radius-lg;
63 | color: $white;
64 |
65 | & i{
66 | opacity: .5;
67 | }
68 |
69 | @include transition-input-focus-color();
70 |
71 | .has-danger.input-group-focus &{
72 | background-color: $transparent-bg;
73 | }
74 |
75 | .has-success &{
76 | background-color: $transparent-bg;
77 | }
78 | .has-danger .form-control:focus + &{
79 | color: $danger-states;
80 | }
81 | .has-success .form-control:focus + &{
82 | color: $success;
83 | }
84 |
85 | & + .form-control,
86 | & ~ .form-control{
87 | @include input-size($padding-base-vertical - 1, $padding-base-horizontal);
88 | padding-left: 18px;
89 | }
90 |
91 | i{
92 | width: 17px;
93 | }
94 | }
95 |
96 | .input-group-append,
97 | .input-group-prepend .input-group-text,
98 | .input-group-prepend .input-group-text {
99 | background-color: transparent;
100 | border: 1px solid lighten($black,5%);
101 | border-radius: $border-radius-lg;
102 | color: $white;
103 | margin: 0;
104 | }
105 |
106 | .input-group-append .input-group-text{
107 | border-left: none;
108 | }
109 | .input-group-prepend .input-group-text{
110 | border-right: none;
111 | }
112 |
113 | .input-group-focus{
114 | .input-group-prepend .input-group-text,
115 | .input-group-append .input-group-text{
116 | background-color: $white;
117 | border-color: $primary;
118 | background-color: $transparent-bg;
119 | border-color: $primary;
120 | }
121 |
122 | &.no-border{
123 | .input-group-prepend .input-group-text,
124 | .input-group-append .input-group-text{
125 | background-color: lighten($black,2%);
126 | }
127 | }
128 | }
129 |
130 | .input-group,
131 | .form-group{
132 | margin-bottom: 10px;
133 | position: relative;
134 |
135 | .form-control-static{
136 | margin-top: 9px;
137 | }
138 | }
139 |
140 | .input-group[disabled]{
141 | .input-group-prepend .input-group-text,
142 | .input-group-append .input-group-text{
143 | background-color: $light-gray;
144 | }
145 | }
146 |
147 | .input-group .form-control:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child){
148 | border-radius: $border-radius-lg;
149 | border-top-left-radius: 0;
150 | border-bottom-left-radius: 0;
151 | border-left: 0 none;
152 | }
153 |
154 | .input-group .form-control:first-child,
155 | .input-group-btn:first-child > .dropdown-toggle,
156 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
157 | border-right: 0 none;
158 | }
159 | .input-group .form-control:last-child,
160 | .input-group-btn:last-child > .dropdown-toggle,
161 | .input-group-btn:first-child > .btn:not(:first-child) {
162 | border-left: 0 none;
163 | }
164 | .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
165 | background-color: $black-states;
166 | color: $default;
167 | cursor: not-allowed;
168 | }
169 |
170 | .input-group-btn .btn{
171 | border-width: $border-thin;
172 | padding: $padding-btn-vertical $padding-base-horizontal;
173 | }
174 | .input-group-btn .btn-default:not(.btn-fill){
175 | border-color: $medium-gray;
176 | }
177 |
178 | .input-group-btn:last-child > .btn{
179 | margin-left: 0;
180 | }
181 |
182 | textarea.form-control{
183 | max-width: 100%;
184 | max-height: 80px;
185 | padding: 10px 10px 0 0;
186 | resize: none;
187 | line-height: 2;
188 | }
189 |
190 | .has-success,
191 | .has-danger{
192 |
193 | &.form-group .form-control,
194 | &.form-group.no-border .form-control{
195 | padding-right: $input-padding-horizontal + 21;
196 | }
197 | }
198 |
199 | .form.form-newsletter .form-group{
200 | float: left;
201 | width: 78%;
202 | margin-right: 2%;
203 | margin-top: 9px;
204 | }
205 |
206 | .input-group .input-group-btn{
207 | padding: 0 12px;
208 | }
209 |
210 | // Input files - hide actual input - requires specific markup in the sample.
211 | .form-group input[type=file] {
212 | opacity: 0;
213 | position: absolute;
214 | top: 0;
215 | right: 0;
216 | bottom: 0;
217 | left: 0;
218 | width: 100%;
219 | height: 100%;
220 | z-index: 100;
221 | }
222 |
223 | .form-text{
224 | font-size: $font-size-sm;
225 | color: rgba($white,0.8);
226 | }
227 |
228 | .form-control-lg{
229 | padding: 0;
230 | font-size: inherit;
231 | line-height: 0;
232 | border-radius: 0;
233 |
234 | .form-control {
235 | height: calc(2.875rem + 2px);
236 | }
237 | }
238 |
239 | .form-horizontal{
240 | .col-form-label,
241 | .label-on-right{
242 | padding: 10px 5px 0 15px;
243 | text-align: right;
244 | max-width: 180px;
245 | }
246 |
247 | .checkbox-radios{
248 | margin-bottom: 15px;
249 |
250 | .form-check:first-child{
251 | margin-top: 8px;
252 | }
253 | }
254 |
255 | .label-on-right{
256 | text-align: left;
257 | padding: 10px 15px 0 5px;
258 | }
259 |
260 | .form-check-inline{
261 | margin-top: 6px;
262 | .form-check-label{
263 | margin-right: 1.5rem;
264 | }
265 | }
266 | }
267 |
268 | .search-bar{
269 | margin-left: $margin-lg-vertical;
270 | .btn{
271 | margin: 0;
272 | }
273 | &.input-group{
274 | border-radius: 25px;
275 | z-index: 4;
276 | margin-bottom: 0;
277 | height: 43px;
278 | padding-right: 5px;
279 | .input-group-addon{
280 | padding: 10px;
281 | background: transparent;
282 | border: none;
283 | color: rgba(255, 255, 255, 0.7);
284 |
285 | }
286 |
287 | i{
288 | font-size: 20px;
289 | color: $white;
290 | margin-top: 0 !important;
291 | }
292 | input{
293 | background: transparent;
294 | border:none !important;
295 | border-radius: 0;
296 | padding: 12px !important;
297 | font-size: 12px;
298 | opacity: 0.5;
299 | &:focus{
300 | background: transparent;
301 | }
302 | }
303 | .form-control{
304 | opacity: 1;
305 | color: $white;
306 | &::placeholder{
307 | color: white;
308 | }
309 | }
310 | }
311 | }
312 |
313 | .modal-search .modal-dialog{
314 | max-width: 1000px;
315 | margin: 20px auto;
316 | .form-control{
317 | border: none;
318 | color: $black;
319 | &::placeholder{
320 | color: $black;
321 | }
322 | }
323 | }
324 |
325 | .input-group-prepend{
326 | margin-right: 0;
327 | }
328 | .input-group-prepend,
329 | .input-group-append {
330 | .tim-icons {
331 | font-size: $font-paragraph;
332 | }
333 | }
334 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_misc.scss:
--------------------------------------------------------------------------------
1 |
2 | /* Animations */
3 | .nav-pills .nav-link,
4 | .navbar,
5 | .nav-tabs .nav-link,
6 | .sidebar .nav a,
7 | .sidebar .nav a i,
8 | .sidebar .nav p,
9 | .navbar-collapse .navbar-nav .nav-link,
10 | .animation-transition-general,
11 | .tag,
12 | .tag [data-role="remove"],
13 | .animation-transition-general{
14 | @include transitions($general-transition-time, $transition-ease);
15 | }
16 |
17 | //transition for dropdown caret
18 | .bootstrap-switch-label:before,
19 | .caret{
20 | @include transitions($fast-transition-time, $transition-ease);
21 | }
22 |
23 | .dropdown-toggle[aria-expanded="true"]:after,
24 | a[data-toggle="collapse"][aria-expanded="true"] .caret,
25 | .card-collapse .card a[data-toggle="collapse"][aria-expanded="true"] i,
26 | .card-collapse .card a[data-toggle="collapse"].expanded i{
27 | @include rotate-180();
28 | }
29 |
30 | .caret{
31 | width: 0;
32 | height: 0;
33 | vertical-align: middle;
34 | border-top: 4px dashed;
35 | border-right: 4px solid transparent;
36 | border-left: 4px solid transparent;
37 | margin-top: -5px;
38 | position: absolute;
39 | top: 30px;
40 | margin-left: 5px;
41 | }
42 |
43 | .pull-left{
44 | float: left;
45 | }
46 | .pull-right{
47 | float: right;
48 | }
49 |
50 |
51 | // card user profile page
52 |
53 | .card {
54 | form {
55 | label + .form-control {
56 | margin-bottom: 20px;
57 | }
58 | }
59 | }
60 |
61 | .card {
62 | .map-title {
63 | color: $white;
64 | }
65 |
66 | &.card-chart {
67 | .gmnoprint,
68 | .gm-style-cc {
69 | display: none !important;
70 | }
71 | }
72 | }
73 |
74 | // documentation
75 |
76 | .bd-docs {
77 |
78 | h1,h2,h3,h4,h5,h6,p,ul li,ol li{
79 | color:#2c2c2c;
80 | }
81 |
82 |
83 | .bd-content>table>thead>tr>th {
84 | color: $black;
85 |
86 | }
87 |
88 | .blockquote, .blockquote p, .card p{
89 | color: rgba($white,0.8);
90 | }
91 | .bd-example {
92 | background: linear-gradient(#1e1e2f,#1e1e24);
93 |
94 | }
95 |
96 | .navbar {
97 | border-top: none;
98 |
99 | .navbar-nav .nav-link {
100 | color: rgba(255,255,255,.8) !important;
101 | }
102 | }
103 |
104 | .bd-example {
105 |
106 | .btn{
107 | margin: 4px 0;
108 | }
109 | .btn .badge {
110 | display: inline-block;
111 | }
112 |
113 | .tim-icons{
114 | color: $white;
115 | }
116 |
117 | .popover .popover-header {
118 | color: hsla(0,0%,71%,.6);
119 | }
120 |
121 |
122 | .popover-body {
123 | p {
124 | color: $gray-900;
125 | }
126 | }
127 |
128 | &.tooltip-demo p{
129 | color: rgba($white,.8);
130 | }
131 | }
132 |
133 | .card.card-body,
134 | .card .card-body {
135 | color: hsla(0,0%,100%,.8);
136 | }
137 |
138 | label,
139 | .form-check {
140 | color: hsla(0,0%,100%,.8);
141 | }
142 |
143 | .form-check + .btn {
144 | margin-top: 20px;
145 | }
146 |
147 | .bd-example,
148 | table {
149 | thead th {
150 | color: hsla(0,0%,100%,.8);
151 | }
152 |
153 | h1, h2, h3, h4, h5, h6,
154 | .h1, .h2, .h3, .h4, .h5, .h6 {
155 | color: hsla(0,0%,100%,.8);
156 | }
157 |
158 | .datepicker{
159 | thead th, table thead th,.tim-icons{
160 | color: $primary;
161 | }
162 |
163 | }
164 |
165 | .picker-switch .tim-icons{
166 | color: $primary;
167 | }
168 | }
169 |
170 | .footer {
171 | .container-fluid > nav {
172 | display: inline-block;
173 | }
174 | }
175 | }
176 | .modal.show .modal-dialog {
177 | -webkit-transform: translate(0,30%);
178 | transform: translate(0,30%);
179 | }
180 |
181 | code {
182 | color: $pink;
183 | }
184 |
185 | @media screen and (max-width: 991px){
186 | .profile-photo .profile-photo-small{
187 | margin-left: -2px;
188 | }
189 |
190 | .button-dropdown{
191 | display: none;
192 | }
193 |
194 | #searchModal .modal-dialog{
195 | margin: 20px;
196 | }
197 |
198 | #minimizeSidebar{
199 | display: none;
200 | }
201 |
202 | }
203 |
204 |
205 | @media screen and (max-width: 768px){
206 |
207 | .landing-page .section-story-overview .image-container:nth-child(2){
208 | margin-left: 0;
209 | margin-bottom: 30px;
210 | }
211 |
212 | }
213 |
214 | @media screen and (max-width: 576px){
215 | .page-header{
216 | .container h6.category-absolute{
217 | width: 90%;
218 | }
219 | }
220 |
221 | .form-horizontal .col-form-label, .form-horizontal .label-on-right{
222 | text-align: inherit;
223 | padding-top: 0;
224 | code{
225 | padding: 0 10px;
226 | }
227 | }
228 |
229 | }
230 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_mixins.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/alert.scss";
2 | @import "mixins/badges.scss";
3 | @import "mixins/background-variant.scss";
4 | @import "mixins/buttons.scss";
5 | @import "mixins/forms.scss";
6 | @import "mixins/icon.scss";
7 | @import "mixins/modals.scss";
8 | @import "mixins/popovers.scss";
9 | @import "mixins/page-header.scss";
10 | @import "mixins/vendor-prefixes.scss";
11 | @import "mixins/opacity.scss";
12 | @import "mixins/modals.scss";
13 | @import "mixins/inputs.scss";
14 | @import "mixins/dropdown.scss";
15 | @import "mixins/wizard.scss";
16 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_modal.scss:
--------------------------------------------------------------------------------
1 | // Modals
2 | // Design element Dialogs
3 | // --------------------------------------------------
4 | .modal-content {
5 | border: 0;
6 |
7 | // Modal header
8 | // Top section of the modal w/ title and dismiss
9 |
10 | .modal-header {
11 | border-bottom: none;
12 |
13 | & button {
14 | position: absolute;
15 | right: 27px;
16 | top: 24px;
17 | outline: 0;
18 | padding: 1rem;
19 | margin: -1rem -1rem -1rem auto;
20 | }
21 | .title{
22 | color: $black;
23 | margin-top: 5px;
24 | margin-bottom: 0;
25 | }
26 |
27 | .modal-title{
28 | color: $black;
29 | }
30 |
31 | i.tim-icons {
32 | font-size: 16px;
33 | }
34 | }
35 |
36 |
37 | // Modal body
38 | // Where all modal content resides (sibling of .modal-header and .modal-footer)
39 | .modal-body {
40 | line-height: 1.9;
41 |
42 | p{
43 | color: $black;
44 | }
45 | }
46 | // Footer (for actions)
47 | .modal-footer {
48 | border-top: 0;
49 | -webkit-justify-content: space-between; /* Safari 6.1+ */
50 | justify-content: space-between;
51 |
52 | button {
53 | margin: 0;
54 | padding-left: 16px;
55 | padding-right: 16px;
56 | width: auto;
57 |
58 | &.pull-left {
59 | padding-left: 5px;
60 | padding-right: 5px;
61 | position: relative;
62 | left: -5px;
63 | }
64 | }
65 |
66 | }
67 | .modal-body + .modal-footer {
68 | padding-top: 0;
69 | }
70 | }
71 | .modal-backdrop {
72 | background: rgba(0,0,0,0.3);
73 | }
74 |
75 | .modal{
76 |
77 | &.modal-default{
78 | @include modal-colors($white, $black);
79 | }
80 |
81 | &.modal-primary{
82 | @include modal-colors($primary, $white);
83 | }
84 |
85 | &.modal-danger{
86 | @include modal-colors($danger, $white);
87 | }
88 |
89 | &.modal-warning{
90 | @include modal-colors($warning, $white);
91 | }
92 |
93 | &.modal-success{
94 | @include modal-colors($success, $white);
95 | }
96 |
97 | &.modal-info{
98 | @include modal-colors($info, $white);
99 | }
100 |
101 | .modal-header .close{
102 | color: $danger;
103 | text-shadow: none;
104 |
105 | &:hover,
106 | &:focus{
107 | opacity: 1;
108 | }
109 | }
110 |
111 | &.modal-black{
112 | .modal-content{
113 | background: linear-gradient(to bottom, $black 0%, $black-states 100%);
114 | color: rgba($white, 0.8);
115 | .modal-header{
116 | .modal-title, .title{
117 | color: rgba($white, 0.9);
118 | }
119 | }
120 | .modal-body{
121 | p{
122 | color: rgba($white, 0.8);
123 | }
124 | }
125 | }
126 | h1, h2, h3, h4, h5, h6, p{
127 | color: $white;
128 | }
129 | }
130 | }
131 |
132 | .modal-search{
133 | .modal-dialog{
134 | margin: 20px auto;
135 | max-width: 650px;
136 | input{
137 | border: none;
138 | font-size: 17px;
139 | font-weight: 100;
140 | }
141 | span{
142 | font-size: 35px;
143 | color: $search-gray;
144 | }
145 | }
146 | .modal-content{
147 | .modal-header{
148 | padding: 24px;
149 | }
150 | }
151 |
152 | .modal-header .close{
153 | color: $dark-background;
154 | top: 30px !important;
155 | }
156 |
157 | .modal-footer{
158 | border-top: 2px solid #f9f9f9;
159 | margin: 0px 25px 20px;
160 | }
161 | }
162 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_rtl.scss:
--------------------------------------------------------------------------------
1 | .rtl {
2 | .sidebar,
3 | .bootstrap-navbar{
4 | right: 0;
5 | left: auto;
6 | margin-right: 20px;
7 | margin-left: 0;
8 |
9 | .nav{
10 | i{
11 | float: right;
12 | margin-left: 15px;
13 | margin-right: 0;
14 | }
15 |
16 | p{
17 | margin-right: 45px;
18 | text-align: right;
19 | }
20 |
21 | .caret{
22 | left: 11px;
23 | right: auto;
24 | }
25 | }
26 |
27 | .logo{
28 | a.logo-mini{
29 | float: right;
30 | margin-right: 20px;
31 | margin-left: 10px;
32 | }
33 |
34 | .simple-text{
35 | text-align: right;
36 | }
37 | }
38 |
39 | .sidebar-wrapper .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
40 | .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon{
41 | float: right;
42 | margin-left: 15px;
43 | margin-right: 0;
44 | }
45 |
46 | .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
47 | .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal{
48 | text-align: right;
49 | }
50 |
51 | &:before{
52 | right: 30px;
53 | left: auto;
54 | }
55 | }
56 |
57 | .main-panel .content{
58 | padding: 80px 280px 30px 30px;
59 | }
60 |
61 | .footer{
62 | padding: 24px 300px 24px 0;
63 | }
64 |
65 | .dropdown-toggle:after{
66 | margin-right: .255em;
67 | margin-left: 0;
68 | }
69 |
70 | .dropdown-menu.dropdown-menu-right.dropdown-navbar{
71 | right: -220px !important;
72 | left: auto;
73 |
74 | &:before{
75 | right: auto;
76 | left: 35px;
77 | }
78 | }
79 |
80 | .notification{
81 | left: 40px;
82 | right: auto;
83 | }
84 |
85 | .dropdown-menu{
86 | right: auto;
87 | left: 0;
88 | }
89 |
90 |
91 | .minimize-sidebar{
92 | float: right;
93 | }
94 |
95 | .alert{
96 | left: 0;
97 | margin-left: 0;
98 | margin-right: 0;
99 | button.close{
100 | left: 10px !important;
101 | right: auto !important;
102 | }
103 |
104 | span[data-notify="icon"]{
105 | right: 15px;
106 | left: auto;
107 | }
108 |
109 |
110 |
111 | &.alert-with-icon{
112 | padding-right: 65px;
113 | padding-left: 15px;
114 | }
115 |
116 | &.alert-with-icon i[data-notify="icon"]{
117 | right: 15px;
118 | left: auto;
119 | }
120 | }
121 |
122 | .search-bar{
123 | margin-left: 0;
124 | }
125 |
126 | .modal-search .modal-header .close{
127 | margin-right: auto;
128 | left: 10px;
129 | }
130 |
131 |
132 | @media (min-width: 991px){
133 | &.sidebar-mini .main-panel .content {
134 | padding-right: 130px;
135 | padding-left: 50px;
136 | }
137 |
138 | &.sidebar-mini footer{
139 | padding-right: 130px;
140 | padding-left: 50px;
141 | }
142 |
143 | .navbar-minimize button{
144 | margin-right: -5px;
145 | }
146 | }
147 |
148 |
149 |
150 | @media screen and (max-width: 991px){
151 |
152 | .sidebar{
153 | margin-right: 0;
154 | }
155 | .main-panel .content{
156 | padding-right: 50px;
157 | }
158 |
159 | #bodyClick{
160 | right: 260px;
161 | left: auto;
162 | }
163 |
164 | .footer{
165 | padding-right: 15px;
166 | }
167 | }
168 |
169 | .navbar {
170 | .navbar-nav {
171 | padding-right: 0;
172 | a.nav-link {
173 | text-align: right;
174 | p{
175 | margin-right: 7px;
176 | }
177 | }
178 |
179 | .btn {
180 | margin-right: 0;
181 | padding: 0;
182 | i{
183 | margin-left: 4px;
184 | margin-right: 5px;
185 | }
186 | }
187 |
188 | .search-bar span{
189 | margin-right: 10px;
190 | }
191 | }
192 | }
193 |
194 | .ps__rail-y {
195 | right: auto !important;
196 | left: 0;
197 | }
198 |
199 | .main-panel {
200 | position: fixed;
201 | height: 100%;
202 | overflow-y: scroll;
203 | overflow-x: hidden;
204 | }
205 | .fixed-plugin {
206 | border-radius: 0 8px 8px 0;
207 | left: 0;
208 | right: unset;
209 | .dropdown-menu {
210 | left: 80px !important;
211 | right: auto !important;
212 | &:before,&:after {
213 | left: 10px;
214 | margin-right: auto;
215 | right: auto;
216 | }
217 | &:before {
218 | right: unset;
219 | left: -16px;
220 | border-left: unset;
221 | border-right: .4em solid rgba(0,0,0,.2);
222 | }
223 | &:after {
224 | right: unset;
225 | left: -16px;
226 | border-left: unset;
227 | border-right: .4em solid $black;
228 | }
229 | }
230 | }
231 | .sidebar .nav li.active > a:not([data-toggle="collapse"]):before, .off-canvas-sidebar .nav li.active > a:not([data-toggle="collapse"]):before{
232 | left: unset;
233 | right: -4px;
234 | }
235 | }
236 |
237 |
238 | @media screen and (max-width: 768px){
239 |
240 | .rtl .main-panel .content{
241 | padding-left: 15px;
242 | padding-right: 15px;
243 | }
244 |
245 | }
246 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_tables.scss:
--------------------------------------------------------------------------------
1 | .table{
2 | > tbody > tr > td {
3 | color: rgba(255, 255, 255, 0.7) !important;
4 |
5 | .photo {
6 | height: 30px;
7 | width: 30px;
8 | border-radius: 50%;
9 | overflow: hidden;
10 | margin: 0 auto;
11 |
12 | img {
13 | width: 100%;
14 | }
15 | }
16 | }
17 |
18 | > tbody > tr.table-success > td{
19 | background-color: darken($success,10%);
20 | }
21 |
22 | > tbody > tr.table-info > td{
23 | background-color: $info;
24 | }
25 |
26 | > tbody > tr.table-primary > td{
27 | background-color: $primary;
28 | }
29 |
30 | > tbody > tr.table-warning > td{
31 | background-color: $warning;
32 | }
33 | > tbody > tr.table-danger > td{
34 | background-color: $danger;
35 | }
36 |
37 | .img-wrapper{
38 | width: 40px;
39 | height: 40px;
40 | border-radius: 50%;
41 | overflow: hidden;
42 | margin: 0 auto;
43 | }
44 |
45 | .img-row{
46 | max-width: 60px;
47 | width: 60px;
48 | }
49 |
50 | .form-check{
51 | margin: 0;
52 | margin-top: 5px;
53 |
54 | & label .form-check-sign::before,
55 | & label .form-check-sign::after{
56 | top: -17px;
57 | left: 4px;
58 | }
59 | }
60 |
61 | .btn{
62 | margin: 0;
63 | }
64 |
65 | small,.small{
66 | font-weight: 300;
67 | }
68 |
69 | .card-tasks .card-body &{
70 | margin-bottom: 0;
71 |
72 | > thead > tr > th,
73 | > tbody > tr > th,
74 | > tfoot > tr > th,
75 | > thead > tr > td,
76 | > tbody > tr > td,
77 | > tfoot > tr > td{
78 | padding-top: 5px;
79 | padding-bottom: 5px;
80 | }
81 | }
82 |
83 | > thead > tr > th{
84 | border-bottom-width: 1px;
85 | font-size: 12px;
86 | text-transform: uppercase;
87 | font-weight: $font-weight-extra-bold;
88 | border: 0;
89 | color: rgba($white, 0.7);
90 | }
91 |
92 | .radio,
93 | .checkbox{
94 | margin-top: 0;
95 | margin-bottom: 0;
96 | padding: 0;
97 | width: 15px;
98 |
99 | .icons{
100 | position: relative;
101 | }
102 |
103 | label{
104 | &:after,
105 | &:before{
106 | top: -17px;
107 | left: -3px;
108 | }
109 | }
110 | }
111 | > thead > tr > th,
112 | > tbody > tr > th,
113 | > tfoot > tr > th,
114 | > thead > tr > td,
115 | > tbody > tr > td,
116 | > tfoot > tr > td{
117 | border-color: rgba(255, 255, 255, 0.1);
118 | padding: 12px 7px;
119 | vertical-align: middle;
120 | }
121 |
122 | &.table-shopping tbody tr:last-child td{
123 | border: none;
124 | }
125 |
126 | .th-description{
127 | max-width: 150px;
128 | }
129 | .td-price{
130 | font-size: 26px;
131 | font-weight: $font-weight-light;
132 | margin-top: 5px;
133 | position: relative;
134 | top: 4px;
135 | text-align: right;
136 | }
137 | .td-total{
138 | font-weight: $font-weight-bold;
139 | font-size: $h5-font-size;
140 | padding-top: 20px;
141 | text-align: right;
142 | }
143 |
144 | .td-actions .btn{
145 | margin: 0px;
146 | }
147 |
148 | > tbody > tr{
149 | position: relative;
150 | }
151 |
152 | > tfoot > tr {
153 | color: hsla(0,0%,100%,.7);
154 | text-transform: uppercase;
155 | }
156 | }
157 |
158 | .table-responsive{
159 | overflow: scroll;
160 | padding-bottom: 10px;
161 | }
162 |
163 | #tables .table-responsive{
164 | margin-bottom: 30px;
165 | }
166 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_type.scss:
--------------------------------------------------------------------------------
1 | body {
2 | -moz-osx-font-smoothing: grayscale;
3 | -webkit-font-smoothing: antialiased;
4 | }
5 |
6 | h1, h2, h3, h4, h5, h6,
7 | .h1, .h2, .h3, .h4, .h5, .h6 {
8 | line-height: $headings-line-height;
9 |
10 | }
11 | p{
12 | font-weight: $font-weight-light;
13 | }
14 |
15 | button,
16 | input,
17 | optgroup,
18 | select,
19 | textarea{
20 | font-family: $font-family-base;
21 | }
22 | .card{
23 | h1,h2,h3,h4,h5,h6,p{
24 | color: $opacity-8;
25 | }
26 | }
27 | h1,h2,h3,h4,h5,h6{
28 | font-weight: $font-weight-normal;
29 | color: $opacity-8;
30 | }
31 |
32 | a{
33 | color: $primary-states;
34 | font-weight: $font-weight-light;
35 | &:hover,
36 | &:focus{
37 | color: $primary;
38 | }
39 | }
40 | h1, .h1 {
41 | line-height: 1.05;
42 | margin-bottom: $margin-base-vertical * 2;
43 |
44 | small{
45 | font-weight: $font-weight-bold;
46 | text-transform: uppercase;
47 | opacity: .8;
48 | }
49 |
50 | }
51 | h2, .h2{
52 | margin-bottom: $margin-base-vertical * 2;
53 | line-height: 1.2;
54 |
55 | }
56 | h3, .h3{
57 | margin-bottom: $margin-base-vertical * 2;
58 | line-height: 1.4em;
59 | }
60 | h4, .h4{
61 | line-height: 1.45em;
62 | margin-bottom: $margin-base-vertical;
63 |
64 | & + .category,
65 | &.title + .category{
66 | margin-top: -10px;
67 | }
68 | }
69 | h5, .h5 {
70 | line-height: 1.4em;
71 | margin-bottom: 15px;
72 | }
73 | h6, .h6{
74 | text-transform: uppercase;
75 | font-weight: $font-weight-bold;
76 | }
77 | p{
78 | color: $opacity-8;
79 | margin-bottom: 5px;
80 |
81 | &.description{
82 | font-size: 1.14em;
83 | }
84 | }
85 |
86 |
87 | .title{
88 | font-weight: $font-weight-bold;
89 | &.title-up{
90 | text-transform: uppercase;
91 |
92 | a{
93 | color: $black;
94 | text-decoration: none;
95 | }
96 | }
97 | & + .category{
98 | margin-top: -10px;
99 | }
100 | }
101 |
102 | .description,
103 | .card-description,
104 | .footer-big p,
105 | .card .footer .stats{
106 | color: $dark-gray;
107 | font-weight: $font-weight-light;
108 | }
109 | .category,
110 | .card-category{
111 | text-transform: capitalize;
112 | font-weight: $font-weight-normal;
113 | color: rgba($white, 0.6);
114 | font-size: $font-size-sm;
115 | }
116 |
117 | .card-category{
118 | font-size: $font-size-sm;
119 | }
120 |
121 | .blockquote{
122 | border-left: none;
123 | border: 1px solid $default;
124 | padding: 20px;
125 | font-size: $blockquote-font-size;
126 | line-height: 1.8;
127 |
128 | small{
129 | color: $default;
130 | font-size: $font-size-sm;
131 | text-transform: uppercase;
132 | }
133 |
134 | &.blockquote-primary{
135 | border-color: $primary;
136 | color: $primary;
137 |
138 | small{
139 | color: $primary;
140 | }
141 | }
142 |
143 | &.blockquote-danger{
144 | border-color: $danger;
145 | color: $danger;
146 |
147 | small{
148 | color: $danger;
149 | }
150 | }
151 |
152 | &.blockquote-white{
153 | border-color: $opacity-8;
154 | color: $white;
155 |
156 | small{
157 | color: $opacity-8;
158 | }
159 | }
160 | }
161 |
162 | ul li, ol li{
163 | color: $white;
164 | }
165 |
166 | pre{
167 | color: $opacity-8;
168 | }
169 |
170 | hr{
171 | border-top: 1px solid rgba(0,0,0,0.1);
172 | margin-top: $spacer;
173 | margin-bottom: $spacer;
174 | }
175 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_utilities.scss:
--------------------------------------------------------------------------------
1 | @import "utilities/backgrounds.scss";
2 | @import "utilities/floating.scss";
3 | @import "utilities/helper.scss";
4 | @import "utilities/position.scss";
5 | @import "utilities/sizing.scss";
6 | @import "utilities/spacing.scss";
7 | @import "utilities/shadows.scss";
8 | @import "utilities/text.scss";
9 | @import "utilities/transform.scss";
10 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/_white-content.scss:
--------------------------------------------------------------------------------
1 | .white-content{
2 |
3 | background: $light-bg;
4 |
5 | .navbar.navbar-transparent .navbar-brand{
6 | color: $black-states;
7 | }
8 |
9 | .navbar.navbar-transparent .navbar-toggler-bar{
10 | background: $black-states;
11 | }
12 | .navbar.navbar-transparent .navbar-nav li a:not(.dropdown-item){
13 | color: $black-states;
14 | & i{
15 | color: $black-states;
16 | }
17 | }
18 |
19 | .navbar.navbar-transparent .navbar-minimize button i{
20 | color: $black-states;
21 | }
22 |
23 | .navbar.navbar-transparent .search-bar.input-group i{
24 | color: $black-states;
25 | }
26 | .navbar.navbar-transparent .search-bar.input-group .form-control{
27 | color: $default;
28 | &::placeholder{
29 | color: $dark-gray;
30 | }
31 | }
32 |
33 | .sidebar{
34 | box-shadow: 0 2px 22px 0 rgba(0,0,0,.1), 0 4px 20px 0 rgba(0,0,0,.15);
35 | p{
36 | color: $opacity-8;
37 | }
38 | }
39 |
40 | .main-panel{
41 | background: $light-bg;
42 | }
43 |
44 | h1, h2, h3, h4, h5, h6, p, ol li, ul li, pre {
45 | color: $black-states;
46 | }
47 |
48 | .font-icon-detail i{
49 | color: $black;
50 | }
51 |
52 | .btn:not([data-action]):hover{
53 | box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);
54 | }
55 |
56 | .btn-neutral.btn-link{
57 | color: rgba($black, 0.7);
58 | }
59 |
60 | //style for inputs
61 |
62 | @include form-control-placeholder(rgba($black,0.4), 1);
63 | .has-danger{
64 | .form-control, .input-group-prepend .input-group-text{
65 | border-color: $danger-states;
66 | }
67 | }
68 |
69 | .input-group-prepend .input-group-text{
70 | border-color: rgba($black-states,0.5);
71 | color: $black-states;
72 | }
73 |
74 | .form-control{
75 | color: $black;
76 | border-color: rgba($black-states,0.5);
77 | &:focus{
78 | border-color: $primary;
79 | }
80 | }
81 |
82 | .form-group.no-border,
83 | .input-group.no-border{
84 | .form-control,
85 | .form-control + .input-group-prepend .input-group-text,
86 | .form-control + .input-group-append .input-group-text,
87 | .input-group-prepend .input-group-text,
88 | .input-group-append .input-group-text{
89 | background-color: $opacity-gray-3;
90 | &:focus,
91 | &:active,
92 | &:active{
93 | background-color: $opacity-gray-5;
94 | }
95 | }
96 |
97 | .form-control{
98 | &:focus{
99 | & + .input-group-prepend .input-group-text,
100 | & + .input-group-append .input-group-text{
101 |
102 | background-color: $transparent-bg;
103 | }
104 | }
105 | }
106 |
107 |
108 | }
109 |
110 | .input-group[disabled]{
111 | .input-group-prepend .input-group-text,
112 | .input-group-append .input-group-text{
113 | background-color: $black;
114 | }
115 | }
116 |
117 | .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control{
118 | background: $light-gray;
119 | border-color: rgba($black-states,0.3);
120 | }
121 |
122 | .input-group-focus{
123 | .input-group-prepend .input-group-text,
124 | .input-group-append .input-group-text,
125 | .form-control{
126 | border-color: $primary;
127 | }
128 |
129 | &.no-border{
130 | .input-group-prepend .input-group-text,
131 | .input-group-append .input-group-text{
132 |
133 | background-color: $opacity-gray-5;
134 | }
135 | }
136 | }
137 | .input-group-prepend .input-group-text {
138 | border-right: none;
139 | }
140 |
141 | .input-group-append .input-group-text {
142 | border-left: none;
143 | }
144 |
145 | .has-danger .form-control:focus, .has-success.input-group-focus .input-group-append .input-group-text, .has-success.input-group-focus .input-group-prepend .input-group-text {
146 | border-color: $danger-states;
147 | }
148 |
149 | .has-success .form-control:focus, .has-success.input-group-focus .input-group-append .input-group-text, .has-success.input-group-focus .input-group-prepend .input-group-text {
150 | border-color: darken($success, 10%);
151 | }
152 |
153 | .btn.btn-link{
154 | &:hover,&:active, &:focus{
155 | color: $dark-gray !important;
156 | }
157 | }
158 |
159 | .btn-group .btn.active{
160 | box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);
161 | }
162 |
163 | .card:not(.card-white){
164 | background: $white;
165 | box-shadow: 0 1px 15px 0 rgba(123, 123, 123, 0.05);
166 | .card-header{
167 | color: $black;
168 | a[data-toggle="collapse"]{
169 | color: $black;
170 | }
171 | }
172 | .card-header .card-title, .card-body .card-title{
173 | color: $black-states;
174 | }
175 |
176 | .card-body{
177 | .card-category, .card-description{
178 | color: $black-states;
179 | }
180 | }
181 |
182 |
183 | label:not(.btn){
184 | color: $default;
185 | }
186 |
187 |
188 | &.nav-pills .nav-item .nav-link {
189 | color: $nav-gray;
190 | background-color: hsla(0,0%,87%,.3);
191 | &:not(.active):hover{
192 | background: hsla(0,0%,87%,.5);
193 | }
194 | &.active{
195 | color: $white;
196 |
197 | }
198 | }
199 |
200 | .tab-content .tab-pane {
201 | color: $nav-gray;
202 | }
203 |
204 |
205 | .card{
206 | box-shadow: none;
207 | }
208 |
209 | &.card-plain{
210 | background: $transparent-bg;
211 | box-shadow: none;
212 | }
213 |
214 | &.card-tasks{
215 | .card-body{
216 | i{
217 | color: rgba(34,42,66,0.7);
218 | &:hover{
219 | color: $black;
220 | }
221 | }
222 | }
223 | }
224 | }
225 |
226 | .table{
227 |
228 | > tbody > tr > td {
229 | color: rgba($black, 0.7) !important;
230 |
231 | }
232 |
233 | > thead > tr > th,
234 | > tbody > tr > th,
235 | > tfoot > tr > th,
236 | > thead > tr > td,
237 | > tbody > tr > td,
238 | > tfoot > tr > td{
239 | border-color: rgba($black, 0.2);
240 | padding: 12px 7px;
241 | vertical-align: middle;
242 | }
243 |
244 | > thead > tr > th, button.btn-neutral.btn-link{
245 | color: rgba($black, 0.7);
246 | }
247 | }
248 |
249 | .footer ul li a{
250 | color: $black-states;
251 | }
252 |
253 | .footer .copyright{
254 | color: $black-states;
255 | }
256 |
257 | .progress-container, .progress-container.progress.sm{
258 | .progress{
259 | background: rgba($black,0.1);
260 | box-shadow: 0 0 0 3px rgba($black,0.1);
261 | .progress-value{
262 | color: $default;
263 | }
264 | }
265 |
266 | .progress-badge{
267 | color: $black-states;
268 | }
269 | }
270 |
271 | .full-page{
272 | background: $light-bg;
273 |
274 | h1, h2, h3, h4, h5, h6, p, ol li, ul li, pre {
275 | color: $black-states;
276 | }
277 |
278 | .description{
279 | color: $dark-gray;
280 | }
281 |
282 | .footer ul li a{
283 | color: $black-states;
284 | }
285 |
286 | .footer .copyright{
287 | color: $black-states;
288 | }
289 | }
290 |
291 | .nav-pills .nav-item .nav-link:not(.active){
292 | background: darken($light-bg,10%);
293 | color: $black-states;
294 | &:hover{
295 | background: darken($white,20%);
296 |
297 | }
298 | }
299 | }
300 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/cards/_card-chart.scss:
--------------------------------------------------------------------------------
1 | .card-chart {
2 | overflow: hidden;
3 | .card-header{
4 | .card-title{
5 | i{
6 | font-size: 16px;
7 | margin-right: 5px;
8 | margin-bottom: 3px;
9 | }
10 | }
11 | .card-category{
12 | margin-bottom: 5px;
13 | }
14 | }
15 | .card-body{
16 | padding-left: 5px;
17 | padding-right: 5px;
18 | .tab-space{
19 | padding: 0;
20 | }
21 | }
22 | .table{
23 | margin-bottom: 0;
24 |
25 | td{
26 | border-top: none;
27 | border-bottom: 1px solid rgba($white,0.1);
28 | }
29 | }
30 |
31 | .card-progress {
32 | margin-top: 30px;
33 | padding: 0 10px;
34 | }
35 |
36 | .chart-area {
37 | height: 220px;
38 | width: 100%;
39 | }
40 | .card-footer {
41 | margin-top: 15px;
42 |
43 | .stats{
44 | color: $dark-gray;
45 | }
46 | }
47 |
48 | .dropdown{
49 | position: absolute;
50 | right: 20px;
51 | top: 20px;
52 |
53 | .btn{
54 | margin: 0;
55 | }
56 | }
57 |
58 | &.card-chart-pie{
59 | .chart-area{
60 | padding: 10px 0 25px;
61 | height: auto;
62 | }
63 |
64 | .card-title{
65 | margin-bottom: 10px;
66 | i{
67 | font-size: 1rem;
68 | }
69 | }
70 |
71 | }
72 |
73 | }
74 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/cards/_card-map.scss:
--------------------------------------------------------------------------------
1 | .map {
2 | height: 500px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/cards/_card-plain.scss:
--------------------------------------------------------------------------------
1 | .card-plain {
2 | background: transparent;
3 | box-shadow: none;
4 |
5 | .card-header,
6 | .card-footer {
7 | margin-left: 0;
8 | margin-right: 0;
9 | background-color: transparent;
10 | }
11 |
12 | &:not(.card-subcategories).card-body {
13 | padding-left: 0;
14 | padding-right: 0;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/cards/_card-task.scss:
--------------------------------------------------------------------------------
1 | .card-tasks {
2 | height: 473px;
3 |
4 | .table-full-width {
5 | max-height: 410px;
6 | position: relative;
7 | }
8 |
9 | .card-header {
10 | .title {
11 | margin-right: 20px;
12 | font-weight: $font-weight-normal;
13 | }
14 |
15 | .dropdown {
16 | float: right;
17 | color: darken($white, 20%);
18 | }
19 | }
20 |
21 | .card-body {
22 | i {
23 | color: $dark-gray;
24 | font-size: 1.4em;
25 | &:hover {
26 | color: $white;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/cards/_card-user.scss:
--------------------------------------------------------------------------------
1 | .card-user {
2 | overflow: hidden;
3 | .image {
4 | height: 120px;
5 | }
6 |
7 | .author {
8 | text-align: center;
9 | text-transform: none;
10 | margin-top: 25px;
11 |
12 | a + p.description {
13 | margin-top: -7px;
14 | }
15 |
16 | .block {
17 | position: absolute;
18 | height: 100px;
19 | width: 250px;
20 | &.block-one {
21 | @include linear-gradient-right(rgba($primary,0.6), rgba($primary,0));
22 | @include nc-rotate(150deg,10);
23 | margin-top: -90px;
24 | margin-left: -50px;
25 | }
26 |
27 | &.block-two {
28 | @include linear-gradient-right(rgba($primary,0.6), rgba($primary,0));
29 | @include nc-rotate(30deg,10);
30 | margin-top: -40px;
31 | margin-left: -100px;
32 | }
33 |
34 | &.block-three {
35 | @include linear-gradient-right(rgba($primary,0.6), rgba($primary,0));
36 | @include nc-rotate(170deg,10);
37 | margin-top: -70px;
38 | right: -45px;
39 |
40 | }
41 |
42 | &.block-four {
43 | @include linear-gradient-right(rgba($primary,0.6), rgba($primary,0));
44 | @include nc-rotate(150deg,10);
45 | margin-top: -25px;
46 | right: -45px;
47 |
48 | }
49 | }
50 | }
51 |
52 | .avatar {
53 | width: 124px;
54 | height: 124px;
55 | border: 5px solid lighten($black,5%);
56 | border-bottom-color: $transparent-bg;
57 | background-color: $transparent-bg;
58 | position: relative;
59 | }
60 |
61 | .card-body {
62 | min-height: 240px;
63 | }
64 |
65 | hr {
66 | margin: 5px 15px;
67 | }
68 |
69 | .button-container {
70 | margin-bottom: 6px;
71 | text-align: center;
72 | }
73 |
74 | .card-description {
75 | margin-top: 30px;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_alert.scss:
--------------------------------------------------------------------------------
1 | @mixin alert-variant($background, $border, $color) {
2 | color: color-yiq($background);
3 | // @include gradient-bg($background);
4 | background-color: lighten($background, 5%);
5 | border-color: $border;
6 |
7 | hr {
8 | border-top-color: darken($border, 5%);
9 | }
10 |
11 | .alert-link {
12 | color: darken($color, 10%);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_background-variant.scss:
--------------------------------------------------------------------------------
1 | // Contextual backgrounds
2 | @mixin bg-variant($parent, $color) {
3 | #{$parent} {
4 | background-color: $color !important;
5 | }
6 | a#{$parent},
7 | button#{$parent} {
8 | @include hover-focus {
9 | background-color: darken($color, 10%) !important;
10 | }
11 | }
12 | }
13 |
14 | @mixin bg-gradient-variant($parent, $color) {
15 | #{$parent} {
16 | background: linear-gradient(87deg, $color 0, adjust-hue($color, 25%) 100%) !important;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_badges.scss:
--------------------------------------------------------------------------------
1 | @mixin badge-variant($bg) {
2 | color: color-yiq($bg);
3 | background-color: $bg;
4 |
5 | &[href] {
6 | @include hover-focus {
7 | color: color-yiq($bg);
8 | text-decoration: none;
9 | background-color: darken($bg, 3%);
10 | }
11 | }
12 | .tagsinput-remove-link{
13 | color: $white;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_dropdown.scss:
--------------------------------------------------------------------------------
1 | @mixin dropdown-colors($brand-color, $dropdown-header-color, $dropdown-color, $background-color ) {
2 | background-color: $brand-color;
3 |
4 | &:before{
5 | color: $brand-color;
6 | }
7 |
8 | .dropdown-header:not([href]):not([tabindex]){
9 | color: $dropdown-header-color;
10 | }
11 |
12 | .dropdown-item{
13 | color: $dropdown-color;
14 |
15 | &:hover,
16 | &:focus{
17 | background-color: $background-color;
18 | }
19 | }
20 |
21 | .dropdown-divider{
22 | background-color: $background-color;
23 | }
24 |
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_forms.scss:
--------------------------------------------------------------------------------
1 | @mixin form-control-focus() {
2 | &:focus {
3 | color: $input-focus-color;
4 | background-color: $input-focus-bg;
5 | border-color: $input-focus-border-color;
6 | outline: 0;
7 | // Avoid using mixin so we can pass custom focus shadow properly
8 | @if $enable-shadows {
9 | box-shadow: $input-box-shadow, $input-focus-box-shadow;
10 | } @else {
11 | box-shadow: $input-focus-box-shadow;
12 | }
13 | }
14 | }
15 |
16 |
17 | @mixin form-validation-state($state, $color) {
18 | .#{$state}-feedback {
19 | display: none;
20 | width: 100%;
21 | margin-top: $form-feedback-margin-top;
22 | font-size: $form-feedback-font-size;
23 | color: $color;
24 | }
25 |
26 | .#{$state}-tooltip {
27 | position: absolute;
28 | top: 100%;
29 | z-index: 5;
30 | display: none;
31 | max-width: 100%; // Contain to parent when possible
32 | padding: .5rem;
33 | margin-top: .1rem;
34 | font-size: .875rem;
35 | line-height: 1;
36 | color: $white;
37 | background-color: rgba($color, .8);
38 | border-radius: .2rem;
39 | }
40 |
41 | .form-control,
42 | .custom-select {
43 | .was-validated &:#{$state},
44 | &.is-#{$state} {
45 | border-color: $color;
46 |
47 | &:focus {
48 | border-color: $color;
49 | //box-shadow: 0 1px $input-focus-width 0 rgba($color, .75);
50 | }
51 |
52 | ~ .#{$state}-feedback,
53 | ~ .#{$state}-tooltip {
54 | display: block;
55 | }
56 | }
57 | }
58 |
59 | .form-check-input {
60 | .was-validated &:#{$state},
61 | &.is-#{$state} {
62 | ~ .form-check-label {
63 | color: $color;
64 | }
65 |
66 | ~ .#{$state}-feedback,
67 | ~ .#{$state}-tooltip {
68 | display: block;
69 | }
70 | }
71 | }
72 |
73 | .custom-control-input {
74 | .was-validated &:#{$state},
75 | &.is-#{$state} {
76 | ~ .custom-control-label {
77 | color: $color;
78 |
79 | &::before {
80 | background-color: lighten($color, 25%);
81 | border-color: lighten($color, 25%);
82 | }
83 | }
84 |
85 | ~ .#{$state}-feedback,
86 | ~ .#{$state}-tooltip {
87 | display: block;
88 | }
89 |
90 | &:checked {
91 | ~ .custom-control-label::before {
92 | @include gradient-bg(lighten($color, 10%));
93 | border-color: lighten($color, 25%);
94 | }
95 | }
96 |
97 | &:focus {
98 | ~ .custom-control-label::before {
99 | box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);
100 | }
101 | }
102 | }
103 | }
104 |
105 | // custom file
106 | .custom-file-input {
107 | .was-validated &:#{$state},
108 | &.is-#{$state} {
109 | ~ .custom-file-label {
110 | border-color: $color;
111 |
112 | &::before { border-color: inherit; }
113 | }
114 |
115 | ~ .#{$state}-feedback,
116 | ~ .#{$state}-tooltip {
117 | display: block;
118 | }
119 |
120 | &:focus {
121 | ~ .custom-file-label {
122 | box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
123 | }
124 | }
125 | }
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_icon.scss:
--------------------------------------------------------------------------------
1 | @mixin icon-shape-variant($color) {
2 | color: saturate(darken($color, 10%), 10);
3 | background-color: transparentize(lighten($color, 10%), .5);
4 | }
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_inputs.scss:
--------------------------------------------------------------------------------
1 | @mixin input-size($padding-vertical, $padding-horizontal){
2 | padding: $padding-vertical $padding-horizontal;
3 | }
4 |
5 | @mixin form-control-placeholder($color, $opacity){
6 | .form-control::-moz-placeholder{
7 | color: $color;
8 | @include opacity(1);
9 | }
10 | .form-control:-moz-placeholder{
11 | color: $color;
12 | @include opacity(1);
13 | }
14 | .form-control::-webkit-input-placeholder{
15 | color: $color;
16 | @include opacity(1);
17 | }
18 | .form-control:-ms-input-placeholder{
19 | color: $color;
20 | @include opacity(1);
21 | }
22 | }
23 |
24 | @mixin placeholder() {
25 | &::-moz-placeholder {@content; } // Firefox
26 | &:-ms-input-placeholder {@content; } // Internet Explorer 10+
27 | &::-webkit-input-placeholder {@content; } // Safari and Chrome
28 | }
29 |
30 | @mixin light-form(){
31 | border-radius: 0;
32 | border:0;
33 | padding: 0;
34 | background-color: transparent;
35 |
36 | }
37 |
38 |
39 | @mixin form-control-lg-padding($padding-vertical, $padding-horizontal) {
40 | .form-group.no-border.form-control-lg,
41 | .input-group.no-border.form-control-lg{
42 | .input-group-append .input-group-text{
43 | padding: $padding-vertical 0 $padding-vertical $padding-horizontal;
44 | }
45 |
46 | .form-control{
47 | padding: $padding-vertical $padding-horizontal;
48 |
49 | & + .input-group-prepend .input-group-text,
50 | & + .input-group-append .input-group-text{
51 | padding: $padding-vertical $padding-horizontal $padding-vertical 0;
52 | }
53 |
54 |
55 | }
56 | }
57 |
58 | .form-group.form-control-lg,
59 | .input-group.form-control-lg{
60 | .form-control{
61 | padding: $padding-vertical - 1 $padding-horizontal - 1;
62 | height: 100%;
63 |
64 | & + .input-group-prepend .input-group-text,
65 | & + .input-group-append .input-group-text{
66 | padding: $padding-vertical - 1 $padding-horizontal - 1 $padding-vertical - 1 0;
67 | }
68 | }
69 |
70 | .input-group-prepend .input-group-text,
71 | .input-group-append .input-group-text{
72 | padding: $padding-vertical - 1 0 $padding-vertical $padding-horizontal - 1;
73 |
74 | & + .form-control{
75 | padding: $padding-vertical $padding-horizontal - 1 $padding-vertical $padding-horizontal - 3;
76 | }
77 | }
78 | }
79 | }
80 |
81 |
82 |
83 | @mixin input-base-padding($padding-vertical, $padding-horizontal) {
84 | .form-group.no-border,
85 | .input-group.no-border{
86 | .form-control{
87 | padding: $padding-vertical $padding-horizontal;
88 |
89 | & + .input-group-prepend .input-group-text,
90 | & + .input-group-append .input-group-text{
91 | padding: $padding-vertical $padding-horizontal $padding-vertical 0;
92 | }
93 | }
94 |
95 | .input-group-prepend .input-group-text,
96 | .input-group-append .input-group-text{
97 | padding: $padding-vertical 0 $padding-vertical $padding-horizontal;
98 | }
99 | }
100 |
101 | .form-group,
102 | .input-group{
103 | .form-control{
104 | padding: $padding-vertical - 1 $padding-horizontal - 1 $padding-vertical - 1 $padding-horizontal - 1;
105 |
106 | & + .input-group-prepend .input-group-text,
107 | & + .input-group-append .input-group-text{
108 | padding: $padding-vertical - 1 $padding-horizontal - 1 $padding-vertical - 1 0;
109 | }
110 | }
111 |
112 | .input-group-prepend .input-group-text,
113 | .input-group-append .input-group-text{
114 | padding: $padding-vertical - 1 0 $padding-vertical - 1 $padding-horizontal - 1;
115 |
116 | & + .form-control,
117 | & ~ .form-control{
118 | padding:$padding-vertical - 1 $padding-horizontal $padding-vertical $padding-horizontal - 3;
119 | }
120 | }
121 | }
122 | }
123 |
124 |
125 | //color1 = $opacity-5
126 | //color2 = $opacity-8
127 | //color3 = $white-color
128 | //color4 = $transparent-bg
129 | //color5 = $opacity-1
130 | //color6 = $opacity-2
131 |
132 |
133 | @mixin input-coloured-bg($color1, $color2, $color3, $color4, $color5, $color6) {
134 | @include form-control-placeholder(rgba($white, 0.4), 1);
135 |
136 | .form-control{
137 | border-color: $color1;
138 | color: $color2;
139 |
140 | &:focus{
141 | border-color: $color3;
142 | background-color: $color4;
143 | color: $color3;
144 | }
145 | }
146 |
147 | .has-success,
148 | .has-danger{
149 | &:after{
150 | color: $color3;
151 | }
152 | }
153 |
154 | .has-danger{
155 | .form-control{
156 | background-color: $color4;
157 | }
158 | }
159 |
160 | .input-group-prepend{
161 | margin-right: 0;
162 | }
163 |
164 | .input-group-prepend .input-group-text,
165 | .input-group-append .input-group-text{
166 | background-color: rgba($background-black, 0.2);
167 | border-color: $color1;
168 | color: $color2;
169 |
170 |
171 | }
172 |
173 | .input-group-focus{
174 | .input-group-prepend .input-group-text,
175 | .input-group-append .input-group-text{
176 | background-color: rgba($background-black, 0.3);
177 | border-color: $color3;
178 | color: $color3;
179 | }
180 | }
181 |
182 | .form-group.no-border,
183 | .input-group.no-border{
184 | .form-control{
185 | background-color: rgba($background-black,0.2);
186 | color: $color2;
187 |
188 | &:focus,
189 | &:active,
190 | &:active{
191 | background-color: rgba($background-black,0.3);
192 | color: $color3;
193 | }
194 | }
195 |
196 | .form-control + .input-group-prepend .input-group-text,
197 | .form-control + .input-group-append .input-group-text{
198 | background-color: rgba($background-black,0.2);;
199 |
200 | &:focus,
201 | &:active,
202 | &:active{
203 | background-color: rgba($background-black,0.3);
204 | color: $color3;
205 | }
206 | }
207 |
208 | .form-control{
209 | &:focus{
210 | & + .input-group-prepend .input-group-text,
211 | & + .input-group-append .input-group-text{
212 | background-color: rgba($background-black, 0.3);
213 | color: $color3;
214 | }
215 | }
216 | }
217 |
218 | .input-group-prepend .input-group-text,
219 | .input-group-append .input-group-text{
220 | background-color: rgba($background-black, 0.2);
221 | border: none;
222 | color: $color2;
223 | }
224 |
225 | &.input-group-focus{
226 | .input-group-prepend .input-group-text,
227 | .input-group-append .input-group-text{
228 | background-color: rgba($background-black, 0.3);
229 | color: $color3;
230 | }
231 | }
232 | }
233 |
234 | }
235 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_modals.scss:
--------------------------------------------------------------------------------
1 | @mixin modal-colors($bg-color, $color) {
2 | .modal-content{
3 | background-color: $bg-color;
4 | color: $color;
5 | }
6 |
7 | .modal-body p{
8 | color: rgba($white, 0.8);
9 | }
10 |
11 | //inputs
12 | @include input-coloured-bg($opacity-5, $white, $white, $transparent-bg, $opacity-1, $opacity-2);
13 |
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_page-header.scss:
--------------------------------------------------------------------------------
1 | @mixin linear-gradient($color1, $color2){
2 | background: $color1; /* For browsers that do not support gradients */
3 | background: -webkit-linear-gradient(90deg, $color1 , $color2); /* For Safari 5.1 to 6.0 */
4 | background: -o-linear-gradient(90deg, $color1, $color2); /* For Opera 11.1 to 12.0 */
5 | background: -moz-linear-gradient(90deg, $color1, $color2); /* For Firefox 3.6 to 15 */
6 | background: linear-gradient(0deg, $color1 , $color2); /* Standard syntax */
7 | }
8 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_popovers.scss:
--------------------------------------------------------------------------------
1 | @mixin popover-variant($background) {
2 | background-color: $background;
3 |
4 | .popover-header {
5 | background-color: $background;
6 | color: color-yiq($background);
7 | opacity: .6;
8 | }
9 |
10 | .popover-body {
11 | color: color-yiq($background);
12 | }
13 |
14 | .popover-header{
15 | border-color: rgba(color-yiq($background), .2);
16 | }
17 |
18 | &.bs-popover-top {
19 | .arrow::after {
20 | border-top-color: $background;
21 | }
22 | }
23 |
24 | &.bs-popover-right {
25 | .arrow::after {
26 | border-right-color: $background;
27 | }
28 | }
29 |
30 | &.bs-popover-bottom {
31 | .arrow::after {
32 | border-bottom-color: $background;
33 | }
34 | }
35 |
36 | &.bs-popover-left {
37 | .arrow::after {
38 | border-left-color: $background;
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_vendor-prefixes.scss:
--------------------------------------------------------------------------------
1 |
2 | @mixin transform-translate-x($value){
3 | -webkit-transform: translate3d($value, 0, 0);
4 | -moz-transform: translate3d($value, 0, 0);
5 | -o-transform: translate3d($value, 0, 0);
6 | -ms-transform: translate3d($value, 0, 0);
7 | transform: translate3d($value, 0, 0);
8 | }
9 |
10 | @mixin transform-translate-y($value){
11 | -webkit-transform: translate3d(0,$value,0);
12 | -moz-transform: translate3d(0,$value,0);
13 | -o-transform: translate3d(0,$value,0);
14 | -ms-transform: translate3d(0,$value,0);
15 | transform: translate3d(0,$value,0);
16 | }
17 |
18 | @mixin transitions($time, $type){
19 | -webkit-transition: all $time $type;
20 | -moz-transition: all $time $type;
21 | -o-transition: all $time $type;
22 | -ms-transition: all $time $type;
23 | transition: all $time $type;
24 | }
25 |
26 | @mixin diagonal-gradient($start-color, $end-color){
27 | background: $start-color;
28 | background-image: -webkit-linear-gradient(to bottom left, $start-color, $end-color, $start-color);
29 | background-image: -o-linear-gradient(to bottom left, $start-color, $end-color, $start-color);
30 | background-image: -moz-linear-gradient(to bottom left, $start-color, $end-color, $start-color);
31 | background-image: linear-gradient(to bottom left, $start-color, $end-color, $start-color);
32 | background-size: 210% 210%;
33 | background-position: top right;
34 | }
35 |
36 | @mixin bar-animation($type){
37 | -webkit-animation: $type 500ms linear 0s;
38 | -moz-animation: $type 500ms linear 0s;
39 | animation: $type 500ms 0s;
40 | -webkit-animation-fill-mode: forwards;
41 | -moz-animation-fill-mode: forwards;
42 | animation-fill-mode: forwards;
43 | }
44 |
45 | @mixin rotate-180(){
46 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
47 | -webkit-transform: rotate(180deg);
48 | -ms-transform: rotate(180deg);
49 | transform: rotate(180deg);
50 | }
51 |
52 | @mixin transform-translate-y-dropdown($value) {
53 | -webkit-transform: translate3d(0,$value,0) !important;
54 | -moz-transform: translate3d(0,$value,0) !important;
55 | -o-transform: translate3d(0,$value,0) !important;
56 | -ms-transform: translate3d(0,$value,0) !important;
57 | transform: translate3d(0,$value,0) !important;
58 | }
59 |
60 | @mixin linear-gradient($color, $states-color){
61 | background: $color;
62 | background: -webkit-linear-gradient(0deg, $color 0%, $states-color 100%);
63 | background: -o-linear-gradient(0deg, $color 0%, $states-color 100%);
64 | background: -moz-linear-gradient(0deg, $color 0%, $states-color 100%);
65 | background: linear-gradient(0deg, $color 0%, $states-color 100%);
66 | }
67 |
68 | @mixin linear-gradient-right($color, $states-color){
69 | background: $color;
70 | background: -webkit-linear-gradient(to right, $color 0%, $states-color 100%);
71 | background: -o-linear-gradient(to right, $color 0%, $states-color 100%);
72 | background: -moz-linear-gradient(to right, $color 0%, $states-color 100%);
73 | background: linear-gradient(to right, $color 0%, $states-color 100%);
74 | }
75 |
76 | @mixin sidebar-color($color){
77 | &:after{
78 | background: $color;
79 | }
80 |
81 | .nav li.active > a{
82 | color: $color;
83 |
84 | i{
85 | color: $color;
86 | }
87 | }
88 | }
89 |
90 | @mixin transition-input-focus-color() {
91 | -webkit-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out;
92 | -moz-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out;
93 | -o-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out;
94 | -ms-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out;
95 | transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out;
96 | }
97 |
98 | @mixin topbar-x-rotation(){
99 | @keyframes topbar-x {
100 | 0% {top: 0px; transform: rotate(0deg); }
101 | 45% {top: 6px; transform: rotate(145deg); }
102 | 75% {transform: rotate(130deg); }
103 | 100% {transform: rotate(135deg); }
104 | }
105 | @-webkit-keyframes topbar-x {
106 | 0% {top: 0px; -webkit-transform: rotate(0deg); }
107 | 45% {top: 6px; -webkit-transform: rotate(145deg); }
108 | 75% {-webkit-transform: rotate(130deg); }
109 | 100% { -webkit-transform: rotate(135deg); }
110 | }
111 | @-moz-keyframes topbar-x {
112 | 0% {top: 0px; -moz-transform: rotate(0deg); }
113 | 45% {top: 6px; -moz-transform: rotate(145deg); }
114 | 75% {-moz-transform: rotate(130deg); }
115 | 100% { -moz-transform: rotate(135deg); }
116 | }
117 | }
118 |
119 | @mixin topbar-back-rotation(){
120 | @keyframes topbar-back {
121 | 0% { top: 6px; transform: rotate(135deg); }
122 | 45% { transform: rotate(-10deg); }
123 | 75% { transform: rotate(5deg); }
124 | 100% { top: 0px; transform: rotate(0); }
125 | }
126 |
127 | @-webkit-keyframes topbar-back {
128 | 0% { top: 6px; -webkit-transform: rotate(135deg); }
129 | 45% { -webkit-transform: rotate(-10deg); }
130 | 75% { -webkit-transform: rotate(5deg); }
131 | 100% { top: 0px; -webkit-transform: rotate(0); }
132 | }
133 |
134 | @-moz-keyframes topbar-back {
135 | 0% { top: 6px; -moz-transform: rotate(135deg); }
136 | 45% { -moz-transform: rotate(-10deg); }
137 | 75% { -moz-transform: rotate(5deg); }
138 | 100% { top: 0px; -moz-transform: rotate(0); }
139 | }
140 | }
141 |
142 | @mixin bottombar-x-rotation(){
143 | @keyframes bottombar-x {
144 | 0% {bottom: 0px; transform: rotate(0deg);}
145 | 45% {bottom: 6px; transform: rotate(-145deg);}
146 | 75% {transform: rotate(-130deg);}
147 | 100% {transform: rotate(-135deg);}
148 | }
149 | @-webkit-keyframes bottombar-x {
150 | 0% {bottom: 0px; -webkit-transform: rotate(0deg);}
151 | 45% {bottom: 6px; -webkit-transform: rotate(-145deg);}
152 | 75% {-webkit-transform: rotate(-130deg);}
153 | 100% {-webkit-transform: rotate(-135deg);}
154 | }
155 | @-moz-keyframes bottombar-x {
156 | 0% {bottom: 0px; -moz-transform: rotate(0deg);}
157 | 45% {bottom: 6px; -moz-transform: rotate(-145deg);}
158 | 75% {-moz-transform: rotate(-130deg);}
159 | 100% {-moz-transform: rotate(-135deg);}
160 | }
161 | }
162 |
163 | @mixin bottombar-back-rotation{
164 | @keyframes bottombar-back {
165 | 0% { bottom: 6px;transform: rotate(-135deg);}
166 | 45% { transform: rotate(10deg);}
167 | 75% { transform: rotate(-5deg);}
168 | 100% { bottom: 0px;transform: rotate(0);}
169 | }
170 | @-webkit-keyframes bottombar-back {
171 | 0% {bottom: 6px;-webkit-transform: rotate(-135deg);}
172 | 45% {-webkit-transform: rotate(10deg);}
173 | 75% {-webkit-transform: rotate(-5deg);}
174 | 100% {bottom: 0px;-webkit-transform: rotate(0);}
175 | }
176 | @-moz-keyframes bottombar-back {
177 | 0% {bottom: 6px;-moz-transform: rotate(-135deg);}
178 | 45% {-moz-transform: rotate(10deg);}
179 | 75% {-moz-transform: rotate(-5deg);}
180 | 100% {bottom: 0px;-moz-transform: rotate(0);}
181 | }
182 |
183 | }
184 |
185 |
186 | @mixin nc-rotate($degrees, $rotation) {
187 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
188 | -webkit-transform: rotate($degrees);
189 | -moz-transform: rotate($degrees);
190 | -ms-transform: rotate($degrees);
191 | -o-transform: rotate($degrees);
192 | transform: rotate($degrees);
193 | }
194 |
195 | @mixin nc-flip($horiz, $vert, $rotation) {
196 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
197 | -webkit-transform: scale($horiz, $vert);
198 | -moz-transform: scale($horiz, $vert);
199 | -ms-transform: scale($horiz, $vert);
200 | -o-transform: scale($horiz, $vert);
201 | transform: scale($horiz, $vert);
202 | }
203 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/_wizard.scss:
--------------------------------------------------------------------------------
1 | @mixin set-wizard-color($color) {
2 | .progress-with-circle .progress-bar{
3 | background: $color;
4 | }
5 |
6 | .nav-pills .nav-item .nav-link{
7 | color: $color;
8 |
9 | &.checked, &.active{
10 | background: $color;
11 | color: white;
12 | }
13 | &:hover{
14 | background: $white;
15 | }
16 | }
17 |
18 | .nav-pills .nav-item .nav-link.active,
19 | .nav-pills .nav-item .nav-link.checked:focus,
20 | .nav-pills .nav-item .nav-link.checked:hover,
21 | .nav-pills .nav-item .nav-link.active:focus,
22 | .nav-pills .nav-item .nav-link.active:hover{
23 | background: $color;
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/mixins/opacity.scss:
--------------------------------------------------------------------------------
1 | // Opacity
2 |
3 | @mixin opacity($opacity) {
4 | opacity: $opacity;
5 | // IE8 filter
6 | $opacity-ie: ($opacity * 100);
7 | filter: #{alpha(opacity=$opacity-ie)};
8 | }
9 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_backgrounds.scss:
--------------------------------------------------------------------------------
1 | @each $color, $value in $colors {
2 | @include bg-variant(".bg-#{$color}", $value);
3 | }
4 |
5 | @each $color, $value in $theme-colors {
6 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
7 | }
8 |
9 | @each $color, $value in $colors {
10 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
11 | }
12 |
13 |
14 | // Sections
15 |
16 | section {
17 | //background-color: section-color("primary");
18 | }
19 |
20 | @each $color, $value in $section-colors {
21 | @include bg-variant(".section-#{$color}", $value);
22 | }
23 |
24 | @each $color, $value in $theme-colors {
25 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value);
26 | }
27 |
28 |
29 | // Shape (svg) fill colors
30 | @each $color, $value in $theme-colors {
31 | .fill-#{$color} {
32 | fill: $value;
33 | }
34 |
35 | .stroke-#{$color} {
36 | stroke: $value;
37 | }
38 | }
39 |
40 | .fill-opacity-8 {
41 | fill-opacity: .8;
42 | }
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_floating.scss:
--------------------------------------------------------------------------------
1 | .floating {
2 | animation: floating 3s ease infinite;
3 | will-change: transform;
4 |
5 | &:hover {
6 | animation-play-state: paused;
7 | }
8 | }
9 |
10 | .floating-lg {
11 | animation: floating-lg 3s ease infinite;
12 | }
13 |
14 | .floating-sm {
15 | animation: floating-sm 3s ease infinite;
16 | }
17 |
18 | // Keyframes
19 |
20 | @keyframes floating-lg {
21 | 0% {
22 | transform: translateY(0px)
23 | }
24 | 50% {
25 | transform: translateY(15px)
26 | }
27 | 100% {
28 | transform: translateY(0px)
29 | }
30 | }
31 |
32 | @keyframes floating {
33 | 0% {
34 | transform: translateY(0px)
35 | }
36 | 50% {
37 | transform: translateY(10px)
38 | }
39 | 100% {
40 | transform: translateY(0px)
41 | }
42 | }
43 |
44 | @keyframes floating-sm {
45 | 0% {
46 | transform: translateY(0px)
47 | }
48 | 50% {
49 | transform: translateY(5px)
50 | }
51 | 100% {
52 | transform: translateY(0px)
53 | }
54 | }
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_helper.scss:
--------------------------------------------------------------------------------
1 | // Image
2 |
3 | .img-center {
4 | display: block;
5 | margin-left: auto;
6 | margin-right: auto;
7 | }
8 |
9 | // Clearfix
10 |
11 | .floatfix {
12 | &:before,
13 | &:after {
14 | content: '';
15 | display: table;
16 | }
17 | &:after {
18 | clear: both;
19 | }
20 | }
21 |
22 | // Overflows
23 |
24 | .overflow-visible {
25 | overflow: visible !important;
26 | }
27 | .overflow-hidden {
28 | overflow: hidden !important;
29 | }
30 |
31 | // Opacity classes
32 |
33 | .opacity-1 {
34 | opacity: .1 !important;
35 | }
36 | .opacity-2 {
37 | opacity: .2 !important;
38 | }
39 | .opacity-3 {
40 | opacity: .3 !important;
41 | }
42 | .opacity-4 {
43 | opacity: .4 !important;
44 | }
45 | .opacity-5 {
46 | opacity: .5 !important;
47 | }
48 | .opacity-6 {
49 | opacity: .6 !important;
50 | }
51 | .opacity-7 {
52 | opacity: .7 !important;
53 | }
54 | .opacity-8 {
55 | opacity: .8 !important;
56 | }
57 | .opacity-8 {
58 | opacity: .9 !important;
59 | }
60 | .opacity-10 {
61 | opacity: 1 !important;
62 | }
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_position.scss:
--------------------------------------------------------------------------------
1 | @each $size, $value in $spacers {
2 | .top-#{$size} {
3 | top: $value;
4 | }
5 | .right-#{$size} {
6 | right: $value;
7 | }
8 | .bottom-#{$size} {
9 | bottom: $value;
10 | }
11 | .left-#{$size} {
12 | left: $value;
13 | }
14 | }
15 |
16 | .center {
17 | left: 50%;
18 | transform: translateX(-50%);
19 | }
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_shadows.scss:
--------------------------------------------------------------------------------
1 | [class*="shadow"] {
2 | @if $enable-transitions {
3 | transition: $transition-base;
4 | }
5 | }
6 |
7 | .shadow-sm--hover:hover { box-shadow: $box-shadow-sm !important; }
8 | .shadow--hover:hover { box-shadow: $box-shadow !important; }
9 | .shadow-lg--hover:hover { box-shadow: $box-shadow-lg !important; }
10 | .shadow-none--hover:hover { box-shadow: none !important; }
11 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_sizing.scss:
--------------------------------------------------------------------------------
1 | // Height values in vh
2 |
3 | .h-100vh {
4 | height: 100vh !important;
5 | }
6 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_spacing.scss:
--------------------------------------------------------------------------------
1 | // Spacing columns vertically
2 |
3 | .row.row-grid > [class*="col-"] + [class*="col-"] {
4 | margin-top: 3rem;
5 | }
6 |
7 | @include media-breakpoint-up(lg) {
8 | .row.row-grid > [class*="col-lg-"] + [class*="col-lg-"] {
9 | margin-top: 0;
10 | }
11 | }
12 | @include media-breakpoint-up(md) {
13 | .row.row-grid > [class*="col-md-"] + [class*="col-md-"] {
14 | margin-top: 0;
15 | }
16 | }
17 | @include media-breakpoint-up(sm) {
18 | .row.row-grid > [class*="col-sm-"] + [class*="col-sm-"] {
19 | margin-top: 0;
20 | }
21 | }
22 |
23 | .row-grid + .row-grid {
24 | margin-top: 3rem;
25 | }
26 |
27 | // Negative margins and paddings
28 |
29 | @media(min-width: 992px) {
30 | [class*="mt--"],
31 | [class*="mr--"],
32 | [class*="mb--"],
33 | [class*="ml--"] {
34 | position: relative;
35 | z-index: 5;
36 | }
37 |
38 |
39 | // Large negative margins in pixels
40 |
41 | .mt--100 {
42 | margin-top: -100px !important;
43 | }
44 | .mr--100 {
45 | margin-right: -100px !important;
46 | }
47 | .mb--100 {
48 | margin-bottom: -100px !important;
49 | }
50 | .ml--100 {
51 | margin-left: -100px !important;
52 | }
53 | .mt--150 {
54 | margin-top: -150px !important;
55 | }
56 | .mb--150 {
57 | margin-bottom: -150px !important;
58 | }
59 | .mt--200 {
60 | margin-top: -200px !important;
61 | }
62 | .mb--200 {
63 | margin-bottom: -200px !important;
64 | }
65 | .mt--300 {
66 | margin-top: -300px !important;
67 | }
68 | .mb--300 {
69 | margin-bottom: -300px !important;
70 | }
71 |
72 |
73 | // Large margins in pixels
74 |
75 | .pt-100 {
76 | padding-top: 100px !important;
77 | }
78 | .pb-100 {
79 | padding-bottom: 100px !important;
80 | }
81 | .pt-150 {
82 | padding-top: 150px !important;
83 | }
84 | .pb-150 {
85 | padding-bottom: 150px !important;
86 | }
87 | .pt-200 {
88 | padding-top: 200px !important;
89 | }
90 | .pb-200 {
91 | padding-bottom: 200px !important;
92 | }
93 | .pt-250 {
94 | padding-top: 250px !important;
95 | }
96 | .pb-250 {
97 | padding-bottom: 250px !important;
98 | }
99 | .pt-300 {
100 | padding-top: 300px!important;
101 | }
102 | .pb-300 {
103 | padding-bottom: 300px!important;
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_text.scss:
--------------------------------------------------------------------------------
1 | // Weight and italics
2 |
3 | .font-weight-300 { font-weight: 300 !important; }
4 | .font-weight-400 { font-weight: 400 !important; }
5 | .font-weight-500 { font-weight: 500 !important; }
6 | .font-weight-600 { font-weight: 600 !important; }
7 | .font-weight-700 { font-weight: 700 !important; }
8 | .font-weight-800 { font-weight: 800 !important; }
9 | .font-weight-900 { font-weight: 900 !important; }
10 |
11 |
12 | // Text decorations
13 |
14 | .text-underline { text-decoration: underline; }
15 | .text-through { text-decoration: line-through; }
16 |
17 |
18 | // Line heights
19 |
20 | .lh-100 { line-height: 1; }
21 | .lh-110 { line-height: 1.1; }
22 | .lh-120 { line-height: 1.2; }
23 | .lh-130 { line-height: 1.3; }
24 | .lh-140 { line-height: 1.4; }
25 | .lh-150 { line-height: 1.5; }
26 | .lh-160 { line-height: 1.6; }
27 | .lh-170 { line-height: 1.7; }
28 | .lh-180 { line-height: 1.8; }
29 |
30 | //Contextual colors
31 |
32 | .text-muted { color: $text-muted !important; }
33 |
34 |
35 |
36 | // Letter spacings
37 |
38 | .ls-1 { letter-spacing: .0625rem; }
39 | .ls-15 { letter-spacing: .09375rem; }
40 | .ls-2 { letter-spacing: 0.125rem; }
41 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/utilities/_transform.scss:
--------------------------------------------------------------------------------
1 | @include media-breakpoint-up(lg) {
2 | .transform-perspective-right {
3 | transform: scale(1) perspective(1040px) rotateY(-11deg) rotateX(2deg) rotate(2deg);
4 | }
5 | .transform-perspective-left{
6 | transform: scale(1) perspective(2000px) rotateY(11deg) rotateX(2deg) rotate(-2deg)
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/vendor/_plugin-perfect-scrollbar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Container style
3 | */
4 | .ps {
5 | overflow: hidden !important;
6 | overflow-anchor: none;
7 | -ms-overflow-style: none;
8 | touch-action: auto;
9 | -ms-touch-action: auto;
10 | }
11 |
12 | /*
13 | * Scrollbar rail styles
14 | */
15 | .ps__rail-x {
16 | display: none;
17 | opacity: 0;
18 | transition: background-color .2s linear, opacity .2s linear;
19 | -webkit-transition: background-color .2s linear, opacity .2s linear;
20 | height: 15px;
21 | /* there must be 'bottom' or 'top' for ps__rail-x */
22 | bottom: 0px;
23 | /* please don't change 'position' */
24 | position: absolute;
25 | }
26 |
27 | .ps__rail-y {
28 | display: none;
29 | opacity: 0;
30 | transition: background-color .2s linear, opacity .2s linear;
31 | -webkit-transition: background-color .2s linear, opacity .2s linear;
32 | width: 15px;
33 | /* there must be 'right' or 'left' for ps__rail-y */
34 | right: 0;
35 | /* please don't change 'position' */
36 | position: absolute;
37 | }
38 |
39 | .ps--active-x > .ps__rail-x,
40 | .ps--active-y > .ps__rail-y {
41 | display: block;
42 | background-color: transparent;
43 | }
44 |
45 | .ps:hover > .ps__rail-x,
46 | .ps:hover > .ps__rail-y,
47 | .ps--focus > .ps__rail-x,
48 | .ps--focus > .ps__rail-y,
49 | .ps--scrolling-x > .ps__rail-x,
50 | .ps--scrolling-y > .ps__rail-y {
51 | opacity: 0.6;
52 | }
53 |
54 | .ps .ps__rail-x:hover,
55 | .ps .ps__rail-y:hover,
56 | .ps .ps__rail-x:focus,
57 | .ps .ps__rail-y:focus,
58 | .ps .ps__rail-x.ps--clicking,
59 | .ps .ps__rail-y.ps--clicking {
60 | background-color: #eee;
61 | opacity: 0.9;
62 | }
63 |
64 | /*
65 | * Scrollbar thumb styles
66 | */
67 | .ps__thumb-x {
68 | background-color: #aaa;
69 | border-radius: 6px;
70 | transition: background-color .2s linear, height .2s ease-in-out;
71 | -webkit-transition: background-color .2s linear, height .2s ease-in-out;
72 | height: 6px;
73 | /* there must be 'bottom' for ps__thumb-x */
74 | bottom: 2px;
75 | /* please don't change 'position' */
76 | position: absolute;
77 | }
78 |
79 | .ps__thumb-y {
80 | background-color: #aaa;
81 | border-radius: 6px;
82 | transition: background-color .2s linear, width .2s ease-in-out;
83 | -webkit-transition: background-color .2s linear, width .2s ease-in-out;
84 | width: 6px;
85 | /* there must be 'right' for ps__thumb-y */
86 | right: 2px;
87 | /* please don't change 'position' */
88 | position: absolute;
89 | }
90 |
91 | .ps__rail-x:hover > .ps__thumb-x,
92 | .ps__rail-x:focus > .ps__thumb-x,
93 | .ps__rail-x.ps--clicking .ps__thumb-x {
94 | background-color: #999;
95 | height: 11px;
96 | }
97 |
98 | .ps__rail-y:hover > .ps__thumb-y,
99 | .ps__rail-y:focus > .ps__thumb-y,
100 | .ps__rail-y.ps--clicking .ps__thumb-y {
101 | background-color: #999;
102 | width: 11px;
103 | }
104 |
105 | /* MS supports */
106 | @supports (-ms-overflow-style: none) {
107 | .ps {
108 | overflow: auto !important;
109 | }
110 | }
111 |
112 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
113 | .ps {
114 | overflow: auto !important;
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/custom/vendor/_plugin-react-notification-alert.scss:
--------------------------------------------------------------------------------
1 | .react-notification-alert-container{
2 | z-index: 1051;
3 | position: fixed;
4 | }
5 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/react-differences/_inputs.scss:
--------------------------------------------------------------------------------
1 | select.form-control option {
2 | color: #888;
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/scss/black-dashboard-react/react-differences/react-differences.scss:
--------------------------------------------------------------------------------
1 | @import "inputs";
2 |
--------------------------------------------------------------------------------
/src/components/BackgroundColorWrapper/BackgroundColorWrapper.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import {
3 | BackgroundColorContext,
4 | backgroundColors,
5 | } from "contexts/BackgroundColorContext";
6 |
7 | export default function BackgroundColorWrapper(props) {
8 | const [color, setColor] = useState(backgroundColors.blue);
9 |
10 | function changeColor(color) {
11 | setColor(color);
12 | }
13 |
14 | return (
15 |
18 | {props.children}
19 |
20 | );
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/FixedPlugin/FixedPlugin.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 |
20 | // reactstrap components
21 | import { Button, Dropdown, DropdownToggle, Badge } from "reactstrap";
22 | import { ThemeContext, themes } from "contexts/ThemeContext";
23 | import { backgroundColors } from "contexts/BackgroundColorContext";
24 |
25 | function FixedPlugin(props) {
26 | const [dropDownIsOpen, setdropDownIsOpen] = React.useState(false);
27 | const handleClick = () => {
28 | setdropDownIsOpen(!dropDownIsOpen);
29 | };
30 | return (
31 |
32 |
33 |
34 |
35 |
36 |
119 |
120 |
121 | );
122 | }
123 |
124 | export default FixedPlugin;
125 |
--------------------------------------------------------------------------------
/src/components/Footer/Footer.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | /*eslint-disable*/
19 | import React from "react";
20 |
21 | // reactstrap components
22 | import { Container, Nav, NavItem, NavLink } from "reactstrap";
23 |
24 | function Footer() {
25 | return (
26 |
27 |
28 |
29 |
30 |
31 | Creative Tim
32 |
33 |
34 |
35 |
36 | About Us
37 |
38 |
39 |
40 |
41 | Blog
42 |
43 |
44 |
45 |
46 | © {new Date().getFullYear()} made with{" "}
47 |
by{" "}
48 |
52 | Creative Tim
53 | {" "}
54 | for a better web.
55 |
56 |
57 |
58 | );
59 | }
60 |
61 | export default Footer;
62 |
--------------------------------------------------------------------------------
/src/components/Navbars/AdminNavbar.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 | // nodejs library that concatenates classes
20 | import classNames from "classnames";
21 |
22 | // reactstrap components
23 | import {
24 | Button,
25 | Collapse,
26 | DropdownToggle,
27 | DropdownMenu,
28 | DropdownItem,
29 | UncontrolledDropdown,
30 | Input,
31 | InputGroup,
32 | NavbarBrand,
33 | Navbar,
34 | NavLink,
35 | Nav,
36 | Container,
37 | Modal,
38 | NavbarToggler,
39 | ModalHeader,
40 | } from "reactstrap";
41 |
42 | function AdminNavbar(props) {
43 | const [collapseOpen, setcollapseOpen] = React.useState(false);
44 | const [modalSearch, setmodalSearch] = React.useState(false);
45 | const [color, setcolor] = React.useState("navbar-transparent");
46 | React.useEffect(() => {
47 | window.addEventListener("resize", updateColor);
48 | // Specify how to clean up after this effect:
49 | return function cleanup() {
50 | window.removeEventListener("resize", updateColor);
51 | };
52 | });
53 | // function that adds color white/transparent to the navbar on resize (this is for the collapse)
54 | const updateColor = () => {
55 | if (window.innerWidth < 993 && collapseOpen) {
56 | setcolor("bg-white");
57 | } else {
58 | setcolor("navbar-transparent");
59 | }
60 | };
61 | // this function opens and closes the collapse on small devices
62 | const toggleCollapse = () => {
63 | if (collapseOpen) {
64 | setcolor("navbar-transparent");
65 | } else {
66 | setcolor("bg-white");
67 | }
68 | setcollapseOpen(!collapseOpen);
69 | };
70 | // this function is to open the Search modal
71 | const toggleModalSearch = () => {
72 | setmodalSearch(!modalSearch);
73 | };
74 | return (
75 | <>
76 |
77 |
78 |
79 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
e.preventDefault()}>
91 | {props.brandText}
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 | Search
105 |
106 |
107 |
108 |
114 |
115 |
116 | Notifications
117 |
118 |
119 |
120 |
121 | Mike John responded to your email
122 |
123 |
124 |
125 |
126 | You have 5 more tasks
127 |
128 |
129 |
130 |
131 | Your friend Michael is in town
132 |
133 |
134 |
135 |
136 | Another notification
137 |
138 |
139 |
140 |
141 | Another one
142 |
143 |
144 |
145 |
146 |
147 | e.preventDefault()}
152 | >
153 |
154 |
155 |
156 |
157 | Log out
158 |
159 |
160 |
161 | Profile
162 |
163 |
164 | Settings
165 |
166 |
167 |
168 | Log out
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
182 |
183 |
184 |
189 |
190 |
191 |
192 |
193 | >
194 | );
195 | }
196 |
197 | export default AdminNavbar;
198 |
--------------------------------------------------------------------------------
/src/components/Navbars/RTLNavbar.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 | // nodejs library that concatenates classes
20 | import classNames from "classnames";
21 |
22 | // reactstrap components
23 | import {
24 | Button,
25 | Collapse,
26 | DropdownToggle,
27 | DropdownMenu,
28 | DropdownItem,
29 | UncontrolledDropdown,
30 | Input,
31 | InputGroup,
32 | NavbarBrand,
33 | Navbar,
34 | NavLink,
35 | Nav,
36 | Container,
37 | Modal,
38 | ModalHeader,
39 | NavbarToggler,
40 | } from "reactstrap";
41 |
42 | function AdminNavbar(props) {
43 | const [collapseOpen, setcollapseOpen] = React.useState(false);
44 | const [modalSearch, setmodalSearch] = React.useState(false);
45 | const [color, setcolor] = React.useState("navbar-transparent");
46 | React.useEffect(() => {
47 | window.addEventListener("resize", updateColor);
48 | // Specify how to clean up after this effect:
49 | return function cleanup() {
50 | window.removeEventListener("resize", updateColor);
51 | };
52 | });
53 | // function that adds color white/transparent to the navbar on resize (this is for the collapse)
54 | const updateColor = () => {
55 | if (window.innerWidth < 993 && collapseOpen) {
56 | setcolor("bg-white");
57 | } else {
58 | setcolor("navbar-transparent");
59 | }
60 | };
61 | // this function opens and closes the collapse on small devices
62 | const toggleCollapse = () => {
63 | if (collapseOpen) {
64 | setcolor("navbar-transparent");
65 | } else {
66 | setcolor("bg-white");
67 | }
68 | setcollapseOpen(!collapseOpen);
69 | };
70 | // this function is to open the Search modal
71 | const toggleModalSearch = () => {
72 | setmodalSearch(!modalSearch);
73 | };
74 | return (
75 | <>
76 |
77 |
78 |
79 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
e.preventDefault()}>
91 | {props.brandText}
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 | Search
105 |
106 |
107 |
108 |
114 |
115 |
116 | Notifications
117 |
118 |
119 |
120 |
121 | Mike John responded to your email
122 |
123 |
124 |
125 |
126 | You have 5 more tasks
127 |
128 |
129 |
130 |
131 | Your friend Michael is in town
132 |
133 |
134 |
135 |
136 | Another notification
137 |
138 |
139 |
140 |
141 | Another one
142 |
143 |
144 |
145 |
146 |
147 | e.preventDefault()}
152 | >
153 |
154 |
155 |
156 |
157 | Log out
158 |
159 |
160 |
161 | Profile
162 |
163 |
164 | Settings
165 |
166 |
167 |
168 | Log out
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
182 |
183 |
184 |
189 |
190 |
191 |
192 |
193 | >
194 | );
195 | }
196 |
197 | export default AdminNavbar;
198 |
--------------------------------------------------------------------------------
/src/components/Sidebar/Sidebar.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | /*eslint-disable*/
19 | import React from "react";
20 | import { NavLink, Link, useLocation } from "react-router-dom";
21 | // nodejs library to set properties for components
22 | import { PropTypes } from "prop-types";
23 |
24 | // javascript plugin used to create scrollbars on windows
25 | import PerfectScrollbar from "perfect-scrollbar";
26 |
27 | // reactstrap components
28 | import { Nav, NavLink as ReactstrapNavLink } from "reactstrap";
29 | import {
30 | BackgroundColorContext,
31 | backgroundColors,
32 | } from "contexts/BackgroundColorContext";
33 |
34 | var ps;
35 |
36 | function Sidebar(props) {
37 | const location = useLocation();
38 | const sidebarRef = React.useRef(null);
39 | // verifies if routeName is the one active (in browser input)
40 | const activeRoute = (routeName) => {
41 | return location.pathname === routeName ? "active" : "";
42 | };
43 | React.useEffect(() => {
44 | if (navigator.platform.indexOf("Win") > -1) {
45 | ps = new PerfectScrollbar(sidebarRef.current, {
46 | suppressScrollX: true,
47 | suppressScrollY: false,
48 | });
49 | }
50 | // Specify how to clean up after this effect:
51 | return function cleanup() {
52 | if (navigator.platform.indexOf("Win") > -1) {
53 | ps.destroy();
54 | }
55 | };
56 | });
57 | const linkOnClick = () => {
58 | document.documentElement.classList.remove("nav-open");
59 | };
60 | const { routes, rtlActive, logo } = props;
61 | let logoImg = null;
62 | let logoText = null;
63 | if (logo !== undefined) {
64 | if (logo.outterLink !== undefined) {
65 | logoImg = (
66 |
72 |
73 |
74 |
75 |
76 | );
77 | logoText = (
78 |
84 | {logo.text}
85 |
86 | );
87 | } else {
88 | logoImg = (
89 |
94 |
95 |
96 |
97 |
98 | );
99 | logoText = (
100 |
105 | {logo.text}
106 |
107 | );
108 | }
109 | }
110 | return (
111 |
112 | {({ color }) => (
113 |
114 |
115 | {logoImg !== null || logoText !== null ? (
116 |
117 | {logoImg}
118 | {logoText}
119 |
120 | ) : null}
121 |
122 | {routes.map((prop, key) => {
123 | if (prop.redirect) return null;
124 | return (
125 |
131 |
136 |
137 | {rtlActive ? prop.rtlName : prop.name}
138 |
139 |
140 | );
141 | })}
142 |
143 |
144 |
145 | Upgrade to PRO
146 |
147 |
148 |
149 |
150 |
151 | )}
152 |
153 | );
154 | }
155 |
156 | Sidebar.propTypes = {
157 | // if true, then instead of the routes[i].name, routes[i].rtlName will be rendered
158 | // insde the links of this component
159 | rtlActive: PropTypes.bool,
160 | routes: PropTypes.arrayOf(PropTypes.object),
161 | logo: PropTypes.shape({
162 | // innerLink is for links that will direct the user within the app
163 | // it will be rendered as ... tag
164 | innerLink: PropTypes.string,
165 | // outterLink is for links that will direct the user outside the app
166 | // it will be rendered as simple ... tag
167 | outterLink: PropTypes.string,
168 | // the text of the logo
169 | text: PropTypes.node,
170 | // the image src of the logo
171 | imgSrc: PropTypes.string,
172 | }),
173 | };
174 |
175 | export default Sidebar;
176 |
--------------------------------------------------------------------------------
/src/components/ThemeWrapper/ThemeWrapper.js:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from "react";
2 | import { ThemeContext, themes } from "contexts/ThemeContext";
3 |
4 | export default function ThemeContextWrapper(props) {
5 | const [theme, setTheme] = useState(themes.dark);
6 |
7 | function changeTheme(theme) {
8 | setTheme(theme);
9 | }
10 |
11 | useEffect(() => {
12 | switch (theme) {
13 | case themes.light:
14 | document.body.classList.add("white-content");
15 | break;
16 | case themes.dark:
17 | default:
18 | document.body.classList.remove("white-content");
19 | break;
20 | }
21 | }, [theme]);
22 |
23 | return (
24 |
25 | {props.children}
26 |
27 | );
28 | }
29 |
--------------------------------------------------------------------------------
/src/contexts/BackgroundColorContext.js:
--------------------------------------------------------------------------------
1 | import { createContext } from "react";
2 |
3 | export const backgroundColors = {
4 | primary: "primary",
5 | blue: "blue",
6 | green: "green",
7 | };
8 |
9 | export const BackgroundColorContext = createContext({
10 | color: backgroundColors.blue,
11 | changeColor: (color) => {},
12 | });
13 |
--------------------------------------------------------------------------------
/src/contexts/ThemeContext.js:
--------------------------------------------------------------------------------
1 | import { createContext } from "react";
2 |
3 | export const themes = {
4 | dark: "",
5 | light: "white-content",
6 | };
7 |
8 | export const ThemeContext = createContext({
9 | theme: themes.dark,
10 | changeTheme: () => {},
11 | });
12 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 | import ReactDOM from "react-dom/client";
20 | import { BrowserRouter, Route, Routes, Navigate } from "react-router-dom";
21 |
22 | import AdminLayout from "layouts/Admin/Admin.js";
23 | import RTLLayout from "layouts/RTL/RTL.js";
24 |
25 | import "assets/scss/black-dashboard-react.scss";
26 | import "assets/demo/demo.css";
27 | import "assets/css/nucleo-icons.css";
28 | import "@fortawesome/fontawesome-free/css/all.min.css";
29 |
30 | import ThemeContextWrapper from "./components/ThemeWrapper/ThemeWrapper";
31 | import BackgroundColorWrapper from "./components/BackgroundColorWrapper/BackgroundColorWrapper";
32 |
33 | const root = ReactDOM.createRoot(document.getElementById("root"));
34 |
35 | root.render(
36 |
37 |
38 |
39 |
40 | } />
41 | } />
42 | }
45 | />
46 |
47 |
48 |
49 |
50 | );
51 |
--------------------------------------------------------------------------------
/src/layouts/Admin/Admin.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 | import { Route, Routes, Navigate, useLocation } from "react-router-dom";
20 | // javascript plugin used to create scrollbars on windows
21 | import PerfectScrollbar from "perfect-scrollbar";
22 |
23 | // core components
24 | import AdminNavbar from "components/Navbars/AdminNavbar.js";
25 | import Footer from "components/Footer/Footer.js";
26 | import Sidebar from "components/Sidebar/Sidebar.js";
27 | import FixedPlugin from "components/FixedPlugin/FixedPlugin.js";
28 |
29 | import routes from "routes.js";
30 |
31 | import logo from "assets/img/react-logo.png";
32 | import { BackgroundColorContext } from "contexts/BackgroundColorContext";
33 |
34 | var ps;
35 |
36 | function Admin(props) {
37 | const location = useLocation();
38 | const mainPanelRef = React.useRef(null);
39 | const [sidebarOpened, setsidebarOpened] = React.useState(
40 | document.documentElement.className.indexOf("nav-open") !== -1
41 | );
42 | React.useEffect(() => {
43 | if (navigator.platform.indexOf("Win") > -1) {
44 | document.documentElement.className += " perfect-scrollbar-on";
45 | document.documentElement.classList.remove("perfect-scrollbar-off");
46 | ps = new PerfectScrollbar(mainPanelRef.current, {
47 | suppressScrollX: true,
48 | });
49 | let tables = document.querySelectorAll(".table-responsive");
50 | for (let i = 0; i < tables.length; i++) {
51 | ps = new PerfectScrollbar(tables[i]);
52 | }
53 | }
54 | // Specify how to clean up after this effect:
55 | return function cleanup() {
56 | if (navigator.platform.indexOf("Win") > -1) {
57 | ps.destroy();
58 | document.documentElement.classList.add("perfect-scrollbar-off");
59 | document.documentElement.classList.remove("perfect-scrollbar-on");
60 | }
61 | };
62 | });
63 | React.useEffect(() => {
64 | if (navigator.platform.indexOf("Win") > -1) {
65 | let tables = document.querySelectorAll(".table-responsive");
66 | for (let i = 0; i < tables.length; i++) {
67 | ps = new PerfectScrollbar(tables[i]);
68 | }
69 | }
70 | document.documentElement.scrollTop = 0;
71 | document.scrollingElement.scrollTop = 0;
72 | if (mainPanelRef.current) {
73 | mainPanelRef.current.scrollTop = 0;
74 | }
75 | }, [location]);
76 | // this function opens and closes the sidebar on small devices
77 | const toggleSidebar = () => {
78 | document.documentElement.classList.toggle("nav-open");
79 | setsidebarOpened(!sidebarOpened);
80 | };
81 | const getRoutes = (routes) => {
82 | return routes.map((prop, key) => {
83 | if (prop.layout === "/admin") {
84 | return (
85 |
86 | );
87 | } else {
88 | return null;
89 | }
90 | });
91 | };
92 | const getBrandText = (path) => {
93 | for (let i = 0; i < routes.length; i++) {
94 | if (location.pathname.indexOf(routes[i].layout + routes[i].path) !== -1) {
95 | return routes[i].name;
96 | }
97 | }
98 | return "Brand";
99 | };
100 | return (
101 |
102 | {({ color, changeColor }) => (
103 |
104 |
105 |
114 |
115 |
120 |
121 | {getRoutes(routes)}
122 | }
125 | />
126 |
127 | {
128 | // we don't want the Footer to be rendered on map page
129 | location.pathname === "/admin/maps" ? null :
130 | }
131 |
132 |
133 |
134 |
135 | )}
136 |
137 | );
138 | }
139 |
140 | export default Admin;
141 |
--------------------------------------------------------------------------------
/src/layouts/RTL/RTL.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 | import { Route, Routes, useLocation } from "react-router-dom";
20 | // javascript plugin used to create scrollbars on windows
21 | import PerfectScrollbar from "perfect-scrollbar";
22 |
23 | // core components
24 | import RTLNavbar from "components/Navbars/RTLNavbar.js";
25 | import Footer from "components/Footer/Footer.js";
26 | import Sidebar from "components/Sidebar/Sidebar.js";
27 | import FixedPlugin from "components/FixedPlugin/FixedPlugin.js";
28 |
29 | import routes from "routes.js";
30 |
31 | import logo from "assets/img/react-logo.png";
32 | import { BackgroundColorContext } from "contexts/BackgroundColorContext";
33 |
34 | var ps;
35 |
36 | function RTL(props) {
37 | const location = useLocation();
38 | const mainPanelRef = React.useRef(null);
39 | const [sidebarOpened, setsidebarOpened] = React.useState(
40 | document.documentElement.className.indexOf("nav-open") !== -1
41 | );
42 | React.useEffect(() => {
43 | if (navigator.platform.indexOf("Win") > -1) {
44 | document.documentElement.className += " perfect-scrollbar-on";
45 | document.documentElement.classList.remove("perfect-scrollbar-off");
46 | ps = new PerfectScrollbar(mainPanelRef.current, {
47 | suppressScrollX: true,
48 | });
49 | let tables = document.querySelectorAll(".table-responsive");
50 | for (let i = 0; i < tables.length; i++) {
51 | ps = new PerfectScrollbar(tables[i]);
52 | }
53 | }
54 | // on this page, we need on the body tag the classes .rtl and .menu-on-right
55 | document.body.classList.add("rtl", "menu-on-right");
56 | // we also need the rtl bootstrap
57 | // so we add it dynamically to the head
58 | let head = document.head;
59 | let link = document.createElement("link");
60 | link.type = "text/css";
61 | link.rel = "stylesheet";
62 | link.id = "rtl-id";
63 | link.href =
64 | "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-rtl/3.4.0/css/bootstrap-rtl.css";
65 | head.appendChild(link);
66 | // Specify how to clean up after this effect:
67 | return function cleanup() {
68 | if (navigator.platform.indexOf("Win") > -1) {
69 | ps.destroy();
70 | document.documentElement.classList.add("perfect-scrollbar-off");
71 | document.documentElement.classList.remove("perfect-scrollbar-on");
72 | }
73 | // when we exit this page, we need to delete the classes .rtl and .menu-on-right
74 | // from the body tag
75 | document.body.classList.remove("rtl", "menu-on-right");
76 | // we also need to delete the rtl bootstrap, so it does not break the other pages
77 | // that do not make use of rtl
78 | document.getElementById("rtl-id").remove();
79 | };
80 | });
81 | React.useEffect(() => {
82 | if (navigator.platform.indexOf("Win") > -1) {
83 | let tables = document.querySelectorAll(".table-responsive");
84 | for (let i = 0; i < tables.length; i++) {
85 | ps = new PerfectScrollbar(tables[i]);
86 | }
87 | }
88 | document.documentElement.scrollTop = 0;
89 | document.scrollingElement.scrollTop = 0;
90 | if (mainPanelRef.current) {
91 | mainPanelRef.current.scrollTop = 0;
92 | }
93 | }, [location]);
94 | // this function opens and closes the sidebar on small devices
95 | const toggleSidebar = () => {
96 | document.documentElement.classList.toggle("nav-open");
97 | setsidebarOpened(!sidebarOpened);
98 | };
99 | const getRoutes = (routes) => {
100 | return routes.map((prop, key) => {
101 | if (prop.layout === "/rtl") {
102 | return (
103 |
104 | );
105 | } else {
106 | return null;
107 | }
108 | });
109 | };
110 | const getBrandText = (path) => {
111 | for (let i = 0; i < routes.length; i++) {
112 | if (location.pathname.indexOf(routes[i].layout + routes[i].path) !== -1) {
113 | return routes[i].name;
114 | }
115 | }
116 | return "Brand";
117 | };
118 | return (
119 | <>
120 |
121 | {({ color, changeColor }) => (
122 |
123 |
124 |
134 |
135 |
140 | {getRoutes(routes)}
141 | {
142 | // we don't want the Footer to be rendered on map page
143 | location.pathname === "/admin/maps" ? null :
144 | }
145 |
146 |
147 |
148 |
149 | )}
150 |
151 | >
152 | );
153 | }
154 |
155 | export default RTL;
156 |
--------------------------------------------------------------------------------
/src/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/routes.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import Dashboard from "views/Dashboard.js";
19 | import Icons from "views/Icons.js";
20 | import Map from "views/Map.js";
21 | import Notifications from "views/Notifications.js";
22 | import Rtl from "views/Rtl.js";
23 | import TableList from "views/TableList.js";
24 | import Typography from "views/Typography.js";
25 | import UserProfile from "views/UserProfile.js";
26 |
27 | var routes = [
28 | {
29 | path: "/dashboard",
30 | name: "Dashboard",
31 | rtlName: "لوحة القيادة",
32 | icon: "tim-icons icon-chart-pie-36",
33 | component: ,
34 | layout: "/admin",
35 | },
36 | {
37 | path: "/icons",
38 | name: "Icons",
39 | rtlName: "الرموز",
40 | icon: "tim-icons icon-atom",
41 | component: ,
42 | layout: "/admin",
43 | },
44 | {
45 | path: "/map",
46 | name: "Map",
47 | rtlName: "خرائط",
48 | icon: "tim-icons icon-pin",
49 | component: ,
50 | layout: "/admin",
51 | },
52 | {
53 | path: "/notifications",
54 | name: "Notifications",
55 | rtlName: "إخطارات",
56 | icon: "tim-icons icon-bell-55",
57 | component: ,
58 | layout: "/admin",
59 | },
60 | {
61 | path: "/user-profile",
62 | name: "User Profile",
63 | rtlName: "ملف تعريفي للمستخدم",
64 | icon: "tim-icons icon-single-02",
65 | component: ,
66 | layout: "/admin",
67 | },
68 | {
69 | path: "/tables",
70 | name: "Table List",
71 | rtlName: "قائمة الجدول",
72 | icon: "tim-icons icon-puzzle-10",
73 | component: ,
74 | layout: "/admin",
75 | },
76 | {
77 | path: "/typography",
78 | name: "Typography",
79 | rtlName: "طباعة",
80 | icon: "tim-icons icon-align-center",
81 | component: ,
82 | layout: "/admin",
83 | },
84 | {
85 | path: "/rtl-support",
86 | name: "RTL Support",
87 | rtlName: "ار تي ال",
88 | icon: "tim-icons icon-world",
89 | component: ,
90 | layout: "/rtl",
91 | },
92 | ];
93 | export default routes;
94 |
--------------------------------------------------------------------------------
/src/views/TableList.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 |
20 | // reactstrap components
21 | import {
22 | Card,
23 | CardHeader,
24 | CardBody,
25 | CardTitle,
26 | Table,
27 | Row,
28 | Col,
29 | } from "reactstrap";
30 |
31 | function Tables() {
32 | return (
33 | <>
34 |
35 |
36 |
37 |
38 |
39 | Simple Table
40 |
41 |
42 |
43 |
44 |
45 | Name
46 | Country
47 | City
48 | Salary
49 |
50 |
51 |
52 |
53 | Dakota Rice
54 | Niger
55 | Oud-Turnhout
56 | $36,738
57 |
58 |
59 | Minerva Hooper
60 | Curaçao
61 | Sinaai-Waas
62 | $23,789
63 |
64 |
65 | Sage Rodriguez
66 | Netherlands
67 | Baileux
68 | $56,142
69 |
70 |
71 | Philip Chaney
72 | Korea, South
73 | Overland Park
74 | $38,735
75 |
76 |
77 | Doris Greene
78 | Malawi
79 | Feldkirchen in Kärnten
80 | $63,542
81 |
82 |
83 | Mason Porter
84 | Chile
85 | Gloucester
86 | $78,615
87 |
88 |
89 | Jon Porter
90 | Portugal
91 | Gloucester
92 | $98,615
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | Table on Plain Background
103 | Here is a subtitle for this table
104 |
105 |
106 |
107 |
108 |
109 | Name
110 | Country
111 | City
112 | Salary
113 |
114 |
115 |
116 |
117 | Dakota Rice
118 | Niger
119 | Oud-Turnhout
120 | $36,738
121 |
122 |
123 | Minerva Hooper
124 | Curaçao
125 | Sinaai-Waas
126 | $23,789
127 |
128 |
129 | Sage Rodriguez
130 | Netherlands
131 | Baileux
132 | $56,142
133 |
134 |
135 | Philip Chaney
136 | Korea, South
137 | Overland Park
138 | $38,735
139 |
140 |
141 | Doris Greene
142 | Malawi
143 | Feldkirchen in Kärnten
144 | $63,542
145 |
146 |
147 | Mason Porter
148 | Chile
149 | Gloucester
150 | $78,615
151 |
152 |
153 | Jon Porter
154 | Portugal
155 | Gloucester
156 | $98,615
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 | >
166 | );
167 | }
168 |
169 | export default Tables;
170 |
--------------------------------------------------------------------------------
/src/views/UserProfile.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Black Dashboard React v1.2.2
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/black-dashboard-react
8 | * Copyright 2023 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/black-dashboard-react/blob/master/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 |
20 | // reactstrap components
21 | import {
22 | Button,
23 | Card,
24 | CardHeader,
25 | CardBody,
26 | CardFooter,
27 | CardText,
28 | FormGroup,
29 | Form,
30 | Input,
31 | Row,
32 | Col,
33 | } from "reactstrap";
34 |
35 | function UserProfile() {
36 | return (
37 | <>
38 |
39 |
40 |
41 |
42 |
43 | Edit Profile
44 |
45 |
46 |
156 |
157 |
158 |
159 | Save
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
183 |
184 | Do not be scared of the truth because we need to restart the
185 | human foundation in truth And I love you like Kanye loves
186 | Kanye I love Rick Owens’ bed design but the back is...
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 | >
207 | );
208 | }
209 |
210 | export default UserProfile;
211 |
--------------------------------------------------------------------------------