├── .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 | 98 | 99 |
100 |
101 |
102 |
103 |

Light Bootstrap Dashboard React Free

104 |

v1.3.0

105 |

106 | We are constantly doing updates for you. 107 |

108 | View Documentation 114 |
115 |
116 |
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
-------------------------------------------------------------------------------- /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 | 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 60 | 61 | 62 | 63 | 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 | 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 | 211 | 212 |
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 |
30 |

Notifications

31 |

32 | Handcrafted by{" "} 33 | 38 | Igor Prado 39 | 40 | . Please checkout the{" "} 41 | 46 | full documentation. 47 | 48 |

49 |
50 |
51 | 52 | 53 |
Notifications Style
54 | 55 | This is a plain notification 56 | 57 | 58 | 61 | This is a notification with close button. 62 | 63 | 64 | 67 | 68 | 69 | This is a notification with close button and icon. 70 | 71 | 72 | 73 | 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 | 91 | 92 | Info - This is a regular notification made with 93 | bsStyle="info" 94 | 95 | 96 | 97 | 100 | 101 | Success - This is a regular notification made 102 | with bsStyle="success" 103 | 104 | 105 | 106 | 109 | 110 | Warning - This is a regular notification made 111 | with bsStyle="warning" 112 | 113 | 114 | 115 | 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 | 145 | 146 | 147 | 154 | 155 | 156 | 163 | 164 | 165 | 166 | 167 | 174 | 175 | 176 | 183 | 184 | 185 | 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 | 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 | 42 | } 43 | 44 | 45 | 46 | 47 | 48 | 55 | {this.isActionAllowed('list-roles') && 56 | 57 | 58 | 59 | {thArray.map((prop, key) => { 60 | return ; 61 | })} 62 | 63 | 64 | 65 | {tdArray.map((prop, key) => { 66 | return ( 67 | 68 | {prop.map((prop, key) => { 69 | return ; 70 | })} 71 | 72 | ); 73 | })} 74 | 75 |
{prop}
{prop}
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 | ParagraphLorem 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 | 99 | 100 | 101 | 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 | 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 | 172 | 175 | 178 |
179 | } 180 | /> 181 | 182 | 183 | 184 |
185 | ); 186 | } 187 | } 188 | 189 | export default UserProfile; 190 | --------------------------------------------------------------------------------