├── .github └── workflows │ └── main.yml ├── .gitignore ├── CHANGELOG.md ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── README.md ├── angular.json ├── documentation ├── css │ ├── bootstrap.min.css │ ├── documentation.css │ └── light-bootstrap-dashboard.css └── tutorial-lbd-angular2.html ├── e2e ├── app.e2e-spec.ts ├── app.po.ts └── tsconfig.json ├── genezio.yaml ├── karma.conf.js ├── package.json ├── protractor.conf.js ├── src ├── app │ ├── app.component.css │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── app.routing.ts │ ├── home │ │ ├── home.component.css │ │ ├── home.component.html │ │ ├── home.component.spec.ts │ │ └── home.component.ts │ ├── icons │ │ ├── icons.component.css │ │ ├── icons.component.html │ │ ├── icons.component.spec.ts │ │ └── icons.component.ts │ ├── layouts │ │ └── admin-layout │ │ │ ├── admin-layout.component.html │ │ │ ├── admin-layout.component.scss │ │ │ ├── admin-layout.component.spec.ts │ │ │ ├── admin-layout.component.ts │ │ │ ├── admin-layout.module.ts │ │ │ └── admin-layout.routing.ts │ ├── lbd │ │ ├── lbd-chart │ │ │ ├── lbd-chart.component.html │ │ │ └── lbd-chart.component.ts │ │ └── lbd.module.ts │ ├── maps │ │ ├── maps.component.css │ │ ├── maps.component.html │ │ ├── maps.component.spec.ts │ │ └── maps.component.ts │ ├── notifications │ │ ├── notifications.component.css │ │ ├── notifications.component.html │ │ ├── notifications.component.spec.ts │ │ └── notifications.component.ts │ ├── shared │ │ ├── footer │ │ │ ├── footer.component.html │ │ │ ├── footer.component.ts │ │ │ └── footer.module.ts │ │ └── navbar │ │ │ ├── navbar.component.html │ │ │ ├── navbar.component.ts │ │ │ └── navbar.module.ts │ ├── sidebar │ │ ├── sidebar.component.html │ │ ├── sidebar.component.ts │ │ └── sidebar.module.ts │ ├── tables │ │ ├── tables.component.css │ │ ├── tables.component.html │ │ ├── tables.component.spec.ts │ │ └── tables.component.ts │ ├── typography │ │ ├── typography.component.css │ │ ├── typography.component.html │ │ ├── typography.component.spec.ts │ │ └── typography.component.ts │ ├── upgrade │ │ ├── upgrade.component.css │ │ ├── upgrade.component.html │ │ ├── upgrade.component.spec.ts │ │ └── upgrade.component.ts │ └── user │ │ ├── user.component.css │ │ ├── user.component.html │ │ ├── user.component.spec.ts │ │ └── user.component.ts ├── assets │ ├── .gitkeep │ ├── css │ │ ├── demo.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 │ ├── img │ │ ├── angular-red.png │ │ ├── angular2-logo-white.png │ │ ├── angular2-logo.png │ │ ├── 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 │ │ ├── favicon.ico │ │ ├── full-screen-image-3.jpg │ │ ├── loader-preview.svg │ │ ├── loading-bubbles.svg │ │ ├── mask.png │ │ ├── new_logo.png │ │ ├── opt_lbd_angular_thumbnail.jpg │ │ ├── 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.scss ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts ├── styles.css ├── test.ts └── tsconfig.json └── typings.json /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Autocloser 2 | on: [issues] 3 | jobs: 4 | autoclose: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: Issue auto-closer 8 | uses: roots/issue-closer-action@v1.1 9 | with: 10 | repo-token: ${{ secrets.GITHUB_TOKEN }} 11 | issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow the bellow rules:\n\n
\n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/light-bootstrap-dashboard-angular2\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉  https://www.creative-tim.com/bundles\n👉  https://www.creative-tim.com\n\n\n
\n\n" 12 | issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>) 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | 7 | # dependencies 8 | /node_modules 9 | ./node_modules 10 | node_modules 11 | 12 | # IDEs and editors 13 | /.idea 14 | .project 15 | .classpath 16 | .c9/ 17 | *.launch 18 | .settings/ 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage/* 31 | /libpeerconnection.log 32 | npm-debug.log 33 | testem.log 34 | /typings 35 | /.angular 36 | 37 | # e2e 38 | /e2e/*.js 39 | /e2e/*.map 40 | 41 | #System Files 42 | .DS_Store 43 | Thumbs.db 44 | package-lock.json 45 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [1.9.0] - 2022-11-28 2 | ### Updates 3 | - update to Angular 14 4 | - update all dependencies to match the Angular 14 version 5 | 6 | ## [1.8.0] - 2022-05-06 7 | ### Updates 8 | - update to Angular 13 9 | - update all dependencies to match the Angular 13 version 10 | - routing, build and configuration issues fixed 11 | 12 | ## [1.7.0] - 2020-12-15 13 | ### Updates 14 | - update to Angular 11 15 | - update all dependencies to match Angular 11 version 16 | 17 | ## [1.6.0] - 2020-03-12 18 | ### Updates 19 | - update to Angular 9 20 | - update all dependencies to match Angular 9 version 21 | 22 | ## [1.5.0] - 2018-10-04 23 | ### Changes 24 | - update to Angular 6 25 | - added online documentation 26 | 27 | ## [1.4.0] - 2017-08-28 28 | ### Changes for Angular 4 29 | - added angular-cli 30 | - update to Angular 4 31 | 32 | ## [v1.3.0] 2017-08-28 33 | ### skipped for sync with Angular 4 version convention 34 | 35 | ## [v1.2.0] 2017-08-28 36 | ### skipped for sync with Angular 4 version convention 37 | 38 | ## [1.1.1] - 2017-03-21 39 | ### Added 40 | - added "@types/core-js": "0.9.35" in package 41 | 42 | ## [1.1.0] - 2017-03-01 43 | ### Added 44 | - fix version numbers in package.json and CSS and JS 45 | 46 | ## [1.0.2] - 2017-02-27 47 | ### Added 48 | - added upgrade to pro page 49 | - fixed navbar title 50 | - changed http://www.creative-tim.com/ with https://www.creative-tim.com/ 51 | 52 | ## [1.0.1] - 2017-02-13 53 | ### small fix 54 | - changes in routes(redirect '' to 'dashboard' + added HashLocationStrategy) 55 | - changes in documentation 56 | - changes in sidebar(cleaned li tags + changed z-index) 57 | - changes in footer(added current date) 58 | 59 | ## [1.0.0] - 2016-12-14 60 | ### initial Release 61 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Creative Tim (www.creative-tim.com) 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 | # [Light Bootstrap Dashboard Angular](https://demos.creative-tim.com/light-bootstrap-dashboard-angular2/dashboard) 2 | [![version][version-badge]][CHANGELOG] ![license][license-badge] 3 | 4 | ![alt text](src/assets/img/opt_lbd_angular_thumbnail.jpg) 5 | 6 | **[Light Bootstrap Dashboard Angular](https://demos.creative-tim.com/light-bootstrap-dashboard-angular2/dashboard)** is an admin dashboard template designed to be beautiful and simple. It is built on top of Bootstrap 3, using [Light Bootstrap Dashboard](https://www.creative-tim.com/product/light-bootstrap-dashboard) and it is fully responsive. It comes with a big collections of elements that will offer you multiple possibilities to create the app that best fits your needs. It can be used to create admin panels, project management systems, web applications backend, CMS or CRM. 7 | 8 | The product represents a big suite of front-end developer tools that can help you jump start your project. We have created it thinking about things you actually need in a dashboard. Light Bootstrap Dashboard Angular 2 contains multiple handpicked and optimized plugins. Everything is designed to fit with one another. As you will be able to see, the dashboard you can access on Creative Tim is a customization of this product. 9 | 10 | It comes with 6 filter colors for the sidebar (“black”, “azure”,”green”,”orange”,”red”,”purple”) and an option to have a background image. 11 | 12 | Special thanks go to: Robert McIntosh for the notification system Chartist for the wonderful charts We are very excited to share this dashboard with you and we look forward to hearing your feedback! 13 | 14 | ## Links: 15 | 16 | + [Live Preview](https://demos.creative-tim.com/light-bootstrap-dashboard-angular2/dashboard) 17 | + [Light Bootstrap Dashboard PRO Angular](https://www.creative-tim.com/product/light-bootstrap-dashboard-pro-angular2/?ref=lbd-angular-github) ($49) 18 | 19 | ## Quick Start: 20 | 21 | Quick start options: 22 | 23 | + [Download from Github](https://github.com/creativetimofficial/light-bootstrap-dashboard-angular2/archive/master.zip). 24 | + [Download from Creative Tim](https://www.creative-tim.com/product/light-bootstrap-dashboard-angular2). 25 | + Clone the repo: `git clone https://github.com/creativetimofficial/light-bootstrap-dashboard-angular2.git`. 26 | 27 | ## Deploy 28 | 29 | :rocket: You can deploy your own version of the template to Genezio with one click: 30 | 31 | [![Deploy to Genezio](https://raw.githubusercontent.com/Genez-io/graphics/main/svg/deploy-button.svg)](https://app.genez.io/start/deploy?repository=https://github.com/creativetimofficial/light-bootstrap-dashboard-angular2&utm_source=github&utm_medium=referral&utm_campaign=github-creativetim&utm_term=deploy-project&utm_content=button-head) 32 | 33 | ## Terminal Commands 34 | 35 | 1. Install NodeJs from [NodeJs Official Page](https://nodejs.org/en). 36 | 2. Open Terminal 37 | 3. Go to your file project 38 | 4. Run in terminal: ```npm install -g @angular/cli``` 39 | 5. Then: ```npm install``` 40 | 6. And: ```ng serve``` 41 | 7. Navigate to `http://localhost:4200/` 42 | 43 | ### What's included 44 | 45 | Within the download you'll find the following directories and files: 46 | ``` 47 | light-bootstrap-dashboard-angular 48 | ├── CHANGELOG.md 49 | ├── LICENSE.md 50 | ├── README.md 51 | ├── angular.json 52 | ├── documentation 53 | │   ├── css 54 | │   └── tutorial-lbd-angular2.html 55 | ├── e2e 56 | ├── karma.conf.js 57 | ├── package-lock.json 58 | ├── package.json 59 | ├── protractor.conf.js 60 | ├── src 61 | │   ├── app 62 | │   │   ├── app.component.css 63 | │   │   ├── app.component.html 64 | │   │   ├── app.component.spec.ts 65 | │   │   ├── app.component.ts 66 | │   │   ├── app.module.ts 67 | │   │   ├── app.routing.ts 68 | │   │   ├── home 69 | │   │   │   ├── home.component.css 70 | │   │   │   ├── home.component.html 71 | │   │   │   ├── home.component.spec.ts 72 | │   │   │   └── home.component.ts 73 | │   │   ├── icons 74 | │   │   │   ├── icons.component.css 75 | │   │   │   ├── icons.component.html 76 | │   │   │   ├── icons.component.spec.ts 77 | │   │   │   └── icons.component.ts 78 | │   │   ├── layouts 79 | │   │   │   └── admin-layout 80 | │   │   │   ├── admin-layout.component.html 81 | │   │   │   ├── admin-layout.component.scss 82 | │   │   │   ├── admin-layout.component.spec.ts 83 | │   │   │   ├── admin-layout.component.ts 84 | │   │   │   ├── admin-layout.module.ts 85 | │   │   │   └── admin-layout.routing.ts 86 | │   │   ├── lbd 87 | │   │   │   ├── lbd-chart 88 | │   │   │   │   ├── lbd-chart.component.html 89 | │   │   │   │   └── lbd-chart.component.ts 90 | │   │   │   └── lbd.module.ts 91 | │   │   ├── maps 92 | │   │   │   ├── maps.component.css 93 | │   │   │   ├── maps.component.html 94 | │   │   │   ├── maps.component.spec.ts 95 | │   │   │   └── maps.component.ts 96 | │   │   ├── notifications 97 | │   │   │   ├── notifications.component.css 98 | │   │   │   ├── notifications.component.html 99 | │   │   │   ├── notifications.component.spec.ts 100 | │   │   │   └── notifications.component.ts 101 | │   │   ├── shared 102 | │   │   │   ├── footer 103 | │   │   │   │   ├── footer.component.html 104 | │   │   │   │   ├── footer.component.ts 105 | │   │   │   │   └── footer.module.ts 106 | │   │   │   └── navbar 107 | │   │   │   ├── navbar.component.html 108 | │   │   │   ├── navbar.component.ts 109 | │   │   │   └── navbar.module.ts 110 | │   │   ├── sidebar 111 | │   │   │   ├── sidebar.component.html 112 | │   │   │   ├── sidebar.component.ts 113 | │   │   │   └── sidebar.module.ts 114 | │   │   ├── tables 115 | │   │   │   ├── tables.component.css 116 | │   │   │   ├── tables.component.html 117 | │   │   │   ├── tables.component.spec.ts 118 | │   │   │   └── tables.component.ts 119 | │   │   ├── typography 120 | │   │   │   ├── typography.component.css 121 | │   │   │   ├── typography.component.html 122 | │   │   │   ├── typography.component.spec.ts 123 | │   │   │   └── typography.component.ts 124 | │   │   ├── upgrade 125 | │   │   │   ├── upgrade.component.css 126 | │   │   │   ├── upgrade.component.html 127 | │   │   │   ├── upgrade.component.spec.ts 128 | │   │   │   └── upgrade.component.ts 129 | │   │   └── user 130 | │   │   ├── user.component.css 131 | │   │   ├── user.component.html 132 | │   │   ├── user.component.spec.ts 133 | │   │   └── user.component.ts 134 | │   ├── assets 135 | │   │   ├── css 136 | │   │   ├── fonts 137 | │   │   ├── img 138 | │   │   └── sass 139 | │   │   ├── lbd 140 | │   │   └── light-bootstrap-dashboard.scss 141 | │   ├── environments 142 | │   ├── favicon.ico 143 | │   ├── index.html 144 | │   ├── main.ts 145 | │   ├── polyfills.ts 146 | │   ├── styles.css 147 | │   ├── test.ts 148 | │   └── tsconfig.json 149 | ├── tslint.json 150 | └── typings.json 151 | 152 | ``` 153 | ## Useful Links 154 | 155 | More products from Creative Tim: 156 | 157 | Tutorials: 158 | 159 | Freebies: 160 | 161 | Affiliate Program (earn money): 162 | 163 | Social Media: 164 | 165 | Twitter: 166 | 167 | Facebook: 168 | 169 | Dribbble: 170 | 171 | Google+: 172 | 173 | Instagram: 174 | 175 | [CHANGELOG]: ./CHANGELOG.md 176 | 177 | [version-badge]: https://img.shields.io/badge/version-1.9.0-blue.svg 178 | [license-badge]: https://img.shields.io/badge/license-MIT-blue.svg 179 | -------------------------------------------------------------------------------- /angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "lbd-free-angular-cli": { 7 | "root": "", 8 | "sourceRoot": "src", 9 | "projectType": "application", 10 | "targets": { 11 | "build": { 12 | "builder": "@angular-devkit/build-angular:browser", 13 | "options": { 14 | "outputPath": "dist", 15 | "index": "src/index.html", 16 | "main": "src/main.ts", 17 | "tsConfig": "src/tsconfig.json", 18 | "polyfills": "src/polyfills.ts", 19 | "assets": [ 20 | "src/assets", 21 | "src/favicon.ico" 22 | ], 23 | "styles": [ 24 | "node_modules/perfect-scrollbar/css/perfect-scrollbar.css", 25 | "node_modules/animate.css/animate.min.css", 26 | "node_modules/bootstrap/dist/css/bootstrap.min.css", 27 | "src/assets/sass/light-bootstrap-dashboard.scss", 28 | "src/assets/css/demo.css" 29 | ], 30 | "scripts": [ 31 | "node_modules/jquery/dist/jquery.js", 32 | "node_modules/bootstrap/dist/js/bootstrap.js", 33 | "node_modules/bootstrap-notify/bootstrap-notify.js", 34 | "node_modules/chartist/dist/chartist.js" 35 | ] 36 | }, 37 | "configurations": { 38 | "production": { 39 | "optimization": true, 40 | "outputHashing": "all", 41 | "sourceMap": false, 42 | "namedChunks": false, 43 | "extractLicenses": true, 44 | "vendorChunk": false, 45 | "buildOptimizer": true, 46 | "fileReplacements": [ 47 | { 48 | "replace": "src/environments/environment.ts", 49 | "with": "src/environments/environment.prod.ts" 50 | } 51 | ] 52 | }, 53 | "development": { 54 | "vendorChunk": true, 55 | "extractLicenses": false, 56 | "sourceMap": true, 57 | "namedChunks": true, 58 | "buildOptimizer": false, 59 | "optimization": { 60 | "scripts": true, 61 | "styles": { 62 | "minify": false, 63 | "inlineCritical": true 64 | }, 65 | "fonts": true 66 | }, 67 | "outputHashing": "all" 68 | } 69 | } 70 | }, 71 | "serve": { 72 | "builder": "@angular-devkit/build-angular:dev-server", 73 | "options": { 74 | "browserTarget": "lbd-free-angular-cli:build" 75 | }, 76 | "configurations": { 77 | "production": { 78 | "browserTarget": "lbd-free-angular-cli:build:production" 79 | }, 80 | "development": { 81 | "browserTarget": "lbd-free-angular-cli:build:development" 82 | }, 83 | "defaultConfiguration": "development" 84 | } 85 | }, 86 | "extract-i18n": { 87 | "builder": "@angular-devkit/build-angular:extract-i18n", 88 | "options": { 89 | "browserTarget": "lbd-free-angular-cli:build" 90 | } 91 | }, 92 | "test": { 93 | "builder": "@angular-devkit/build-angular:karma", 94 | "options": { 95 | "main": "src/test.ts", 96 | "karmaConfig": "./karma.conf.js", 97 | "polyfills": "src/polyfills.ts", 98 | "scripts": [ 99 | "node_modules/jquery/dist/jquery.js", 100 | "node_modules/bootstrap/dist/js/bootstrap.js", 101 | "node_modules/bootstrap-notify/bootstrap-notify.js", 102 | "node_modules/chartist/dist/chartist.js" 103 | ], 104 | "styles": [ 105 | "node_modules/animate.css/animate.min.css", 106 | "node_modules/bootstrap/dist/css/bootstrap.min.css", 107 | "src/assets/sass/light-bootstrap-dashboard.scss", 108 | "src/assets/css/demo.css" 109 | ], 110 | "assets": [ 111 | "src/assets", 112 | "src/favicon.ico" 113 | ], 114 | "tsConfig": "src/tsconfig.json" 115 | } 116 | }, 117 | "lint": { 118 | "builder": "@angular-devkit/build-angular:tslint", 119 | "options": { 120 | "tsConfig": [ 121 | "src/tsconfig.json" 122 | ], 123 | "exclude": [] 124 | } 125 | } 126 | } 127 | }, 128 | "lbd-free-angular-cli-e2e": { 129 | "root": "e2e", 130 | "sourceRoot": "e2e", 131 | "projectType": "application", 132 | "targets": { 133 | "e2e": { 134 | "builder": "@angular-devkit/build-angular:protractor", 135 | "options": { 136 | "protractorConfig": "./protractor.conf.js", 137 | "devServerTarget": "lbd-free-angular-cli:serve" 138 | } 139 | }, 140 | "lint": { 141 | "builder": "@angular-devkit/build-angular:tslint", 142 | "options": { 143 | "tsConfig": [ 144 | "e2e/tsconfig.json" 145 | ], 146 | "exclude": [] 147 | } 148 | } 149 | } 150 | } 151 | }, 152 | "defaultProject": "lbd-free-angular-cli", 153 | "schematics": { 154 | "@schematics/angular:component": { 155 | "prefix": "app", 156 | "style": "scss" 157 | }, 158 | "@schematics/angular:directive": { 159 | "prefix": "app" 160 | } 161 | }, 162 | "cli": { 163 | "analytics": false 164 | } 165 | } -------------------------------------------------------------------------------- /documentation/css/documentation.css: -------------------------------------------------------------------------------- 1 | .navbar{ 2 | -webkit-transition: all 150ms linear; 3 | -moz-transition: all 150ms linear; 4 | -o-transition: all 150ms linear; 5 | -ms-transition: all 150ms linear; 6 | transition: all 150ms linear; 7 | } 8 | .header-wrapper .header, .header-wrapper .header .filter:after { 9 | height: 100vh !important; 10 | } 11 | .navbar-title{ 12 | height: 100%; 13 | } 14 | .navbar-title h4{ 15 | line-height: 12px; 16 | margin-top: 16px; 17 | margin-bottom: 5px; 18 | } 19 | 20 | .navbar-title img{ 21 | width: 100% 22 | } 23 | 24 | .header-wrapper .navbar-default{ 25 | box-shadow: 0 14px 20px -12px rgba(0, 0, 0, 0.2); 26 | color: #444; 27 | background-color: white; 28 | } 29 | .header-wrapper .navbar-default .btn{ 30 | color: #444; 31 | } 32 | .navbar-center{ 33 | float: none; 34 | display: inline-block; 35 | } 36 | .navbar-title .image-container{ 37 | height: 40px; 38 | width: 40px; 39 | display: inline-block; 40 | top: -3px; 41 | position: relative; 42 | } 43 | 44 | .tim-row{ 45 | margin-bottom: 40px; 46 | } 47 | .tim-row h2{ 48 | margin-top: 90px 49 | } 50 | 51 | pre.prettyprint{ 52 | background-color: #eee; 53 | border: 0px; 54 | margin-bottom: 0; 55 | margin-top: 20px; 56 | padding: 20px !important; 57 | text-align: left; 58 | border: 1px solid #ccc !important; 59 | } 60 | .tim-row:last-child pre{ 61 | position: relative; 62 | top: -45px; 63 | width: 100%; 64 | } 65 | .atv, .str{ 66 | color: #05AE0E; 67 | } 68 | .tag, .pln, .kwd{ 69 | color: #3472F7; 70 | } 71 | .atn{ 72 | color: #2C93FF; 73 | } 74 | .pln{ 75 | color: #333; 76 | } 77 | .com{ 78 | color: #999; 79 | } 80 | .space-top{ 81 | margin-top: 50px; 82 | } 83 | .btn-primary .caret{ 84 | border-top-color: #3472F7; 85 | color: #3472F7; 86 | } 87 | .area-line{ 88 | border: 1px solid #999; 89 | border-left: 0; 90 | border-right: 0; 91 | color: #666; 92 | display: block; 93 | margin-top: 20px; 94 | padding: 8px 0; 95 | text-align: center; 96 | } 97 | .area-line a{ 98 | color: #666; 99 | } 100 | .container-fluid{ 101 | padding-right: 15px; 102 | padding-left: 15px; 103 | } 104 | .logo-container .logo{ 105 | overflow: hidden; 106 | border-radius: 50%; 107 | border: 1px solid #333333; 108 | width: 50px; 109 | float: left; 110 | } 111 | .header-wrapper { 112 | position: relative; 113 | height: 500px; 114 | } 115 | 116 | .header-wrapper .header { 117 | background-position: center center; 118 | background-size: cover; 119 | height: 100vh; 120 | overflow: hidden; 121 | position: absolute; 122 | width: 100%; 123 | z-index: 1; 124 | } 125 | .header-wrapper .header .filter::after { 126 | background: -moz-linear-gradient(top, #FB404B 0%, rgba(187, 5, 2, 0.6) 100%); 127 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #FB404B), color-stop(100%, rgba(187, 5, 2, 0.6))); 128 | background: -webkit-linear-gradient(top, #FB404B 0%, rgba(187, 5, 2, 0.6) 100%); 129 | background: -o-linear-gradient(top, #FB404B 0%, rgba(187, 5, 2, 0.6) 100%); 130 | background: -ms-linear-gradient(top, #FB404B 0%, rgba(187, 5, 2, 0.6) 100%); 131 | background: linear-gradient(to bottom, #FB404B 0%, rgba(187, 5, 2, 0.6) 100%); content: ""; 132 | display: block; 133 | height: 450px; 134 | left: 0; 135 | opacity: 0.77; 136 | position: absolute; 137 | top: 0; 138 | width: 100%; 139 | z-index: 2; 140 | } 141 | .header-wrapper .title-container{ 142 | color: #fff; 143 | z-index: 3; 144 | position: absolute; 145 | top: 50%; 146 | margin-top: -180px; 147 | left: 0; 148 | width: 100%; 149 | } 150 | 151 | .title-container img{ 152 | width: 100px; 153 | height: 100px; 154 | } 155 | .logo-container .brand{ 156 | font-size: 18px; 157 | color: #FFFFFF; 158 | line-height: 20px; 159 | float: left; 160 | margin-left: 10px; 161 | margin-top: 5px; 162 | width: 50px; 163 | height: 50px; 164 | } 165 | .navbar-default .logo-container .brand{ 166 | color: #444; 167 | } 168 | .navbar-default.navbar-transparent .logo-container .brand{ 169 | color: #FFFFFF; 170 | } 171 | .navbar-default.navbar-transparent .navbar-nav>li>a{ 172 | color: #FFFFFF; 173 | } 174 | .logo-container{ 175 | margin-top: 10px; 176 | } 177 | .logo-container .logo img{ 178 | width: 100%; 179 | } 180 | .navbar-small .logo-container .brand{ 181 | color: #333333; 182 | } 183 | 184 | .navbar.navbar-transparent{ 185 | background-color: transparent; 186 | box-shadow: none; 187 | color: #fff; 188 | border: 0; 189 | padding-top: 0px; 190 | } 191 | 192 | .fixed-section{ 193 | max-height: 80vh; 194 | overflow: scroll; 195 | top: 110px; 196 | } 197 | .fixed-section ul li{ 198 | list-style: none; 199 | } 200 | .fixed-section li a{ 201 | font-size: 14px; 202 | padding: 2px; 203 | display: block; 204 | color: #666666; 205 | } 206 | .fixed-section li a.active{ 207 | color: #00bbff; 208 | } 209 | .fixed-section.float{ 210 | position: fixed; 211 | top: 100px; 212 | width: 200px; 213 | margin-top: 0; 214 | } 215 | .copyright { 216 | color: #777777; 217 | padding: 10px 15px; 218 | font-size: 14px; 219 | margin: 15px 3px; 220 | line-height: 20px; 221 | text-align: center; 222 | } 223 | 224 | .table-bigboy .img-container{ 225 | width: 130px; 226 | height: 85px; 227 | } 228 | 229 | .table-bigboy .td-name{ 230 | min-width: 170px; 231 | } 232 | 233 | .navbar .navbar-nav > li > a.btn{ 234 | padding: 8px 8px; 235 | } 236 | 237 | @media (max-width: 991px) { 238 | .fixed-section.affix { 239 | position: relative; 240 | margin-bottom: 100px; 241 | } 242 | 243 | .tim-row .nav.nav-pills{ 244 | margin-bottom: 25px; 245 | } 246 | 247 | .nav-mobile-menu .navbar-title{ 248 | display: none; 249 | } 250 | 251 | } 252 | 253 | @media (max-width: 1199px) { 254 | 255 | .navbar .navbar-brand { 256 | height: 50px; 257 | padding: 10px 15px; 258 | } 259 | 260 | } 261 | 262 | @media (max-width: 768px) { 263 | .footer .copyright { 264 | display: inline-block; 265 | text-align: center; 266 | padding: 10px 0; 267 | float: none !important; 268 | width: 100%; 269 | } 270 | } 271 | 272 | @media (max-width: 830px){ 273 | .main-raised{ 274 | margin-left: 10px; 275 | margin-right: 10px; 276 | } 277 | } 278 | -------------------------------------------------------------------------------- /documentation/tutorial-lbd-angular2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Light Bootstrap Dashboard Angular by Creative Tim 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 61 | 62 |
63 |
64 |
65 |

