├── .angular-cli.json ├── .firebaserc ├── .gitignore ├── README.md ├── changelog ├── e2e ├── app.e2e-spec.ts ├── app.po.ts └── tsconfig.e2e.json ├── firebase-debug.log ├── firebase.json ├── font └── roboto │ ├── Roboto-Bold.eot │ ├── Roboto-Bold.ttf │ ├── Roboto-Bold.woff │ ├── Roboto-Bold.woff2 │ ├── Roboto-Light.eot │ ├── Roboto-Light.ttf │ ├── Roboto-Light.woff │ ├── Roboto-Light.woff2 │ ├── Roboto-Medium.eot │ ├── Roboto-Medium.ttf │ ├── Roboto-Medium.woff │ ├── Roboto-Medium.woff2 │ ├── Roboto-Regular.eot │ ├── Roboto-Regular.ttf │ ├── Roboto-Regular.woff │ ├── Roboto-Regular.woff2 │ ├── Roboto-Thin.eot │ ├── Roboto-Thin.ttf │ ├── Roboto-Thin.woff │ └── Roboto-Thin.woff2 ├── functions ├── index.js ├── package-lock.json ├── package.json └── yarn.lock ├── gulpfile.js ├── img ├── lightbox │ ├── default-skin.png │ ├── default-skin.svg │ └── preloader.gif ├── overlays │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 04.png~HEAD │ ├── 04.png~ecacfc5c730e25dcad92fe8f4a80cba6c23a4b6b │ ├── 05.png │ ├── 06.png │ ├── 07.png │ ├── 08.png │ └── 09.png └── svg │ ├── arrow_left.svg │ └── arrow_right.svg ├── karma.conf.js ├── license.pdf ├── package-lock.json ├── package.json ├── protractor.conf.js ├── scss ├── angular │ ├── free │ │ ├── _carousel.scss │ │ ├── _dropdowns.scss │ │ ├── _inputs.scss │ │ ├── _layout.scss │ │ ├── _list-group.scss │ │ ├── _maps.scss │ │ ├── _modals.scss │ │ ├── _navbar.scss │ │ ├── _popover.scss │ │ ├── _sections.scss │ │ ├── _tooltip.scss │ │ └── _waves.scss │ └── mdb-angular-free.scss ├── bootstrap │ ├── .scss-lint.yml │ ├── _alert.scss │ ├── _badge.scss │ ├── _breadcrumb.scss │ ├── _button-group.scss │ ├── _buttons.scss │ ├── _card.scss │ ├── _carousel.scss │ ├── _close.scss │ ├── _code.scss │ ├── _custom-forms.scss │ ├── _custom.scss │ ├── _dropdown.scss │ ├── _forms.scss │ ├── _functions.scss │ ├── _grid.scss │ ├── _images.scss │ ├── _input-group.scss │ ├── _jumbotron.scss │ ├── _list-group.scss │ ├── _media.scss │ ├── _mixins.scss │ ├── _modal.scss │ ├── _nav.scss │ ├── _navbar.scss │ ├── _pagination.scss │ ├── _popover.scss │ ├── _print.scss │ ├── _progress.scss │ ├── _reboot.scss │ ├── _responsive-embed.scss │ ├── _root.scss │ ├── _tables.scss │ ├── _tooltip.scss │ ├── _transitions.scss │ ├── _type.scss │ ├── _utilities.scss │ ├── _variables.scss │ ├── bootstrap-grid.scss │ ├── bootstrap-reboot.scss │ ├── bootstrap.scss │ ├── mixins │ │ ├── _alert.scss │ │ ├── _background-variant.scss │ │ ├── _badge.scss │ │ ├── _border-radius.scss │ │ ├── _box-shadow.scss │ │ ├── _breakpoints.scss │ │ ├── _buttons.scss │ │ ├── _cards.scss │ │ ├── _caret.scss │ │ ├── _clearfix.scss │ │ ├── _float.scss │ │ ├── _forms.scss │ │ ├── _gradients.scss │ │ ├── _grid-framework.scss │ │ ├── _grid.scss │ │ ├── _hover.scss │ │ ├── _image.scss │ │ ├── _list-group.scss │ │ ├── _lists.scss │ │ ├── _nav-divider.scss │ │ ├── _navbar-align.scss │ │ ├── _pagination.scss │ │ ├── _reset-text.scss │ │ ├── _resize.scss │ │ ├── _screen-reader.scss │ │ ├── _size.scss │ │ ├── _table-row.scss │ │ ├── _text-emphasis.scss │ │ ├── _text-hide.scss │ │ ├── _text-truncate.scss │ │ ├── _transition.scss │ │ └── _visibility.scss │ └── utilities │ │ ├── _align.scss │ │ ├── _background.scss │ │ ├── _borders.scss │ │ ├── _clearfix.scss │ │ ├── _display.scss │ │ ├── _embed.scss │ │ ├── _flex.scss │ │ ├── _float.scss │ │ ├── _position.scss │ │ ├── _screenreaders.scss │ │ ├── _sizing.scss │ │ ├── _spacing.scss │ │ ├── _text.scss │ │ └── _visibility.scss ├── mdb-free.scss └── mdb │ ├── _custom.scss │ └── free │ ├── _animations.scss │ ├── _badge.scss │ ├── _breadcrumb.scss │ ├── _buttons.scss │ ├── _cards-basic.scss │ ├── _carousel-basic.scss │ ├── _collapse.scss │ ├── _deprecated.scss │ ├── _dropdowns.scss │ ├── _footer.scss │ ├── _forms-basic.scss │ ├── _global.scss │ ├── _helpers.scss │ ├── _jumbotron.scss │ ├── _list-group.scss │ ├── _masks.scss │ ├── _modals.scss │ ├── _msc.scss │ ├── _navbar.scss │ ├── _pagination.scss │ ├── _progress.scss │ ├── _tables.scss │ ├── _typography.scss │ ├── _waves.scss │ └── data │ ├── _colors.scss │ ├── _functions.scss │ ├── _mixins.scss │ ├── _prefixer.scss │ ├── _variables-b4.scss │ └── _variables.scss ├── src ├── app │ ├── app.component.css │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── contact │ │ ├── contact.component.html │ │ ├── contact.component.scss │ │ ├── contact.component.spec.ts │ │ └── contact.component.ts │ ├── footer │ │ ├── footer.component.html │ │ ├── footer.component.scss │ │ ├── footer.component.spec.ts │ │ └── footer.component.ts │ ├── header │ │ ├── header.component.html │ │ ├── header.component.scss │ │ ├── header.component.spec.ts │ │ └── header.component.ts │ └── typescripts │ │ └── free │ │ ├── buttons │ │ ├── buttons.module.ts │ │ ├── checkbox.directive.ts │ │ ├── index.ts │ │ ├── licens.md │ │ └── radio.directive.ts │ │ ├── carousel │ │ ├── carousel.component.html │ │ ├── carousel.component.ts │ │ ├── carousel.config.ts │ │ ├── carousel.module.ts │ │ ├── index.ts │ │ ├── licens.md │ │ └── slide.component.ts │ │ ├── charts │ │ ├── chart.directive.ts │ │ ├── chart.module.ts │ │ ├── color.service.ts │ │ ├── colors.service.ts │ │ ├── index.ts │ │ └── licens.md │ │ ├── collapse │ │ ├── collapse.directive.ts │ │ ├── collapse.module.ts │ │ └── index.ts │ │ ├── dropdown │ │ ├── dropdown-container.component.html │ │ ├── dropdown-container.component.ts │ │ ├── dropdown-menu.directive.ts │ │ ├── dropdown-toggle.directive.ts │ │ ├── dropdown.config.ts │ │ ├── dropdown.directive.ts │ │ ├── dropdown.module.ts │ │ ├── dropdown.state.ts │ │ └── index.ts │ │ ├── index.ts │ │ ├── inputs │ │ ├── active.class.ts │ │ ├── active.module.ts │ │ ├── equal-validator.directive.ts │ │ ├── index.ts │ │ ├── input-validate.directive.ts │ │ └── licens.md │ │ ├── modals │ │ ├── index.ts │ │ ├── licens.md │ │ ├── modal.directive.ts │ │ ├── modal.module.ts │ │ ├── modal.options.ts │ │ ├── modal.service.ts │ │ ├── modalBackdrop.component.html │ │ ├── modalBackdrop.component.ts │ │ ├── modalContainer.component.html │ │ ├── modalContainer.component.ts │ │ └── modalService.config.ts │ │ ├── navbars │ │ ├── index.ts │ │ ├── navbar.component.html │ │ ├── navbar.component.ts │ │ └── navbar.module.ts │ │ ├── package.json │ │ ├── popover │ │ ├── index.ts │ │ ├── licens.md │ │ ├── popover-container.component.html │ │ ├── popover-container.component.ts │ │ ├── popover.config.ts │ │ ├── popover.directive.ts │ │ └── popover.module.ts │ │ ├── ripple │ │ ├── index.ts │ │ ├── ripple-effect.directive.ts │ │ └── ripple.module.ts │ │ ├── tooltip │ │ ├── index.ts │ │ ├── licens.md │ │ ├── tooltip.component.html │ │ ├── tooltip.component.ts │ │ ├── tooltip.directive.ts │ │ ├── tooltip.module.ts │ │ └── tooltip.service.ts │ │ ├── tsconfig.json │ │ └── utils │ │ ├── component-loader │ │ ├── bs-component-ref.class.ts │ │ ├── component-loader.class.ts │ │ ├── component-loader.factory.ts │ │ ├── content-ref.class.ts │ │ └── index.ts │ │ ├── decorators.ts │ │ ├── facade │ │ └── browser.ts │ │ ├── index.ts │ │ ├── linked-list.class.ts │ │ ├── ng2-bootstrap-config.ts │ │ ├── positioning │ │ ├── index.ts │ │ ├── ng-positioning.ts │ │ └── positioning.service.ts │ │ ├── trigger.class.ts │ │ ├── triggers.ts │ │ └── utils.class.ts ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts ├── styles.scss ├── test.ts ├── tsconfig.app.json ├── tsconfig.spec.json └── typings.d.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.angular-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "project": { 4 | "name": "quickstart-angular2" 5 | }, 6 | "apps": [ 7 | { 8 | "root": "src", 9 | "outDir": "dist", 10 | "assets": [ 11 | "assets", 12 | "favicon.ico" 13 | ], 14 | "index": "index.html", 15 | "main": "main.ts", 16 | "polyfills": "polyfills.ts", 17 | "test": "test.ts", 18 | "tsconfig": "tsconfig.app.json", 19 | "testTsconfig": "tsconfig.spec.json", 20 | "prefix": "app", 21 | "styles": [ 22 | "../node_modules/font-awesome/scss/font-awesome.scss", 23 | "../scss/bootstrap/bootstrap.scss", 24 | "../scss/mdb-free.scss", 25 | "./styles.scss" 26 | ], 27 | "scripts": [ 28 | "../node_modules/chart.js/dist/Chart.js", 29 | "../node_modules/easy-pie-chart/dist/easypiechart.js", 30 | "../node_modules/screenfull/dist/screenfull.js", 31 | "../node_modules/hammerjs/hammer.min.js" 32 | ], 33 | "environmentSource": "environments/environment.ts", 34 | "environments": { 35 | "dev": "environments/environment.ts", 36 | "prod": "environments/environment.prod.ts" 37 | } 38 | } 39 | ], 40 | "e2e": { 41 | "protractor": { 42 | "config": "./protractor.conf.js" 43 | } 44 | }, 45 | "lint": [ 46 | { 47 | "project": "src/tsconfig.app.json" 48 | }, 49 | { 50 | "project": "src/tsconfig.spec.json" 51 | }, 52 | { 53 | "project": "e2e/tsconfig.e2e.json" 54 | } 55 | ], 56 | "test": { 57 | "karma": { 58 | "config": "./karma.conf.js" 59 | } 60 | }, 61 | "defaults": { 62 | "styleExt": "scss", 63 | "component": { 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "login-540f1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /paczki/npm 5 | /paczki/only-free 6 | /paczki/upgradePro 7 | 8 | /paczki/angular-bootstrap-md-free/font 9 | /paczki/angular-bootstrap-md-free/img 10 | /paczki/angular-bootstrap-md-free/scss 11 | /paczki/angular-bootstrap-md-free/node_modules 12 | /paczki/angular-bootstrap-md-free/src/app/typescripts 13 | /paczki/angular-bootstrap-md-free/src/app/angular-bootstrap-md 14 | 15 | 16 | /paczki/angular-bootstrap-md-pro/font 17 | /paczki/angular-bootstrap-md-pro/img 18 | /paczki/angular-bootstrap-md-pro/scss 19 | /paczki/angular-bootstrap-md-pro/node_modules 20 | /paczki/angular-bootstrap-md-pro/src/app/typescripts 21 | /paczki/angular-bootstrap-md-pro/src/app/angular-bootstrap-md 22 | /dist 23 | /tmp 24 | /out-tsc 25 | 26 | # dependencies 27 | /node_modules 28 | /functions/node_modules 29 | 30 | # IDEs and editors 31 | /.idea 32 | .project 33 | .classpath 34 | .c9/ 35 | *.launch 36 | .settings/ 37 | *.sublime-workspace 38 | 39 | # IDE - VSCode 40 | .vscode/* 41 | !.vscode/settings.json 42 | !.vscode/tasks.json 43 | !.vscode/launch.json 44 | !.vscode/extensions.json 45 | 46 | # misc 47 | /.sass-cache 48 | /connect.lock 49 | /coverage 50 | /libpeerconnection.log 51 | npm-debug.log 52 | testem.log 53 | /typings 54 | 55 | # e2e 56 | /e2e/*.js 57 | /e2e/*.map 58 | 59 | # System Files 60 | .DS_Store 61 | Thumbs.db 62 | -------------------------------------------------------------------------------- /changelog: -------------------------------------------------------------------------------- 1 | 2 | - .navbar-expand instead of .navbar-toggleable 3 | - removed unused variables and classes 4 | - changed spacing utilities 5 | - Removed nearly all .hidden-* classes in favor of our newer .d-* display utilities 6 | - updated colors (warning, danger, info, success) 7 | - customization made easier 8 | - renamed .btn-mdb to .btn-mdb-color for better naming scheme 9 | - new contact form 10 | - recreated parallax 11 | - introduced gradients 12 | - dropped jumbotron for cascading card 13 | - improved cascading cards 14 | - added gradient cards 15 | - added enhanced bootstrap modals 16 | - .btn-sm and .btn-lg instead of .btn-small and .btn-large for .btn-floating 17 | - updated overlay cards 18 | - improved pricings section 19 | - social list moved to deprecated 20 | - added border-radius to material dropdowns 21 | - improved design 22 | - updated accordion 23 | - added new versions of streaks 24 | - recreated intros 25 | - improved sidenav 26 | - fixed caret issue for material select 27 | - added animations to: tooltip, popover, alerts, dropdowns 28 | - fixed rotating card animation (from left to right side) 29 | - fixed input active class with dynamically added values 30 | - updated alerts module plugin 31 | - added slide animation for carousel 32 | - added mobile section -------------------------------------------------------------------------------- /e2e/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { QuickstartAngular2Page } from './app.po'; 2 | 3 | describe('quickstart-angular2 App', () => { 4 | let page: QuickstartAngular2Page; 5 | 6 | beforeEach(() => { 7 | page = new QuickstartAngular2Page(); 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 QuickstartAngular2Page { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types":[ 8 | "jasmine", 9 | "node" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /firebase-debug.log: -------------------------------------------------------------------------------- 1 | [debug] [2018-01-01T03:00:08.783Z] ---------------------------------------------------------------------- 2 | [debug] [2018-01-01T03:00:08.785Z] Command: C:\Program Files\nodejs\node.exe C:\Users\KashishSyeda\AppData\Roaming\npm\node_modules\firebase-tools\bin\firebase deploy 3 | [debug] [2018-01-01T03:00:08.786Z] CLI Version: 3.16.0 4 | [debug] [2018-01-01T03:00:08.786Z] Platform: win32 5 | [debug] [2018-01-01T03:00:08.786Z] Node Version: v8.1.1 6 | [debug] [2018-01-01T03:00:08.787Z] Time: Sun Dec 31 2017 22:00:08 GMT-0500 (Eastern Standard Time) 7 | [debug] [2018-01-01T03:00:08.787Z] ---------------------------------------------------------------------- 8 | [debug] 9 | [debug] [2018-01-01T03:00:08.801Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"] 10 | [debug] [2018-01-01T03:00:08.802Z] > authorizing via signed-in user 11 | [debug] [2018-01-01T03:00:08.804Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/login-540f1 12 | 13 | Sun Dec 31 2017 22:00:08 GMT-0500 (Eastern Standard Time) 14 | [debug] [2018-01-01T03:00:09.316Z] <<< HTTP RESPONSE 200 15 | [debug] [2018-01-01T03:00:09.317Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/database/login-540f1/tokens 16 | 17 | Sun Dec 31 2017 22:00:09 GMT-0500 (Eastern Standard Time) 18 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /font/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/font/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /functions/index.js: -------------------------------------------------------------------------------- 1 | // The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers. 2 | const functions = require('firebase-functions'); 3 | 4 | // The Firebase Admin SDK to access the Firebase Realtime Database. 5 | const admin = require('firebase-admin'); 6 | admin.initializeApp(functions.config().firebase); 7 | 8 | const nodemailer = require('nodemailer'); 9 | const gmailEmail = encodeURIComponent(functions.config().gmail.email); 10 | const gmailPassword = encodeURIComponent(functions.config().gmail.password); 11 | const mailTransport = nodemailer.createTransport(`smtps://${gmailEmail}:${gmailPassword}@smtp.gmail.com`); 12 | exports.sendContactMessage = functions.database.ref('/messages/{pushKey}').onWrite(( change ) => { 13 | const dataAfterChange = change.after.val(); 14 | // Only send email for new messages. 15 | if (change.before.val() || !dataAfterChange.name) { 16 | return; 17 | } 18 | 19 | const val = dataAfterChange; 20 | 21 | const mailOptions = { 22 | to: val.email, 23 | subject: 'Your message has been sent. Thank you.', 24 | text: `Your message content. \n 25 | Subject: ${val.subject} \n 26 | Sender's Name: ${val.name} \n 27 | Content: ${val.message}` 28 | }; 29 | return mailTransport.sendMail(mailOptions).then(() => { 30 | return console.log('Mail sent'); //The log will be shown in Firebase. 31 | }); 32 | }); 33 | 34 | -------------------------------------------------------------------------------- /functions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "functions", 3 | "description": "Cloud Functions for Firebase", 4 | "scripts": { 5 | "serve": "firebase serve --only functions", 6 | "shell": "firebase experimental:functions:shell", 7 | "start": "npm run shell", 8 | "deploy": "firebase deploy --only functions", 9 | "logs": "firebase functions:log" 10 | }, 11 | "dependencies": { 12 | "firebase-admin": "^6.0.0", 13 | "firebase-functions": "^2.0.5", 14 | "nodemailer": "^4.4.1" 15 | }, 16 | "private": true 17 | } 18 | -------------------------------------------------------------------------------- /img/lightbox/default-skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/lightbox/default-skin.png -------------------------------------------------------------------------------- /img/lightbox/default-skin.svg: -------------------------------------------------------------------------------- 1 | default-skin 2 -------------------------------------------------------------------------------- /img/lightbox/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/lightbox/preloader.gif -------------------------------------------------------------------------------- /img/overlays/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/01.png -------------------------------------------------------------------------------- /img/overlays/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/02.png -------------------------------------------------------------------------------- /img/overlays/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/03.png -------------------------------------------------------------------------------- /img/overlays/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/04.png -------------------------------------------------------------------------------- /img/overlays/04.png~HEAD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/04.png~HEAD -------------------------------------------------------------------------------- /img/overlays/04.png~ecacfc5c730e25dcad92fe8f4a80cba6c23a4b6b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/04.png~ecacfc5c730e25dcad92fe8f4a80cba6c23a4b6b -------------------------------------------------------------------------------- /img/overlays/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/05.png -------------------------------------------------------------------------------- /img/overlays/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/06.png -------------------------------------------------------------------------------- /img/overlays/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/07.png -------------------------------------------------------------------------------- /img/overlays/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/08.png -------------------------------------------------------------------------------- /img/overlays/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/img/overlays/09.png -------------------------------------------------------------------------------- /img/svg/arrow_left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /img/svg/arrow_right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /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-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular/cli/plugins/karma') 14 | ], 15 | client:{ 16 | clearContext: false // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | files: [ 19 | { pattern: './src/test.ts', watched: false } 20 | ], 21 | preprocessors: { 22 | './src/test.ts': ['@angular/cli'] 23 | }, 24 | mime: { 25 | 'text/x-typescript': ['ts','tsx'] 26 | }, 27 | coverageIstanbulReporter: { 28 | reports: [ 'html', 'lcovonly' ], 29 | fixWebpackSourcePaths: true 30 | }, 31 | angularCli: { 32 | environment: 'dev' 33 | }, 34 | reporters: config.angularCli && config.angularCli.codeCoverage 35 | ? ['progress', 'coverage-istanbul'] 36 | : ['progress', 'kjhtml'], 37 | port: 9876, 38 | colors: true, 39 | logLevel: config.LOG_INFO, 40 | autoWatch: true, 41 | browsers: ['Chrome'], 42 | singleRun: false 43 | }); 44 | }; 45 | -------------------------------------------------------------------------------- /license.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/license.pdf -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "quickstart-angular5", 3 | "version": "5.0.5", 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "nodemailer": { 7 | "version": "4.4.1", 8 | "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.4.1.tgz", 9 | "integrity": "sha512-1bnszJJXatcHJhLpxQ1XMkLDjCjPKvGKMtRQ73FOsoNln3UQjddEQmz6fAwM3aj0GtQ3dQX9qtMHPelz63GU7A==" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "quickstart-angular5", 3 | "version": "5.0.5", 4 | "license": "MIT", 5 | "scripts": { 6 | "ng": "ng", 7 | "start": "ng serve", 8 | "build": "ng build", 9 | "test": "ng test", 10 | "lint": "ng lint", 11 | "e2e": "ng e2e", 12 | "build:free": "ngm build -p src/app/typescripts/free --clean && gulp npmFree && gulp startFree && gulp onlyFree", 13 | "build:pro": "ngm build -p src/app/typescripts/pro --clean && gulp only-pro && gulp startPro", 14 | "build:all": "npm run build:free && npm run build:pro", 15 | "aot:build": "ng build --prod --sm=false --aot=true --output-path=dist", 16 | "pre-commit": "ng lint" 17 | }, 18 | "private": true, 19 | "dependencies": { 20 | "@agm/core": "^1.0.0-beta.2", 21 | "@angular/animations": "^5.0.0", 22 | "@angular/common": "^5.0.0", 23 | "@angular/compiler": "^5.0.0", 24 | "@angular/core": "^5.0.0", 25 | "@angular/forms": "^5.0.0", 26 | "@angular/http": "^5.0.0", 27 | "@angular/platform-browser": "^5.0.0", 28 | "@angular/platform-browser-dynamic": "^5.0.0", 29 | "@angular/router": "^5.0.0", 30 | "@ng-bootstrap/ng-bootstrap": "1.0.0-beta.5", 31 | "angular-bootstrap-md": "*", 32 | "angularfire2": "^5.0.0-rc.4", 33 | "chart.js": "2.5.x", 34 | "classlist.js": "1.1.x", 35 | "core-js": "2.4.x", 36 | "del": "3.0.x", 37 | "easy-pie-chart": "2.1.x", 38 | "firebase": "4.8.0", 39 | "firebase-functions": "^0.7.5", 40 | "firebase-tools": "^3.16.0", 41 | "font-awesome": "4.7.x", 42 | "gulp": "^3.9.1", 43 | "gulp-rename": "1.2.x", 44 | "gulp-run": "1.7.x", 45 | "hammerjs": "2.0.x", 46 | "ng-html-util": "1.0.x", 47 | "ngm-cli": "0.5.x", 48 | "nodemailer": "^4.4.1", 49 | "rxjs": "^5.5.2", 50 | "screenfull": "3.3.x", 51 | "smoothscroll-polyfill": "0.3.x", 52 | "web-animations-js": "2.3.x", 53 | "zone.js": "0.8.x" 54 | }, 55 | "devDependencies": { 56 | "@angular/cli": "^1.6.3", 57 | "@angular/compiler-cli": "^5.0.0", 58 | "@angular/language-service": "^5.0.0", 59 | "@types/jasmine": "2.5.38", 60 | "@types/node": "~6.0.85", 61 | "codelyzer": "~3.2.0", 62 | "jasmine-core": "~2.5.2", 63 | "jasmine-spec-reporter": "~3.2.0", 64 | "karma": "~1.4.1", 65 | "karma-chrome-launcher": "~2.0.0", 66 | "karma-cli": "~1.0.1", 67 | "karma-coverage-istanbul-reporter": "^0.2.0", 68 | "karma-jasmine": "~1.1.0", 69 | "karma-jasmine-html-reporter": "^0.2.2", 70 | "protractor": "~5.1.0", 71 | "ts-node": "~3.2.0", 72 | "tslint": "~5.7.0", 73 | "typescript": "~2.5.0", 74 | "webpack": "3.x" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /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 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: [ 9 | './e2e/**/*.e2e-spec.ts' 10 | ], 11 | capabilities: { 12 | 'browserName': 'chrome' 13 | }, 14 | directConnect: true, 15 | baseUrl: 'http://localhost:4200/', 16 | framework: 'jasmine', 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000, 20 | print: function() {} 21 | }, 22 | beforeLaunch: function() { 23 | require('ts-node').register({ 24 | project: 'e2e/tsconfig.e2e.json' 25 | }); 26 | }, 27 | onPrepare() { 28 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /scss/angular/free/_carousel.scss: -------------------------------------------------------------------------------- 1 | .carousel-item.active, .carousel-item-next, .carousel-item-prev { 2 | display: flex; 3 | overflow: hidden; 4 | } 5 | 6 | .carousel, .carousel-multi-item, .carousel-thumbnails { 7 | outline: none; 8 | } 9 | 10 | .carousel-fade .carousel-inner .carousel-item { 11 | opacity: 0; 12 | transition-property: opacity; 13 | } 14 | 15 | .carousel-fade .carousel-inner .active { 16 | opacity: 1; 17 | } 18 | 19 | .carousel-fade .carousel-inner>.carousel-item.active, .carousel-fade .carousel-inner>.carousel-item.next.left, .carousel-fade .carousel-inner>.carousel-item.prev.right { 20 | opacity: 1; 21 | -webkit-transform: translate3d(0,0,0); 22 | transform: translate3d(0,0,0); 23 | } -------------------------------------------------------------------------------- /scss/angular/free/_dropdowns.scss: -------------------------------------------------------------------------------- 1 | .show { 2 | // Show the menu 3 | > .dropdown-menu { 4 | display: block; 5 | } 6 | 7 | // Remove the outline when :focus is triggered 8 | > a { 9 | outline: 0; 10 | } 11 | } 12 | 13 | dropdown{ 14 | .dropdown-menu { 15 | display: none; 16 | position: absolute; 17 | transform: translate3d(0px, 47px, 0px); 18 | top: 0px; 19 | left: 0px; 20 | will-change: transform; 21 | } 22 | } 23 | 24 | //dropup 25 | .dropup { 26 | // Different positioning for bottom up menu 27 | .dropdown-menu { 28 | display: none; 29 | position: absolute; 30 | transform: translate3d(117px, -165px, 0px); 31 | top: 0px; 32 | left: 0px; 33 | will-change: transform; 34 | } 35 | } 36 | //dropup animation 37 | .dropup.show { 38 | .dropdown-menu { 39 | display: block; 40 | opacity: 0; 41 | transition: 0.55s; 42 | } 43 | 44 | .fadeInDropdown { 45 | opacity: 1; 46 | } 47 | } 48 | 49 | //material dropdown 50 | .dropdown { 51 | .dropdown-menu { 52 | display: none; 53 | position: absolute; 54 | transform: translate3d(6px, 49px, 0px); 55 | top: 0px; 56 | left: 0px; 57 | will-change: transform; 58 | } 59 | } 60 | //material dropdown animation 61 | .dropdown.show { 62 | .dropdown-menu { 63 | display: block; 64 | opacity: 0; 65 | transition: 0.55s; 66 | } 67 | 68 | .fadeInDropdown { 69 | opacity: 1; 70 | } 71 | } -------------------------------------------------------------------------------- /scss/angular/free/_inputs.scss: -------------------------------------------------------------------------------- 1 | //input disabled 2 | .disabled { 3 | cursor: not-allowed!important; 4 | } 5 | 6 | 7 | //input counter 8 | .counter-danger { 9 | border-bottom: 1px solid #F44336 !important; 10 | box-shadow: 0 1px 0 0 #F44336 !important; 11 | } 12 | 13 | input:focus ~ .chars { 14 | float: right; 15 | clear: both; 16 | display: block; 17 | } 18 | 19 | textarea:focus ~ .chars { 20 | float: right; 21 | clear: both; 22 | display: block; 23 | } 24 | 25 | 26 | //active styles for input label 27 | .md-form label.active { 28 | color: #757575; 29 | } 30 | 31 | 32 | //inputs validation 33 | .counter-success{ 34 | border-bottom: 1px solid $input-success-color !important; 35 | box-shadow: 0 1px 0 0 $input-success-color !important; 36 | } 37 | 38 | .inputVal { 39 | font-size: .8rem; 40 | position: absolute; 41 | top: 60px; 42 | } 43 | 44 | .md-form .prefix ~ .inputVal{ 45 | margin-left: 3rem; 46 | } 47 | 48 | input.counter-danger ~ span.text-danger { 49 | visibility: visible !important; 50 | } 51 | 52 | input.counter-success ~ span.text-success { 53 | visibility: visible !important; 54 | } 55 | -------------------------------------------------------------------------------- /scss/angular/free/_layout.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalmanMujtaba/Angular-Email-App/7290d379e92ae764bfa01a9da178d4288dcd68f8/scss/angular/free/_layout.scss -------------------------------------------------------------------------------- /scss/angular/free/_list-group.scss: -------------------------------------------------------------------------------- 1 | .flex-column { 2 | 3 | .nav-item a { 4 | width: 100%; 5 | margin: 0; 6 | color: #495057; 7 | margin-bottom: -1px; 8 | } 9 | .nav-link { 10 | padding:0 !important; 11 | } 12 | .active a { 13 | background-color: #007bff; 14 | border-color: #007bff; 15 | color: #fff !important; 16 | } 17 | .list-group-item { 18 | border-radius: 0; 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /scss/angular/free/_maps.scss: -------------------------------------------------------------------------------- 1 | agm-map { 2 | display: block; 3 | } -------------------------------------------------------------------------------- /scss/angular/free/_navbar.scss: -------------------------------------------------------------------------------- 1 | @media (min-width: 1200px) { 2 | .navbar.navbar-expand-xl { 3 | links { 4 | display: flex; 5 | flex-direction: row; 6 | width: 100%; 7 | } 8 | } 9 | } 10 | 11 | @media (min-width: 992px) { 12 | .navbar.navbar-expand-lg { 13 | links { 14 | display: flex; 15 | flex-direction: row; 16 | width: 100%; 17 | } 18 | } 19 | } 20 | 21 | @media (min-width: 768px) { 22 | .navbar.navbar-expand-md { 23 | links { 24 | display: flex; 25 | flex-direction: row; 26 | width: 100%; 27 | } 28 | } 29 | } 30 | 31 | @media (min-width: 576px) { 32 | .navbar.navbar-expand-sm { 33 | links { 34 | display: flex; 35 | flex-direction: row; 36 | width: 100%; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /scss/angular/free/_sections.scss: -------------------------------------------------------------------------------- 1 | @media (min-width: 1200px) { 2 | .offset-xl-1 { 3 | margin-left: 8.333333%; 4 | } 5 | } 6 | 7 | DoubleNavbar{ 8 | header { 9 | height: 0 !important; 10 | } 11 | } -------------------------------------------------------------------------------- /scss/angular/free/_waves.scss: -------------------------------------------------------------------------------- 1 | mdb-tabset { 2 | a { 3 | &.waves-effect, 4 | &.waves-light { 5 | display: block; 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /scss/angular/mdb-angular-free.scss: -------------------------------------------------------------------------------- 1 | @import "./free/inputs"; 2 | @import "./free/list-group"; 3 | @import "./free/navbar"; 4 | @import "./free/waves"; 5 | @import "./free/dropdowns"; 6 | @import "./free/tooltip"; 7 | @import "./free/sections"; 8 | @import "./free/popover"; 9 | @import "./free/carousel"; 10 | @import "./free/maps"; 11 | @import "./free/layout"; 12 | @import "./free/modals"; 13 | 14 | -------------------------------------------------------------------------------- /scss/bootstrap/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | // Adjust close link position 31 | .close { 32 | position: absolute; 33 | top: 0; 34 | right: 0; 35 | padding: $alert-padding-y $alert-padding-x; 36 | color: inherit; 37 | } 38 | } 39 | 40 | 41 | // Alternate styles 42 | // 43 | // Generate contextual modifier classes for colorizing the alert. 44 | 45 | @each $color, $value in $theme-colors { 46 | .alert-#{$color} { 47 | @include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6)); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /scss/bootstrap/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | font-size: $badge-font-size; 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | 17 | // Empty badges collapse automatically 18 | &:empty { 19 | display: none; 20 | } 21 | } 22 | 23 | // Quick fix for badges in buttons 24 | .btn .badge { 25 | position: relative; 26 | top: -1px; 27 | } 28 | 29 | // Pill badges 30 | // 31 | // Make them extra rounded with a modifier to replace v3's badges. 32 | 33 | .badge-pill { 34 | padding-right: $badge-pill-padding-x; 35 | padding-left: $badge-pill-padding-x; 36 | @include border-radius($badge-pill-border-radius); 37 | } 38 | 39 | // Colors 40 | // 41 | // Contextual variations (linked badges get darker on :hover). 42 | 43 | @each $color, $value in $theme-colors { 44 | .badge-#{$color} { 45 | @include badge-variant($value); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /scss/bootstrap/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | list-style: none; 7 | background-color: $breadcrumb-bg; 8 | @include border-radius($border-radius); 9 | } 10 | 11 | .breadcrumb-item { 12 | // The separator between breadcrumbs (by default, a forward-slash: "/") 13 | + .breadcrumb-item::before { 14 | display: inline-block; // Suppress underlining of the separator in modern browsers 15 | padding-right: $breadcrumb-item-padding; 16 | padding-left: $breadcrumb-item-padding; 17 | color: $breadcrumb-divider-color; 18 | content: "#{$breadcrumb-divider}"; 19 | } 20 | 21 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 22 | // without `