├── .gitignore
├── CHANGELOG.md
├── Documentation
├── css
│ ├── demo.css
│ ├── documentation.css
│ └── light-bootstrap-dashboard.css
├── img
│ ├── apple-icon.png
│ ├── back.jpg
│ ├── favicon.png
│ └── tim-logo.png
└── tutorial-components.html
├── ISSUE_TEMPLATE.md
├── LICENSE.md
├── README-Original.md
├── README.md
├── build
├── apple-icon.png
├── asset-manifest.json
├── favicon.ico
├── index.html
├── manifest.json
├── precache-manifest.1393d68244bd088a700d76bf1aabba33.js
├── service-worker.js
└── static
│ ├── css
│ ├── 2.066c024d.chunk.css
│ ├── 2.066c024d.chunk.css.map
│ ├── main.471b0ed4.chunk.css
│ └── main.471b0ed4.chunk.css.map
│ ├── js
│ ├── 2.9209885f.chunk.js
│ ├── 2.9209885f.chunk.js.map
│ ├── main.2252c72a.chunk.js
│ ├── main.2252c72a.chunk.js.map
│ ├── runtime~main.a8a9905a.js
│ └── runtime~main.a8a9905a.js.map
│ └── media
│ ├── Pe-icon-7-stroke.01798bc1.ttf
│ ├── Pe-icon-7-stroke.71394c0c.eot
│ ├── Pe-icon-7-stroke.b38ef310.woff
│ ├── Pe-icon-7-stroke.c45f7de0.svg
│ ├── face-3.ce7a6b79.jpg
│ ├── glyphicons-halflings-regular.448c34a5.woff2
│ ├── glyphicons-halflings-regular.89889688.svg
│ ├── glyphicons-halflings-regular.e18bbf61.ttf
│ ├── glyphicons-halflings-regular.f4769f9b.eot
│ ├── glyphicons-halflings-regular.fa277232.woff
│ ├── reactlogo.9b864b36.png
│ ├── sidebar-1.6be21e8a.jpg
│ ├── sidebar-2.7a4ce7cc.jpg
│ ├── sidebar-3.34535b95.jpg
│ └── sidebar-4.7bc259fd.jpg
├── jsconfig.json
├── jsconfig.zip
├── package.json
├── public
├── apple-icon.png
├── favicon.ico
├── index.html
└── manifest.json
└── src
├── assets
├── api
│ └── getAllowedActions.jsx
├── css
│ ├── animate.min.css
│ ├── demo.css
│ ├── light-bootstrap-dashboard-react.css
│ ├── light-bootstrap-dashboard-react.css.map
│ ├── light-bootstrap-dashboard-react.min.css
│ └── pe-icon-7-stroke.css
├── fonts
│ ├── Pe-icon-7-stroke.eot
│ ├── Pe-icon-7-stroke.svg
│ ├── Pe-icon-7-stroke.ttf
│ ├── Pe-icon-7-stroke.woff
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
├── img
│ ├── default-avatar.png
│ ├── faces
│ │ ├── face-0.jpg
│ │ ├── face-1.jpg
│ │ ├── face-2.jpg
│ │ ├── face-3.jpg
│ │ ├── face-4.jpg
│ │ ├── face-5.jpg
│ │ ├── face-6.jpg
│ │ ├── face-7.jpg
│ │ └── tim_vector.jpe
│ ├── loading-bubbles.svg
│ ├── mask.png
│ ├── new_logo.png
│ ├── reactlogo.png
│ ├── sidebar-1.jpg
│ ├── sidebar-2.jpg
│ ├── sidebar-3.jpg
│ ├── sidebar-4.jpg
│ ├── sidebar-5.jpg
│ └── tim_80x80.png
└── sass
│ ├── lbd
│ ├── _alerts.scss
│ ├── _buttons.scss
│ ├── _cards.scss
│ ├── _chartist.scss
│ ├── _checkbox-radio-switch.scss
│ ├── _dropdown.scss
│ ├── _footers.scss
│ ├── _inputs.scss
│ ├── _misc.scss
│ ├── _mixins.scss
│ ├── _navbars.scss
│ ├── _responsive.scss
│ ├── _sidebar-and-main-panel.scss
│ ├── _tables.scss
│ ├── _typography.scss
│ ├── _variables.scss
│ └── mixins
│ │ ├── _buttons.scss
│ │ ├── _cards.scss
│ │ ├── _chartist.scss
│ │ ├── _icons.scss
│ │ ├── _inputs.scss
│ │ ├── _labels.scss
│ │ ├── _morphing-buttons.scss
│ │ ├── _navbars.scss
│ │ ├── _social-buttons.scss
│ │ ├── _tabs.scss
│ │ ├── _transparency.scss
│ │ └── _vendor-prefixes.scss
│ └── light-bootstrap-dashboard-react.scss
├── components
├── Card
│ └── Card.jsx
├── CustomButton
│ └── CustomButton.jsx
├── CustomCheckbox
│ └── CustomCheckbox.jsx
├── CustomRadio
│ └── CustomRadio.jsx
├── FixedPlugin
│ └── FixedPlugin.jsx
├── Footer
│ └── Footer.jsx
├── FormInputs
│ └── FormInputs.jsx
├── Navbars
│ ├── AdminNavbar.jsx
│ └── AdminNavbarLinks.jsx
├── Sidebar
│ └── Sidebar.jsx
├── StatsCard
│ └── StatsCard.jsx
├── Tasks
│ └── Tasks.jsx
└── UserCard
│ └── UserCard.jsx
├── index.js
├── layouts
└── Admin.jsx
├── logo.svg
├── routes.js
├── variables
└── Variables.jsx
└── views
├── Dashboard.jsx
├── Icons.jsx
├── Maps.jsx
├── Notifications.jsx
├── TableList.jsx
├── TableList2.jsx
├── Typography.jsx
├── Upgrade.jsx
└── UserProfile.jsx
/.gitignore:
--------------------------------------------------------------------------------
1 | package-lock.json
2 | node_modules/
3 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## [1.3.0] 2019-05-03
4 | ### Bug fixing
5 | - Renamed `src/layouts/Dashboard/Dashboard.jsx` to `src/layouts/Admin.jsx`
6 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/Dashboard.jsx`
7 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/Icons.jsx`
8 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/Maps.jsx`
9 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/Notifications.jsx`
10 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/TableList.jsx`
11 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/Typography.jsx`
12 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/Upgrade.jsx`
13 | - Renamed `src/views/Dashboard/Dashboard.jsx` to `src/views/UserProfile.jsx`
14 | - Renamed `src/components/Header` to `src/components/Navbars`
15 | - Renamed `src/components/Navbars/Header.jsx` to `src/components/Navbars/AdminNavbar.jsx`
16 | - Renamed `src/components/Navbars/HeaderLinks.jsx` to `src/components/Navbars/AdminNavbarLinks.jsx`
17 | - Changes caused by running [the prettier command](https://prettier.io/docs/en/install.html) for *.jsx*, *.js*, *.html* and *.css* files
18 | - Changed our buggy routing system, now it should work flawlessly, for more info, please refer to our [live docs here](https://demos.creative-tim.com/light-bootstrap-dashboard-react/#/documentation/routing-system)
19 | - Solved
20 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/48
21 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/47
22 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/34
23 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/30
24 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/19
25 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/17
26 | - https://github.com/creativetimofficial/light-bootstrap-dashboard-react/issues/15
27 | - Removed `.env` file and replaced it with `jsconfig.json`
28 | - Small bug fixes
29 | ### Removed dependencies/components
30 | - Deleted `src/routes/*` folder
31 | - node-sass-chokidar
32 | - npm-run-all
33 | ### Added dependencies/components
34 | - Added `src/routes.js` file (instead of the three files from `src/routes/*`)
35 | - @types/markerclustererplus@2.1.33 (to stop install warnings)
36 | - @types/googlemaps@3.30.19 (to stop install warnings)
37 | - @types/react@16.8.13 (to stop install warnings)
38 | - typescript@3.4.3 (to stop install warnings)
39 | - react-router@5.0.0 (react-router-dom auto-installs this package, but it is better to have them both inside package.json)
40 | - react-toggle@4.0.2
41 | ### Update dependencies
42 | - node-sass 4.6.1 → 4.12.0
43 | - react 16.2.0 → 16.8.6
44 | - react-bootstrap 0.32.1 → 0.32.4
45 | - react-chartist 0.13.1 → 0.13.3
46 | - react-dom 16.2.0 → 16.8.6
47 | - react-router-dom 4.2.2 → 5.0.0
48 | - react-scripts 1.1.1 → 3.0.0
49 |
50 | ## [1.2.0] 2018-04-12
51 | ### Bug fixing
52 | - Added `fluid` prop on `Grid` component in `Footer`
53 | - Moved all the contents of `elements` folder to `components` folder and delete it
54 | - Renamed `containers` folder to `layouts`
55 | - Renamed `App/App.jsx` to `Dashboard/Dashboard.jsx`
56 | - Renamed `src/routes/app.jsx` to `src/routes/dashboard.jsx`
57 | - Renamed `appRoutes` to `dashboardRoutes`
58 | - Added `src/routes/index.jsx` and made the routes in `src/index.js` dynamically based on `indexRoutes` from `src/routes/index.jsx` (users can now make new layouts and routes for them easier)
59 | ### Removed dependencies/components
60 | - `google-maps-react@1.1.0`
61 | - `react-router@4.1.2`
62 | ### Added dependencies/components
63 | - `node-sass@4.6.1`
64 | - `react-google-maps@9.4.5` (insted of `google-maps-react@1.1.0`)
65 | - `bootstrap@3.3.7` (and deleted `src/assets/bootstrap.min.css?v=3.3.5`)
66 | ### Update dependencies
67 | - `npm-run-all@4.1.1` to `npm-run-all@4.1.2`
68 | - `react@15.6.1` to `react@16.2.0`
69 | - `react-bootstrap@0.31.1` to `react-bootstrap@0.32.1`
70 | - `react-chartist@0.13.0` to `react-chartist@0.13.1`
71 | - `react-dom@15.6.1` to `react-dom@16.2.0`
72 | - `react-notification-system@0.2.15` to `react-notification-system@0.2.17`
73 | - `react-router-dom@4.1.2` to `react-router-dom@4.2.2`
74 | - `react-scripts@1.0.10` to `react-scripts@1.1.1`
75 |
76 | ## [1.1.0] 2017-10-30
77 | ### Bug fixing
78 | - Changed property of `isChecked` in `CustomCheckbox`
79 | - Removed hover state for checkboxes and radios
80 | - Moved `NotificationSystem` outside of `.main-panel` (for responsive issues)
81 | - All `div`'s with Bootstrap classes (`.container`,`.container-fluid`,`.row`,`.col-*`) were changed in React-Bootstrap components
82 | - Changed `Notifications Places` buttons from buttons with `className` to our own button component `CustomButton`
83 | - Added property `round` in `CustomButton` (for the button class `.btn-round`)
84 | - Added dynamic routes
85 |
86 |
87 | ## [1.0.0] 2017-09-20
88 | ### Original Release
89 | - Added React-Bootstrap as base framework
90 | - Added design from Light Bootstrap Dashboard by Creative Tim
91 |
--------------------------------------------------------------------------------
/Documentation/css/demo.css:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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 | @media (min-width: 992px){
19 | .typo-line{
20 | padding-left: 140px;
21 | margin-bottom: 40px;
22 | position: relative;
23 | }
24 |
25 | .typo-line .category{
26 | transform: translateY(-50%);
27 | top: 50%;
28 | left: 0px;
29 | position: absolute;
30 | }
31 | }
32 |
33 | .icon-section {
34 | margin: 0 0 3em;
35 | clear: both;
36 | overflow: hidden;
37 | }
38 | .icon-container {
39 | width: 240px;
40 | padding: .7em 0;
41 | float: left;
42 | position: relative;
43 | text-align: left;
44 | }
45 | .icon-container [class^="ti-"],
46 | .icon-container [class*=" ti-"] {
47 | color: #000;
48 | position: absolute;
49 | margin-top: 3px;
50 | transition: .3s;
51 | }
52 | .icon-container:hover [class^="ti-"],
53 | .icon-container:hover [class*=" ti-"] {
54 | font-size: 2.2em;
55 | margin-top: -5px;
56 | }
57 | .icon-container:hover .icon-name {
58 | color: #000;
59 | }
60 | .icon-name {
61 | color: #aaa;
62 | margin-left: 35px;
63 | font-size: .8em;
64 | transition: .3s;
65 | }
66 | .icon-container:hover .icon-name {
67 | margin-left: 45px;
68 | }
69 |
70 | .places-buttons .btn{
71 | margin-bottom: 30px
72 | }
73 | .sidebar .nav > li.active-pro{
74 | position: absolute;
75 | width: 100%;
76 | bottom: 10px;
77 | }
78 | .sidebar .nav > li.active-pro a{
79 | background: rgba(255, 255, 255, 0.14);
80 | opacity: 1;
81 | color: #FFFFFF;
82 | }
83 |
84 | .table-upgrade td:nth-child(2),
85 | .table-upgrade td:nth-child(3){
86 | text-align: center;
87 | }
88 | body.nude{
89 | background-color: #f4f3ef;
90 | }
91 |
--------------------------------------------------------------------------------
/Documentation/css/documentation.css:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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 | padding-top: 60px;
20 | }
21 | pre.prettyprint{
22 | background-color: #eee;
23 | border: 0px;
24 | margin-bottom: 0;
25 | margin-top: 20px;
26 | padding: 20px;
27 | text-align: left;
28 | }
29 | .atv, .str{
30 | color: #05AE0E;
31 | }
32 | .tag, .pln, .kwd{
33 | color: #3472F7;
34 | }
35 | .atn{
36 | color: #2C93FF;
37 | }
38 | .pln{
39 | color: #333;
40 | }
41 | .com{
42 | color: #999;
43 | }
44 | .space-top{
45 | margin-top: 50px;
46 | }
47 | .btn-primary .caret{
48 | border-top-color: #3472F7;
49 | color: #3472F7;
50 | }
51 | .area-line{
52 | border: 1px solid #999;
53 | border-left: 0;
54 | border-right: 0;
55 | color: #666;
56 | display: block;
57 | margin-top: 20px;
58 | padding: 8px 0;
59 | text-align: center;
60 | }
61 | .area-line a{
62 | color: #666;
63 | }
64 | .container-fluid{
65 | padding-right: 15px;
66 | padding-left: 15px;
67 | }
68 | .logo-container .logo{
69 | overflow: hidden;
70 | border-radius: 50%;
71 | border: 1px solid #333333;
72 | width: 50px;
73 | float: left;
74 | }
75 | .header-wrapper {
76 | position: relative;
77 | height: 100%;
78 | }
79 |
80 | .header-wrapper .navbar {
81 | border-radius: 0;
82 | position: absolute;
83 | width: 100%;
84 | z-index: 3;
85 | }
86 | .header-wrapper .header {
87 | background-color: #ff8f5e;
88 | background-position: center center;
89 | background-size: cover;
90 | height: 100%;
91 | overflow: hidden;
92 | position: absolute;
93 | width: 100%;
94 | z-index: 1;
95 | }
96 | .header-wrapper .header .filter::after {
97 | content: "";
98 | display: block;
99 | height: 100%;
100 | left: 0;
101 | opacity: 0.77;
102 | position: absolute;
103 | top: 0;
104 | width: 100%;
105 | z-index: 2;
106 | }
107 | .header-wrapper .title-container{
108 | color: #fff;
109 | position: relative;
110 | top: 30%;
111 | z-index: 3;
112 |
113 | }
114 | .logo-container .brand{
115 | font-size: 18px;
116 | color: #FFFFFF;
117 | line-height: 20px;
118 | float: left;
119 | margin-left: 10px;
120 | margin-top: 5px;
121 | width: 50px;
122 | height: 50px;
123 | }
124 | .logo-container{
125 | margin-top: 10px;
126 | margin-left: 15px;
127 | }
128 | .logo-container .logo img{
129 | width: 100%;
130 | }
131 | .navbar-small .logo-container .brand{
132 | color: #333333;
133 | }
134 | .fixed-section{
135 | top: 90px;
136 | max-height: 493px;
137 | overflow: scroll;
138 | border-bottom: 1px solid rgba(220,220,220, .6);
139 | }
140 |
141 | .fixed-section ul{
142 | padding: 0;
143 | }
144 |
145 | .fixed-section.affix-top{
146 | margin-top: 90px;
147 | }
148 |
149 | .fixed-section ul li{
150 | list-style: none;
151 | }
152 | .fixed-section li a{
153 | font-size: 14px;
154 | padding: 2px;
155 | display: block;
156 | color: #666666;
157 | }
158 | .fixed-section li a.active{
159 | color: #00bbff;
160 | }
161 | .fixed-section.float{
162 | position: fixed;
163 | top: 100px;
164 | width: 200px;
165 | margin-top: 0;
166 | }
167 | .copyright {
168 | color: #777777;
169 | padding: 10px 15px;
170 | font-size: 14px;
171 | margin: 15px 3px;
172 | line-height: 20px;
173 | text-align: center;
174 | }
175 |
176 | .table-bigboy .img-container{
177 | width: 130px;
178 | height: 85px;
179 | }
180 |
181 | .table-bigboy .td-name{
182 | min-width: 170px;
183 | }
184 | #buttons-row .btn{
185 | margin-bottom: 15px;
186 | }
187 |
188 | .navbar .navbar-nav > li > a.btn.btn-white,
189 | .navbar .navbar-nav > li > a.btn.btn-white:hover,
190 | .navbar .navbar-nav > li > a.btn.btn-white:focus{
191 | color: #FFFFFF;
192 | }
193 |
194 | @media (min-width: 992px){
195 | .navbar {
196 | min-height: 70px;
197 | }
198 | }
199 |
200 | .header-full{
201 | min-height: 100vh;
202 | height: auto;
203 | max-height: 999px;
204 | }
205 | .filter{
206 | position: absolute;
207 | left: 0;
208 | right: 0;
209 | top: 0;
210 | bottom: 0;
211 | width: 100%;
212 | height: 100%;
213 | z-index: 0;
214 |
215 | }
216 | .filter:after{
217 | background: #1dc7ea;
218 | background: rgba(0, 0, 0, 0) linear-gradient(to bottom, #058faa 0%, #058faa 100%) repeat scroll 0 0 / 150% 150%;
219 | height: 100% !important;
220 | }
221 |
--------------------------------------------------------------------------------
/Documentation/img/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/Documentation/img/apple-icon.png
--------------------------------------------------------------------------------
/Documentation/img/back.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/Documentation/img/back.jpg
--------------------------------------------------------------------------------
/Documentation/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/Documentation/img/favicon.png
--------------------------------------------------------------------------------
/Documentation/img/tim-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/Documentation/img/tim-logo.png
--------------------------------------------------------------------------------
/Documentation/tutorial-components.html:
--------------------------------------------------------------------------------
1 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | Components - Light Bootstrap Dashboard React Free by Creative Tim
31 |
32 |
33 |
37 |
38 |
39 |
45 |
46 |
47 |
48 |
49 |
50 |
54 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
81 |
82 |
83 |
94 |
95 |
96 |
97 |
98 |
99 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
8 |
9 |
14 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-rbac-tutorial
2 | A repo to demonstrate the RBAC (Role Based Access Control) in react.
3 |
4 | This is an example of a complete tutorial.
5 |
6 | You can find the link here https://medium.com/@tarunnagpal78/tutorial-how-to-create-rbac-role-based-access-control-in-reactjs-87cb9a960cf3.
7 |
--------------------------------------------------------------------------------
/build/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/build/apple-icon.png
--------------------------------------------------------------------------------
/build/asset-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": {
3 | "main.css": "/static/css/main.471b0ed4.chunk.css",
4 | "main.js": "/static/js/main.2252c72a.chunk.js",
5 | "main.js.map": "/static/js/main.2252c72a.chunk.js.map",
6 | "runtime~main.js": "/static/js/runtime~main.a8a9905a.js",
7 | "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map",
8 | "static/css/2.066c024d.chunk.css": "/static/css/2.066c024d.chunk.css",
9 | "static/js/2.9209885f.chunk.js": "/static/js/2.9209885f.chunk.js",
10 | "static/js/2.9209885f.chunk.js.map": "/static/js/2.9209885f.chunk.js.map",
11 | "index.html": "/index.html",
12 | "precache-manifest.1393d68244bd088a700d76bf1aabba33.js": "/precache-manifest.1393d68244bd088a700d76bf1aabba33.js",
13 | "service-worker.js": "/service-worker.js",
14 | "static/css/2.066c024d.chunk.css.map": "/static/css/2.066c024d.chunk.css.map",
15 | "static/css/main.471b0ed4.chunk.css.map": "/static/css/main.471b0ed4.chunk.css.map",
16 | "static/media/pe-icon-7-stroke.css": "/static/media/Pe-icon-7-stroke.c45f7de0.svg",
17 | "static/media/face-3.jpg": "/static/media/face-3.ce7a6b79.jpg",
18 | "static/media/bootstrap.min.css": "/static/media/glyphicons-halflings-regular.fa277232.woff",
19 | "static/media/reactlogo.png": "/static/media/reactlogo.9b864b36.png",
20 | "static/media/sidebar-1.jpg": "/static/media/sidebar-1.6be21e8a.jpg",
21 | "static/media/sidebar-2.jpg": "/static/media/sidebar-2.7a4ce7cc.jpg",
22 | "static/media/sidebar-3.jpg": "/static/media/sidebar-3.34535b95.jpg",
23 | "static/media/sidebar-4.jpg": "/static/media/sidebar-4.7bc259fd.jpg"
24 | }
25 | }
--------------------------------------------------------------------------------
/build/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/build/favicon.ico
--------------------------------------------------------------------------------
/build/index.html:
--------------------------------------------------------------------------------
1 | Light Bootstrap Dashboard - React You need to enable JavaScript to run this app.
--------------------------------------------------------------------------------
/build/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "LBDR",
3 | "name": "Light Bootstrap Dashboard React by Creative Tim",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "start_url": ".",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/build/precache-manifest.1393d68244bd088a700d76bf1aabba33.js:
--------------------------------------------------------------------------------
1 | self.__precacheManifest = (self.__precacheManifest || []).concat([
2 | {
3 | "revision": "2b8e3b121d40e8d27c0e0151805b7248",
4 | "url": "/index.html"
5 | },
6 | {
7 | "revision": "af7219ec3dba7f79c156",
8 | "url": "/static/css/2.066c024d.chunk.css"
9 | },
10 | {
11 | "revision": "956124cbc432eeb0cde2",
12 | "url": "/static/css/main.471b0ed4.chunk.css"
13 | },
14 | {
15 | "revision": "af7219ec3dba7f79c156",
16 | "url": "/static/js/2.9209885f.chunk.js"
17 | },
18 | {
19 | "revision": "956124cbc432eeb0cde2",
20 | "url": "/static/js/main.2252c72a.chunk.js"
21 | },
22 | {
23 | "revision": "42ac5946195a7306e2a5",
24 | "url": "/static/js/runtime~main.a8a9905a.js"
25 | },
26 | {
27 | "revision": "01798bc13e33afc36a52f2826638d386",
28 | "url": "/static/media/Pe-icon-7-stroke.01798bc1.ttf"
29 | },
30 | {
31 | "revision": "71394c0c7ad6c1e7d5c77e8ac292fba5",
32 | "url": "/static/media/Pe-icon-7-stroke.71394c0c.eot"
33 | },
34 | {
35 | "revision": "b38ef310874bdd008ac14ef3db939032",
36 | "url": "/static/media/Pe-icon-7-stroke.b38ef310.woff"
37 | },
38 | {
39 | "revision": "c45f7de008ab976a8e817e3c0e5095ca",
40 | "url": "/static/media/Pe-icon-7-stroke.c45f7de0.svg"
41 | },
42 | {
43 | "revision": "ce7a6b79aa55041f7ae36f6ce22231fe",
44 | "url": "/static/media/face-3.ce7a6b79.jpg"
45 | },
46 | {
47 | "revision": "448c34a56d699c29117adc64c43affeb",
48 | "url": "/static/media/glyphicons-halflings-regular.448c34a5.woff2"
49 | },
50 | {
51 | "revision": "89889688147bd7575d6327160d64e760",
52 | "url": "/static/media/glyphicons-halflings-regular.89889688.svg"
53 | },
54 | {
55 | "revision": "e18bbf611f2a2e43afc071aa2f4e1512",
56 | "url": "/static/media/glyphicons-halflings-regular.e18bbf61.ttf"
57 | },
58 | {
59 | "revision": "f4769f9bdb7466be65088239c12046d1",
60 | "url": "/static/media/glyphicons-halflings-regular.f4769f9b.eot"
61 | },
62 | {
63 | "revision": "fa2772327f55d8198301fdb8bcfc8158",
64 | "url": "/static/media/glyphicons-halflings-regular.fa277232.woff"
65 | },
66 | {
67 | "revision": "9b864b3680f372ff9ae02649fbc44838",
68 | "url": "/static/media/reactlogo.9b864b36.png"
69 | },
70 | {
71 | "revision": "6be21e8a1b7d63048728851c6003e189",
72 | "url": "/static/media/sidebar-1.6be21e8a.jpg"
73 | },
74 | {
75 | "revision": "7a4ce7cc040fc1cb8176cde106e9232f",
76 | "url": "/static/media/sidebar-2.7a4ce7cc.jpg"
77 | },
78 | {
79 | "revision": "34535b958ad0f0183770a8731b31b4ca",
80 | "url": "/static/media/sidebar-3.34535b95.jpg"
81 | },
82 | {
83 | "revision": "7bc259fd5cef15e95376c822c7e23081",
84 | "url": "/static/media/sidebar-4.7bc259fd.jpg"
85 | }
86 | ]);
--------------------------------------------------------------------------------
/build/service-worker.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Welcome to your Workbox-powered service worker!
3 | *
4 | * You'll need to register this file in your web app and you should
5 | * disable HTTP caching for this file too.
6 | * See https://goo.gl/nhQhGp
7 | *
8 | * The rest of the code is auto-generated. Please don't update this file
9 | * directly; instead, make changes to your Workbox build configuration
10 | * and re-run your build process.
11 | * See https://goo.gl/2aRDsh
12 | */
13 |
14 | importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
15 |
16 | importScripts(
17 | "/precache-manifest.1393d68244bd088a700d76bf1aabba33.js"
18 | );
19 |
20 | self.addEventListener('message', (event) => {
21 | if (event.data && event.data.type === 'SKIP_WAITING') {
22 | self.skipWaiting();
23 | }
24 | });
25 |
26 | workbox.core.clientsClaim();
27 |
28 | /**
29 | * The workboxSW.precacheAndRoute() method efficiently caches and responds to
30 | * requests for URLs in the manifest.
31 | * See https://goo.gl/S9QRab
32 | */
33 | self.__precacheManifest = [].concat(self.__precacheManifest || []);
34 | workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
35 |
36 | workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("/index.html"), {
37 |
38 | blacklist: [/^\/_/,/\/[^\/]+\.[^\/]+$/],
39 | });
40 |
--------------------------------------------------------------------------------
/build/static/js/runtime~main.a8a9905a.js:
--------------------------------------------------------------------------------
1 | !function(e){function r(r){for(var n,f,i=r[0],l=r[1],a=r[2],c=0,s=[];c0.2%",
39 | "not dead",
40 | "not op_mini all"
41 | ],
42 | "development": [
43 | "last 1 chrome version",
44 | "last 1 firefox version",
45 | "last 1 safari version"
46 | ]
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/public/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/public/apple-icon.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
20 |
21 |
22 |
23 |
24 |
28 |
29 |
33 |
34 |
35 |
40 |
41 |
50 | Light Bootstrap Dashboard - React
51 |
52 |
56 |
61 |
62 |
63 | You need to enable JavaScript to run this app.
64 |
65 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "LBDR",
3 | "name": "Light Bootstrap Dashboard React by Creative Tim",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "start_url": ".",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/src/assets/api/getAllowedActions.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import Dashboard from "../../views/Dashboard.jsx";
3 | import UserProfile from "../../views/UserProfile.jsx";
4 | import TableList from "../../views/TableList.jsx";
5 | import TableList2 from "../../views/TableList2.jsx";
6 |
7 | function AllowedActions() {
8 | return {
9 | "data": {
10 | "user": {
11 | "firstName": "Bob",
12 | "lastName": "Marley",
13 | "email": "bob@yahoo.com",
14 | "Pages": [
15 | {
16 | "path": "/dashboard",
17 | "name": "Dashboard",
18 | "icon": "pe-7s-graph",
19 | "component": Dashboard,
20 | "layout": "/admin",
21 | "moduleId": 4,
22 | "modulePageId": 11,
23 | "actions": [
24 | {
25 | "actionId": 32,
26 | "actionUrl": "capacity",
27 | "action": "Capacity",
28 | "roleIsActive": true
29 | },
30 | {
31 | "actionId": 33,
32 | "actionUrl": "revenue",
33 | "action": "Revenue",
34 | "roleIsActive": true
35 | },
36 | {
37 | "actionId": 34,
38 | "actionUrl": "errors",
39 | "action": "Errors",
40 | "roleIsActive": true
41 | },
42 | {
43 | "actionId": 35,
44 | "actionUrl": "followers",
45 | "action": "Followers",
46 | "roleIsActive": true
47 | },
48 | {
49 | "actionId": 36,
50 | "actionUrl": "users_behavior",
51 | "action": "Users Behavior",
52 | "roleIsActive": true
53 | },
54 | {
55 | "actionId": 37,
56 | "actionUrl": "email_statistics",
57 | "action": "Email Statistics",
58 | "roleIsActive": true
59 | },
60 | {
61 | "actionId": 38,
62 | "actionUrl": "sales",
63 | "action": "Sales",
64 | "roleIsActive": true
65 | },
66 | {
67 | "actionId": 39,
68 | "actionUrl": "tasks",
69 | "action": "Tasks",
70 | "roleIsActive": true
71 | }
72 | ]
73 | },
74 | {
75 | "path": "/table",
76 | "name": "Roles",
77 | "icon": "pe-7s-note2",
78 | "component": TableList,
79 | "layout": "/admin",
80 | "actions": [
81 | {
82 | "actionId": 2,
83 | "actionUrl": "create-role",
84 | "action": "Create Role",
85 | "roleIsActive": true
86 | },
87 | {
88 | "actionId": 2,
89 | "actionUrl": "delete-role",
90 | "action": "Delete Role",
91 | "roleIsActive": true
92 | }
93 | ]
94 | },
95 | {
96 | "moduleId": 4,
97 | "path": "/users-list",
98 | "name": "Users",
99 | "icon": "pe-7s-user",
100 | "component": TableList2,
101 | "layout": "/admin",
102 | "actions": [
103 | {
104 | "actionId": 1,
105 | "actionUrl": "create-user",
106 | "action": "create-user",
107 | "roleIsActive": true
108 | }
109 | ]
110 | }
111 | ]
112 | }
113 | }
114 | }
115 | }
116 |
117 | export default AllowedActions;
118 |
--------------------------------------------------------------------------------
/src/assets/fonts/Pe-icon-7-stroke.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/Pe-icon-7-stroke.eot
--------------------------------------------------------------------------------
/src/assets/fonts/Pe-icon-7-stroke.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/Pe-icon-7-stroke.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Pe-icon-7-stroke.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/Pe-icon-7-stroke.woff
--------------------------------------------------------------------------------
/src/assets/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/src/assets/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/src/assets/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/src/assets/img/default-avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/default-avatar.png
--------------------------------------------------------------------------------
/src/assets/img/faces/face-0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-0.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-1.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-2.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-3.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-4.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-5.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-6.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/face-7.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/tim_vector.jpe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/faces/tim_vector.jpe
--------------------------------------------------------------------------------
/src/assets/img/loading-bubbles.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
9 |
10 |
11 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/assets/img/mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/mask.png
--------------------------------------------------------------------------------
/src/assets/img/new_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/new_logo.png
--------------------------------------------------------------------------------
/src/assets/img/reactlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/reactlogo.png
--------------------------------------------------------------------------------
/src/assets/img/sidebar-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/sidebar-1.jpg
--------------------------------------------------------------------------------
/src/assets/img/sidebar-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/sidebar-2.jpg
--------------------------------------------------------------------------------
/src/assets/img/sidebar-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/sidebar-3.jpg
--------------------------------------------------------------------------------
/src/assets/img/sidebar-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/sidebar-4.jpg
--------------------------------------------------------------------------------
/src/assets/img/sidebar-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/sidebar-5.jpg
--------------------------------------------------------------------------------
/src/assets/img/tim_80x80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tarun-nagpal-github/react-rbac-tutorial/e7ce44adf080fda4887d9a78ecfe913d80e64623/src/assets/img/tim_80x80.png
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_alerts.scss:
--------------------------------------------------------------------------------
1 | .alert{
2 | border: 0;
3 | border-radius: 0;
4 | color: #FFFFFF;
5 | padding: 10px 15px;
6 | font-size: 14px;
7 |
8 | .container &{
9 | border-radius: 4px;
10 |
11 | }
12 | .navbar &{
13 | border-radius: 0;
14 | left: 0;
15 | position: absolute;
16 | right: 0;
17 | top: 85px;
18 | width: 100%;
19 | z-index: 3;
20 | }
21 | .navbar:not(.navbar-transparent) &{
22 | top: 70px;
23 | }
24 |
25 | span[data-notify="icon"]{
26 | font-size: 30px;
27 | display: block;
28 | left: 15px;
29 | position: absolute;
30 | top: 50%;
31 | margin-top: -15px;
32 | }
33 |
34 | button.close{
35 | position: absolute;
36 | right: 10px;
37 | top: 50%;
38 | margin-top: -13px;
39 | z-index: 1033;
40 | background-color: #FFFFFF;
41 | display: block;
42 | border-radius: 50%;
43 | opacity: .4;
44 | line-height: 20px;
45 | font-size: 12px;
46 | width: 25px;
47 | height: 25px;
48 | outline: 0 !important;
49 | text-align: center;
50 | padding: 3px;
51 | font-weight: 300;
52 |
53 | &:hover{
54 | opacity: .55;
55 | }
56 | }
57 |
58 | .close ~ span{
59 | display: block;
60 | max-width: 89%;
61 | }
62 |
63 | &[data-notify="container"]{
64 | padding: 10px 10px 10px 20px;
65 | border-radius: $border-radius-base;
66 | }
67 |
68 | &.alert-with-icon{
69 | padding-left: 65px;
70 | }
71 | a, a:hover, a:focus{
72 | text-decoration: underline;
73 | color: white;
74 | }
75 | }
76 | .alert-info{
77 | background-color: $azure-navbar;
78 | }
79 | .alert-success {
80 | background-color: $green-navbar;
81 | }
82 | .alert-warning {
83 | background-color: $orange-navbar;
84 | }
85 | .alert-danger {
86 | background-color: $red-navbar;
87 | }
88 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_buttons.scss:
--------------------------------------------------------------------------------
1 | .btn{
2 | border-width: $border-thick;
3 | background-color: $transparent-bg;
4 | font-weight: $font-weight-normal;
5 |
6 | @include opacity(.8);
7 | padding: $padding-base-vertical $padding-base-horizontal;
8 |
9 | @include btn-styles($default-color, $default-states-color);
10 |
11 | &:hover,
12 | &:focus{
13 | @include opacity(1);
14 | outline: 0 !important;
15 | }
16 | &:active,
17 | &.active,
18 | .open > &.dropdown-toggle {
19 | @include box-shadow(none);
20 | outline: 0 !important;
21 | }
22 |
23 | &.btn-icon{
24 | padding: $padding-base-vertical;
25 | }
26 |
27 | }
28 |
29 | // Apply the mixin to the buttons
30 | //.btn-default { @include btn-styles($default-color, $default-states-color); }
31 | .btn-primary { @include btn-styles($primary-color, $primary-states-color); }
32 | .btn-success { @include btn-styles($success-color, $success-states-color); }
33 | .btn-info { @include btn-styles($info-color, $info-states-color); }
34 | .btn-warning { @include btn-styles($warning-color, $warning-states-color); }
35 | .btn-danger { @include btn-styles($danger-color, $danger-states-color); }
36 | .btn-neutral {
37 | @include btn-styles($white-color, $white-color);
38 |
39 | &:active,
40 | &.active,
41 | .open > &.dropdown-toggle{
42 | background-color: $white-color;
43 | color: $default-color;
44 | }
45 |
46 | &.btn-fill,
47 | &.btn-fill:hover,
48 | &.btn-fill:focus{
49 | color: $default-color;
50 | }
51 |
52 | &.btn-simple:active,
53 | &.btn-simple.active{
54 | background-color: transparent;
55 | }
56 | }
57 |
58 | .btn{
59 | &:disabled,
60 | &[disabled],
61 | &.disabled{
62 | @include opacity(.5);
63 | }
64 | }
65 | .btn-round{
66 | border-width: $border-thin;
67 | border-radius: $btn-round-radius !important;
68 | padding: $padding-round-vertical $padding-round-horizontal;
69 |
70 | &.btn-icon{
71 | padding: $padding-round-vertical;
72 | }
73 | }
74 | .btn-simple{
75 | border: $none;
76 | font-size: $font-size-medium;
77 | padding: $padding-base-vertical $padding-base-horizontal;
78 |
79 | &.btn-icon{
80 | padding: $padding-base-vertical;
81 | }
82 | }
83 | .btn-lg{
84 | @include btn-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);
85 | font-weight: $font-weight-normal;
86 | }
87 | .btn-sm{
88 | @include btn-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);
89 | }
90 | .btn-xs {
91 | @include btn-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $border-radius-small);
92 | }
93 | .btn-wd {
94 | min-width: 140px;
95 | }
96 |
97 | .btn-group.select{
98 | width: 100%;
99 | }
100 | .btn-group.select .btn{
101 | text-align: left;
102 | }
103 | .btn-group.select .caret{
104 | position: absolute;
105 | top: 50%;
106 | margin-top: -1px;
107 | right: 8px;
108 | }
109 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_cards.scss:
--------------------------------------------------------------------------------
1 | .card{
2 | border-radius: $border-radius-base;
3 | box-shadow: 0 1px 2px rgba(0,0,0,.05),0 0 0 1px rgba(63,63,68,.1);
4 | background-color: #FFFFFF;
5 | margin-bottom: 30px;
6 |
7 | .image{
8 | width: 100%;
9 | overflow: hidden;
10 | height: 260px;
11 | border-radius: $border-radius-base $border-radius-base 0 0;
12 | position: relative;
13 | -webkit-transform-style: preserve-3d;
14 | -moz-transform-style: preserve-3d;
15 | transform-style: preserve-3d;
16 |
17 | img {
18 | width: 100%;
19 | }
20 | }
21 | .filter{
22 | position: absolute;
23 | z-index: 2;
24 | background-color: rgba(0,0,0,.68);
25 | top: 0;
26 | left: 0;
27 | width: 100%;
28 | height: 100%;
29 | text-align: center;
30 |
31 | @include opacity(0);
32 |
33 | .btn{
34 | @include vertical-align();
35 | }
36 | }
37 | &:hover .filter{
38 | @include opacity(1);
39 | }
40 | .btn-hover{
41 | @include opacity(0);
42 | }
43 | &:hover .btn-hover{
44 | @include opacity(1);
45 | }
46 | .content{
47 | padding: 15px 15px 10px 15px;
48 | }
49 | .header{
50 | padding: 15px 15px 0;
51 | }
52 | .category,
53 | label{
54 | font-size: $font-size-base;
55 | font-weight: $font-weight-normal;
56 | color: $dark-gray;
57 | margin-bottom: 0px;
58 |
59 | i{
60 | font-size: $font-paragraph;
61 | }
62 | }
63 |
64 | label{
65 | font-size: $font-size-small;
66 | margin-bottom: 5px;
67 | text-transform: uppercase;
68 | }
69 |
70 | .title{
71 | margin: $none;
72 | color: $black-color;
73 | font-weight: $font-weight-light;
74 | }
75 | .avatar{
76 | width: 30px;
77 | height: 30px;
78 | overflow: hidden;
79 | border-radius: 50%;
80 | margin-right: 5px;
81 | }
82 | .description{
83 | font-size: $font-size-base;
84 | color: #333;
85 | }
86 | .footer{
87 | padding: 0;
88 | background-color: $transparent-bg;
89 | line-height: 30px;
90 |
91 | .legend{
92 | padding: 5px 0;
93 | }
94 |
95 | hr{
96 | margin-top: 5px;
97 | margin-bottom: 5px;
98 | }
99 | }
100 | .stats{
101 | color: #a9a9a9;
102 | }
103 | .footer div{
104 | display: inline-block;
105 | }
106 |
107 | .author{
108 | font-size: $font-size-small;
109 | font-weight: $font-weight-bold;
110 | text-transform: uppercase;
111 | }
112 | .author i{
113 | font-size: $font-size-base;
114 | }
115 | h6{
116 | font-size: $font-size-small;
117 | margin: 0;
118 | }
119 | &.card-separator:after{
120 | height: 100%;
121 | right: -15px;
122 | top: 0;
123 | width: 1px;
124 | background-color: $medium-gray;
125 | content: "";
126 | position: absolute;
127 | }
128 |
129 | .ct-chart{
130 | margin: 30px 0 30px;
131 | height: 245px;
132 | }
133 |
134 | .table{
135 | tbody td:first-child,
136 | thead th:first-child{
137 | padding-left: 15px;
138 | }
139 |
140 | tbody td:last-child,
141 | thead th:last-child{
142 | padding-right: 15px;
143 | }
144 | }
145 |
146 | .alert{
147 | border-radius: $border-radius-base;
148 | position: relative;
149 |
150 | &.alert-with-icon{
151 | padding-left: 65px;
152 | }
153 | }
154 | }
155 | .card-user{
156 | .image{
157 | height: 110px;
158 | }
159 | .image-plain{
160 | height: 0;
161 | margin-top: 110px;
162 | }
163 | .author{
164 | text-align: center;
165 | text-transform: none;
166 | margin-top: -70px;
167 | }
168 | .avatar{
169 | width: 124px;
170 | height: 124px;
171 | border: 5px solid #FFFFFF;
172 | position: relative;
173 | margin-bottom: 15px;
174 |
175 | &.border-gray{
176 | border-color: #EEEEEE;
177 | }
178 | }
179 | .title{
180 | line-height: 24px;
181 | }
182 | .content{
183 | min-height: 240px;
184 | }
185 | }
186 |
187 | .card-user,
188 | .card-price{
189 | .footer{
190 | padding: 5px 15px 10px;
191 | }
192 | hr{
193 | margin: 5px 15px;
194 | }
195 | }
196 | .card-plain{
197 | background-color: transparent;
198 | box-shadow: none;
199 | border-radius: 0;
200 |
201 | .image{
202 | border-radius: 4px;
203 | }
204 | }
205 |
206 | .card-stats{
207 | .icon-big{
208 | font-size: 3em;
209 | min-height: 64px;
210 | i{
211 | font-weight: bold;
212 | line-height: 59px;
213 | }
214 | }
215 | .numbers{
216 | font-size: 2em;
217 | text-align: right;
218 | p {
219 | margin: 0;
220 | }
221 | }
222 | }
223 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_chartist.scss:
--------------------------------------------------------------------------------
1 | @mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) {
2 | display: block;
3 | position: relative;
4 | width: $width;
5 |
6 | &:before {
7 | display: block;
8 | float: left;
9 | content: "";
10 | width: 0;
11 | height: 0;
12 | padding-bottom: $ratio * 100%;
13 | }
14 |
15 | &:after {
16 | content: "";
17 | display: table;
18 | clear: both;
19 | }
20 |
21 | > svg {
22 | display: block;
23 | position: absolute;
24 | top: 0;
25 | left: 0;
26 | }
27 | }
28 |
29 | @mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) {
30 | -webkit-box-align: $ct-text-align;
31 | -webkit-align-items: $ct-text-align;
32 | -ms-flex-align: $ct-text-align;
33 | align-items: $ct-text-align;
34 | -webkit-box-pack: $ct-text-justify;
35 | -webkit-justify-content: $ct-text-justify;
36 | -ms-flex-pack: $ct-text-justify;
37 | justify-content: $ct-text-justify;
38 | // Fallback to text-align for non-flex browsers
39 | @if($ct-text-justify == 'flex-start') {
40 | text-align: left;
41 | } @else if ($ct-text-justify == 'flex-end') {
42 | text-align: right;
43 | } @else {
44 | text-align: center;
45 | }
46 | }
47 |
48 | @mixin ct-flex() {
49 | // Fallback to block
50 | display: block;
51 | display: -webkit-box;
52 | display: -moz-box;
53 | display: -ms-flexbox;
54 | display: -webkit-flex;
55 | display: flex;
56 | }
57 |
58 | @mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) {
59 | fill: $ct-text-color;
60 | color: $ct-text-color;
61 | font-size: $ct-text-size;
62 | line-height: $ct-text-line-height;
63 | }
64 |
65 | @mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) {
66 | stroke: $ct-grid-color;
67 | stroke-width: $ct-grid-width;
68 |
69 | @if ($ct-grid-dasharray) {
70 | stroke-dasharray: $ct-grid-dasharray;
71 | }
72 | }
73 |
74 | @mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) {
75 | stroke-width: $ct-point-size;
76 | stroke-linecap: $ct-point-shape;
77 | }
78 |
79 | @mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) {
80 | fill: none;
81 | stroke-width: $ct-line-width;
82 |
83 | @if ($ct-line-dasharray) {
84 | stroke-dasharray: $ct-line-dasharray;
85 | }
86 | }
87 |
88 | @mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) {
89 | stroke: none;
90 | fill-opacity: $ct-area-opacity;
91 | }
92 |
93 | @mixin ct-chart-bar($ct-bar-width: $ct-bar-width) {
94 | fill: none;
95 | stroke-width: $ct-bar-width;
96 | }
97 |
98 | @mixin ct-chart-donut($ct-donut-width: $ct-donut-width) {
99 | fill: none;
100 | stroke-width: $ct-donut-width;
101 | }
102 |
103 | @mixin ct-chart-series-color($color) {
104 | .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} {
105 | stroke: $color;
106 | }
107 |
108 | .#{$ct-class-slice-pie}, .#{$ct-class-area} {
109 | fill: $color;
110 | }
111 | }
112 |
113 | @mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) {
114 |
115 | .#{$ct-class-label} {
116 | @include ct-chart-label($ct-text-color, $ct-text-size);
117 | }
118 |
119 | .#{$ct-class-chart-line} .#{$ct-class-label},
120 | .#{$ct-class-chart-bar} .#{$ct-class-label} {
121 | @include ct-flex();
122 | }
123 |
124 | .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
125 | @include ct-align-justify(flex-end, flex-start);
126 | // Fallback for browsers that don't support foreignObjects
127 | text-anchor: start;
128 | }
129 |
130 | .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
131 | @include ct-align-justify(flex-start, flex-start);
132 | // Fallback for browsers that don't support foreignObjects
133 | text-anchor: start;
134 | }
135 |
136 | .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
137 | @include ct-align-justify(flex-end, flex-end);
138 | // Fallback for browsers that don't support foreignObjects
139 | text-anchor: end;
140 | }
141 |
142 | .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
143 | @include ct-align-justify(flex-end, flex-start);
144 | // Fallback for browsers that don't support foreignObjects
145 | text-anchor: start;
146 | }
147 |
148 | .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
149 | @include ct-align-justify(flex-end, center);
150 | // Fallback for browsers that don't support foreignObjects
151 | text-anchor: start;
152 | }
153 |
154 | .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
155 | @include ct-align-justify(flex-start, center);
156 | // Fallback for browsers that don't support foreignObjects
157 | text-anchor: start;
158 | }
159 |
160 | .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
161 | @include ct-align-justify(flex-end, flex-start);
162 | // Fallback for browsers that don't support foreignObjects
163 | text-anchor: start;
164 | }
165 |
166 | .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
167 | @include ct-align-justify(flex-start, flex-start);
168 | // Fallback for browsers that don't support foreignObjects
169 | text-anchor: start;
170 | }
171 |
172 | .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
173 | //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify);
174 | @include ct-align-justify(center, flex-end);
175 | // Fallback for browsers that don't support foreignObjects
176 | text-anchor: end;
177 | }
178 |
179 | .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
180 | @include ct-align-justify(center, flex-start);
181 | // Fallback for browsers that don't support foreignObjects
182 | text-anchor: end;
183 | }
184 |
185 | .#{$ct-class-grid} {
186 | @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray);
187 | }
188 |
189 | .#{$ct-class-point} {
190 | @include ct-chart-point($ct-point-size, $ct-point-shape);
191 | }
192 |
193 | .#{$ct-class-line} {
194 | @include ct-chart-line($ct-line-width);
195 | }
196 |
197 | .#{$ct-class-area} {
198 | @include ct-chart-area();
199 | }
200 |
201 | .#{$ct-class-bar} {
202 | @include ct-chart-bar($ct-bar-width);
203 | }
204 |
205 | .#{$ct-class-slice-donut} {
206 | @include ct-chart-donut($ct-donut-width);
207 | }
208 |
209 | @if $ct-include-colored-series {
210 | @for $i from 0 to length($ct-series-names) {
211 | .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} {
212 | $color: nth($ct-series-colors, $i + 1);
213 |
214 | @include ct-chart-series-color($color);
215 | }
216 | }
217 | }
218 | }
219 |
220 | @if $ct-include-classes {
221 | @include ct-chart();
222 |
223 | @if $ct-include-alternative-responsive-containers {
224 | @for $i from 0 to length($ct-scales-names) {
225 | .#{nth($ct-scales-names, $i + 1)} {
226 | @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1));
227 | }
228 | }
229 | }
230 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_dropdown.scss:
--------------------------------------------------------------------------------
1 | .dropdown-menu{
2 | visibility: hidden;
3 | margin: 0;
4 | padding: 0;
5 | border-radius: $border-radius-extreme;
6 | display: block;
7 | z-index: 9000;
8 | position: absolute;
9 |
10 | @include opacity(0);
11 | @include box-shadow($dropdown-shadow);
12 |
13 | .open &{
14 | @include opacity(1);
15 | visibility: visible;
16 | }
17 | .select &{
18 | border-radius: $border-radius-bottom;
19 | @include box-shadow(none);
20 | @include transform-origin($select-coordinates);
21 | @include transform-scale(1);
22 | @include transition($fast-transition-time, $transition-linear);
23 | margin-top: -20px;
24 | }
25 | .select.open &{
26 | margin-top: -1px;
27 | }
28 |
29 | > li > a {
30 | padding: $padding-base-vertical $padding-base-horizontal;
31 | color: #333333;
32 |
33 | img{
34 | margin-top: -3px;
35 | }
36 | }
37 | > li > a:focus{
38 | outline: 0 !important;
39 | }
40 |
41 | .btn-group.select &{
42 | min-width: 100%;
43 | }
44 |
45 | > li:first-child > a{
46 | border-top-left-radius: $border-radius-extreme;
47 | border-top-right-radius: $border-radius-extreme;
48 | }
49 |
50 | > li:last-child > a{
51 | border-bottom-left-radius: $border-radius-extreme;
52 | border-bottom-right-radius: $border-radius-extreme;
53 | }
54 |
55 | .select & > li:first-child > a{
56 | border-radius: 0;
57 | border-bottom: 0 none;
58 | }
59 |
60 | > li > a:hover,
61 | > li > a:focus {
62 | background-color: $smoke-bg;
63 | color: #333333;
64 | opacity: 1;
65 | text-decoration: none;
66 | }
67 |
68 | &.dropdown-blue > li > a:hover,
69 | &.dropdown-blue > li > a:focus{
70 | background-color: $light-blue;
71 | }
72 | &.dropdown-azure > li > a:hover,
73 | &.dropdown-azure > li > a:focus{
74 | background-color: $light-azure;
75 | }
76 | &.ct-green > li > a:hover,
77 | &.ct-green > li > a:focus{
78 | background-color: $light-green;
79 | }
80 | &.dropdown-orange > li > a:hover,
81 | &.dropdown-orange > li > a:focus{
82 | background-color: $light-orange;
83 | }
84 | &.dropdown-red > li > a:hover,
85 | &.dropdown-red > li > a:focus{
86 | background-color: $light-red;
87 | }
88 |
89 | }
90 |
91 | .dropdown-with-icons{
92 | > li > a{
93 | padding-left: 0px;
94 | line-height: 28px;
95 | }
96 | i{
97 | text-align: center;
98 | line-height: 28px;
99 | float: left;
100 |
101 | &[class^="pe-"]{
102 | font-size: 24px;
103 | width: 46px;
104 | }
105 | &[class^="fa"]{
106 | font-size: 14px;
107 | width: 38px;
108 | }
109 | }
110 | }
111 |
112 | //fix bug for the select items in btn-group
113 | .btn-group.select{
114 | overflow: hidden;
115 | }
116 | .btn-group.select.open{
117 | overflow: visible;
118 | }
119 |
120 |
121 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_footers.scss:
--------------------------------------------------------------------------------
1 | .footer{
2 | background-color: $white-color;
3 | line-height: $line-height;
4 |
5 | nav > ul{
6 | list-style: none;
7 | margin: 0;
8 | padding: 0;
9 | font-weight: normal;
10 |
11 | a:not(.btn){
12 | color: $dark-gray;
13 | display: block;
14 | margin-bottom: 3px;
15 | &:hover,
16 | &:focus{
17 | color: $default-states-color;
18 | }
19 | }
20 | }
21 | .social-area{
22 | padding: 15px 0;
23 | h5{
24 | padding-bottom: 15px;
25 | }
26 | }
27 | .social-area > a:not(.btn){
28 | color: $dark-gray;
29 | display: inline-block;
30 | vertical-align: top;
31 | padding: $padding-social-a;
32 | font-size: $font-size-large-navbar;
33 | font-weight: normal;
34 | line-height: $line-height;
35 | text-align: center;
36 | &:hover,
37 | &:focus{
38 | color: $default-states-color;
39 | }
40 | }
41 | .copyright{
42 | color: $default-states-color;
43 | padding: 10px 15px;
44 | margin: 10px 3px;
45 | line-height: 20px;
46 | font-size: $font-size-base;
47 | }
48 | hr{
49 | border-color: $medium-gray;
50 | }
51 | .title{
52 | color: $default-states-color;
53 | }
54 | }
55 |
56 | .footer-default{
57 | background-color: $smoke-bg;
58 | }
59 |
60 | .footer:not(.footer-big){
61 | nav > ul{
62 | font-size: $font-size-base;
63 | li{
64 | margin-left: 20px;
65 | float: left;
66 | }
67 | a{
68 | padding: 10px 0px;
69 | margin: 10px 10px 10px 0px;
70 | }
71 | }
72 | }
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_inputs.scss:
--------------------------------------------------------------------------------
1 | .form-control::-moz-placeholder{
2 | @include placeholder($medium-gray,1);
3 | }
4 | .form-control:-moz-placeholder{
5 | @include placeholder($medium-gray,1);
6 | }
7 | .form-control::-webkit-input-placeholder{
8 | @include placeholder($medium-gray,1);
9 | }
10 | .form-control:-ms-input-placeholder{
11 | @include placeholder($medium-gray,1);
12 | }
13 |
14 | .form-control {
15 | background-color: $white-bg;
16 | border: 1px solid $light-gray;
17 | border-radius: $border-radius-base;
18 | color: #565656;
19 | @include input-size($padding-base-vertical, $padding-base-horizontal - 4, $height-base);
20 | @include box-shadow(none);
21 |
22 | &:focus{
23 | background-color: $white-bg;
24 | border: 1px solid $medium-dark-gray;
25 | @include box-shadow(none);
26 | outline: 0 !important;
27 | color: #333333;
28 | }
29 |
30 | .has-success &,
31 | .has-error &,
32 | .has-success &:focus,
33 | .has-error &:focus{
34 | border-color: $light-gray;
35 | @include box-shadow(none);
36 | }
37 |
38 | .has-success &{
39 | color: $success-color;
40 | }
41 | .has-success &:focus{
42 | border-color: $success-color;
43 | }
44 | .has-error &{
45 | color: $danger-color;
46 | }
47 | .has-error &:focus{
48 | border-color: $danger-color;
49 | }
50 |
51 | & + .form-control-feedback{
52 | border-radius: $border-radius-large;
53 | font-size: $font-size-base;
54 | margin-top: -7px;
55 | position: absolute;
56 | right: 10px;
57 | top: 50%;
58 | vertical-align: middle;
59 | }
60 |
61 | .open &{
62 | border-radius: $border-radius-base $border-radius-base 0 0;
63 | border-bottom-color: transparent;
64 | }
65 | }
66 |
67 | .input-lg{
68 | height: 55px;
69 | padding: $padding-large-vertical $padding-large-horizontal;
70 | }
71 |
72 | .has-error{
73 | .form-control-feedback{
74 | color: $danger-color;
75 | }
76 | }
77 | .has-success{
78 | .form-control-feedback{
79 | color: $success-color
80 | }
81 | }
82 |
83 |
84 | .input-group-addon {
85 | background-color: $white-color;
86 | border: 1px solid $light-gray;
87 | border-radius: $border-radius-base;
88 |
89 | .has-success &,
90 | .has-error &{
91 | background-color: $white-color;
92 | border: 1px solid $light-gray;
93 | }
94 | .has-error .form-control:focus + &{
95 | border-color: $danger-color;
96 | color: $danger-color;
97 | }
98 | .has-success .form-control:focus + &{
99 | border-color: $success-color;
100 | color: $success-color;
101 | }
102 | .form-control:focus + &,
103 | .form-control:focus ~ &{
104 | background-color: $white-color;
105 | border-color: $dark-gray;
106 | }
107 | }
108 |
109 | .input-group .form-control:first-child,
110 | .input-group-addon:first-child,
111 | .input-group-btn:first-child > .dropdown-toggle,
112 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
113 | border-right: 0 none;
114 | }
115 | .input-group .form-control:last-child,
116 | .input-group-addon:last-child,
117 | .input-group-btn:last-child > .dropdown-toggle,
118 | .input-group-btn:first-child > .btn:not(:first-child) {
119 | border-left: 0 none;
120 | }
121 | .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
122 | background-color: $smoke-bg;
123 | color: $default-color;
124 | cursor: not-allowed;
125 | }
126 |
127 | .input-group-btn .btn{
128 | border-width: $border-thin;
129 | padding: $padding-round-vertical $padding-base-horizontal;
130 | }
131 | .input-group-btn .btn-default:not(.btn-fill){
132 | border-color: $medium-gray;
133 | }
134 |
135 | .input-group-btn:last-child > .btn{
136 | margin-left: 0;
137 | }
138 |
139 | .input-group-focus .input-group-addon{
140 | border-color: $dark-gray;
141 | }
142 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_misc.scss:
--------------------------------------------------------------------------------
1 | /* General overwrite */
2 | body,
3 | .wrapper{
4 | min-height: 100vh;
5 | position: relative;
6 | background-color: white;
7 | }
8 | a{
9 | color: $info-color;
10 |
11 | &:hover, &:focus{
12 | color: $info-states-color;
13 | text-decoration: none;
14 | }
15 | }
16 |
17 | a:focus, a:active,
18 | button::-moz-focus-inner,
19 | input::-moz-focus-inner,
20 | input[type="reset"]::-moz-focus-inner,
21 | input[type="button"]::-moz-focus-inner,
22 | input[type="submit"]::-moz-focus-inner,
23 | select::-moz-focus-inner,
24 | input[type="file"] > input[type="button"]::-moz-focus-inner{
25 | outline:0;
26 | }
27 | .ui-slider-handle:focus,
28 | .navbar-toggle,
29 | input:focus {
30 | outline : 0 !important;
31 | }
32 |
33 | /* Animations */
34 | .form-control,
35 | .input-group-addon,
36 | .tagsinput,
37 | .navbar,
38 | .navbar .alert{
39 | @include transition($general-transition-time, $transition-linear);
40 | }
41 |
42 | .sidebar .nav a,
43 | .table > tbody > tr .td-actions .btn{
44 | @include transition($fast-transition-time, $transition-ease-in);
45 | }
46 |
47 | .btn{
48 | @include transition($ultra-fast-transition-time, $transition-ease-in);
49 | }
50 | .fa{
51 | width: 18px;
52 | text-align: center;
53 | }
54 | .margin-top{
55 | margin-top: 50px;
56 | }
57 |
58 | .wrapper{
59 | position: relative;
60 | top: 0;
61 | height: 100vh;
62 | }
63 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_mixins.scss:
--------------------------------------------------------------------------------
1 | //Utilities
2 |
3 | @import "mixins/transparency";
4 | @import "mixins/vendor-prefixes";
5 |
6 |
7 | //Components
8 |
9 | @import "mixins/buttons";
10 | @import "mixins/inputs";
11 | @import "mixins/labels";
12 | @import "mixins/tabs";
13 |
14 | @import "mixins/navbars";
15 | @import "mixins/icons";
16 | @import "mixins/social-buttons";
17 |
18 | @import "mixins/morphing-buttons";
19 |
20 | @import "mixins/cards";
21 |
22 | @import "mixins/chartist";
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_navbars.scss:
--------------------------------------------------------------------------------
1 | .nav {
2 | > li{
3 | > a:hover,
4 | > a:focus{
5 | background-color: transparent;
6 | }
7 | }
8 | }
9 | .navbar{
10 | border: $none;
11 | font-size: $font-size-navbar;
12 | border-radius: 0;
13 |
14 | .navbar-brand {
15 | font-weight: $font-weight-normal;
16 | margin: $navbar-margin-brand;
17 | padding: $navbar-padding-brand;
18 | font-size: $font-size-large-navbar;
19 | }
20 | .navbar-nav{
21 | > li > a {
22 | padding: $navbar-padding-a;
23 | margin: $navbar-margin-a;
24 | position: relative;
25 | }
26 | > li > a.btn{
27 | margin: $navbar-margin-a-btn;
28 | padding: $padding-base-vertical $padding-base-horizontal;
29 | }
30 | > li > a.btn-round{
31 | margin: $navbar-margin-a-btn-round;
32 | }
33 | > li > a [class^="fa"]{
34 | font-size: $font-size-large + 1;
35 | position: relative;
36 | line-height: 16px;
37 | top: 1px;
38 | }
39 |
40 | .notification{
41 | position: absolute;
42 | background-color: #FB404B;
43 | text-align: center;
44 | border-radius: 10px;
45 | min-width: 18px;
46 | padding: 0 5px;
47 | height: 18px;
48 | font-size: 12px;
49 | color: #FFFFFF;
50 | font-weight: bold;
51 | line-height: 18px;
52 | top: 0px;
53 | left: 7px;
54 | }
55 | }
56 | .btn{
57 | margin: $navbar-margin-btn;
58 | font-size: $font-size-base;
59 | }
60 | .btn-simple{
61 | font-size: $font-size-medium;
62 | }
63 | .caret{
64 | // @include center-item();
65 | }
66 |
67 | &.fixed{
68 | width: calc(100%);
69 | right: 0;
70 | left: auto;
71 | border-radius: 0;
72 | }
73 |
74 | }
75 |
76 | .navbar-nav > li > .dropdown-menu{
77 | border-radius: $border-radius-extreme;
78 | margin-top: -5px;
79 | }
80 |
81 | .navbar-transparent, [class*="navbar-ct"]{
82 | .navbar-brand{
83 | color: $white-color;
84 | @include opacity(.9);
85 |
86 | &:focus,
87 | &:hover{
88 | background-color: transparent;
89 | @include opacity(1);
90 | }
91 | }
92 |
93 | .navbar-nav{
94 | > li > a:not(.btn){
95 | color: $white-color;
96 | border-color: $white-color;
97 | @include opacity(0.8);
98 | }
99 | > .active > a:not(.btn),
100 | > .active > a:hover:not(.btn),
101 | > .active > a:focus:not(.btn),
102 | > li > a:hover:not(.btn),
103 | > li > a:focus:not(.btn){
104 | background-color: transparent;
105 | border-radius: 3px;
106 | color: $white-color;
107 | @include opacity(1);
108 | }
109 | .nav > li > a.btn:hover{
110 | background-color: transparent;
111 | }
112 |
113 | > .dropdown > a .caret,
114 | > .dropdown > a:hover .caret,
115 | > .dropdown > a:focus .caret{
116 | border-bottom-color: $white-color;
117 | border-top-color: $white-color;
118 | }
119 |
120 | > .open > a,
121 | > .open > a:hover,
122 | > .open > a:focus {
123 | background-color: transparent;
124 | color: $white-color;
125 | @include opacity(1);
126 | }
127 | }
128 |
129 | .btn-default{
130 | color: $white-color;
131 | border-color: $white-color;
132 | }
133 | .btn-default.btn-fill{
134 | color: $dark-gray;
135 | background-color: $white-color;
136 | @include opacity(.9);
137 | }
138 | .btn-default.btn-fill:hover,
139 | .btn-default.btn-fill:focus,
140 | .btn-default.btn-fill:active,
141 | .btn-default.btn-fill.active,
142 | .open .dropdown-toggle.btn-fill.btn-default{
143 | border-color: $white-color;
144 | @include opacity(1);
145 | }
146 |
147 | }
148 | .navbar-transparent{
149 | .dropdown-menu .divider{
150 | background-color: rgba($white-color,.2);
151 | }
152 | }
153 |
154 | .nav-open .nav .caret{
155 | border-bottom-color: $white-color;
156 | border-top-color: $white-color;
157 | }
158 |
159 | .navbar-default {
160 | background-color: $white-navbar;
161 | border-bottom: 1px solid rgba(0, 0, 0, 0.1);
162 |
163 | .navbar-nav{
164 | > li > a:not(.btn){
165 | color: $dark-gray;
166 | }
167 |
168 | > .active > a,
169 | > .active > a:not(.btn):hover,
170 | > .active > a:not(.btn):focus,
171 | > li > a:not(.btn):hover,
172 | > li > a:not(.btn):focus {
173 | background-color: transparent;
174 | border-radius: 3px;
175 | color: $info-color;
176 | @include opacity(1);
177 | }
178 |
179 | > .dropdown > a:hover .caret,
180 | > .dropdown > a:focus .caret {
181 | border-bottom-color: $info-color;
182 | border-top-color: $info-color;
183 |
184 | }
185 |
186 | > .open > a,
187 | > .open > a:hover,
188 | > .open > a:focus{
189 | background-color: transparent;
190 | color: $info-color;
191 | }
192 |
193 | .navbar-toggle:hover,.navbar-toggle:focus {
194 | background-color: transparent;
195 | }
196 |
197 | }
198 |
199 | &:not(.navbar-transparent) .btn-default:hover{
200 | color: $info-color;
201 | border-color: $info-color;
202 | }
203 | &:not(.navbar-transparent) .btn-neutral,
204 | &:not(.navbar-transparent) .btn-neutral:hover,
205 | &:not(.navbar-transparent) .btn-neutral:active{
206 | color: $dark-gray;
207 | }
208 | }
209 |
210 | /* Navbar with icons */
211 |
212 | .navbar-icons{
213 | &.navbar .navbar-brand{
214 | margin-top: 12px;
215 | margin-bottom: 12px;
216 | }
217 | .navbar-nav{
218 | > li > a{
219 | text-align: center;
220 | padding: $navbar-padding-a-icons;
221 | margin: $navbar-margin-a-icons;
222 | }
223 |
224 | [class^="pe"] {
225 | font-size: 30px;
226 | position: relative;
227 | }
228 | p {
229 | margin: 3px 0 0;
230 | }
231 | }
232 | }
233 |
234 | .navbar-form{
235 | @include box-shadow(none);
236 | .form-control{
237 | @include light-form();
238 | height: 22px;
239 | font-size: $font-size-navbar;
240 | line-height: $line-height-general;
241 | color: $light-gray;
242 | }
243 | .navbar-transparent & .form-control,
244 | [class*="navbar-ct"] & .form-control{
245 | color: $white-color;
246 | border: $none;
247 | border-bottom: 1px solid rgba($white-color,.6);
248 | }
249 |
250 | }
251 |
252 | .navbar-ct-blue{
253 | @include navbar-color($blue-navbar);
254 | }
255 | .navbar-ct-azure{
256 | @include navbar-color($azure-navbar);
257 | }
258 | .navbar-ct-green{
259 | @include navbar-color($green-navbar);
260 | }
261 | .navbar-ct-orange{
262 | @include navbar-color($orange-navbar);
263 | }
264 | .navbar-ct-red{
265 | @include navbar-color($red-navbar);
266 | }
267 |
268 | .navbar-transparent{
269 | padding-top: 15px;
270 | background-color: transparent;
271 | border-bottom: 1px solid transparent;
272 | }
273 |
274 | .navbar-toggle{
275 | margin-top: 19px;
276 | margin-bottom: 19px;
277 | border: $none;
278 |
279 | .icon-bar {
280 | background-color: $white-color;
281 | }
282 | .navbar-collapse,
283 | .navbar-form {
284 | border-color: transparent;
285 | }
286 |
287 | &.navbar-default .navbar-toggle:hover,
288 | &.navbar-default .navbar-toggle:focus {
289 | background-color: transparent;
290 | }
291 | }
292 |
293 |
294 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_sidebar-and-main-panel.scss:
--------------------------------------------------------------------------------
1 | .sidebar{
2 | position: fixed;
3 | top: 0;
4 | bottom: 0;
5 | left: 0;
6 | width: 260px;
7 | display: block;
8 | z-index: 1;
9 | color: #fff;
10 | font-weight: 200;
11 | background-size: cover;
12 | background-position: center center;
13 |
14 | .sidebar-wrapper{
15 | position: relative;
16 | height: calc(100vh - 75px);
17 | overflow: auto;
18 | width: 260px;
19 | z-index: 4;
20 | padding-bottom: 30px;
21 | }
22 |
23 | .sidebar-background{
24 | position: absolute;
25 | z-index: 1;
26 | height: 100%;
27 | width: 100%;
28 | display: block;
29 | top: 0;
30 | left: 0;
31 | background-size: cover;
32 | background-position: center center;
33 | }
34 |
35 | .logo{
36 | padding: 10px 30px;
37 | border-bottom: 1px solid rgba(255, 255, 255, 0.2);
38 | position: relative;
39 | z-index: 4;
40 |
41 | p{
42 | float: left;
43 | font-size: 20px;
44 | margin: 10px 10px;
45 | color: $white-color;
46 | line-height: 20px;
47 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
48 | }
49 |
50 | a.logo-mini{
51 | float: left;
52 | text-align: center;
53 | width: 30px;
54 | margin-right: 15px;
55 |
56 | img{
57 | width: 40px;
58 | margin-left: -3px;
59 | display: block;
60 | margin-top: 2px;
61 | }
62 | }
63 |
64 | a.logo-normal{
65 | display: block;
66 | }
67 |
68 | .logo-img{
69 | width: 34px;
70 | display: inline-block;
71 | height: 34px;
72 | margin-left: -2px;
73 | margin-top: -2px;
74 | margin-right: 10px;
75 | border-radius: 30px;
76 | text-align: center;
77 | }
78 | }
79 |
80 | .logo-tim{
81 | border-radius: 50%;
82 | border: 1px solid #333;
83 | display: block;
84 | height: 61px;
85 | width: 61px;
86 | float: left;
87 | overflow: hidden;
88 |
89 | img{
90 | width: 60px;
91 | height: 60px;
92 | }
93 | }
94 |
95 | .nav{
96 | margin-top: 20px;
97 |
98 | li{
99 | > a{
100 | color: #FFFFFF;
101 | margin: 5px 15px;
102 | opacity: .86;
103 | border-radius: 4px;
104 | }
105 |
106 | &:hover > a,
107 | &.open > a,
108 | &.open > a:focus,
109 | &.open > a:hover{
110 | background: rgba(255,255,255,0.13);
111 | opacity: 1;
112 | }
113 |
114 | &.active > a{
115 | color: #FFFFFF;
116 | opacity: 1;
117 | background: rgba(255,255,255,0.23);
118 |
119 | }
120 | }
121 |
122 | p{
123 | margin: 0;
124 | line-height: 30px;
125 | font-size: 12px;
126 | font-weight: 600;
127 | text-transform: uppercase;
128 | }
129 |
130 | .caret{
131 | top: 24px;
132 | position: absolute;
133 | right: 15px;
134 | }
135 |
136 | i{
137 | font-size: 28px;
138 | float: left;
139 | margin-right: 15px;
140 | line-height: 30px;
141 | width: 30px;
142 | text-align: center;
143 | }
144 | }
145 | }
146 |
147 |
148 | .sidebar,
149 | body > .navbar-collapse{
150 | .logo{
151 | padding: 10px 30px;
152 | border-bottom: 1px solid rgba(255, 255, 255, 0.2);
153 |
154 | p{
155 | float: left;
156 | font-size: 20px;
157 | margin: 10px 10px;
158 | color: $white-color;
159 | line-height: 20px;
160 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
161 | }
162 |
163 | .simple-text{
164 | text-transform: uppercase;
165 | padding: $padding-small-vertical $padding-zero;
166 | display: block;
167 | font-size: $font-size-large;
168 | color: $white-color;
169 | font-weight: $font-weight-normal;
170 | line-height: 30px;
171 | }
172 | }
173 |
174 | .logo-tim{
175 | border-radius: 50%;
176 | border: 1px solid #333;
177 | display: block;
178 | height: 61px;
179 | width: 61px;
180 | float: left;
181 | overflow: hidden;
182 |
183 | img{
184 | width: 60px;
185 | height: 60px;
186 | }
187 | }
188 |
189 | &:after,
190 | &:before{
191 | display: block;
192 | content: "";
193 | position: absolute;
194 | width: 100%;
195 | height: 100%;
196 | top: 0;
197 | left: 0;
198 | z-index: 2;
199 | }
200 |
201 | &:before{
202 | opacity: .33;
203 | background: #000000;
204 | }
205 |
206 | &:after{
207 | @include icon-gradient($black-color-top, $black-color-bottom);
208 | z-index: 3;
209 | opacity: 1;
210 | }
211 |
212 | &[data-image]:after,
213 | &.has-image:after{
214 | opacity: .77;
215 | }
216 |
217 | &[data-color="blue"]:after{
218 | @include icon-gradient($new-dark-blue, $blue-color-bottom);
219 | }
220 | &[data-color="azure"]:after{
221 | @include icon-gradient($new-blue, $azure-color-bottom);
222 | }
223 | &[data-color="green"]:after{
224 | @include icon-gradient($new-green, $green-color-bottom);
225 | }
226 | &[data-color="orange"]:after{
227 | @include icon-gradient($new-orange, $orange-color-bottom);
228 | }
229 | &[data-color="red"]:after{
230 | @include icon-gradient($new-red, $red-color-bottom);
231 | }
232 | &[data-color="purple"]:after{
233 | @include icon-gradient($new-purple, $purple-color-bottom);
234 | }
235 | }
236 |
237 |
238 | .main-panel{
239 | background: rgba(203,203,210,.15);
240 | position: relative;
241 | float: right;
242 | width: $sidebar-width;
243 |
244 | > .content{
245 | padding: 30px 15px;
246 | min-height: calc(100% - 123px);
247 | }
248 |
249 | > .footer{
250 | border-top: 1px solid #e7e7e7;
251 | }
252 |
253 | .navbar{
254 | margin-bottom: 0;
255 | }
256 | }
257 |
258 | .sidebar,
259 | .main-panel{
260 | -webkit-transition-property: top,bottom;
261 | transition-property: top,bottom;
262 | -webkit-transition-duration: .2s,.2s;
263 | transition-duration: .2s,.2s;
264 | -webkit-transition-timing-function: linear,linear;
265 | transition-timing-function: linear,linear;
266 | -webkit-overflow-scrolling: touch;
267 | }
268 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_tables.scss:
--------------------------------------------------------------------------------
1 | .table{
2 |
3 | .radio,
4 | .checkbox{
5 | position: relative;
6 | height: 20px;
7 | display: block;
8 | width: 20px;
9 | padding: 0px 0px;
10 | margin: 0px 5px;
11 | text-align: center;
12 |
13 | .icons{
14 | left: 5px;
15 | }
16 | }
17 | > thead > tr > th,
18 | > tbody > tr > th,
19 | > tfoot > tr > th,
20 | > thead > tr > td,
21 | > tbody > tr > td,
22 | > tfoot > tr > td{
23 | padding: 12px 8px;
24 | vertical-align: middle;
25 | }
26 | // MANU : aici este ceva schimbat!!!
27 | > tbody > tr > td{
28 | font-size: 14px;
29 | }
30 | > thead > tr > th{
31 | border-bottom-width: 1px;
32 | font-size: $font-size-small;
33 | text-transform: uppercase;
34 | color: $dark-gray;
35 | font-weight: $font-weight-normal;
36 | padding-bottom: 5px;
37 | }
38 |
39 | .td-actions .btn{
40 | @include opacity(0.36);
41 |
42 | &.btn-xs{
43 | padding-left: 3px;
44 | padding-right: 3px;
45 | }
46 | }
47 | .td-actions{
48 | min-width: 90px;
49 | }
50 |
51 | > tbody > tr{
52 | position: relative;
53 |
54 | &:hover{
55 | .td-actions .btn{
56 | @include opacity(1);
57 | }
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/_typography.scss:
--------------------------------------------------------------------------------
1 | /* Font Smoothing */
2 | body,
3 | h1, .h1,
4 | h2, .h2,
5 | h3, .h3,
6 | h4, .h4,
7 | h5, .h5,
8 | h6, .h6,
9 | p,
10 | .navbar,
11 | .brand,
12 | .btn-simple,
13 | .alert,
14 | a,
15 | .td-name,
16 | td,
17 | button.close{
18 | -moz-osx-font-smoothing: grayscale;
19 | -webkit-font-smoothing: antialiased;
20 | font-family: "Roboto","Helvetica Neue",Arial,sans-serif;
21 | font-weight: $font-weight-normal;
22 | }
23 |
24 | h1, .h1, h2, .h2, h3, .h3, h4, .h4{
25 | font-weight: $font-weight-light;
26 | margin: $margin-large-vertical 0 $margin-base-vertical;
27 | }
28 |
29 | h1, .h1 {
30 | font-size: $font-size-h1;
31 | }
32 | h2, .h2{
33 | font-size: $font-size-h2;
34 | }
35 | h3, .h3{
36 | font-size: $font-size-h3;
37 | margin: 20px 0 10px;
38 | }
39 | h4, .h4{
40 | font-size: $font-size-h4;
41 | line-height: 30px;
42 | }
43 | h5, .h5 {
44 | font-size: $font-size-h5;
45 | margin-bottom: 15px;
46 | }
47 | h6, .h6{
48 | font-size: $font-size-h6;
49 | font-weight: $font-weight-bold;
50 | text-transform: uppercase;
51 | }
52 | p{
53 | font-size: $font-paragraph;
54 | line-height: $line-height-general;
55 | }
56 |
57 | h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small {
58 | color: $dark-gray;
59 | font-weight: $font-weight-light;
60 | line-height: $line-height-general;
61 | }
62 |
63 | h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small {
64 | font-size: 60%;
65 | }
66 |
67 | h1 .subtitle{
68 | display: block;
69 | margin: 0 0 $margin-large-vertical;
70 | }
71 |
72 | .text-muted{
73 | color: #9A9A9A;
74 | }
75 | .text-primary, .text-primary:hover{
76 | color: #1D62F0 !important;
77 | }
78 | .text-info, .text-info:hover{
79 | color: $info-color !important;
80 | }
81 | .text-success, .text-success:hover{
82 | color: $success-color !important;
83 | }
84 | .text-warning, .text-warning:hover{
85 | color: $warning-color !important;
86 | }
87 | .text-danger, .text-danger:hover{
88 | color: $danger-color !important;
89 | }
90 |
91 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_buttons.scss:
--------------------------------------------------------------------------------
1 | // Mixin for generating new styles
2 | @mixin btn-styles($btn-color, $btn-states-color) {
3 | border-color: $btn-color;
4 | color: $btn-color;
5 |
6 | &:hover,
7 | &:focus,
8 | &:active,
9 | &.active,
10 | .open > &.dropdown-toggle {
11 | background-color: $transparent-bg;
12 | color: $btn-states-color;
13 | border-color: $btn-states-color;
14 | }
15 |
16 | &.disabled,
17 | &:disabled,
18 | &[disabled],
19 | fieldset[disabled] & {
20 | &,
21 | &:hover,
22 | &:focus,
23 | &.focus,
24 | &:active,
25 | &.active {
26 | background-color: $transparent-bg;
27 | border-color: $btn-color;
28 | }
29 | }
30 |
31 |
32 | &.btn-fill {
33 | color: $white-color;
34 | background-color: $btn-color;
35 | @include opacity(1);
36 |
37 | &:hover,
38 | &:focus,
39 | &:active,
40 | &.active,
41 | .open > &.dropdown-toggle{
42 | background-color: $btn-states-color;
43 | color: $white-color;
44 | }
45 |
46 | .caret{
47 | border-top-color: $white-color;
48 | }
49 | }
50 |
51 | .caret{
52 | border-top-color: $btn-color;
53 | }
54 | }
55 |
56 |
57 | @mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){
58 | font-size: $font-size;
59 | border-radius: $border;
60 | padding: $padding-vertical $padding-horizontal;
61 |
62 | &.btn-round{
63 | padding: $padding-vertical + 1 $padding-horizontal;
64 | }
65 |
66 | &.btn-simple{
67 | padding: $padding-vertical + 2 $padding-horizontal;
68 | }
69 |
70 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_cards.scss:
--------------------------------------------------------------------------------
1 | @mixin filter($color){
2 | @if $color == #FFFFFF{
3 | background-color: rgba($color,.91);
4 | } @else {
5 | background-color: rgba($color,.69);
6 | }
7 | }
8 |
9 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_chartist.scss:
--------------------------------------------------------------------------------
1 | // Scales for responsive SVG containers
2 | $ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default;
3 | $ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default;
4 |
5 | // Class names to be used when generating CSS
6 | $ct-class-chart: ct-chart !default;
7 | $ct-class-chart-line: ct-chart-line !default;
8 | $ct-class-chart-bar: ct-chart-bar !default;
9 | $ct-class-horizontal-bars: ct-horizontal-bars !default;
10 | $ct-class-chart-pie: ct-chart-pie !default;
11 | $ct-class-chart-donut: ct-chart-donut !default;
12 | $ct-class-label: ct-label !default;
13 | $ct-class-series: ct-series !default;
14 | $ct-class-line: ct-line !default;
15 | $ct-class-point: ct-point !default;
16 | $ct-class-area: ct-area !default;
17 | $ct-class-bar: ct-bar !default;
18 | $ct-class-slice-pie: ct-slice-pie !default;
19 | $ct-class-slice-donut: ct-slice-donut !default;
20 | $ct-class-grid: ct-grid !default;
21 | $ct-class-vertical: ct-vertical !default;
22 | $ct-class-horizontal: ct-horizontal !default;
23 | $ct-class-start: ct-start !default;
24 | $ct-class-end: ct-end !default;
25 |
26 | // Container ratio
27 | $ct-container-ratio: (1/1.618) !default;
28 |
29 | // Text styles for labels
30 | $ct-text-color: rgba(0, 0, 0, 0.4) !default;
31 | $ct-text-size: 1.3rem !default;
32 | $ct-text-align: flex-start !default;
33 | $ct-text-justify: flex-start !default;
34 | $ct-text-line-height: 1;
35 |
36 | // Grid styles
37 | $ct-grid-color: rgba(0, 0, 0, 0.2) !default;
38 | $ct-grid-dasharray: 2px !default;
39 | $ct-grid-width: 1px !default;
40 |
41 | // Line chart properties
42 | $ct-line-width: 3px !default;
43 | $ct-line-dasharray: false !default;
44 | $ct-point-size: 8px !default;
45 | // Line chart point, can be either round or square
46 | $ct-point-shape: round !default;
47 | // Area fill transparency between 0 and 1
48 | $ct-area-opacity: 0.8 !default;
49 |
50 | // Bar chart bar width
51 | $ct-bar-width: 10px !default;
52 |
53 | // Donut width (If donut width is to big it can cause issues where the shape gets distorted)
54 | $ct-donut-width: 60px !default;
55 |
56 | // If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you
57 | // should set this property to false
58 | $ct-include-classes: true !default;
59 |
60 | // If this is set to true the CSS will contain colored series. You can extend or change the color with the
61 | // properties below
62 | $ct-include-colored-series: $ct-include-classes !default;
63 |
64 | // If set to true this will include all responsive container variations using the scales defined at the top of the script
65 | $ct-include-alternative-responsive-containers: $ct-include-classes !default;
66 |
67 | // Series names and colors. This can be extended or customized as desired. Just add more series and colors.
68 | $ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default;
69 | $ct-series-colors: (
70 | $new-blue,
71 | $new-red,
72 | $new-orange,
73 | $new-purple,
74 | $new-green,
75 | $new-dark-blue,
76 | $new-black,
77 | $social-google,
78 | $social-tumblr,
79 | $social-youtube,
80 | $social-twitter,
81 | $social-pinterest,
82 | $social-behance,
83 | #6188e2,
84 | #a748ca
85 | ) !default;
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_icons.scss:
--------------------------------------------------------------------------------
1 | @mixin icon-background ($icon-url){
2 | background-image : url($icon-url);
3 |
4 | }
5 |
6 | @mixin icon-shape ($size, $padding, $border-radius) {
7 | height: $size;
8 | width: $size;
9 | padding: $padding;
10 | border-radius: $border-radius;
11 | display: inline-table;
12 |
13 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_inputs.scss:
--------------------------------------------------------------------------------
1 | @mixin input-size($padding-vertical, $padding-horizontal, $height){
2 | padding: $padding-vertical $padding-horizontal;
3 | height: $height;
4 | }
5 |
6 | @mixin placeholder($color, $opacity){
7 | color: $color;
8 | @include opacity(1);
9 | }
10 |
11 | @mixin light-form(){
12 | border-radius: 0;
13 | border:0;
14 | padding: 0;
15 | background-color: transparent;
16 |
17 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_labels.scss:
--------------------------------------------------------------------------------
1 | @mixin label-style(){
2 | padding: $padding-label-vertical $padding-label-horizontal;
3 | border: 1px solid $default-color;
4 | border-radius: $border-radius-small;
5 | color: $default-color;
6 | font-weight: $font-weight-semi;
7 | font-size: $font-size-small;
8 | text-transform: uppercase;
9 | display: inline-block;
10 | vertical-align: middle;
11 | }
12 |
13 | @mixin label-color($color){
14 | border-color: $color;
15 | color: $color;
16 | }
17 | @mixin label-color-fill($color){
18 | border-color: $color;
19 | color: $white-color;
20 | background-color: $color;
21 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_morphing-buttons.scss:
--------------------------------------------------------------------------------
1 | $prefixes: ('', '-moz-', '-webkit-', '-ms-') !default;
2 |
3 | @mixin circle-animation(){
4 | @for $i from 0 to length($prefixes) {
5 | @include circle-animation-details(nth($prefixes, $i + 1));
6 | }
7 | }
8 |
9 | @mixin circle-animation-details($name){
10 | #{$name}animation-name: spin;
11 | #{$name}animation-duration: 1250ms;
12 | #{$name}animation-iteration-count: infinite;
13 | #{$name}animation-timing-function: linear;
14 |
15 | }
16 | @keyframes spin {
17 | from { transform:rotate(0deg); }
18 | to { transform:rotate(360deg); }
19 | }
20 |
21 | @-webkit-keyframes spin {
22 | from { -webkit-transform: rotate(0deg); }
23 | to { -webkit-transform: rotate(360deg); }
24 | }
25 |
26 | @-moz-keyframes spin {
27 | from { -moz-transform: rotate(0deg); }
28 | to { -moz-transform: rotate(360deg); }
29 | }
30 |
31 | @-ms-keyframes spin {
32 | from { -ms-transform: rotate(0deg); }
33 | to { -ms-transform: rotate(360deg); }
34 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_navbars.scss:
--------------------------------------------------------------------------------
1 | @mixin navbar-color($color){
2 | background-color: $color;
3 | }
4 |
5 | @mixin center-item(){
6 | left: 0;
7 | right: 0;
8 | margin-right: auto;
9 | margin-left: auto;
10 | position: absolute;
11 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_social-buttons.scss:
--------------------------------------------------------------------------------
1 | @mixin social-buttons-color ($color){
2 |
3 | border-color: $color;
4 | color: $color;
5 |
6 | &:hover,
7 | &:focus,
8 | &:active,
9 | &.active,
10 | .open > &.dropdown-toggle {
11 | background-color: $transparent-bg;
12 | color: $color;
13 | border-color: $color;
14 | opacity: 1;
15 | }
16 |
17 | &:disabled,
18 | &[disabled],
19 | &.disabled {
20 | background-color: $transparent-bg;
21 | border-color: $color;
22 | }
23 |
24 | &.btn-fill {
25 | color: $white-color;
26 | background-color: $color;
27 | opacity: 0.9;
28 |
29 | &:hover,
30 | &:focus,
31 | &:active,
32 | &.active,
33 | .open > &.dropdown-toggle{
34 | background-color: $color;
35 | color: $white-color;
36 | opacity: 1;
37 | }
38 |
39 | }
40 |
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_tabs.scss:
--------------------------------------------------------------------------------
1 | @mixin pill-style($color){
2 | border: 1px solid $color;
3 | color: $color;
4 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_transparency.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 |
10 | @mixin black-filter($opacity){
11 | top: 0;
12 | left: 0;
13 | height: 100%;
14 | width: 100%;
15 | position: absolute;
16 | background-color: rgba(17,17,17,$opacity);
17 | display: block;
18 | content: "";
19 | z-index: 1;
20 | }
--------------------------------------------------------------------------------
/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:
--------------------------------------------------------------------------------
1 | // User select
2 | // For selecting text on the page
3 |
4 | @mixin user-select($select) {
5 | -webkit-user-select: $select;
6 | -moz-user-select: $select;
7 | -ms-user-select: $select; // IE10+
8 | user-select: $select;
9 | }
10 |
11 | @mixin box-shadow($shadow...) {
12 | -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
13 | box-shadow: $shadow;
14 | }
15 |
16 | // Box sizing
17 | @mixin box-sizing($boxmodel) {
18 | -webkit-box-sizing: $boxmodel;
19 | -moz-box-sizing: $boxmodel;
20 | box-sizing: $boxmodel;
21 | }
22 |
23 |
24 | @mixin transition($time, $type){
25 | -webkit-transition: all $time $type;
26 | -moz-transition: all $time $type;
27 | -o-transition: all $time $type;
28 | -ms-transition: all $time $type;
29 | transition: all $time $type;
30 | }
31 |
32 | @mixin transform-scale($value){
33 | -webkit-transform: scale($value);
34 | -moz-transform: scale($value);
35 | -o-transform: scale($value);
36 | -ms-transform: scale($value);
37 | transform: scale($value);
38 | }
39 |
40 | @mixin transform-translate-x($value){
41 | -webkit-transform: translate3d($value, 0, 0);
42 | -moz-transform: translate3d($value, 0, 0);
43 | -o-transform: translate3d($value, 0, 0);
44 | -ms-transform: translate3d($value, 0, 0);
45 | transform: translate3d($value, 0, 0);
46 | }
47 |
48 | @mixin transform-origin($coordinates){
49 | -webkit-transform-origin: $coordinates;
50 | -moz-transform-origin: $coordinates;
51 | -o-transform-origin: $coordinates;
52 | -ms-transform-origin: $coordinates;
53 | transform-origin: $coordinates;
54 | }
55 |
56 | @mixin icon-gradient ($top-color, $bottom-color){
57 | background: $top-color;
58 | background: -moz-linear-gradient(top, $top-color 0%, $bottom-color 100%);
59 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top-color), color-stop(100%,$bottom-color));
60 | background: -webkit-linear-gradient(top, $top-color 0%,$bottom-color 100%);
61 | background: -o-linear-gradient(top, $top-color 0%,$bottom-color 100%);
62 | background: -ms-linear-gradient(top, $top-color 0%,$bottom-color 100%);
63 | background: linear-gradient(to bottom, $top-color 0%,$bottom-color 100%);
64 | background-size: 150% 150%;
65 | }
66 |
67 | @mixin radial-gradient($extern-color, $center-color){
68 | background: $extern-color;
69 | background: -moz-radial-gradient(center, ellipse cover, $center-color 0%, $extern-color 100%); /* FF3.6+ */
70 | background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,$center-color), color-stop(100%,$extern-color)); /* Chrome,Safari4+ */
71 | background: -webkit-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Chrome10+,Safari5.1+ */
72 | background: -o-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Opera 12+ */
73 | background: -ms-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* IE10+ */
74 | background: radial-gradient(ellipse at center, $center-color 0%,$extern-color 100%); /* W3C */
75 | background-size: 550% 450%;
76 | }
77 |
78 | @mixin vertical-align {
79 | position: relative;
80 | top: 50%;
81 | -webkit-transform: translateY(-50%);
82 | -ms-transform: translateY(-50%);
83 | transform: translateY(-50%);
84 | }
85 |
86 | @mixin rotate-180(){
87 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
88 | -webkit-transform: rotate(180deg);
89 | -ms-transform: rotate(180deg);
90 | transform: rotate(180deg);
91 | }
92 |
93 | @mixin bar-animation($type){
94 | -webkit-animation: $type 500ms linear 0s;
95 | -moz-animation: $type 500ms linear 0s;
96 | animation: $type 500ms 0s;
97 | -webkit-animation-fill-mode: forwards;
98 | -moz-animation-fill-mode: forwards;
99 | animation-fill-mode: forwards;
100 | }
101 |
102 | @mixin topbar-x-rotation(){
103 | @keyframes topbar-x {
104 | 0% {top: 0px; transform: rotate(0deg); }
105 | 45% {top: 6px; transform: rotate(145deg); }
106 | 75% {transform: rotate(130deg); }
107 | 100% {transform: rotate(135deg); }
108 | }
109 | @-webkit-keyframes topbar-x {
110 | 0% {top: 0px; -webkit-transform: rotate(0deg); }
111 | 45% {top: 6px; -webkit-transform: rotate(145deg); }
112 | 75% {-webkit-transform: rotate(130deg); }
113 | 100% { -webkit-transform: rotate(135deg); }
114 | }
115 | @-moz-keyframes topbar-x {
116 | 0% {top: 0px; -moz-transform: rotate(0deg); }
117 | 45% {top: 6px; -moz-transform: rotate(145deg); }
118 | 75% {-moz-transform: rotate(130deg); }
119 | 100% { -moz-transform: rotate(135deg); }
120 | }
121 | }
122 |
123 | @mixin topbar-back-rotation(){
124 | @keyframes topbar-back {
125 | 0% { top: 6px; transform: rotate(135deg); }
126 | 45% { transform: rotate(-10deg); }
127 | 75% { transform: rotate(5deg); }
128 | 100% { top: 0px; transform: rotate(0); }
129 | }
130 |
131 | @-webkit-keyframes topbar-back {
132 | 0% { top: 6px; -webkit-transform: rotate(135deg); }
133 | 45% { -webkit-transform: rotate(-10deg); }
134 | 75% { -webkit-transform: rotate(5deg); }
135 | 100% { top: 0px; -webkit-transform: rotate(0); }
136 | }
137 |
138 | @-moz-keyframes topbar-back {
139 | 0% { top: 6px; -moz-transform: rotate(135deg); }
140 | 45% { -moz-transform: rotate(-10deg); }
141 | 75% { -moz-transform: rotate(5deg); }
142 | 100% { top: 0px; -moz-transform: rotate(0); }
143 | }
144 | }
145 |
146 | @mixin bottombar-x-rotation(){
147 | @keyframes bottombar-x {
148 | 0% {bottom: 0px; transform: rotate(0deg);}
149 | 45% {bottom: 6px; transform: rotate(-145deg);}
150 | 75% {transform: rotate(-130deg);}
151 | 100% {transform: rotate(-135deg);}
152 | }
153 | @-webkit-keyframes bottombar-x {
154 | 0% {bottom: 0px; -webkit-transform: rotate(0deg);}
155 | 45% {bottom: 6px; -webkit-transform: rotate(-145deg);}
156 | 75% {-webkit-transform: rotate(-130deg);}
157 | 100% {-webkit-transform: rotate(-135deg);}
158 | }
159 | @-moz-keyframes bottombar-x {
160 | 0% {bottom: 0px; -moz-transform: rotate(0deg);}
161 | 45% {bottom: 6px; -moz-transform: rotate(-145deg);}
162 | 75% {-moz-transform: rotate(-130deg);}
163 | 100% {-moz-transform: rotate(-135deg);}
164 | }
165 | }
166 |
167 | @mixin bottombar-back-rotation{
168 | @keyframes bottombar-back {
169 | 0% { bottom: 6px;transform: rotate(-135deg);}
170 | 45% { transform: rotate(10deg);}
171 | 75% { transform: rotate(-5deg);}
172 | 100% { bottom: 0px;transform: rotate(0);}
173 | }
174 | @-webkit-keyframes bottombar-back {
175 | 0% {bottom: 6px;-webkit-transform: rotate(-135deg);}
176 | 45% {-webkit-transform: rotate(10deg);}
177 | 75% {-webkit-transform: rotate(-5deg);}
178 | 100% {bottom: 0px;-webkit-transform: rotate(0);}
179 | }
180 | @-moz-keyframes bottombar-back {
181 | 0% {bottom: 6px;-moz-transform: rotate(-135deg);}
182 | 45% {-moz-transform: rotate(10deg);}
183 | 75% {-moz-transform: rotate(-5deg);}
184 | 100% {bottom: 0px;-moz-transform: rotate(0);}
185 | }
186 |
187 | }
188 |
189 |
190 |
--------------------------------------------------------------------------------
/src/assets/sass/light-bootstrap-dashboard-react.scss:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | * Based on Light Bootstrap Dashboard - v1.3.0
6 | =========================================================
7 |
8 | * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard-react
9 | * Copyright 2019 Creative Tim (http://www.creative-tim.com)
10 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
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 | @import "lbd/variables";
19 | @import "lbd/mixins";
20 |
21 | // Core CSS
22 | @import "lbd/typography";
23 | @import "lbd/misc";
24 | @import "lbd/sidebar-and-main-panel";
25 | @import "lbd/buttons";
26 | @import "lbd/inputs";
27 |
28 | @import "lbd/alerts";
29 | @import "lbd/tables";
30 |
31 | @import "lbd/checkbox-radio-switch";
32 | @import "lbd/navbars";
33 | @import "lbd/footers";
34 |
35 | // Fancy Stuff
36 | @import "lbd/dropdown";
37 | @import "lbd/cards";
38 | @import "lbd/chartist";
39 | @import "lbd/responsive";
40 |
--------------------------------------------------------------------------------
/src/components/Card/Card.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 |
20 | export class Card extends Component {
21 | render() {
22 | return (
23 |
24 |
25 |
{this.props.title}
26 |
{this.props.category}
27 |
28 |
37 | {this.props.content}
38 |
39 |
40 | {this.props.legend}
41 | {this.props.stats != null ?
: ""}
42 |
43 | {this.props.stats}
44 |
45 |
46 |
47 |
48 | );
49 | }
50 | }
51 |
52 | export default Card;
53 |
--------------------------------------------------------------------------------
/src/components/CustomButton/CustomButton.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Button } from "react-bootstrap";
20 | import cx from "classnames";
21 | import PropTypes from "prop-types";
22 |
23 | class CustomButton extends Component {
24 | render() {
25 | const { fill, simple, pullRight, round, block, ...rest } = this.props;
26 |
27 | const btnClasses = cx({
28 | "btn-fill": fill,
29 | "btn-simple": simple,
30 | "pull-right": pullRight,
31 | "btn-block": block,
32 | "btn-round": round
33 | });
34 |
35 | return ;
36 | }
37 | }
38 |
39 | CustomButton.propTypes = {
40 | fill: PropTypes.bool,
41 | simple: PropTypes.bool,
42 | pullRight: PropTypes.bool,
43 | block: PropTypes.bool,
44 | round: PropTypes.bool
45 | };
46 |
47 | export default CustomButton;
48 |
--------------------------------------------------------------------------------
/src/components/CustomCheckbox/CustomCheckbox.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 |
20 | class CustomCheckbox extends Component {
21 | constructor(props) {
22 | super(props);
23 | this.state = {
24 | is_checked: props.isChecked ? true : false
25 | };
26 | this.handleClick = this.handleClick.bind(this);
27 | }
28 | handleClick() {
29 | this.setState({ is_checked: !this.state.is_checked });
30 | }
31 | render() {
32 | const { isChecked, number, label, inline, ...rest } = this.props;
33 | const classes =
34 | inline !== undefined ? "checkbox checkbox-inline" : "checkbox";
35 | return (
36 |
37 |
44 | {label}
45 |
46 | );
47 | }
48 | }
49 |
50 | export default CustomCheckbox;
51 |
--------------------------------------------------------------------------------
/src/components/CustomRadio/CustomRadio.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 |
20 | class CustomRadio extends Component {
21 | render() {
22 | const { number, label, option, name, ...rest } = this.props;
23 |
24 | return (
25 |
26 |
27 | {label}
28 |
29 | );
30 | }
31 | }
32 |
33 | export default CustomRadio;
34 |
--------------------------------------------------------------------------------
/src/components/FixedPlugin/FixedPlugin.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
20 | import Toggle from "react-toggle";
21 |
22 | import imagine1 from "assets/img/sidebar-1.jpg";
23 | import imagine2 from "assets/img/sidebar-2.jpg";
24 | import imagine3 from "assets/img/sidebar-3.jpg";
25 | import imagine4 from "assets/img/sidebar-4.jpg";
26 |
27 | class FixedPlugin extends Component {
28 | constructor(props) {
29 | super(props);
30 | this.state = {
31 | classes: "dropdown show-dropdown open",
32 | bg_checked: true,
33 | bgImage: this.props.bgImage
34 | };
35 | }
36 | handleClick = () => {
37 | this.props.handleFixedClick();
38 | };
39 | onChangeClick = () => {
40 | this.props.handleHasImage(!this.state.bg_checked);
41 | this.setState({ bg_checked: !this.state.bg_checked });
42 | };
43 | render() {
44 | return (
45 |
46 |
47 |
48 |
49 |
50 | {/*
*/}
214 |
215 |
216 | );
217 | }
218 | }
219 |
220 | export default FixedPlugin;
221 |
--------------------------------------------------------------------------------
/src/components/Footer/Footer.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Grid } from "react-bootstrap";
20 |
21 | class Footer extends Component {
22 | render() {
23 | return (
24 |
51 | );
52 | }
53 | }
54 |
55 | export default Footer;
56 |
--------------------------------------------------------------------------------
/src/components/FormInputs/FormInputs.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { FormGroup, ControlLabel, FormControl, Row } from "react-bootstrap";
20 |
21 | function FieldGroup({ label, ...props }) {
22 | return (
23 |
24 | {label}
25 |
26 |
27 | );
28 | }
29 |
30 | export class FormInputs extends Component {
31 | render() {
32 | var row = [];
33 | for (var i = 0; i < this.props.ncols.length; i++) {
34 | row.push(
35 |
36 |
37 |
38 | );
39 | }
40 | return {row}
;
41 | }
42 | }
43 |
44 | export default FormInputs;
45 |
--------------------------------------------------------------------------------
/src/components/Navbars/AdminNavbar.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Navbar } from "react-bootstrap";
20 |
21 | import AdminNavbarLinks from "./AdminNavbarLinks.jsx";
22 |
23 | class Header extends Component {
24 | constructor(props) {
25 | super(props);
26 | this.mobileSidebarToggle = this.mobileSidebarToggle.bind(this);
27 | this.state = {
28 | sidebarExists: false
29 | };
30 | }
31 | mobileSidebarToggle(e) {
32 | if (this.state.sidebarExists === false) {
33 | this.setState({
34 | sidebarExists: true
35 | });
36 | }
37 | e.preventDefault();
38 | document.documentElement.classList.toggle("nav-open");
39 | var node = document.createElement("div");
40 | node.id = "bodyClick";
41 | node.onclick = function() {
42 | this.parentElement.removeChild(this);
43 | document.documentElement.classList.toggle("nav-open");
44 | };
45 | document.body.appendChild(node);
46 | }
47 | render() {
48 | return (
49 |
50 |
51 |
52 | {this.props.brandText}
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | );
61 | }
62 | }
63 |
64 | export default Header;
65 |
--------------------------------------------------------------------------------
/src/components/Navbars/AdminNavbarLinks.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { NavItem, Nav, NavDropdown, MenuItem } from "react-bootstrap";
20 |
21 | class AdminNavbarLinks extends Component {
22 | render() {
23 | const notification = (
24 |
25 |
26 |
27 |
5
28 |
Notification
29 |
30 | );
31 | return (
32 |
33 |
34 |
35 |
36 | Dashboard
37 |
38 |
44 | Notification 1
45 | Notification 2
46 | Notification 3
47 | Notification 4
48 | Another notifications
49 |
50 |
51 |
52 | Search
53 |
54 |
55 |
56 |
57 | Account
58 |
59 |
64 | Action
65 | Another action
66 | Something
67 | Another action
68 | Something
69 |
70 | Separated link
71 |
72 |
73 | Log out
74 |
75 |
76 |
77 | );
78 | }
79 | }
80 |
81 | export default AdminNavbarLinks;
82 |
--------------------------------------------------------------------------------
/src/components/Sidebar/Sidebar.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { NavLink } from "react-router-dom";
20 |
21 | import AdminNavbarLinks from "../Navbars/AdminNavbarLinks.jsx";
22 |
23 | import logo from "assets/img/reactlogo.png";
24 |
25 | class Sidebar extends Component {
26 | constructor(props) {
27 | super(props);
28 | this.state = {
29 | width: window.innerWidth
30 | };
31 | }
32 | activeRoute(routeName) {
33 | return this.props.location.pathname.indexOf(routeName) > -1 ? "active" : "";
34 | }
35 | updateDimensions() {
36 | this.setState({ width: window.innerWidth });
37 | }
38 | componentDidMount() {
39 | this.updateDimensions();
40 | window.addEventListener("resize", this.updateDimensions.bind(this));
41 | }
42 | render() {
43 | const sidebarBackground = {
44 | backgroundImage: "url(" + this.props.image + ")"
45 | };
46 | return (
47 |
103 | );
104 | }
105 | }
106 |
107 | export default Sidebar;
108 |
--------------------------------------------------------------------------------
/src/components/StatsCard/StatsCard.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Row, Col } from "react-bootstrap";
20 |
21 | export class StatsCard extends Component {
22 | render() {
23 | return (
24 |
25 |
26 |
27 |
28 |
29 | {this.props.bigIcon}
30 |
31 |
32 |
33 |
34 |
{this.props.statsText}
35 | {this.props.statsValue}
36 |
37 |
38 |
39 |
40 |
41 |
42 | {this.props.statsIcon} {this.props.statsIconText}
43 |
44 |
45 |
46 |
47 | );
48 | }
49 | }
50 |
51 | export default StatsCard;
52 |
--------------------------------------------------------------------------------
/src/components/Tasks/Tasks.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Tooltip, OverlayTrigger } from "react-bootstrap";
20 | import Checkbox from "components/CustomCheckbox/CustomCheckbox.jsx";
21 | import Button from "components/CustomButton/CustomButton.jsx";
22 |
23 | export class Tasks extends Component {
24 | handleCheckbox = event => {
25 | const target = event.target;
26 | console.log(event.target);
27 | this.setState({
28 | [target.name]: target.checked
29 | });
30 | };
31 | render() {
32 | const edit = Edit Task ;
33 | const remove = Remove ;
34 | const tasks_title = [
35 | 'Sign contract for "What are conference organizers afraid of?"',
36 | "Lines From Great Russian Literature? Or E-mails From My Boss?",
37 | "Flooded: One year later, assessing what was lost and what was found when a ravaging rain swept through metro Detroi",
38 | "Create 4 Invisible User Experiences you Never Knew About",
39 | 'Read "Following makes Medium better"',
40 | "Unfollow 5 enemies from twitter"
41 | ];
42 | var tasks = [];
43 | var number;
44 | for (var i = 0; i < tasks_title.length; i++) {
45 | number = "checkbox" + i;
46 | tasks.push(
47 |
48 |
49 |
53 |
54 | {tasks_title[i]}
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | );
70 | }
71 | return {tasks} ;
72 | }
73 | }
74 |
75 | export default Tasks;
76 |
--------------------------------------------------------------------------------
/src/components/UserCard/UserCard.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 |
20 | export class UserCard extends Component {
21 | render() {
22 | return (
23 |
24 |
25 |
26 |
27 |
28 |
42 |
{this.props.description}
43 |
44 |
45 |
{this.props.socials}
46 |
47 | );
48 | }
49 | }
50 |
51 | export default UserCard;
52 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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";
20 |
21 | import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
22 |
23 | import "bootstrap/dist/css/bootstrap.min.css";
24 | import "./assets/css/animate.min.css";
25 | import "./assets/sass/light-bootstrap-dashboard-react.scss?v=1.3.0";
26 | import "./assets/css/demo.css";
27 | import "./assets/css/pe-icon-7-stroke.css";
28 |
29 | import AdminLayout from "layouts/Admin.jsx";
30 |
31 | ReactDOM.render(
32 |
33 |
34 | } />
35 |
36 |
37 | ,
38 | document.getElementById("root")
39 | );
40 |
--------------------------------------------------------------------------------
/src/layouts/Admin.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Route, Switch } from "react-router-dom";
20 | import NotificationSystem from "react-notification-system";
21 |
22 | import AdminNavbar from "components/Navbars/AdminNavbar";
23 | import Footer from "components/Footer/Footer";
24 | import Sidebar from "components/Sidebar/Sidebar";
25 | import FixedPlugin from "components/FixedPlugin/FixedPlugin.jsx";
26 |
27 | import { style } from "variables/Variables.jsx";
28 |
29 | import routes from "routes.js";
30 |
31 | import image from "assets/img/sidebar-3.jpg";
32 |
33 | class Admin extends Component {
34 | constructor(props) {
35 | super(props);
36 | this.state = {
37 | _notificationSystem: null,
38 | image: image,
39 | color: "black",
40 | hasImage: true,
41 | fixedClasses: "dropdown show-dropdown open"
42 | };
43 | }
44 | handleNotificationClick = position => {
45 | var color = Math.floor(Math.random() * 4 + 1);
46 | var level;
47 | switch (color) {
48 | case 1:
49 | level = "success";
50 | break;
51 | case 2:
52 | level = "warning";
53 | break;
54 | case 3:
55 | level = "error";
56 | break;
57 | case 4:
58 | level = "info";
59 | break;
60 | default:
61 | break;
62 | }
63 | this.state._notificationSystem.addNotification({
64 | title: ,
65 | message: (
66 |
67 | Welcome to Light Bootstrap Dashboard - a beautiful freebie for
68 | every web developer.
69 |
70 | ),
71 | level: level,
72 | position: position,
73 | autoDismiss: 15
74 | });
75 | };
76 | getRoutes = routes => {
77 | return routes.map((prop, key) => {
78 | if (prop.layout === "/admin") {
79 | return (
80 | (
83 |
88 | )}
89 | key={key}
90 | />
91 | );
92 | } else {
93 | return null;
94 | }
95 | });
96 | };
97 | getBrandText = path => {
98 | for (let i = 0; i < routes.length; i++) {
99 | if (
100 | this.props.location.pathname.indexOf(
101 | routes[i].layout + routes[i].path
102 | ) !== -1
103 | ) {
104 | return routes[i].name;
105 | }
106 | }
107 | return "Brand";
108 | };
109 | handleImageClick = image => {
110 | this.setState({ image: image });
111 | };
112 | handleColorClick = color => {
113 | this.setState({ color: color });
114 | };
115 | handleHasImage = hasImage => {
116 | this.setState({ hasImage: hasImage });
117 | };
118 | handleFixedClick = () => {
119 | if (this.state.fixedClasses === "dropdown") {
120 | this.setState({ fixedClasses: "dropdown show-dropdown open" });
121 | } else {
122 | this.setState({ fixedClasses: "dropdown" });
123 | }
124 | };
125 | componentDidMount() {
126 | this.setState({ _notificationSystem: this.refs.notificationSystem });
127 | var _notificationSystem = this.refs.notificationSystem;
128 | var color = Math.floor(Math.random() * 4 + 1);
129 | var level;
130 | switch (color) {
131 | case 1:
132 | level = "success";
133 | break;
134 | case 2:
135 | level = "warning";
136 | break;
137 | case 3:
138 | level = "error";
139 | break;
140 | case 4:
141 | level = "info";
142 | break;
143 | default:
144 | break;
145 | }
146 | _notificationSystem.addNotification({
147 | title: ,
148 | message: (
149 |
150 | Welcome to Light Bootstrap Dashboard - a beautiful freebie for
151 | every web developer.
152 |
153 | ),
154 | level: level,
155 | position: "tr",
156 | autoDismiss: 15
157 | });
158 | }
159 | componentDidUpdate(e) {
160 | if (
161 | window.innerWidth < 993 &&
162 | e.history.location.pathname !== e.location.pathname &&
163 | document.documentElement.className.indexOf("nav-open") !== -1
164 | ) {
165 | document.documentElement.classList.toggle("nav-open");
166 | }
167 | if (e.history.action === "PUSH") {
168 | document.documentElement.scrollTop = 0;
169 | document.scrollingElement.scrollTop = 0;
170 | this.refs.mainPanel.scrollTop = 0;
171 | }
172 | }
173 | render() {
174 | return (
175 |
176 |
177 |
180 |
181 |
185 |
{this.getRoutes(routes)}
186 |
187 |
197 |
198 |
199 | );
200 | }
201 | }
202 |
203 | export default Admin;
204 |
--------------------------------------------------------------------------------
/src/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/routes.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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.jsx";
19 | import UserProfile from "views/UserProfile.jsx";
20 | import TableList from "views/TableList.jsx";
21 | import TableList2 from "views/TableList2.jsx";
22 | import AllowedActions from "./assets/api/getAllowedActions.jsx";
23 |
24 | const dashboardRoutes = AllowedActions().data.user.Pages;
25 | const dashboardRoutes2 = [
26 | {
27 | path: "/dashboard",
28 | name: "Dashboard",
29 | icon: "pe-7s-graph",
30 | component: Dashboard,
31 | layout: "/admin"
32 | },
33 | {
34 | path: "/users-list",
35 | name: "Users",
36 | icon: "pe-7s-user",
37 | component: TableList2,
38 | layout: "/admin"
39 | },
40 | {
41 | path: "/table",
42 | name: "Roles",
43 | icon: "pe-7s-note2",
44 | component: TableList,
45 | layout: "/admin"
46 | }
47 | //,
48 | // {
49 | // path: "/typography",
50 | // name: "Typography",
51 | // icon: "pe-7s-news-paper",
52 | // component: Typography,
53 | // layout: "/admin"
54 | // },
55 | // {
56 | // path: "/icons",
57 | // name: "Icons",
58 | // icon: "pe-7s-science",
59 | // component: Icons,
60 | // layout: "/admin"
61 | // },
62 | // {
63 | // path: "/maps",
64 | // name: "Maps",
65 | // icon: "pe-7s-map-marker",
66 | // component: Maps,
67 | // layout: "/admin"
68 | // },
69 | // {
70 | // path: "/notifications",
71 | // name: "Notifications",
72 | // icon: "pe-7s-bell",
73 | // component: Notifications,
74 | // layout: "/admin"
75 | // },
76 | // {
77 | // upgrade: true,
78 | // path: "/upgrade",
79 | // name: "Upgrade to PRO",
80 | // icon: "pe-7s-rocket",
81 | // component: Upgrade,
82 | // layout: "/admin"
83 | // }
84 | ];
85 |
86 | export default dashboardRoutes;
87 |
--------------------------------------------------------------------------------
/src/views/Dashboard.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import ChartistGraph from "react-chartist";
20 | import { Grid, Row, Col } from "react-bootstrap";
21 |
22 | import { Card } from "components/Card/Card.jsx";
23 | import { StatsCard } from "components/StatsCard/StatsCard.jsx";
24 | import { Tasks } from "components/Tasks/Tasks.jsx";
25 | import {
26 | dataPie,
27 | legendPie,
28 | dataSales,
29 | optionsSales,
30 | responsiveSales,
31 | legendSales,
32 | dataBar,
33 | optionsBar,
34 | responsiveBar,
35 | legendBar
36 | } from "variables/Variables.jsx";
37 |
38 | class Dashboard extends Component {
39 | constructor(props) {
40 | super(props);
41 | this.state = {
42 | actionsArray: []
43 | };
44 | }
45 |
46 | createLegend(json) {
47 | var legend = [];
48 | for (var i = 0; i < json["names"].length; i++) {
49 | var type = "fa fa-circle text-" + json["types"][i];
50 | legend.push( );
51 | legend.push(" ");
52 | legend.push(json["names"][i]);
53 | }
54 | return legend;
55 | }
56 |
57 | isActionAllowed = (actionUrl = "") => {
58 | return this.state.actionsArray.indexOf(actionUrl) >= 0 ? true : false;
59 | };
60 |
61 | getActionList = () => {
62 | let actionsArray = [];
63 | let allowedActions = this.props.allowedActions;
64 | allowedActions.forEach(element => {
65 | if (element.roleIsActive) {
66 | actionsArray.push(element.actionUrl);
67 | }
68 | });
69 | this.setState({ actionsArray });
70 | };
71 |
72 | componentWillMount() {
73 | this.getActionList();
74 | }
75 |
76 | render() {
77 | return (
78 |
79 |
80 |
81 | {this.isActionAllowed("capacity") && (
82 |
83 | }
85 | statsText="Capacity"
86 | statsValue="105GB"
87 | statsIcon={ }
88 | statsIconText="Updated now"
89 | />
90 |
91 | )}
92 | {this.isActionAllowed("revenue") &&
93 |
94 | }
96 | statsText="Revenue"
97 | statsValue="$1,345"
98 | statsIcon={ }
99 | statsIconText="Last day"
100 | />
101 |
102 | }
103 | {this.isActionAllowed("errors") &&
104 |
105 | }
107 | statsText="Errors"
108 | statsValue="23"
109 | statsIcon={ }
110 | statsIconText="In the last hour"
111 | />
112 |
113 | }
114 | {this.isActionAllowed("followers") &&
115 |
116 | }
118 | statsText="Followers"
119 | statsValue="+45"
120 | statsIcon={ }
121 | statsIconText="Updated now"
122 | />
123 |
124 | }
125 |
126 |
127 | {this.isActionAllowed("users_behavior") &&
128 |
129 |
130 |
138 |
144 |
145 | }
146 | legend={
147 | {this.createLegend(legendSales)}
148 | }
149 | />
150 |
151 | }
152 | {this.isActionAllowed("email_statistics") &&
153 |
154 |
164 |
165 |
166 | }
167 | legend={
168 | {this.createLegend(legendPie)}
169 | }
170 | />
171 |
172 | }
173 |
174 |
175 |
176 | {this.isActionAllowed("sales") &&
177 |
178 |
186 |
192 |
193 | }
194 | legend={
195 | {this.createLegend(legendBar)}
196 | }
197 | />
198 |
199 | }
200 |
201 | {this.isActionAllowed("tasks") &&
202 |
203 |
210 |
213 |
214 | }
215 | />
216 |
217 | }
218 |
219 |
220 |
221 | );
222 | }
223 | }
224 |
225 | export default Dashboard;
226 |
--------------------------------------------------------------------------------
/src/views/Icons.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Grid, Row, Col } from "react-bootstrap";
20 |
21 | import Card from "components/Card/Card";
22 | import { iconsArray } from "variables/Variables.jsx";
23 |
24 | class Icons extends Component {
25 | render() {
26 | return (
27 |
28 |
29 |
30 |
31 |
36 | Handcrafted by our friends from{" "}
37 |
42 | Pixeden
43 |
44 |
45 | }
46 | content={
47 |
48 | {iconsArray.map((prop, key) => {
49 | return (
50 |
58 |
59 |
60 |
61 |
62 |
63 | );
64 | })}
65 |
66 | }
67 | />
68 |
69 |
70 |
71 |
72 | );
73 | }
74 | }
75 |
76 | export default Icons;
77 |
--------------------------------------------------------------------------------
/src/views/Maps.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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 | // react components used to create a google map
20 | import {
21 | withScriptjs,
22 | withGoogleMap,
23 | GoogleMap,
24 | Marker
25 | } from "react-google-maps";
26 |
27 | const CustomMap = withScriptjs(
28 | withGoogleMap(props => (
29 |
37 |
38 |
39 | ))
40 | );
41 |
42 | function Maps({ ...prop }) {
43 | return (
44 | }
47 | containerElement={
}
48 | mapElement={
}
49 | />
50 | );
51 | }
52 |
53 | export default Maps;
54 |
--------------------------------------------------------------------------------
/src/views/Notifications.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Grid, Row, Col, Alert } from "react-bootstrap";
20 |
21 | import Button from "components/CustomButton/CustomButton.jsx";
22 |
23 | class Notifications extends Component {
24 | render() {
25 | return (
26 |
27 |
28 |
29 |
50 |
51 |
52 |
53 | Notifications Style
54 |
55 | This is a plain notification
56 |
57 |
58 |
59 | ✕
60 |
61 | This is a notification with close button.
62 |
63 |
64 |
65 | ✕
66 |
67 |
68 |
69 | This is a notification with close button and icon.
70 |
71 |
72 |
73 |
74 | ✕
75 |
76 |
77 |
78 | This is a notification with close button and icon and have
79 | many lines. You can see that the icon and the close button
80 | are always vertically aligned. This is a beautiful
81 | notification. So you don't have to worry about the style.
82 |
83 |
84 |
85 |
86 | Notification states
87 |
88 |
89 | ✕
90 |
91 |
92 | Info - This is a regular notification made with
93 | bsStyle="info"
94 |
95 |
96 |
97 |
98 | ✕
99 |
100 |
101 | Success - This is a regular notification made
102 | with bsStyle="success"
103 |
104 |
105 |
106 |
107 | ✕
108 |
109 |
110 | Warning - This is a regular notification made
111 | with bsStyle="warning"
112 |
113 |
114 |
115 |
116 | ✕
117 |
118 |
119 | Danger - This is a regular notification made with
120 | bsStyle="danger"
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 | Notifications Places
132 | Click to view notifications
133 |
134 |
135 |
136 |
137 |
138 | this.props.handleClick("tl")}
142 | >
143 | Top Left
144 |
145 |
146 |
147 | this.props.handleClick("tc")}
151 | >
152 | Top Center
153 |
154 |
155 |
156 | this.props.handleClick("tr")}
160 | >
161 | Top Right
162 |
163 |
164 |
165 |
166 |
167 | this.props.handleClick("bl")}
171 | >
172 | Bottom Left
173 |
174 |
175 |
176 | this.props.handleClick("bc")}
180 | >
181 | Bottom Center
182 |
183 |
184 |
185 | this.props.handleClick("br")}
189 | >
190 | Bottom Right
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 | );
200 | }
201 | }
202 |
203 | export default Notifications;
204 |
--------------------------------------------------------------------------------
/src/views/TableList.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Grid, Row, Col, Table } from "react-bootstrap";
20 |
21 | import Card from "components/Card/Card.jsx";
22 | import { thArray, tdArray } from "variables/Variables.jsx";
23 |
24 | class TableList extends Component {
25 | isActionAllowed = (actionName = "") => {
26 | // return (this.props.actions.indexOf(actionName) >= 0) ? true : false;
27 | return true;
28 | }
29 |
30 | render() {
31 | console.log(this.props);
32 | return (
33 |
34 |
35 |
36 |
37 | {this.isActionAllowed('create-user') &&
38 | Create Role
39 | }
40 |
41 |
42 |
43 |
44 |
51 |
52 |
53 | {thArray.map((prop, key) => {
54 | return {prop} ;
55 | })}
56 |
57 |
58 |
59 | {tdArray.map((prop, key) => {
60 | return (
61 |
62 | {prop.map((prop, key) => {
63 | return {prop} ;
64 | })}
65 |
66 | );
67 | })}
68 |
69 |
70 | }
71 | />
72 |
73 |
74 |
75 |
76 |
77 |
78 | );
79 | }
80 | }
81 |
82 | export default TableList;
83 |
--------------------------------------------------------------------------------
/src/views/TableList2.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Grid, Row, Col, Table } from "react-bootstrap";
20 |
21 | import Card from "components/Card/Card.jsx";
22 | import { thArray, tdArray } from "variables/Variables.jsx";
23 |
24 | class TableList2 extends Component {
25 | constructor(props){
26 | super(props);
27 | }
28 | isActionAllowed = (actionName = "") => {
29 | // return (this.props.actions.indexOf(actionName) >= 0) ? true : false;
30 | return true;
31 | }
32 |
33 | render() {
34 | console.log(this.props);
35 | return (
36 |
37 |
38 |
39 |
40 | {this.isActionAllowed('create-user') &&
41 | Create User
42 | }
43 |
44 |
45 |
46 |
47 |
48 |
55 | {this.isActionAllowed('list-roles') &&
56 |
57 |
58 |
59 | {thArray.map((prop, key) => {
60 | return {prop} ;
61 | })}
62 |
63 |
64 |
65 | {tdArray.map((prop, key) => {
66 | return (
67 |
68 | {prop.map((prop, key) => {
69 | return {prop} ;
70 | })}
71 |
72 | );
73 | })}
74 |
75 |
76 | }
77 |
78 | }
79 | />
80 |
81 |
82 |
83 |
84 |
85 | );
86 | }
87 | }
88 |
89 | export default TableList2;
90 |
--------------------------------------------------------------------------------
/src/views/Typography.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Grid, Row, Col } from "react-bootstrap";
20 |
21 | import Card from "components/Card/Card.jsx";
22 |
23 | class Typography extends Component {
24 | render() {
25 | return (
26 |
27 |
28 |
29 |
30 |
35 |
36 |
37 | Header 1
Light Bootstrap
38 | Table Heading{" "}
39 |
40 |
41 |
42 |
43 |
44 | Header 2
Light Bootstrap
45 | Table Heading
46 |
47 |
48 |
49 |
50 | Header 3
Light Bootstrap
51 | Table Heading
52 |
53 |
54 |
55 |
56 | Header 4
Light Bootstrap
57 | Table Heading
58 |
59 |
60 |
61 |
62 | Header 5
Light Bootstrap
63 | Table Heading
64 |
65 |
66 |
67 |
68 | Header 6
Light Bootstrap
69 | Table Heading
70 |
71 |
72 |
73 |
74 | Paragraph Lorem ipsum
75 | dolor sit amet, consectetuer adipiscing elit, sed diam
76 | nonummy nibh euismod tincidunt ut laoreet dolore magna
77 | aliquam erat volutpat. Ut wisi enim ad minim veniam.
78 |
79 |
80 |
81 |
Quote
82 |
83 |
84 | Lorem ipsum dolor sit amet, consectetuer adipiscing
85 | elit, sed diam nonummy nibh euismod tincidunt ut
86 | laoreet dolore magna aliquam erat volutpat. Ut wisi
87 | enim ad minim veniam.
88 |
89 | Steve Jobs, CEO Apple
90 |
91 |
92 |
93 |
94 |
Muted Text
95 |
96 | Lorem ipsum dolor sit amet, consectetuer adipiscing
97 | elit, sed diam nonummy nibh euismod tincidunt ut
98 | laoreet.
99 |
100 |
101 |
102 | {/* */}
105 |
Coloured Text
106 |
107 | Text Primary - Light Bootstrap Table Heading and complex
108 | bootstrap dashboard you've ever seen on the internet.
109 |
110 |
111 | Text Info - Light Bootstrap Table Heading and complex
112 | bootstrap dashboard you've ever seen on the internet.
113 |
114 |
115 | Text Success - Light Bootstrap Table Heading and complex
116 | bootstrap dashboard you've ever seen on the internet.
117 |
118 |
119 | Text Warning - Light Bootstrap Table Heading and complex
120 | bootstrap dashboard you've ever seen on the internet.
121 |
122 |
123 | Text Danger - Light Bootstrap Table Heading and complex
124 | bootstrap dashboard you've ever seen on the internet.
125 |
126 |
127 |
128 |
129 |
130 | Small Tag
Header with small
131 | subtitle
132 |
".small" is a tag for the headers {" "}
133 |
134 |
135 |
136 | }
137 | />
138 |
139 |
140 |
141 |
142 | );
143 | }
144 | }
145 |
146 | export default Typography;
147 |
--------------------------------------------------------------------------------
/src/views/Upgrade.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import { Table, Grid, Row, Col } from "react-bootstrap";
20 |
21 | import Card from "components/Card/Card";
22 |
23 | import Button from "components/CustomButton/CustomButton";
24 |
25 | class Icons extends Component {
26 | render() {
27 | return (
28 |
29 |
30 |
31 |
32 |
41 |
42 |
43 |
44 | Free
45 | PRO
46 |
47 |
48 |
49 |
50 | Components
51 | 30
52 | 60
53 |
54 |
55 | Plugins
56 | 3
57 | 13
58 |
59 |
60 | Example Pages
61 | 7
62 | 24
63 |
64 |
65 | Login/Register/Lock Pages
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | Premium Support
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | Free
85 | Just $49
86 |
87 |
88 |
89 |
90 |
97 | Current Version
98 |
99 |
100 |
101 |
108 | Upgrade to PRO
109 |
110 |
111 |
112 |
113 |
114 | }
115 | />
116 |
117 |
118 |
119 |
120 | );
121 | }
122 | }
123 |
124 | export default Icons;
125 |
--------------------------------------------------------------------------------
/src/views/UserProfile.jsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Light Bootstrap Dashboard React - v1.3.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 | * Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-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, { Component } from "react";
19 | import {
20 | Grid,
21 | Row,
22 | Col,
23 | FormGroup,
24 | ControlLabel,
25 | FormControl
26 | } from "react-bootstrap";
27 |
28 | import { Card } from "components/Card/Card.jsx";
29 | import { FormInputs } from "components/FormInputs/FormInputs.jsx";
30 | import { UserCard } from "components/UserCard/UserCard.jsx";
31 | import Button from "components/CustomButton/CustomButton.jsx";
32 |
33 | import avatar from "assets/img/faces/face-3.jpg";
34 |
35 | class UserProfile extends Component {
36 | render() {
37 | return (
38 |
39 |
40 |
41 |
42 |
46 |
72 |
91 |
104 |
129 |
130 |
131 |
132 |
133 | About Me
134 |
141 |
142 |
143 |
144 |
145 | Update Profile
146 |
147 |
148 |
149 | }
150 | />
151 |
152 |
153 |
160 | "Lamborghini Mercy
161 |
162 | Your chick she so thirsty
163 |
164 | I'm in that two seat Lambo"
165 |
166 | }
167 | socials={
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 | }
180 | />
181 |
182 |
183 |
184 |
185 | );
186 | }
187 | }
188 |
189 | export default UserProfile;
190 |
--------------------------------------------------------------------------------