Light Bootstrap Dashboard Angular

66 |

v1.9.0

67 |

We are constantly doing updates for you.

68 | View Documentation 69 |
70 |
71 |
72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /e2e/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { LbdFreeAngularcliPage } from './app.po'; 2 | 3 | describe('lbd-free-angularcli App', function() { 4 | let page: LbdFreeAngularcliPage; 5 | 6 | beforeEach(() => { 7 | page = new LbdFreeAngularcliPage(); 8 | }); 9 | 10 | it('should display message saying app works', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('app works!'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /e2e/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, element, by } from 'protractor'; 2 | 3 | export class LbdFreeAngularcliPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "module": "commonjs", 8 | "moduleResolution": "node", 9 | "outDir": "../dist/out-tsc-e2e", 10 | "sourceMap": true, 11 | "target": "es2020", 12 | "typeRoots": [ 13 | "../node_modules/@types" 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /genezio.yaml: -------------------------------------------------------------------------------- 1 | name: light-bootstrap-dashboard-angular2 2 | region: us-east-1 3 | frontend: 4 | # Specifies the path of your code. 5 | path: . 6 | # Specifies the folder where the build is located. 7 | # This is the folder that will be deployed. 8 | publish: dist 9 | # Scripts will run in the specified `path` folder. 10 | scripts: 11 | # The command to build your frontend project. This is custom to your project. 12 | # It must to populate the specified `publish` folder with a `index.html` file. 13 | deploy: 14 | - npm install --legacy-peer-deps 15 | - npm run build 16 | yamlVersion: 2 -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/0.13/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', 'angular-cli'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-remap-istanbul'), 12 | require('angular-cli/plugins/karma') 13 | ], 14 | files: [ 15 | 16 | ], 17 | preprocessors: { 18 | './src/test.ts': ['angular-cli'] 19 | }, 20 | mime: { 21 | 'text/x-typescript': ['ts','tsx'] 22 | }, 23 | remapIstanbulReporter: { 24 | dir: require('path').join(__dirname, 'coverage'), reports: { 25 | html: 'coverage', 26 | lcovonly: './coverage/coverage.lcov' 27 | } 28 | }, 29 | 30 | reporters: config.angularCli && config.angularCli.codeCoverage 31 | ? ['progress', 'karma-remap-istanbul'] 32 | : ['progress'], 33 | port: 9876, 34 | colors: true, 35 | logLevel: config.LOG_INFO, 36 | autoWatch: true, 37 | browsers: ['Chrome'], 38 | singleRun: false 39 | }); 40 | }; 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lbd-free-angular-cli", 3 | "version": "1.9.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "ng": "ng", 7 | "start": "ng serve", 8 | "build": "cross-env CI=false ng build", 9 | "test": "ng test", 10 | "lint": "ng lint", 11 | "e2e": "ng e2e", 12 | "install:clean": "rm -rf node_modules/ && rm -rf package-lock.json && npm install && npm start" 13 | }, 14 | "private": true, 15 | "dependencies": { 16 | "@angular/animations": "^14.2.0", 17 | "@angular/cdk": "^14.2.0", 18 | "@angular/common": "^14.2.0", 19 | "@angular/compiler": "^14.2.0", 20 | "@angular/core": "^14.2.0", 21 | "@angular/elements": "^14.2.0", 22 | "@angular/forms": "^14.2.0", 23 | "@angular/localize": "^14.2.0", 24 | "@angular/material": "^14.2.0", 25 | "@angular/platform-browser": "^14.2.0", 26 | "@angular/platform-browser-dynamic": "^14.2.0", 27 | "@angular/router": "^14.2.0", 28 | "@ngui/map": "0.30.3", 29 | "@types/googlemaps": "3.43.3", 30 | "animate.css": "4.1.1", 31 | "arrive": "2.4.1", 32 | "bootstrap": "3.3.7", 33 | "bootstrap-notify": "3.1.3", 34 | "chartist": "0.11.4", 35 | "googleapis": "66.0.0", 36 | "jquery": "3.5.1", 37 | "perfect-scrollbar": "1.5.0", 38 | "rxjs": "~7.5.0", 39 | "tslib": "^2.3.0", 40 | "zone.js": "~0.11.4" 41 | }, 42 | "devDependencies": { 43 | "@angular-devkit/build-angular": "^14.2.3", 44 | "@angular/cli": "~14.2.3", 45 | "@angular/compiler-cli": "^14.2.0", 46 | "@types/jasmine": "~5.1.4", 47 | "jasmine-core": "~4.3.0", 48 | "karma": "~6.4.0", 49 | "karma-chrome-launcher": "~3.1.0", 50 | "karma-coverage": "~2.2.0", 51 | "karma-jasmine": "~5.1.0", 52 | "karma-jasmine-html-reporter": "~2.0.0", 53 | "typescript": "~4.7.2", 54 | "@types/jasminewd2": "~2.0.13", 55 | "@types/chartist": "0.11.0", 56 | "@types/jquery": "3.5.30", 57 | "@types/node": "20.14.11", 58 | "codelyzer": "6.0.2", 59 | "jasmine-spec-reporter": "~7.0.0", 60 | "protractor": "7.0.0", 61 | "ts-node": "~10.7.0", 62 | "cross-env": "^7.0.3" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | /*global jasmine */ 5 | var SpecReporter = require('jasmine-spec-reporter'); 6 | 7 | exports.config = { 8 | allScriptsTimeout: 11000, 9 | specs: [ 10 | './e2e/**/*.e2e-spec.ts' 11 | ], 12 | capabilities: { 13 | 'browserName': 'chrome' 14 | }, 15 | directConnect: true, 16 | baseUrl: 'http://localhost:4200/', 17 | framework: 'jasmine', 18 | jasmineNodeOpts: { 19 | showColors: true, 20 | defaultTimeoutInterval: 30000, 21 | print: function() {} 22 | }, 23 | useAllAngular2AppRoots: true, 24 | beforeLaunch: function() { 25 | require('ts-node').register({ 26 | project: 'e2e' 27 | }); 28 | }, 29 | onPrepare: function() { 30 | jasmine.getEnv().addReporter(new SpecReporter()); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/app.component.css -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { AppComponent } from './app.component'; 5 | 6 | describe('AppComponent', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | declarations: [ 10 | AppComponent 11 | ], 12 | }); 13 | TestBed.compileComponents(); 14 | }); 15 | 16 | it('should create the app', async(() => { 17 | const fixture = TestBed.createComponent(AppComponent); 18 | const app = fixture.debugElement.componentInstance; 19 | expect(app).toBeTruthy(); 20 | })); 21 | 22 | it(`should have as title 'app works!'`, async(() => { 23 | const fixture = TestBed.createComponent(AppComponent); 24 | const app = fixture.debugElement.componentInstance; 25 | expect(app.title).toEqual('app works!'); 26 | })); 27 | 28 | it('should render title in a h1 tag', async(() => { 29 | const fixture = TestBed.createComponent(AppComponent); 30 | fixture.detectChanges(); 31 | const compiled = fixture.debugElement.nativeElement; 32 | expect(compiled.querySelector('h1').textContent).toContain('app works!'); 33 | })); 34 | }); 35 | -------------------------------------------------------------------------------- /src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { LocationStrategy, PlatformLocation, Location } from '@angular/common'; 3 | 4 | @Component({ 5 | selector: 'app-root', 6 | templateUrl: './app.component.html', 7 | styleUrls: ['./app.component.css'] 8 | }) 9 | export class AppComponent implements OnInit { 10 | 11 | constructor(public location: Location) {} 12 | 13 | ngOnInit(){ 14 | } 15 | 16 | isMap(path){ 17 | var titlee = this.location.prepareExternalUrl(this.location.path()); 18 | titlee = titlee.slice( 1 ); 19 | if(path == titlee){ 20 | return false; 21 | } 22 | else { 23 | return true; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 2 | import { NgModule } from '@angular/core'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { HttpClientModule } from '@angular/common/http'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | import { AppRoutingModule } from './app.routing'; 8 | import { NavbarModule } from './shared/navbar/navbar.module'; 9 | import { FooterModule } from './shared/footer/footer.module'; 10 | import { SidebarModule } from './sidebar/sidebar.module'; 11 | 12 | import { AppComponent } from './app.component'; 13 | 14 | import { AdminLayoutComponent } from './layouts/admin-layout/admin-layout.component'; 15 | 16 | @NgModule({ 17 | imports: [ 18 | BrowserAnimationsModule, 19 | FormsModule, 20 | RouterModule, 21 | HttpClientModule, 22 | NavbarModule, 23 | FooterModule, 24 | SidebarModule, 25 | AppRoutingModule 26 | ], 27 | declarations: [ 28 | AppComponent, 29 | AdminLayoutComponent 30 | ], 31 | providers: [], 32 | bootstrap: [AppComponent] 33 | }) 34 | export class AppModule { } 35 | -------------------------------------------------------------------------------- /src/app/app.routing.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule, } from '@angular/common'; 3 | import { BrowserModule } from '@angular/platform-browser'; 4 | import { Routes, RouterModule } from '@angular/router'; 5 | 6 | import { AdminLayoutComponent } from './layouts/admin-layout/admin-layout.component'; 7 | 8 | const routes: Routes =[ 9 | { 10 | path: '', 11 | redirectTo: 'dashboard', 12 | pathMatch: 'full', 13 | }, { 14 | path: '', 15 | component: AdminLayoutComponent, 16 | children: [ 17 | { 18 | path: '', 19 | loadChildren: () => import('./layouts/admin-layout/admin-layout.module').then(x => x.AdminLayoutModule) 20 | }]}, 21 | { 22 | path: '**', 23 | redirectTo: 'dashboard' 24 | } 25 | ]; 26 | 27 | @NgModule({ 28 | imports: [ 29 | CommonModule, 30 | BrowserModule, 31 | RouterModule.forRoot(routes,{ 32 | useHash: true 33 | }) 34 | ], 35 | exports: [ 36 | ], 37 | }) 38 | export class AppRoutingModule { } 39 | -------------------------------------------------------------------------------- /src/app/home/home.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/home/home.component.css -------------------------------------------------------------------------------- /src/app/home/home.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { HomeComponent } from './home.component'; 7 | 8 | describe('HomeComponent', () => { 9 | let component: HomeComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ HomeComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(HomeComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { LocationStrategy, PlatformLocation, Location } from '@angular/common'; 3 | import { LegendItem, ChartType } from '../lbd/lbd-chart/lbd-chart.component'; 4 | import * as Chartist from 'chartist'; 5 | 6 | @Component({ 7 | selector: 'app-home', 8 | templateUrl: './home.component.html', 9 | styleUrls: ['./home.component.css'] 10 | }) 11 | export class HomeComponent implements OnInit { 12 | public emailChartType: ChartType; 13 | public emailChartData: any; 14 | public emailChartLegendItems: LegendItem[]; 15 | 16 | public hoursChartType: ChartType; 17 | public hoursChartData: any; 18 | public hoursChartOptions: any; 19 | public hoursChartResponsive: any[]; 20 | public hoursChartLegendItems: LegendItem[]; 21 | 22 | public activityChartType: ChartType; 23 | public activityChartData: any; 24 | public activityChartOptions: any; 25 | public activityChartResponsive: any[]; 26 | public activityChartLegendItems: LegendItem[]; 27 | constructor() { } 28 | 29 | ngOnInit() { 30 | this.emailChartType = ChartType.Pie; 31 | this.emailChartData = { 32 | labels: ['62%', '32%', '6%'], 33 | series: [62, 32, 6] 34 | }; 35 | this.emailChartLegendItems = [ 36 | { title: 'Open', imageClass: 'fa fa-circle text-info' }, 37 | { title: 'Bounce', imageClass: 'fa fa-circle text-danger' }, 38 | { title: 'Unsubscribe', imageClass: 'fa fa-circle text-warning' } 39 | ]; 40 | 41 | this.hoursChartType = ChartType.Line; 42 | this.hoursChartData = { 43 | labels: ['9:00AM', '12:00AM', '3:00PM', '6:00PM', '9:00PM', '12:00PM', '3:00AM', '6:00AM'], 44 | series: [ 45 | [287, 385, 490, 492, 554, 586, 698, 695, 752, 788, 846, 944], 46 | [67, 152, 143, 240, 287, 335, 435, 437, 539, 542, 544, 647], 47 | [23, 113, 67, 108, 190, 239, 307, 308, 439, 410, 410, 509] 48 | ] 49 | }; 50 | this.hoursChartOptions = { 51 | low: 0, 52 | high: 800, 53 | showArea: true, 54 | height: '245px', 55 | axisX: { 56 | showGrid: false, 57 | }, 58 | lineSmooth: Chartist.Interpolation.simple({ 59 | divisor: 3 60 | }), 61 | showLine: false, 62 | showPoint: false, 63 | }; 64 | this.hoursChartResponsive = [ 65 | ['screen and (max-width: 640px)', { 66 | axisX: { 67 | labelInterpolationFnc: function (value) { 68 | return value[0]; 69 | } 70 | } 71 | }] 72 | ]; 73 | this.hoursChartLegendItems = [ 74 | { title: 'Open', imageClass: 'fa fa-circle text-info' }, 75 | { title: 'Click', imageClass: 'fa fa-circle text-danger' }, 76 | { title: 'Click Second Time', imageClass: 'fa fa-circle text-warning' } 77 | ]; 78 | 79 | this.activityChartType = ChartType.Bar; 80 | this.activityChartData = { 81 | labels: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 82 | series: [ 83 | [542, 443, 320, 780, 553, 453, 326, 434, 568, 610, 756, 895], 84 | [412, 243, 280, 580, 453, 353, 300, 364, 368, 410, 636, 695] 85 | ] 86 | }; 87 | this.activityChartOptions = { 88 | seriesBarDistance: 10, 89 | axisX: { 90 | showGrid: false 91 | }, 92 | height: '245px' 93 | }; 94 | this.activityChartResponsive = [ 95 | ['screen and (max-width: 640px)', { 96 | seriesBarDistance: 5, 97 | axisX: { 98 | labelInterpolationFnc: function (value) { 99 | return value[0]; 100 | } 101 | } 102 | }] 103 | ]; 104 | this.activityChartLegendItems = [ 105 | { title: 'Tesla Model S', imageClass: 'fa fa-circle text-info' }, 106 | { title: 'BMW 5 Series', imageClass: 'fa fa-circle text-danger' } 107 | ]; 108 | 109 | 110 | } 111 | 112 | } 113 | -------------------------------------------------------------------------------- /src/app/icons/icons.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/icons/icons.component.css -------------------------------------------------------------------------------- /src/app/icons/icons.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { IconsComponent } from './icons.component'; 7 | 8 | describe('IconsComponent', () => { 9 | let component: IconsComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ IconsComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(IconsComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/icons/icons.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-icons', 5 | templateUrl: './icons.component.html', 6 | styleUrls: ['./icons.component.css'] 7 | }) 8 | export class IconsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/layouts/admin-layout/admin-layout.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 7 | 8 |
9 | 10 | 11 |
12 | 13 |
14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /src/app/layouts/admin-layout/admin-layout.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/layouts/admin-layout/admin-layout.component.scss -------------------------------------------------------------------------------- /src/app/layouts/admin-layout/admin-layout.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdminLayoutComponent } from './admin-layout.component'; 4 | 5 | describe('AdminLayoutComponent', () => { 6 | let component: AdminLayoutComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ AdminLayoutComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AdminLayoutComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/layouts/admin-layout/admin-layout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit} from '@angular/core'; 2 | import { Location, PopStateEvent } from '@angular/common'; 3 | import { Router, NavigationEnd, NavigationStart } from '@angular/router'; 4 | import PerfectScrollbar from 'perfect-scrollbar'; 5 | import { filter, Subscription } from 'rxjs'; 6 | 7 | @Component({ 8 | selector: 'app-admin-layout', 9 | templateUrl: './admin-layout.component.html', 10 | styleUrls: ['./admin-layout.component.scss'] 11 | }) 12 | export class AdminLayoutComponent implements OnInit { 13 | private _router: Subscription; 14 | private lastPoppedUrl: string; 15 | private yScrollStack: number[] = []; 16 | 17 | constructor( public location: Location, private router: Router) {} 18 | 19 | ngOnInit() { 20 | console.log(this.router) 21 | const isWindows = navigator.platform.indexOf('Win') > -1 ? true : false; 22 | 23 | if (isWindows) { 24 | // if we are on windows OS we activate the perfectScrollbar function 25 | 26 | document.getElementsByTagName('body')[0].classList.add('perfect-scrollbar-on'); 27 | } else { 28 | document.getElementsByTagName('body')[0].classList.remove('perfect-scrollbar-off'); 29 | } 30 | const elemMainPanel = document.querySelector('.main-panel'); 31 | const elemSidebar = document.querySelector('.sidebar .sidebar-wrapper'); 32 | 33 | this.location.subscribe((ev:PopStateEvent) => { 34 | this.lastPoppedUrl = ev.url; 35 | }); 36 | this.router.events.subscribe((event:any) => { 37 | if (event instanceof NavigationStart) { 38 | if (event.url != this.lastPoppedUrl) 39 | this.yScrollStack.push(window.scrollY); 40 | } else if (event instanceof NavigationEnd) { 41 | if (event.url == this.lastPoppedUrl) { 42 | this.lastPoppedUrl = undefined; 43 | window.scrollTo(0, this.yScrollStack.pop()); 44 | } else 45 | window.scrollTo(0, 0); 46 | } 47 | }); 48 | this._router = this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => { 49 | elemMainPanel.scrollTop = 0; 50 | elemSidebar.scrollTop = 0; 51 | }); 52 | if (window.matchMedia(`(min-width: 960px)`).matches && !this.isMac()) { 53 | let ps = new PerfectScrollbar(elemMainPanel); 54 | ps = new PerfectScrollbar(elemSidebar); 55 | } 56 | } 57 | ngAfterViewInit() { 58 | this.runOnRouteChange(); 59 | } 60 | isMap(path){ 61 | var titlee = this.location.prepareExternalUrl(this.location.path()); 62 | titlee = titlee.slice( 1 ); 63 | if(path == titlee){ 64 | return false; 65 | } 66 | else { 67 | return true; 68 | } 69 | } 70 | runOnRouteChange(): void { 71 | if (window.matchMedia(`(min-width: 960px)`).matches && !this.isMac()) { 72 | const elemMainPanel = document.querySelector('.main-panel'); 73 | const ps = new PerfectScrollbar(elemMainPanel); 74 | ps.update(); 75 | } 76 | } 77 | isMac(): boolean { 78 | let bool = false; 79 | if (navigator.platform.toUpperCase().indexOf('MAC') >= 0 || navigator.platform.toUpperCase().indexOf('IPAD') >= 0) { 80 | bool = true; 81 | } 82 | return bool; 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/app/layouts/admin-layout/admin-layout.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule } from '@angular/router'; 3 | import { CommonModule } from '@angular/common'; 4 | import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 5 | 6 | import { LbdModule } from '../../lbd/lbd.module'; 7 | import { NguiMapModule} from '@ngui/map'; 8 | 9 | import { AdminLayoutRoutes } from './admin-layout.routing'; 10 | 11 | import { HomeComponent } from '../../home/home.component'; 12 | import { UserComponent } from '../../user/user.component'; 13 | import { TablesComponent } from '../../tables/tables.component'; 14 | import { TypographyComponent } from '../../typography/typography.component'; 15 | import { IconsComponent } from '../../icons/icons.component'; 16 | import { MapsComponent } from '../../maps/maps.component'; 17 | import { NotificationsComponent } from '../../notifications/notifications.component'; 18 | import { UpgradeComponent } from '../../upgrade/upgrade.component'; 19 | 20 | 21 | @NgModule({ 22 | imports: [ 23 | CommonModule, 24 | RouterModule.forChild(AdminLayoutRoutes), 25 | FormsModule, 26 | LbdModule, 27 | NguiMapModule.forRoot({apiUrl: 'https://maps.google.com/maps/api/js?key=YOUR_KEY_HERE'}) 28 | ], 29 | declarations: [ 30 | HomeComponent, 31 | UserComponent, 32 | TablesComponent, 33 | TypographyComponent, 34 | IconsComponent, 35 | MapsComponent, 36 | NotificationsComponent, 37 | UpgradeComponent 38 | ] 39 | }) 40 | 41 | export class AdminLayoutModule {} 42 | -------------------------------------------------------------------------------- /src/app/layouts/admin-layout/admin-layout.routing.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | 3 | import { HomeComponent } from '../../home/home.component'; 4 | import { UserComponent } from '../../user/user.component'; 5 | import { TablesComponent } from '../../tables/tables.component'; 6 | import { TypographyComponent } from '../../typography/typography.component'; 7 | import { IconsComponent } from '../../icons/icons.component'; 8 | import { MapsComponent } from '../../maps/maps.component'; 9 | import { NotificationsComponent } from '../../notifications/notifications.component'; 10 | import { UpgradeComponent } from '../../upgrade/upgrade.component'; 11 | 12 | export const AdminLayoutRoutes: Routes = [ 13 | { path: 'dashboard', component: HomeComponent }, 14 | { path: 'user', component: UserComponent }, 15 | { path: 'table', component: TablesComponent }, 16 | { path: 'typography', component: TypographyComponent }, 17 | { path: 'icons', component: IconsComponent }, 18 | { path: 'maps', component: MapsComponent }, 19 | { path: 'notifications', component: NotificationsComponent }, 20 | { path: 'upgrade', component: UpgradeComponent }, 21 | ]; 22 | -------------------------------------------------------------------------------- /src/app/lbd/lbd-chart/lbd-chart.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ title }}

4 |

{{ subtitle }}

5 |
6 |
7 |
8 | 9 | 20 |
21 |
22 | -------------------------------------------------------------------------------- /src/app/lbd/lbd-chart/lbd-chart.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input, OnInit, AfterViewInit, ChangeDetectionStrategy} from '@angular/core'; 2 | import * as Chartist from 'chartist'; 3 | 4 | export interface LegendItem { 5 | title: string; 6 | imageClass: string; 7 | } 8 | 9 | export enum ChartType { 10 | Pie, 11 | Line, 12 | Bar 13 | } 14 | 15 | @Component({ 16 | selector: 'lbd-chart', 17 | templateUrl: './lbd-chart.component.html', 18 | changeDetection: ChangeDetectionStrategy.OnPush 19 | }) 20 | export class LbdChartComponent implements OnInit, AfterViewInit { 21 | static currentId = 1; 22 | 23 | @Input() 24 | public title: string; 25 | 26 | @Input() 27 | public subtitle: string; 28 | 29 | @Input() 30 | public chartClass: string; 31 | 32 | @Input() 33 | public chartType: ChartType; 34 | 35 | @Input() 36 | public chartData: any; 37 | 38 | @Input() 39 | public chartOptions: any; 40 | 41 | @Input() 42 | public chartResponsive: any[]; 43 | 44 | @Input() 45 | public footerIconClass: string; 46 | 47 | @Input() 48 | public footerText: string; 49 | 50 | @Input() 51 | public legendItems: LegendItem[]; 52 | 53 | @Input() 54 | public withHr: boolean; 55 | 56 | public chartId: string; 57 | 58 | constructor() { 59 | } 60 | 61 | public ngOnInit(): void { 62 | this.chartId = `lbd-chart-${LbdChartComponent.currentId++}`; 63 | } 64 | 65 | public ngAfterViewInit(): void { 66 | 67 | switch (this.chartType) { 68 | case ChartType.Pie: 69 | new Chartist.Pie(`#${this.chartId}`, this.chartData, this.chartOptions, this.chartResponsive); 70 | break; 71 | case ChartType.Line: 72 | new Chartist.Line(`#${this.chartId}`, this.chartData, this.chartOptions, this.chartResponsive); 73 | break; 74 | case ChartType.Bar: 75 | new Chartist.Bar(`#${this.chartId}`, this.chartData, this.chartOptions, this.chartResponsive); 76 | break; 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/app/lbd/lbd.module.ts: -------------------------------------------------------------------------------- 1 | 2 | import { NgModule } from '@angular/core'; 3 | import { CommonModule } from '@angular/common'; 4 | import { RouterModule } from '@angular/router'; 5 | 6 | import { LbdChartComponent } from './lbd-chart/lbd-chart.component'; 7 | 8 | @NgModule({ 9 | imports: [ 10 | CommonModule, 11 | RouterModule 12 | ], 13 | declarations: [ 14 | 15 | LbdChartComponent 16 | 17 | ], 18 | exports: [ 19 | LbdChartComponent 20 | ] 21 | }) 22 | export class LbdModule { } 23 | -------------------------------------------------------------------------------- /src/app/maps/maps.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/maps/maps.component.css -------------------------------------------------------------------------------- /src/app/maps/maps.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/app/maps/maps.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { MapsComponent } from './maps.component'; 7 | 8 | describe('MapsComponent', () => { 9 | let component: MapsComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ MapsComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(MapsComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/maps/maps.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-maps', 5 | templateUrl: './maps.component.html', 6 | styleUrls: ['./maps.component.css'] 7 | }) 8 | 9 | export class MapsComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | ngOnInit() { } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/notifications/notifications.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/notifications/notifications.component.css -------------------------------------------------------------------------------- /src/app/notifications/notifications.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |

Notifications

6 |

Handcrafted by our friend Robert McIntosh. Please checkout the full documentation.

7 |
8 |
9 |
10 |
11 |
Notifications Style
12 |
13 | This is a plain notification 14 |
15 |
16 | 17 | This is a notification with close button. 18 |
19 |
20 | 21 | 22 | This is a notification with close button and icon. 23 |
24 |
25 | 26 | 27 | This is a notification with close button and icon and have many lines. You can see that the icon and the close button are always vertically aligned. This is a beautiful notification. So you don't have to worry about the style. 28 |
29 |
30 |
31 |
Notification states
32 |
33 | 34 | Info - This is a regular notification made with ".alert-info" 35 |
36 |
37 | 38 | Success - This is a regular notification made with ".alert-success" 39 |
40 |
41 | 42 | Warning - This is a regular notification made with ".alert-warning" 43 |
44 |
45 | 46 | Danger - This is a regular notification made with ".alert-danger" 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
Notifications Places 56 |

Click to view notifications

57 |
58 |
59 |
60 |
61 |
62 | 63 |
64 |
65 | 66 |
67 |
68 | 69 |
70 |
71 |
72 |
73 | 74 |
75 |
76 | 77 |
78 |
79 | 80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 | -------------------------------------------------------------------------------- /src/app/notifications/notifications.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { NotificationsComponent } from './notifications.component'; 7 | 8 | describe('NotificationsComponent', () => { 9 | let component: NotificationsComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ NotificationsComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(NotificationsComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/notifications/notifications.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | declare var $:any; 4 | 5 | @Component({ 6 | selector: 'app-notifications', 7 | templateUrl: './notifications.component.html', 8 | styleUrls: ['./notifications.component.css'] 9 | }) 10 | export class NotificationsComponent implements OnInit { 11 | 12 | constructor() { } 13 | 14 | ngOnInit() { 15 | } 16 | showNotification(from, align){ 17 | const type = ['','info','success','warning','danger']; 18 | 19 | var color = Math.floor((Math.random() * 4) + 1); 20 | $.notify({ 21 | icon: "pe-7s-gift", 22 | message: "Welcome to Light Bootstrap Dashboard - a beautiful freebie for every web developer." 23 | },{ 24 | type: type[color], 25 | timer: 1000, 26 | placement: { 27 | from: from, 28 | align: align 29 | } 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/shared/footer/footer.component.html: -------------------------------------------------------------------------------- 1 | 32 | -------------------------------------------------------------------------------- /src/app/shared/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | declare var $:any; 4 | 5 | @Component({ 6 | selector: 'footer-cmp', 7 | templateUrl: 'footer.component.html' 8 | }) 9 | 10 | export class FooterComponent{ 11 | test : Date = new Date(); 12 | } 13 | -------------------------------------------------------------------------------- /src/app/shared/footer/footer.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { RouterModule } from '@angular/router'; 4 | import { FooterComponent } from './footer.component'; 5 | 6 | @NgModule({ 7 | imports: [ RouterModule, CommonModule ], 8 | declarations: [ FooterComponent ], 9 | exports: [ FooterComponent ] 10 | }) 11 | 12 | export class FooterModule {} 13 | -------------------------------------------------------------------------------- /src/app/shared/navbar/navbar.component.html: -------------------------------------------------------------------------------- 1 | 79 | -------------------------------------------------------------------------------- /src/app/shared/navbar/navbar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, ElementRef } from '@angular/core'; 2 | import { ROUTES } from '../../sidebar/sidebar.component'; 3 | import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common'; 4 | 5 | @Component({ 6 | // moduleId: module.id, 7 | selector: 'navbar-cmp', 8 | templateUrl: 'navbar.component.html' 9 | }) 10 | 11 | export class NavbarComponent implements OnInit{ 12 | private listTitles: any[]; 13 | location: Location; 14 | private toggleButton: any; 15 | private sidebarVisible: boolean; 16 | 17 | constructor(location: Location, private element: ElementRef) { 18 | this.location = location; 19 | this.sidebarVisible = false; 20 | } 21 | 22 | ngOnInit(){ 23 | this.listTitles = ROUTES.filter(listTitle => listTitle); 24 | const navbar: HTMLElement = this.element.nativeElement; 25 | this.toggleButton = navbar.getElementsByClassName('navbar-toggle')[0]; 26 | } 27 | sidebarOpen() { 28 | const toggleButton = this.toggleButton; 29 | const body = document.getElementsByTagName('body')[0]; 30 | setTimeout(function(){ 31 | toggleButton.classList.add('toggled'); 32 | }, 500); 33 | body.classList.add('nav-open'); 34 | 35 | this.sidebarVisible = true; 36 | }; 37 | sidebarClose() { 38 | const body = document.getElementsByTagName('body')[0]; 39 | this.toggleButton.classList.remove('toggled'); 40 | this.sidebarVisible = false; 41 | body.classList.remove('nav-open'); 42 | }; 43 | sidebarToggle() { 44 | // const toggleButton = this.toggleButton; 45 | // const body = document.getElementsByTagName('body')[0]; 46 | if (this.sidebarVisible === false) { 47 | this.sidebarOpen(); 48 | } else { 49 | this.sidebarClose(); 50 | } 51 | }; 52 | 53 | getTitle(){ 54 | var titlee = this.location.prepareExternalUrl(this.location.path()); 55 | if(titlee.charAt(0) === '#'){ 56 | titlee = titlee.slice( 1 ); 57 | } 58 | 59 | for(var item = 0; item < this.listTitles.length; item++){ 60 | if(this.listTitles[item].path === titlee){ 61 | return this.listTitles[item].title; 62 | } 63 | } 64 | return 'Dashboard'; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/app/shared/navbar/navbar.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { RouterModule } from '@angular/router'; 4 | import { NavbarComponent } from './navbar.component'; 5 | 6 | @NgModule({ 7 | imports: [ RouterModule, CommonModule ], 8 | declarations: [ NavbarComponent ], 9 | exports: [ NavbarComponent ] 10 | }) 11 | 12 | export class NavbarModule {} 13 | -------------------------------------------------------------------------------- /src/app/sidebar/sidebar.component.html: -------------------------------------------------------------------------------- 1 | 2 | 79 | -------------------------------------------------------------------------------- /src/app/sidebar/sidebar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | declare const $: any; 4 | declare interface RouteInfo { 5 | path: string; 6 | title: string; 7 | icon: string; 8 | class: string; 9 | } 10 | export const ROUTES: RouteInfo[] = [ 11 | { path: '/dashboard', title: 'Dashboard', icon: 'pe-7s-graph', class: '' }, 12 | { path: '/user', title: 'User Profile', icon:'pe-7s-user', class: '' }, 13 | { path: '/table', title: 'Table List', icon:'pe-7s-note2', class: '' }, 14 | { path: '/typography', title: 'Typography', icon:'pe-7s-news-paper', class: '' }, 15 | { path: '/icons', title: 'Icons', icon:'pe-7s-science', class: '' }, 16 | { path: '/maps', title: 'Maps', icon:'pe-7s-map-marker', class: '' }, 17 | { path: '/notifications', title: 'Notifications', icon:'pe-7s-bell', class: '' }, 18 | { path: '/upgrade', title: 'Upgrade to PRO', icon:'pe-7s-rocket', class: 'active-pro' }, 19 | ]; 20 | 21 | @Component({ 22 | selector: 'app-sidebar', 23 | templateUrl: './sidebar.component.html' 24 | }) 25 | export class SidebarComponent implements OnInit { 26 | menuItems: any[]; 27 | 28 | constructor() { } 29 | 30 | ngOnInit() { 31 | this.menuItems = ROUTES.filter(menuItem => menuItem); 32 | } 33 | isMobileMenu() { 34 | if ($(window).width() > 991) { 35 | return false; 36 | } 37 | return true; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /src/app/sidebar/sidebar.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { RouterModule } from '@angular/router'; 4 | import { SidebarComponent } from './sidebar.component'; 5 | 6 | @NgModule({ 7 | imports: [ RouterModule, CommonModule ], 8 | declarations: [ SidebarComponent ], 9 | exports: [ SidebarComponent ] 10 | }) 11 | 12 | export class SidebarModule {} 13 | -------------------------------------------------------------------------------- /src/app/tables/tables.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/tables/tables.component.css -------------------------------------------------------------------------------- /src/app/tables/tables.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |

Striped Table with Hover

8 |

Here is a subtitle for this table

9 |
10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
{{ cell }}
{{cell}}
23 | 24 |
25 |
26 |
27 |
28 |
29 |
30 |

Table on Plain Background

31 |

Here is a subtitle for this table

32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
{{ cell }}
{{cell}}
46 |
47 |
48 |
49 |
50 |
51 |
52 | -------------------------------------------------------------------------------- /src/app/tables/tables.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { TablesComponent } from './tables.component'; 7 | 8 | describe('TablesComponent', () => { 9 | let component: TablesComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ TablesComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(TablesComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/tables/tables.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | declare interface TableData { 4 | headerRow: string[]; 5 | dataRows: string[][]; 6 | } 7 | 8 | @Component({ 9 | selector: 'app-tables', 10 | templateUrl: './tables.component.html', 11 | styleUrls: ['./tables.component.css'] 12 | }) 13 | export class TablesComponent implements OnInit { 14 | public tableData1: TableData; 15 | public tableData2: TableData; 16 | 17 | constructor() { } 18 | 19 | ngOnInit() { 20 | this.tableData1 = { 21 | headerRow: [ 'ID', 'Name', 'Country', 'City', 'Salary'], 22 | dataRows: [ 23 | ['1', 'Dakota Rice', 'Niger', 'Oud-Turnhout', '$36,738'], 24 | ['2', 'Minerva Hooper', 'Curaçao', 'Sinaai-Waas', '$23,789'], 25 | ['3', 'Sage Rodriguez', 'Netherlands', 'Baileux', '$56,142'], 26 | ['4', 'Philip Chaney', 'Korea, South', 'Overland Park', '$38,735'], 27 | ['5', 'Doris Greene', 'Malawi', 'Feldkirchen in Kärnten', '$63,542'], 28 | ['6', 'Mason Porter', 'Chile', 'Gloucester', '$78,615'] 29 | ] 30 | }; 31 | this.tableData2 = { 32 | headerRow: [ 'ID', 'Name', 'Salary', 'Country', 'City' ], 33 | dataRows: [ 34 | ['1', 'Dakota Rice','$36,738', 'Niger', 'Oud-Turnhout' ], 35 | ['2', 'Minerva Hooper', '$23,789', 'Curaçao', 'Sinaai-Waas'], 36 | ['3', 'Sage Rodriguez', '$56,142', 'Netherlands', 'Baileux' ], 37 | ['4', 'Philip Chaney', '$38,735', 'Korea, South', 'Overland Park' ], 38 | ['5', 'Doris Greene', '$63,542', 'Malawi', 'Feldkirchen in Kärnten', ], 39 | ['6', 'Mason Porter', '$78,615', 'Chile', 'Gloucester' ] 40 | ] 41 | }; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/app/typography/typography.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/typography/typography.component.css -------------------------------------------------------------------------------- /src/app/typography/typography.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |

Light Bootstrap Table Heading

8 |

Created using Roboto Font Family

9 |
10 |
11 | 12 |
13 |

Header 1

Light Bootstrap Table Heading

14 |
15 | 16 |
17 |

Header 2

Light Bootstrap Table Heading

18 |
19 |
20 |

Header 3

Light Bootstrap Table Heading

21 |
22 |
23 |

Header 4

Light Bootstrap Table Heading

24 |
25 |
26 |

Header 5

Light Bootstrap Table Heading
27 |
28 |
29 |

Header 6

Light Bootstrap Table Heading
30 |
31 |
32 |

ParagraphLorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam.

33 |
34 |
35 |

Quote

36 |
37 |

38 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam. 39 |

40 | 41 | Steve Jobs, CEO Apple 42 | 43 |
44 |
45 | 46 |
47 |

Muted Text

48 |

49 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet. 50 |

51 |
52 |
53 | 56 |

Coloured Text 57 |

58 |

59 | Text Primary - Light Bootstrap Table Heading and complex bootstrap dashboard you've ever seen on the internet. 60 |

61 |

62 | Text Info - Light Bootstrap Table Heading and complex bootstrap dashboard you've ever seen on the internet. 63 |

64 |

65 | Text Success - Light Bootstrap Table Heading and complex bootstrap dashboard you've ever seen on the internet. 66 |

67 |

68 | Text Warning - Light Bootstrap Table Heading and complex bootstrap dashboard you've ever seen on the internet. 69 |

70 |

71 | Text Danger - Light Bootstrap Table Heading and complex bootstrap dashboard you've ever seen on the internet. 72 |

73 |
74 |
75 |

Small Tag

Header with small subtitle
".small" is a tag for the headers

76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | -------------------------------------------------------------------------------- /src/app/typography/typography.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { TypographyComponent } from './typography.component'; 7 | 8 | describe('TypographyComponent', () => { 9 | let component: TypographyComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ TypographyComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(TypographyComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/typography/typography.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-typography', 5 | templateUrl: './typography.component.html', 6 | styleUrls: ['./typography.component.css'] 7 | }) 8 | export class TypographyComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/upgrade/upgrade.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/upgrade/upgrade.component.css -------------------------------------------------------------------------------- /src/app/upgrade/upgrade.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |

Light Bootstrap Dashboard PRO Angular

8 |

Looking for more components? Please check our Premium Version of Light Bootstrap Dashboard Angular.

9 |
10 |
11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 41 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 70 | 73 | 74 | 75 |
FreePRO
Components16115+
Plugins414+
Example Pages422+
Documentation 39 | 40 | 42 | 43 |
SASS Files
Login/Register/Lock Pages
Premium Support
FreeJust $49
68 | Current Version 69 | 71 | Upgrade to PRO 72 |
76 | 77 |
78 |
79 |
80 |
81 | 82 |
83 |
84 | -------------------------------------------------------------------------------- /src/app/upgrade/upgrade.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { UpgradeComponent } from './upgrade.component'; 4 | 5 | describe('UpgradeComponent', () => { 6 | let component: UpgradeComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ UpgradeComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(UpgradeComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/upgrade/upgrade.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-upgrade', 5 | templateUrl: './upgrade.component.html', 6 | styleUrls: ['./upgrade.component.css'] 7 | }) 8 | export class UpgradeComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/user/user.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/app/user/user.component.css -------------------------------------------------------------------------------- /src/app/user/user.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |

Edit Profile

8 |
9 |
10 |
11 |
12 |
13 |
14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 | 27 | 28 |
29 |
30 |
31 | 32 |
33 |
34 |
35 | 36 | 37 |
38 |
39 |
40 |
41 | 42 | 43 |
44 |
45 |
46 | 47 |
48 |
49 |
50 | 51 | 52 |
53 |
54 |
55 | 56 |
57 |
58 |
59 | 60 | 61 |
62 |
63 |
64 |
65 | 66 | 67 |
68 |
69 |
70 |
71 | 72 | 73 |
74 |
75 |
76 | 77 |
78 |
79 |
80 | 81 | 82 |
83 |
84 |
85 | 86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 | ... 95 |
96 |
97 | 106 |

"Lamborghini Mercy
107 | Your chick she so thirsty
108 | I'm in that two seat Lambo" 109 |

110 |
111 |
112 |
113 | 114 | 115 | 116 |
117 |
118 |
119 |
120 |
121 |
122 | -------------------------------------------------------------------------------- /src/app/user/user.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 3 | import { By } from '@angular/platform-browser'; 4 | import { DebugElement } from '@angular/core'; 5 | 6 | import { UserComponent } from './user.component'; 7 | 8 | describe('UserComponent', () => { 9 | let component: UserComponent; 10 | let fixture: ComponentFixture; 11 | 12 | beforeEach(async(() => { 13 | TestBed.configureTestingModule({ 14 | declarations: [ UserComponent ] 15 | }) 16 | .compileComponents(); 17 | })); 18 | 19 | beforeEach(() => { 20 | fixture = TestBed.createComponent(UserComponent); 21 | component = fixture.componentInstance; 22 | fixture.detectChanges(); 23 | }); 24 | 25 | it('should create', () => { 26 | expect(component).toBeTruthy(); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/app/user/user.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-user', 5 | templateUrl: './user.component.html', 6 | styleUrls: ['./user.component.css'] 7 | }) 8 | export class UserComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/assets/css/demo.css: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | ========================================================= 4 | * Light Bootstrap Dashboard Angular - v1.5.1 5 | ========================================================= 6 | 7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-angular2 8 | * Copyright 2016 Creative Tim (http://www.creative-tim.com) 9 | * Licensed under MIT 10 | 11 | ========================================================= 12 | 13 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 14 | 15 | */ 16 | @media (min-width: 992px){ 17 | .typo-line{ 18 | padding-left: 140px; 19 | margin-bottom: 40px; 20 | position: relative; 21 | } 22 | 23 | .typo-line .category{ 24 | transform: translateY(-50%); 25 | top: 50%; 26 | left: 0px; 27 | position: absolute; 28 | } 29 | } 30 | 31 | .all-icons [class*="pe-"]{ 32 | font-size: 40px; 33 | } 34 | .all-icons input{ 35 | border: 0; 36 | } 37 | .all-icons .font-icon-detail{ 38 | text-align: center; 39 | padding: 45px 0px 30px; 40 | border: 1px solid #e5e5e5; 41 | border-radius: 6px; 42 | margin: 15px 0; 43 | } 44 | .all-icons .font-icon-detail input{ 45 | margin: 25px auto 0; 46 | width: 100%; 47 | text-align: center; 48 | display: block; 49 | color: #aaa; 50 | font-size: 13px; 51 | } 52 | 53 | #map{ 54 | position:relative; 55 | width:100%; 56 | height: 100%; 57 | } 58 | .map{ 59 | height: 280px !important; 60 | 61 | } 62 | .places-buttons .btn{ 63 | margin-bottom: 30px 64 | } 65 | .sidebar .nav > li.active-pro{ 66 | position: absolute; 67 | width: 100%; 68 | bottom: 10px; 69 | } 70 | .sidebar .nav > li.active-pro a{ 71 | background: rgba(255, 255, 255, 0.14); 72 | opacity: 1; 73 | color: #FFFFFF; 74 | } 75 | 76 | .table-upgrade td:nth-child(2), 77 | .table-upgrade td:nth-child(3){ 78 | text-align: center; 79 | } 80 | -------------------------------------------------------------------------------- /src/assets/fonts/Pe-icon-7-stroke.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/fonts/Pe-icon-7-stroke.eot -------------------------------------------------------------------------------- /src/assets/fonts/Pe-icon-7-stroke.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/fonts/Pe-icon-7-stroke.ttf -------------------------------------------------------------------------------- /src/assets/fonts/Pe-icon-7-stroke.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/fonts/Pe-icon-7-stroke.woff -------------------------------------------------------------------------------- /src/assets/img/angular-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/angular-red.png -------------------------------------------------------------------------------- /src/assets/img/angular2-logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/angular2-logo-white.png -------------------------------------------------------------------------------- /src/assets/img/angular2-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/angular2-logo.png -------------------------------------------------------------------------------- /src/assets/img/default-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/default-avatar.png -------------------------------------------------------------------------------- /src/assets/img/faces/face-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-0.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-1.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-2.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-3.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-4.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-5.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-6.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/face-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/face-7.jpg -------------------------------------------------------------------------------- /src/assets/img/faces/tim_vector.jpe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/faces/tim_vector.jpe -------------------------------------------------------------------------------- /src/assets/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/favicon.ico -------------------------------------------------------------------------------- /src/assets/img/full-screen-image-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/full-screen-image-3.jpg -------------------------------------------------------------------------------- /src/assets/img/loader-preview.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /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/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/mask.png -------------------------------------------------------------------------------- /src/assets/img/new_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/new_logo.png -------------------------------------------------------------------------------- /src/assets/img/opt_lbd_angular_thumbnail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/opt_lbd_angular_thumbnail.jpg -------------------------------------------------------------------------------- /src/assets/img/sidebar-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/sidebar-1.jpg -------------------------------------------------------------------------------- /src/assets/img/sidebar-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/sidebar-2.jpg -------------------------------------------------------------------------------- /src/assets/img/sidebar-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/sidebar-3.jpg -------------------------------------------------------------------------------- /src/assets/img/sidebar-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/sidebar-4.jpg -------------------------------------------------------------------------------- /src/assets/img/sidebar-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/assets/img/sidebar-5.jpg -------------------------------------------------------------------------------- /src/assets/img/tim_80x80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/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 | [data-notify="icon"][class*="pe-"] ~ [data-notify="message"]{ 34 | padding-left: 50px; 35 | } 36 | button.close{ 37 | position: absolute; 38 | right: 10px; 39 | top: 50%!important; 40 | margin-top: -13px; 41 | z-index: 1033; 42 | background-color: #FFFFFF; 43 | display: block; 44 | border-radius: 50%; 45 | opacity: .4; 46 | line-height: 11px; 47 | width: 25px; 48 | height: 25px; 49 | outline: 0 !important; 50 | text-align: center; 51 | padding: 3px; 52 | font-weight: 300; 53 | 54 | &:hover{ 55 | opacity: .55; 56 | } 57 | } 58 | 59 | .close ~ span{ 60 | display: block; 61 | max-width: 89%; 62 | } 63 | 64 | &[data-notify="container"]{ 65 | padding: 10px 10px 10px 20px; 66 | border-radius: $border-radius-base; 67 | } 68 | 69 | &.alert-with-icon{ 70 | padding-left: 65px; 71 | } 72 | } 73 | .alert-info{ 74 | background-color: $azure-navbar; 75 | } 76 | .alert-success { 77 | background-color: $green-navbar; 78 | } 79 | .alert-warning { 80 | background-color: $orange-navbar; 81 | } 82 | .alert-danger { 83 | background-color: $red-navbar; 84 | } 85 | -------------------------------------------------------------------------------- /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 | 207 | 208 | -------------------------------------------------------------------------------- /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/_checkbox-radio-switch.scss: -------------------------------------------------------------------------------- 1 | /* Checkbox and radio */ 2 | .checkbox, 3 | .radio { 4 | margin-bottom: 12px; 5 | } 6 | 7 | .checkbox label, 8 | .radio label { 9 | display: inline-block; 10 | position: relative; 11 | cursor: pointer; 12 | padding-left: 24px; 13 | margin-bottom: 0; 14 | } 15 | 16 | .checkbox label::before, 17 | .checkbox label::after{ 18 | font-family: 'FontAwesome'; 19 | content: "\f096"; 20 | display: inline-block; 21 | position: absolute; 22 | width: 20px; 23 | height: 20px; 24 | left: 0; 25 | cursor: pointer; 26 | line-height: 20px; 27 | font-size: 20px; 28 | -webkit-font-smoothing: antialiased; 29 | -moz-osx-font-smoothing: grayscale; 30 | top: 0px; 31 | color: $medium-gray; 32 | transition: color 0.2s linear; 33 | padding: 1px; 34 | } 35 | 36 | .checkbox label::after{ 37 | content: ""; 38 | text-align: center; 39 | opacity: 1; 40 | left: -1px; 41 | color: $medium-gray; 42 | } 43 | 44 | .checkbox input[type="checkbox"], 45 | .radio input[type="radio"] { 46 | opacity: 0; 47 | margin-left: 0; 48 | } 49 | 50 | .checkbox input[type="checkbox"]:checked + label::after, 51 | .checkbox input[type="checkbox"]:not(:disabled):hover + label::after{ 52 | font-family: 'FontAwesome'; 53 | content: "\f046"; 54 | } 55 | 56 | .checkbox input[type="checkbox"]:checked + label::after{ 57 | color: $color-azure; 58 | } 59 | 60 | 61 | 62 | .checkbox input[type="checkbox"]:not(:disabled):hover + label::before, 63 | .checkbox input[type="checkbox"]:checked + label::before{ 64 | opacity: 0; 65 | } 66 | 67 | .checkbox input[type="checkbox"]:disabled + label, 68 | .radio input[type="radio"]:disabled + label, 69 | .checkbox input[type="checkbox"]:disabled:checked + label::after { 70 | color: $medium-gray; 71 | } 72 | 73 | .checkbox input[type="checkbox"]:disabled + label::before, 74 | .checkbox input[type="checkbox"]:disabled + label::after{ 75 | cursor: not-allowed; 76 | } 77 | 78 | .checkbox input[type="checkbox"]:disabled + label, 79 | .radio input[type="radio"]:disabled + label{ 80 | cursor: not-allowed; 81 | } 82 | 83 | .checkbox.checkbox-circle label::before { 84 | border-radius: 50%; 85 | } 86 | 87 | .checkbox.checkbox-inline { 88 | padding-left:0; 89 | } 90 | 91 | .checkbox-primary input[type="checkbox"]:checked + label::before { 92 | background-color: #428bca; 93 | border-color: #428bca; 94 | } 95 | 96 | .checkbox-primary input[type="checkbox"]:checked + label::after { 97 | color: #fff; 98 | } 99 | 100 | .checkbox-danger input[type="checkbox"]:checked + label::before { 101 | background-color: #d9534f; 102 | border-color: #d9534f; 103 | } 104 | 105 | .checkbox-danger input[type="checkbox"]:checked + label::after { 106 | color: #fff; 107 | } 108 | 109 | .checkbox-info input[type="checkbox"]:checked + label::before { 110 | background-color: #5bc0de; 111 | border-color: #5bc0de; 112 | } 113 | 114 | .checkbox-info input[type="checkbox"]:checked + label::after { 115 | color: #fff; 116 | } 117 | 118 | .checkbox-warning input[type="checkbox"]:checked + label::before { 119 | background-color: #f0ad4e; 120 | border-color: #f0ad4e; 121 | } 122 | 123 | .checkbox-warning input[type="checkbox"]:checked + label::after { 124 | color: #fff; 125 | } 126 | 127 | .checkbox-success input[type="checkbox"]:checked + label::before { 128 | background-color: #5cb85c; 129 | border-color: #5cb85c; 130 | } 131 | 132 | .checkbox-success input[type="checkbox"]:checked + label::after { 133 | color: #fff; 134 | } 135 | 136 | .radio label::before, 137 | .radio label::after { 138 | font-family: 'FontAwesome'; 139 | content: "\f10c"; 140 | font-size: 20px; 141 | height: 20px; 142 | width: 20px; 143 | -webkit-font-smoothing: antialiased; 144 | -moz-osx-font-smoothing: grayscale; 145 | display: inline-block; 146 | position: absolute; 147 | line-height: 20px; 148 | left: 0; 149 | top: 0; 150 | color: $medium-gray; 151 | padding: 1px; 152 | transition: color 0.2s linear; 153 | } 154 | 155 | .radio input[type="radio"]:not(:disabled):hover + label::after, 156 | .radio input[type="radio"]:checked + label::after { 157 | font-family: 'FontAwesome'; 158 | content: "\f192"; 159 | color: $medium-gray; 160 | } 161 | 162 | .radio input[type="radio"]:checked:not(:disabled):hover + label::after, 163 | .radio input[type="radio"]:checked + label::after{ 164 | color: $color-azure; 165 | } 166 | 167 | 168 | .radio input[type="radio"]:disabled + label { 169 | color: #ddd; 170 | } 171 | 172 | .radio input[type="radio"]:disabled + label::before, 173 | .radio input[type="radio"]:disabled + label::after { 174 | color: #ddd; 175 | } 176 | 177 | .radio.radio-inline { 178 | margin-top: 0; 179 | } 180 | 181 | // .radio-primary input[type="radio"] + label::after { 182 | // background-color: #428bca; 183 | // } 184 | // 185 | // .radio-primary input[type="radio"]:checked + label::before { 186 | // border-color: #428bca; 187 | // } 188 | // 189 | // .radio-primary input[type="radio"]:checked + label::after { 190 | // background-color: #428bca; 191 | // } 192 | // 193 | // .radio-danger input[type="radio"] + label::after { 194 | // background-color: #d9534f; 195 | // } 196 | // 197 | // .radio-danger input[type="radio"]:checked + label::before { 198 | // border-color: #d9534f; 199 | // } 200 | // 201 | // .radio-danger input[type="radio"]:checked + label::after { 202 | // background-color: #d9534f; 203 | // } 204 | // 205 | // .radio-info input[type="radio"] + label::after { 206 | // background-color: #5bc0de; 207 | // } 208 | // 209 | // .radio-info input[type="radio"]:checked + label::before { 210 | // border-color: #5bc0de; 211 | // } 212 | // 213 | // .radio-info input[type="radio"]:checked + label::after { 214 | // background-color: #5bc0de; 215 | // } 216 | // 217 | // .radio-warning input[type="radio"] + label::after { 218 | // background-color: #f0ad4e; 219 | // } 220 | // 221 | // .radio-warning input[type="radio"]:checked + label::before { 222 | // border-color: #f0ad4e; 223 | // } 224 | // 225 | // .radio-warning input[type="radio"]:checked + label::after { 226 | // background-color: #f0ad4e; 227 | // } 228 | // 229 | // .radio-success input[type="radio"] + label::after { 230 | // background-color: #5cb85c; 231 | // } 232 | // 233 | // .radio-success input[type="radio"]:checked + label::before { 234 | // border-color: #5cb85c; 235 | // } 236 | // 237 | // .radio-success input[type="radio"]:checked + label::after { 238 | // background-color: #5cb85c; 239 | // } 240 | 241 | 242 | 243 | 244 | 245 | /* ============================================================ 246 | * bootstrapSwitch v1.3 by Larentis Mattia @spiritualGuru 247 | * http://www.larentis.eu/switch/ 248 | * ============================================================ 249 | * Licensed under the Apache License, Version 2.0 250 | * http://www.apache.org/licenses/LICENSE-2.0 251 | * ============================================================ */ 252 | .has-switch { 253 | border-radius: 30px; 254 | cursor: pointer; 255 | display: inline-block; 256 | line-height: 1.72222; 257 | overflow: hidden; 258 | position: relative; 259 | text-align: left; 260 | width: 60px; 261 | 262 | -webkit-user-select: none; 263 | -moz-user-select: none; 264 | -ms-user-select: none; 265 | -o-user-select: none; 266 | user-select: none; 267 | 268 | /* this code is for fixing safari bug with hidden overflow for border-radius */ 269 | -webkit-mask: url('/img/mask.png') 0 0 no-repeat; 270 | -webkit-mask-size: 60px 24px; 271 | mask: url('/img/mask.png') 0 0 no-repeat; 272 | } 273 | .has-switch.deactivate { 274 | opacity: 0.5; 275 | filter: alpha(opacity=50); 276 | cursor: default !important; 277 | } 278 | .has-switch.deactivate label, 279 | .has-switch.deactivate span { 280 | cursor: default !important; 281 | } 282 | .has-switch > div { 283 | position: relative; 284 | top: 0; 285 | width: 100px; 286 | } 287 | .has-switch > div.switch-animate { 288 | -webkit-transition: left 0.25s ease-out; 289 | transition: left 0.25s ease-out; 290 | } 291 | .has-switch > div.switch-off { 292 | left: -35px; 293 | } 294 | 295 | .has-switch > div.switch-on { 296 | left: 0; 297 | } 298 | .has-switch > div label { 299 | background-color: #FFFFFF; 300 | @include icon-gradient (rgba(255,255,255,1), rgba(241,241,242,1)); 301 | 302 | box-shadow: 0 1px 1px #FFFFFF inset, 0 1px 1px rgba(0, 0, 0, 0.25); 303 | cursor: pointer; 304 | } 305 | .has-switch input[type=checkbox] { 306 | display: none; 307 | } 308 | .has-switch span { 309 | /* box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2) inset; */ 310 | cursor: pointer; 311 | float: left; 312 | font-size: 11px; 313 | font-weight: 400; 314 | height: 24px; 315 | line-height: 15px; 316 | margin: 0; 317 | padding-bottom: 6px; 318 | padding-top: 5px; 319 | position: relative; 320 | text-align: center; 321 | text-indent: -10px; 322 | width: 50%; 323 | z-index: 1; 324 | -webkit-transition: 0.25s ease-out; 325 | transition: 0.25s ease-out; 326 | } 327 | .has-switch span.switch-left { 328 | background-color: $info-color; 329 | border-left: 1px solid rgba(0, 0, 0, 0); 330 | border-radius: 30px 0 0 30px; 331 | color: #FFFFFF; 332 | } 333 | .has-switch .switch-off span.switch-left{ 334 | background-color: $medium-gray; 335 | } 336 | .has-switch span.switch-right { 337 | border-radius: 0 30px 30px 0; 338 | background-color: $info-color; 339 | color: #ffffff; 340 | text-indent: 1px; 341 | } 342 | .has-switch .switch-off span.switch-right{ 343 | background-color: $medium-gray; 344 | } 345 | 346 | .has-switch label { 347 | border-radius: 12px; 348 | float: left; 349 | height: 22px; 350 | margin: 1px -13px; 351 | padding: 0; 352 | position: relative; 353 | transition: all 0.25s ease-out 0s; 354 | vertical-align: middle; 355 | width: 22px; 356 | z-index: 100; 357 | -webkit-transition: 0.25s ease-out; 358 | transition: 0.25s ease-out; 359 | } 360 | .has-switch .switch-on .fa-check:before{ 361 | margin-left: 10px; 362 | } 363 | .has-switch:hover .switch-on label{ 364 | margin: 1px -17px; 365 | width: 26px; 366 | } 367 | .has-switch:hover .switch-off label{ 368 | margin: 1px -13px; 369 | width: 26px; 370 | } 371 | -------------------------------------------------------------------------------- /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 | } 7 | a{ 8 | color: $info-color; 9 | 10 | &:hover, &:focus{ 11 | color: $info-states-color; 12 | text-decoration: none; 13 | } 14 | } 15 | 16 | a:focus, a:active, 17 | button::-moz-focus-inner, 18 | input::-moz-focus-inner, 19 | input[type="reset"]::-moz-focus-inner, 20 | input[type="button"]::-moz-focus-inner, 21 | input[type="submit"]::-moz-focus-inner, 22 | select::-moz-focus-inner, 23 | input[type="file"] > input[type="button"]::-moz-focus-inner{ 24 | outline:0; 25 | } 26 | .ui-slider-handle:focus, 27 | .navbar-toggle, 28 | input:focus { 29 | outline : 0 !important; 30 | } 31 | 32 | /* Animations */ 33 | .form-control, 34 | .input-group-addon, 35 | .tagsinput, 36 | .navbar, 37 | .navbar .alert{ 38 | @include transition($general-transition-time, $transition-linear); 39 | } 40 | 41 | .table > tbody > tr .td-actions .btn{ 42 | @include transition($fast-transition-time, $transition-ease-in); 43 | } 44 | 45 | .btn{ 46 | @include transition($ultra-fast-transition-time, $transition-ease-in); 47 | } 48 | .fa{ 49 | width: 18px; 50 | text-align: center; 51 | } 52 | .margin-top{ 53 | margin-top: 50px; 54 | } 55 | 56 | .wrapper{ 57 | position: relative; 58 | top: 0; 59 | height: 100vh; 60 | } 61 | -------------------------------------------------------------------------------- /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 | a{ 8 | p{ 9 | margin-bottom: 0; 10 | } 11 | } 12 | } 13 | } 14 | .navbar{ 15 | border: $none; 16 | font-size: $font-size-navbar; 17 | border-radius: 0; 18 | 19 | .navbar-brand { 20 | font-weight: $font-weight-normal; 21 | margin: $navbar-margin-brand; 22 | padding: $navbar-padding-brand; 23 | font-size: $font-size-large-navbar; 24 | } 25 | .navbar-nav{ 26 | > li > a { 27 | padding: $navbar-padding-a; 28 | margin: $navbar-margin-a; 29 | position: relative; 30 | } 31 | > li > a.btn{ 32 | margin: $navbar-margin-a-btn; 33 | padding: $padding-base-vertical $padding-base-horizontal; 34 | } 35 | > li > a.btn-round{ 36 | margin: $navbar-margin-a-btn-round; 37 | } 38 | > li > a [class^="fa"]{ 39 | font-size: $font-size-large + 1; 40 | position: relative; 41 | line-height: 16px; 42 | top: 1px; 43 | } 44 | 45 | .notification{ 46 | position: absolute; 47 | background-color: #FB404B; 48 | text-align: center; 49 | border-radius: 10px; 50 | min-width: 18px; 51 | padding: 0 5px; 52 | height: 18px; 53 | font-size: 12px; 54 | color: #FFFFFF; 55 | font-weight: bold; 56 | line-height: 18px; 57 | top: 0px; 58 | left: 7px; 59 | } 60 | } 61 | .btn{ 62 | margin: $navbar-margin-btn; 63 | font-size: $font-size-base; 64 | } 65 | .btn-simple{ 66 | font-size: $font-size-medium; 67 | } 68 | .caret{ 69 | // @include center-item(); 70 | } 71 | 72 | &.fixed{ 73 | width: calc(100% - $sidebar-width); 74 | right: 0; 75 | left: auto; 76 | border-radius: 0; 77 | } 78 | 79 | } 80 | 81 | .navbar-nav > li > .dropdown-menu{ 82 | border-radius: $border-radius-extreme; 83 | margin-top: -5px; 84 | } 85 | 86 | .navbar-transparent, [class*="navbar-ct"]{ 87 | .navbar-brand{ 88 | color: $white-color; 89 | @include opacity(.9); 90 | 91 | &:focus, 92 | &:hover{ 93 | background-color: transparent; 94 | @include opacity(1); 95 | } 96 | } 97 | 98 | .navbar-nav{ 99 | > li > a:not(.btn){ 100 | color: $white-color; 101 | border-color: $white-color; 102 | @include opacity(0.8); 103 | } 104 | > .active > a:not(.btn), 105 | > .active > a:hover:not(.btn), 106 | > .active > a:focus:not(.btn), 107 | > li > a:hover:not(.btn), 108 | > li > a:focus:not(.btn){ 109 | background-color: transparent; 110 | border-radius: 3px; 111 | color: $white-color; 112 | @include opacity(1); 113 | } 114 | .nav > li > a.btn:hover{ 115 | background-color: transparent; 116 | } 117 | 118 | > .dropdown > a .caret, 119 | > .dropdown > a:hover .caret, 120 | > .dropdown > a:focus .caret{ 121 | border-bottom-color: $white-color; 122 | border-top-color: $white-color; 123 | } 124 | 125 | > .open > a, 126 | > .open > a:hover, 127 | > .open > a:focus { 128 | background-color: transparent; 129 | color: $white-color; 130 | @include opacity(1); 131 | } 132 | } 133 | 134 | .btn-default{ 135 | color: $white-color; 136 | border-color: $white-color; 137 | } 138 | .btn-default.btn-fill{ 139 | color: $dark-gray; 140 | background-color: $white-color; 141 | @include opacity(.9); 142 | } 143 | .btn-default.btn-fill:hover, 144 | .btn-default.btn-fill:focus, 145 | .btn-default.btn-fill:active, 146 | .btn-default.btn-fill.active, 147 | .open .dropdown-toggle.btn-fill.btn-default{ 148 | border-color: $white-color; 149 | @include opacity(1); 150 | } 151 | 152 | } 153 | .navbar-transparent{ 154 | .dropdown-menu .divider{ 155 | background-color: rgba($white-color,.2); 156 | } 157 | } 158 | 159 | .nav-open .nav .caret{ 160 | border-bottom-color: $white-color; 161 | border-top-color: $white-color; 162 | } 163 | 164 | .navbar-default { 165 | background-color: $white-navbar; 166 | border-bottom: 1px solid rgba(0, 0, 0, 0.1); 167 | 168 | .navbar-nav{ 169 | > li > a:not(.btn){ 170 | color: $dark-gray; 171 | } 172 | 173 | > .active > a, 174 | > .active > a:not(.btn):hover, 175 | > .active > a:not(.btn):focus, 176 | > li > a:not(.btn):hover, 177 | > li > a:not(.btn):focus { 178 | background-color: transparent; 179 | border-radius: 3px; 180 | color: $info-color; 181 | @include opacity(1); 182 | } 183 | 184 | > .dropdown > a:hover .caret, 185 | > .dropdown > a:focus .caret { 186 | border-bottom-color: $info-color; 187 | border-top-color: $info-color; 188 | 189 | } 190 | 191 | > .open > a, 192 | > .open > a:hover, 193 | > .open > a:focus{ 194 | background-color: transparent; 195 | color: $info-color; 196 | } 197 | 198 | .navbar-toggle:hover,.navbar-toggle:focus { 199 | background-color: transparent; 200 | } 201 | 202 | } 203 | 204 | &:not(.navbar-transparent) .btn-default:hover{ 205 | color: $info-color; 206 | border-color: $info-color; 207 | } 208 | &:not(.navbar-transparent) .btn-neutral, 209 | &:not(.navbar-transparent) .btn-neutral:hover, 210 | &:not(.navbar-transparent) .btn-neutral:active{ 211 | color: $dark-gray; 212 | } 213 | } 214 | 215 | /* Navbar with icons */ 216 | 217 | .navbar-icons{ 218 | &.navbar .navbar-brand{ 219 | margin-top: 12px; 220 | margin-bottom: 12px; 221 | } 222 | .navbar-nav{ 223 | > li > a{ 224 | text-align: center; 225 | padding: $navbar-padding-a-icons; 226 | margin: $navbar-margin-a-icons; 227 | } 228 | 229 | [class^="pe"] { 230 | font-size: 30px; 231 | position: relative; 232 | } 233 | p { 234 | margin: 3px 0 0; 235 | } 236 | } 237 | } 238 | 239 | .navbar-form{ 240 | @include box-shadow(none); 241 | .form-control{ 242 | @include light-form(); 243 | height: 22px; 244 | font-size: $font-size-navbar; 245 | line-height: $line-height-general; 246 | color: $light-gray; 247 | } 248 | .navbar-transparent & .form-control, 249 | [class*="navbar-ct"] & .form-control{ 250 | color: $white-color; 251 | border: $none; 252 | border-bottom: 1px solid rgba($white-color,.6); 253 | } 254 | 255 | } 256 | 257 | .navbar-ct-blue{ 258 | @include navbar-color($blue-navbar); 259 | } 260 | .navbar-ct-azure{ 261 | @include navbar-color($azure-navbar); 262 | } 263 | .navbar-ct-green{ 264 | @include navbar-color($green-navbar); 265 | } 266 | .navbar-ct-orange{ 267 | @include navbar-color($orange-navbar); 268 | } 269 | .navbar-ct-red{ 270 | @include navbar-color($red-navbar); 271 | } 272 | 273 | .navbar-transparent{ 274 | padding-top: 15px; 275 | background-color: transparent; 276 | border-bottom: 1px solid transparent; 277 | } 278 | 279 | .navbar-toggle{ 280 | margin-top: 19px; 281 | margin-bottom: 19px; 282 | border: $none; 283 | 284 | .icon-bar { 285 | background-color: $white-color; 286 | } 287 | .navbar-collapse, 288 | .navbar-form { 289 | border-color: transparent; 290 | } 291 | 292 | &.navbar-default .navbar-toggle:hover, 293 | &.navbar-default .navbar-toggle:focus { 294 | background-color: transparent; 295 | } 296 | } 297 | -------------------------------------------------------------------------------- /src/assets/sass/lbd/_sidebar-and-main-panel.scss: -------------------------------------------------------------------------------- 1 | .sidebar, 2 | .bootstrap-navbar{ 3 | position: absolute; 4 | top: 0; 5 | bottom: 0; 6 | left: 0; 7 | width: 260px; 8 | display: block; 9 | z-index: 5; 10 | color: #fff; 11 | font-weight: 200; 12 | background-size: cover; 13 | background-position: center center; 14 | 15 | .sidebar-wrapper{ 16 | position: relative; 17 | max-height: calc(100vh - 75px); 18 | min-height: 100%; 19 | overflow: auto; 20 | width: 260px; 21 | z-index: 4; 22 | 23 | padding-bottom: 75px; 24 | 25 | .dropdown .dropdown-backdrop{ 26 | display: none !important; 27 | } 28 | } 29 | 30 | .sidebar-background{ 31 | position: absolute; 32 | z-index: 1; 33 | height: 100%; 34 | width: 100%; 35 | display: block; 36 | top: 0; 37 | left: 0; 38 | background-size: cover; 39 | background-position: center center; 40 | } 41 | 42 | .logo{ 43 | padding: $navbar-padding-a; 44 | border-bottom: 1px solid rgba(255, 255, 255, 0.2); 45 | 46 | p{ 47 | float: left; 48 | font-size: 20px; 49 | margin: 10px 10px; 50 | color: $white-color; 51 | line-height: 20px; 52 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 53 | } 54 | 55 | .simple-text{ 56 | text-transform: uppercase; 57 | padding: $padding-small-vertical $padding-zero; 58 | display: block; 59 | font-size: $font-size-large; 60 | color: $white-color; 61 | text-align: left; 62 | font-weight: $font-weight-normal; 63 | line-height: 30px; 64 | } 65 | } 66 | .logo-img{ 67 | width: 30px; 68 | display: inline-block; 69 | max-height: 30px; 70 | margin-right: 10px; 71 | 72 | img{ 73 | width: 35px; 74 | top: 11px; 75 | position: absolute; 76 | } 77 | } 78 | 79 | .logo-tim{ 80 | border-radius: 50%; 81 | border: 1px solid #333; 82 | display: block; 83 | height: 61px; 84 | width: 61px; 85 | float: left; 86 | overflow: hidden; 87 | 88 | img{ 89 | width: 60px; 90 | height: 60px; 91 | } 92 | } 93 | 94 | .nav{ 95 | margin-top: 20px; 96 | float: none; 97 | 98 | li{ 99 | > a{ 100 | color: #FFFFFF; 101 | margin: 5px 15px; 102 | opacity: .86; 103 | border-radius: 4px; 104 | display: block; 105 | } 106 | 107 | &:hover > a{ 108 | background: rgba(255,255,255,0.13); 109 | opacity: 1; 110 | } 111 | 112 | &.active > a{ 113 | color: #FFFFFF; 114 | opacity: 1; 115 | background: rgba(255,255,255,0.23); 116 | 117 | } 118 | 119 | a.dropdown-toggle{ 120 | background-color: transparent; 121 | outline: none; 122 | } 123 | 124 | &.separator{ 125 | margin: 15px 0; 126 | border-bottom: 1px solid rgba(255, 255, 255, 0.2); 127 | 128 | & + li { 129 | margin-top: 31px; 130 | } 131 | } 132 | } 133 | 134 | p{ 135 | margin: 0; 136 | line-height: 30px; 137 | font-size: 12px; 138 | font-weight: 600; 139 | text-transform: uppercase; 140 | margin-left: 45px; 141 | color: $white-color; 142 | } 143 | 144 | i{ 145 | font-size: 28px; 146 | float: left; 147 | margin-right: 15px; 148 | line-height: 30px; 149 | width: 30px; 150 | text-align: center; 151 | color: $white-color; 152 | } 153 | 154 | .caret{ 155 | margin-top: 13px; 156 | position: absolute; 157 | right: 30px; 158 | } 159 | } 160 | 161 | .logo{ 162 | padding: $navbar-padding-a; 163 | border-bottom: 1px solid rgba(255, 255, 255, 0.2); 164 | 165 | p{ 166 | float: left; 167 | font-size: 20px; 168 | margin: 10px 10px; 169 | color: $white-color; 170 | line-height: 20px; 171 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 172 | } 173 | 174 | .simple-text{ 175 | text-transform: uppercase; 176 | padding: 5px 0px 5px 15px; 177 | display: block; 178 | font-size: $font-size-large; 179 | color: $white-color; 180 | text-align: left; 181 | font-weight: $font-weight-normal; 182 | line-height: 30px; 183 | } 184 | } 185 | 186 | .logo-tim{ 187 | border-radius: 50%; 188 | border: 1px solid #333; 189 | display: block; 190 | height: 61px; 191 | width: 61px; 192 | float: left; 193 | overflow: hidden; 194 | 195 | img{ 196 | width: 60px; 197 | height: 60px; 198 | } 199 | } 200 | 201 | &:after, 202 | &:before{ 203 | display: block; 204 | content: ""; 205 | position: absolute; 206 | width: 100%; 207 | height: 100%; 208 | top: 0; 209 | left: 0; 210 | z-index: 2; 211 | } 212 | 213 | &:before{ 214 | opacity: .33; 215 | background: #000000; 216 | } 217 | 218 | &:after{ 219 | @include icon-gradient($black-color-top, $black-color-bottom); 220 | z-index: 3; 221 | opacity: 1; 222 | } 223 | 224 | &[data-image]:after, 225 | &.has-image:after{ 226 | opacity: .77; 227 | } 228 | 229 | &[data-color="blue"]:after{ 230 | @include icon-gradient($new-dark-blue, $blue-color-bottom); 231 | } 232 | &[data-color="azure"]:after{ 233 | @include icon-gradient($new-blue, $azure-color-bottom); 234 | } 235 | &[data-color="green"]:after{ 236 | @include icon-gradient($new-green, $green-color-bottom); 237 | } 238 | &[data-color="orange"]:after{ 239 | @include icon-gradient($new-orange, $orange-color-bottom); 240 | } 241 | &[data-color="red"]:after{ 242 | @include icon-gradient($new-red, $red-color-bottom); 243 | } 244 | &[data-color="purple"]:after{ 245 | @include icon-gradient($new-purple, $purple-color-bottom); 246 | } 247 | } 248 | 249 | 250 | .main-panel{ 251 | background: rgba(203,203,210,.15); 252 | position: relative; 253 | z-index: 2; 254 | float: right; 255 | width: $sidebar-width; 256 | min-height: 100%; 257 | overflow: auto; 258 | 259 | .main-content{ 260 | padding: 30px 15px; 261 | min-height: calc(100% - 123px); 262 | } 263 | 264 | > .footer{ 265 | border-top: 1px solid #e7e7e7; 266 | } 267 | 268 | .navbar{ 269 | margin-bottom: 0; 270 | } 271 | } 272 | 273 | .sidebar, 274 | .main-panel, 275 | .sidebar-wrapper, 276 | .navbar-cmp-fixed .navbar{ 277 | -webkit-transition-property: top,bottom,width; 278 | transition-property: top,bottom, width; 279 | -webkit-transition-duration: .2s,.2s, .35s; 280 | transition-duration: .2s,.2s, .35s; 281 | -webkit-transition-timing-function: linear,linear,ease; 282 | transition-timing-function: linear,linear,ease; 283 | -webkit-overflow-scrolling: touch; 284 | } 285 | 286 | .main-panel{ 287 | max-height: 100%; 288 | height: 100%; 289 | } 290 | -------------------------------------------------------------------------------- /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 | 27 | > thead > tr > th{ 28 | border-bottom-width: 1px; 29 | font-size: $font-size-small; 30 | text-transform: uppercase; 31 | color: $dark-gray; 32 | font-weight: $font-weight-normal; 33 | padding-bottom: 5px; 34 | } 35 | 36 | .td-actions .btn{ 37 | @include opacity(0.36); 38 | 39 | &.btn-xs{ 40 | padding-left: 3px; 41 | padding-right: 3px; 42 | } 43 | } 44 | .td-actions{ 45 | min-width: 90px; 46 | } 47 | 48 | > tbody > tr{ 49 | position: relative; 50 | 51 | &:hover{ 52 | .td-actions .btn{ 53 | @include opacity(1); 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /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/_variables.scss: -------------------------------------------------------------------------------- 1 | //== Buttons 2 | // 3 | //## For each of Bootstrap's buttons, define text, background and border color. 4 | // General Colors 5 | 6 | 7 | $color-azure: #23CCEF; 8 | $color-purple: #9368E9; 9 | $color-red: #FB404B; 10 | $color-green: #87CB16; 11 | $color-orange: #FFA534; 12 | $color-blue: #447DF7; 13 | $color-black: #5e5e5e; 14 | 15 | $none: 0 !default; 16 | $border-thin: 1px !default; 17 | $border-thick: 2px !default; 18 | 19 | $white-color: #FFFFFF !default; 20 | $white-bg: #FFFFFF !default; 21 | 22 | $smoke-bg: #F5F5F5 !default; 23 | 24 | $black-bg: rgba(30,30,30,.97) !default; 25 | 26 | $black-color: #333333 !default; 27 | $black-hr: #444444 !default; 28 | 29 | $light-gray: #E3E3E3 !default; 30 | $medium-gray: #DDDDDD !default; 31 | $medium-dark-gray: #AAAAAA !default; 32 | $dark-gray: #9A9A9A !default; 33 | 34 | $transparent-bg: transparent !default; 35 | 36 | $default-color: #888888 !default; 37 | $default-bg: #888888 !default; 38 | $default-states-color: #777777 !default; 39 | 40 | $primary-color: #3472F7 !default; 41 | $primary-bg: #3472F7 !default; 42 | $primary-states-color: #1D62F0 !default; 43 | 44 | $success-color: #87CB16 !default; 45 | $success-bg: #87CB16 !default; 46 | $success-states-color: #049F0C !default; 47 | 48 | $info-color: #1DC7EA !default; 49 | $info-bg: #1DC7EA !default; 50 | $info-states-color: lighten($info-color, 8%) !default; 51 | 52 | $warning-color: #FF9500 !default; 53 | $warning-bg: #FF9500 !default; 54 | $warning-states-color: #ED8D00 !default; 55 | 56 | 57 | $danger-color: #FF4A55 !default; 58 | $danger-bg: #FF4A55 !default; 59 | $danger-states-color: #EE2D20 !default; 60 | 61 | 62 | 63 | $link-disabled-color: #666666 !default; 64 | 65 | 66 | /* light colors */ 67 | $light-blue: rgba($primary-color, .2); 68 | $light-azure: rgba($info-color, .2); 69 | $light-green: rgba($success-color, .2); 70 | $light-orange: rgba($warning-color, .2); 71 | $light-red: rgba($danger-color, .2); 72 | 73 | 74 | //== Components 75 | // 76 | 77 | $padding-base-vertical: 8px !default; 78 | $padding-base-horizontal: 16px !default; 79 | 80 | $padding-round-vertical: 9px !default; 81 | $padding-round-horizontal: 18px !default; 82 | 83 | $padding-simple-vertical: 10px !default; 84 | $padding-simple-horizontal: 18px !default; 85 | 86 | $padding-large-vertical: 14px !default; 87 | $padding-large-horizontal: 30px !default; 88 | 89 | $padding-small-vertical: 5px !default; 90 | $padding-small-horizontal: 10px !default; 91 | 92 | $padding-xs-vertical: 1px !default; 93 | $padding-xs-horizontal: 5px !default; 94 | 95 | $padding-label-vertical: 2px !default; 96 | $padding-label-horizontal: 12px !default; 97 | 98 | $margin-large-vertical: 30px !default; 99 | $margin-base-vertical: 15px !default; 100 | 101 | $padding-zero: 0px !default; 102 | 103 | $margin-bottom: 0 0 10px 0 !default; 104 | $border-radius-small: 3px !default; 105 | $border-radius-base: 4px !default; 106 | $border-radius-large: 6px !default; 107 | $border-radius-extreme: 10px !default; 108 | 109 | $border-radius-large-top: $border-radius-large $border-radius-large 0 0 !default; 110 | $border-radius-large-bottom: 0 0 $border-radius-large $border-radius-large !default; 111 | 112 | $btn-round-radius: 30px !default; 113 | 114 | $height-base: 40px !default; 115 | 116 | $font-size-base: 14px !default; 117 | $font-size-small: 12px !default; 118 | $font-size-medium: 16px !default; 119 | $font-size-large: 18px !default; 120 | $font-size-large-navbar: 20px !default; 121 | 122 | $font-size-h1: 52px !default; 123 | $font-size-h2: 36px !default; 124 | $font-size-h3: 28px !default; 125 | $font-size-h4: 22px !default; 126 | $font-size-h5: 16px !default; 127 | $font-size-h6: 14px !default; 128 | $font-paragraph: 16px !default; 129 | $font-size-navbar: 16px !default; 130 | $font-size-small: 12px !default; 131 | 132 | $font-weight-light: 300 !default; 133 | $font-weight-normal: 400 !default; 134 | $font-weight-semi: 500 !default; 135 | $font-weight-bold: 600 !default; 136 | 137 | $line-height-general: 1.5 !default; 138 | $line-height: 20px !default; 139 | $line-height-lg: 54px !default; 140 | 141 | $sidebar-width: calc(100% - 260px) !default; 142 | 143 | 144 | $border-radius-top: 10px 10px 0 0 !default; 145 | $border-radius-bottom: 0 0 10px 10px !default; 146 | 147 | $dropdown-shadow: 1px 2px 3px rgba(0, 0, 0, 0.125); 148 | 149 | $general-transition-time: 300ms !default; 150 | 151 | $slow-transition-time: 370ms !default; 152 | $dropdown-coordinates: 29px -50px !default; 153 | 154 | $fast-transition-time: 150ms !default; 155 | 156 | $ultra-fast-transition-time: 100ms !default; 157 | 158 | $select-coordinates: 50% -40px !default; 159 | 160 | $transition-linear: linear !default; 161 | $transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default; 162 | $transition-ease: ease 0s; 163 | $transition-ease-in: ease-in !default; 164 | $transition-ease-out: ease-out !default; 165 | 166 | 167 | $navbar-padding-a: 10px 15px; 168 | $navbar-margin-a: 10px 3px; 169 | 170 | $padding-social-a: 10px 5px; 171 | 172 | $navbar-margin-a-btn: 15px 3px; 173 | $navbar-margin-a-btn-round: 16px 3px; 174 | 175 | $navbar-padding-a-icons: 6px 15px; 176 | $navbar-margin-a-icons: 6px 3px; 177 | 178 | $navbar-padding-brand: 15px 15px; 179 | $navbar-margin-brand: 5px 0px; 180 | 181 | $navbar-margin-brand-icons: 12px auto; 182 | 183 | $navbar-margin-btn: 15px 3px; 184 | 185 | $height-icon: 64px !default; 186 | $width-icon: 64px !default; 187 | $padding-icon: 12px !default; 188 | $border-radius-icon: 15px !default; 189 | 190 | $size-icon: 64px; 191 | $size-icon-sm: 32px; 192 | 193 | 194 | $height-icon-sm: 32px; 195 | $width-icon-sm: 32px; 196 | $padding-icon-sm: 4px; 197 | $border-radius-icon-sm: 7px; 198 | 199 | $height-icon-message: 40px; 200 | $width-icon-message: 40px; 201 | 202 | $height-icon-message-sm: 20px; 203 | $width-icon-message-sm: 20px; 204 | 205 | $default-color-top: #d9d9d9 !default; 206 | $default-color-bottom: #909297 !default; 207 | 208 | $blue-color-top: #4087ea; 209 | $blue-color-bottom: #533ce1; 210 | 211 | $azure-color-top: #45c0fd; 212 | $azure-color-bottom: #4091ff; 213 | 214 | $green-color-top: #a1eb3a; 215 | $green-color-bottom: #6dc030; 216 | 217 | $orange-color-top: #ffb33b; 218 | $orange-color-bottom: #ff5221; 219 | 220 | $red-color-top: #ff3b30; 221 | $red-color-bottom: #bb0502; 222 | 223 | $purple-color-top: #df55e1; 224 | $purple-color-bottom: #943bea; 225 | 226 | $pink-color-top: #ff2a63; 227 | $pink-color-bottom: #ff2e2e; 228 | 229 | $black-color-top: #787878; 230 | $black-color-bottom: #343434; 231 | 232 | $social-facebook: #3b5998; 233 | $social-twitter: #55acee; 234 | $social-pinterest: #cc2127; 235 | $social-google: #dd4b39; 236 | $social-linkedin: #0976b4; 237 | $social-dribbble: #ea4c89; 238 | $social-github: #333333; 239 | $social-youtube: #e52d27; 240 | $social-stumbleupon: #eb4924; 241 | $social-reddit: #ff4500; 242 | $social-tumblr: #35465c; 243 | $social-behance: #1769ff; 244 | 245 | 246 | $filter-blue: darken($primary-color, 10%); 247 | $filter-azure: darken($info-color, 10%); 248 | $filter-green: darken($success-color, 10%); 249 | $filter-orange: darken($warning-color, 10%); 250 | $filter-red: darken($danger-color, 10%); 251 | 252 | 253 | $new-blue: #1DC7EA; 254 | $new-purple: #9368E9; 255 | $new-red: #FB404B; 256 | $new-green: #87CB16; 257 | $new-orange: #FFA534; 258 | $new-dark-blue: #1F77D0; 259 | $new-black: #5e5e5e; 260 | 261 | 262 | $topbar-x: topbar-x !default; 263 | $topbar-back: topbar-back !default; 264 | $bottombar-x: bottombar-x !default; 265 | $bottombar-back: bottombar-back !default; 266 | 267 | 268 | $white-navbar: rgba(#FFFFFF, .96); 269 | $blue-navbar: lighten($new-dark-blue, 10%); 270 | $azure-navbar: lighten($new-blue, 15%); 271 | $green-navbar: lighten($new-green, 10%); 272 | $orange-navbar: lighten($new-orange, 10%); 273 | $red-navbar: lighten($new-red, 10%); 274 | -------------------------------------------------------------------------------- /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.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | ========================================================= 4 | * Light Bootstrap Dashboard Angular - v1.9.0 5 | ========================================================= 6 | 7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-angular2 8 | * Copyright 2020 Creative Tim (http://www.creative-tim.com) 9 | * Licensed under MIT 10 | 11 | ========================================================= 12 | 13 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 14 | 15 | */ 16 | @import "lbd/variables"; 17 | @import "lbd/mixins"; 18 | 19 | @import "lbd/typography"; 20 | 21 | // Core CSS 22 | @import "lbd/misc"; 23 | @import "lbd/sidebar-and-main-panel"; 24 | @import "lbd/buttons"; 25 | @import "lbd/inputs"; 26 | 27 | @import "lbd/alerts"; 28 | @import "lbd/tables"; 29 | 30 | @import "lbd/checkbox-radio-switch"; 31 | @import "lbd/navbars"; 32 | @import "lbd/footers"; 33 | 34 | // Fancy Stuff 35 | @import "lbd/dropdown"; 36 | @import "lbd/cards"; 37 | @import "lbd/chartist"; 38 | @import "lbd/responsive"; 39 | @import "../css/pe-icon-7-stroke.css" 40 | -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creativetimofficial/light-bootstrap-dashboard-angular2/4004b9c66b206560f9c713eab3e7f46d7be19fb6/src/favicon.ico -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Light Bootstrap Dashboard by Creative Tim 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 57 | 58 | 59 | 60 |
loading
61 |
62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | ========================================================= 4 | * Light Bootstrap Dashboard Angular - v1.9.0 5 | ========================================================= 6 | 7 | * Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-angular2 8 | * Copyright 2020 Creative Tim (http://www.creative-tim.com) 9 | * Licensed under MIT 10 | 11 | ========================================================= 12 | 13 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 14 | 15 | */ 16 | import { enableProdMode } from '@angular/core'; 17 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 18 | 19 | import { AppModule } from './app/app.module'; 20 | import { environment } from './environments/environment'; 21 | 22 | if (environment.production) { 23 | enableProdMode(); 24 | } 25 | 26 | platformBrowserDynamic().bootstrapModule(AppModule); 27 | -------------------------------------------------------------------------------- /src/polyfills.ts: -------------------------------------------------------------------------------- 1 | // This file includes polyfills needed by Angular and is loaded before the app. 2 | // You can add your own extra polyfills to this file. 3 | import 'zone.js/dist/zone'; 4 | 5 | // If you need to support the browsers/features below, uncomment the import 6 | // and run `npm install import-name-here'; 7 | // Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 8 | 9 | // Needed for: IE9 10 | // import 'classlist.js'; 11 | 12 | // Animations 13 | // Needed for: All but Chrome and Firefox, Not supported in IE9 14 | // import 'web-animations-js'; 15 | 16 | // Date, currency, decimal and percent pipes 17 | // Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 18 | // import 'intl'; 19 | 20 | // NgClass on SVG elements 21 | // Needed for: IE10, IE11 22 | // import 'classlist.js'; 23 | (window as any)['global'] = window; 24 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/long-stack-trace-zone'; 4 | import 'zone.js/dist/proxy.js'; 5 | import 'zone.js/dist/sync-test'; 6 | import 'zone.js/dist/jasmine-patch'; 7 | import 'zone.js/dist/async-test'; 8 | import 'zone.js/dist/fake-async-test'; 9 | import { getTestBed } from '@angular/core/testing'; 10 | import { 11 | BrowserDynamicTestingModule, 12 | platformBrowserDynamicTesting 13 | } from '@angular/platform-browser-dynamic/testing'; 14 | 15 | // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. 16 | declare var __karma__: any; 17 | declare var require: any; 18 | 19 | // Prevent Karma from running prematurely. 20 | __karma__.loaded = function () {}; 21 | 22 | // First, initialize the Angular testing environment. 23 | getTestBed().initTestEnvironment( 24 | BrowserDynamicTestingModule, 25 | platformBrowserDynamicTesting() 26 | ); 27 | // Then we find all the tests. 28 | const context = require.context('./', true, /\.spec\.ts$/); 29 | // And load the modules. 30 | context.keys().map(context); 31 | // Finally, start Karma to run the tests. 32 | __karma__.start(); 33 | -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "", 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "es2020", 9 | "dom" 10 | ], 11 | "mapRoot": "./", 12 | "module": "commonjs", 13 | "moduleResolution": "node", 14 | "outDir": "../dist/out-tsc", 15 | "sourceMap": true, 16 | "target": "es2020", 17 | "allowJs":true, 18 | "typeRoots": [ 19 | "../node_modules/@types" 20 | ] 21 | }, 22 | "exclude": [ 23 | "test.ts", 24 | "**/*.spec.ts" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "jquery": "registry:dt/jquery#1.10.0+20170123093700" 4 | } 5 | } 6 | --------------------------------------------------------------------------------