├── .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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/img/svg/arrow_right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 `
`s. The `::before` pseudo-element generates an element
23 | // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
24 | //
25 | // To trick IE into suppressing the underline, we give the pseudo-element an
26 | // underline and then immediately remove it.
27 | + .breadcrumb-item:hover::before {
28 | text-decoration: underline;
29 | }
30 | // stylelint-disable-next-line no-duplicate-selectors
31 | + .breadcrumb-item:hover::before {
32 | text-decoration: none;
33 | }
34 |
35 | &.active {
36 | color: $breadcrumb-active-color;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/scss/bootstrap/_close.scss:
--------------------------------------------------------------------------------
1 | .close {
2 | float: right;
3 | font-size: $close-font-size;
4 | font-weight: $close-font-weight;
5 | line-height: 1;
6 | color: $close-color;
7 | text-shadow: $close-text-shadow;
8 | opacity: .5;
9 |
10 | @include hover-focus {
11 | color: $close-color;
12 | text-decoration: none;
13 | opacity: .75;
14 | }
15 | }
16 |
17 | // Additional properties for button version
18 | // iOS requires the button element instead of an anchor tag.
19 | // If you want the anchor version, it requires `href="#"`.
20 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
21 |
22 | // stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type
23 | button.close {
24 | padding: 0;
25 | background: transparent;
26 | border: 0;
27 | -webkit-appearance: none;
28 | }
29 | // stylelint-enable
30 |
--------------------------------------------------------------------------------
/scss/bootstrap/_code.scss:
--------------------------------------------------------------------------------
1 | // Inline and block code styles
2 | code,
3 | kbd,
4 | pre,
5 | samp {
6 | font-family: $font-family-monospace;
7 | }
8 |
9 | // Inline code
10 | code {
11 | padding: $code-padding-y $code-padding-x;
12 | font-size: $code-font-size;
13 | color: $code-color;
14 | background-color: $code-bg;
15 | @include border-radius($border-radius);
16 |
17 | // Streamline the style when inside anchors to avoid broken underline and more
18 | a > & {
19 | padding: 0;
20 | color: inherit;
21 | background-color: inherit;
22 | }
23 | }
24 |
25 | // User input typically entered via keyboard
26 | kbd {
27 | padding: $code-padding-y $code-padding-x;
28 | font-size: $code-font-size;
29 | color: $kbd-color;
30 | background-color: $kbd-bg;
31 | @include border-radius($border-radius-sm);
32 | @include box-shadow($kbd-box-shadow);
33 |
34 | kbd {
35 | padding: 0;
36 | font-size: 100%;
37 | font-weight: $nested-kbd-font-weight;
38 | @include box-shadow(none);
39 | }
40 | }
41 |
42 | // Blocks of code
43 | pre {
44 | display: block;
45 | margin-top: 0;
46 | margin-bottom: 1rem;
47 | font-size: $code-font-size;
48 | color: $pre-color;
49 |
50 | // Account for some code outputs that place code tags in pre tags
51 | code {
52 | padding: 0;
53 | font-size: inherit;
54 | color: inherit;
55 | background-color: transparent;
56 | border-radius: 0;
57 | }
58 | }
59 |
60 | // Enable scrollable blocks of code
61 | .pre-scrollable {
62 | max-height: $pre-scrollable-max-height;
63 | overflow-y: scroll;
64 | }
65 |
--------------------------------------------------------------------------------
/scss/bootstrap/_custom.scss:
--------------------------------------------------------------------------------
1 | // Bootstrap overrides
2 | //
3 | // Copy variables from `_variables.scss` to this file to override default values
4 | // without modifying source files.
5 |
--------------------------------------------------------------------------------
/scss/bootstrap/_functions.scss:
--------------------------------------------------------------------------------
1 | // Bootstrap functions
2 | //
3 | // Utility mixins and functions for evalutating source code across our variables, maps, and mixins.
4 |
5 | // Ascending
6 | // Used to evaluate Sass maps like our grid breakpoints.
7 | @mixin _assert-ascending($map, $map-name) {
8 | $prev-key: null;
9 | $prev-num: null;
10 | @each $key, $num in $map {
11 | @if $prev-num == null {
12 | // Do nothing
13 | } @else if not comparable($prev-num, $num) {
14 | @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
15 | } @else if $prev-num >= $num {
16 | @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
17 | }
18 | $prev-key: $key;
19 | $prev-num: $num;
20 | }
21 | }
22 |
23 | // Starts at zero
24 | // Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.
25 | @mixin _assert-starts-at-zero($map) {
26 | $values: map-values($map);
27 | $first-value: nth($values, 1);
28 | @if $first-value != 0 {
29 | @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.";
30 | }
31 | }
32 |
33 | // Replace `$search` with `$replace` in `$string`
34 | // Used on our SVG icon backgrounds for custom forms.
35 | //
36 | // @author Hugo Giraudel
37 | // @param {String} $string - Initial string
38 | // @param {String} $search - Substring to replace
39 | // @param {String} $replace ('') - New value
40 | // @return {String} - Updated string
41 | @function str-replace($string, $search, $replace: "") {
42 | $index: str-index($string, $search);
43 |
44 | @if $index {
45 | @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
46 | }
47 |
48 | @return $string;
49 | }
50 |
51 | // Color contrast
52 | @function color-yiq($color) {
53 | $r: red($color);
54 | $g: green($color);
55 | $b: blue($color);
56 |
57 | $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
58 |
59 | @if ($yiq >= 150) {
60 | @return #111;
61 | } @else {
62 | @return #fff;
63 | }
64 | }
65 |
66 | // Retreive color Sass maps
67 | @function color($key: "blue") {
68 | @return map-get($colors, $key);
69 | }
70 |
71 | @function theme-color($key: "primary") {
72 | @return map-get($theme-colors, $key);
73 | }
74 |
75 | @function gray($key: "100") {
76 | @return map-get($grays, $key);
77 | }
78 |
79 | // Request a theme color level
80 | @function theme-color-level($color-name: "primary", $level: 0) {
81 | $color: theme-color($color-name);
82 | $color-base: if($level > 0, #000, #fff);
83 | $level: abs($level);
84 |
85 | @return mix($color-base, $color, $level * $theme-color-interval);
86 | }
87 |
--------------------------------------------------------------------------------
/scss/bootstrap/_grid.scss:
--------------------------------------------------------------------------------
1 | // Container widths
2 | //
3 | // Set the container width, and override it for fixed navbars in media queries.
4 |
5 | @if $enable-grid-classes {
6 | .container {
7 | @include make-container();
8 | @include make-container-max-widths();
9 | }
10 | }
11 |
12 | // Fluid container
13 | //
14 | // Utilizes the mixin meant for fixed width containers, but with 100% width for
15 | // fluid, full width layouts.
16 |
17 | @if $enable-grid-classes {
18 | .container-fluid {
19 | @include make-container();
20 | }
21 | }
22 |
23 | // Row
24 | //
25 | // Rows contain and clear the floats of your columns.
26 |
27 | @if $enable-grid-classes {
28 | .row {
29 | @include make-row();
30 | }
31 |
32 | // Remove the negative margin from default .row, then the horizontal padding
33 | // from all immediate children columns (to prevent runaway style inheritance).
34 | .no-gutters {
35 | margin-right: 0;
36 | margin-left: 0;
37 |
38 | > .col,
39 | > [class*="col-"] {
40 | padding-right: 0;
41 | padding-left: 0;
42 | }
43 | }
44 | }
45 |
46 | // Columns
47 | //
48 | // Common styles for small and large grid columns
49 |
50 | @if $enable-grid-classes {
51 | @include make-grid-columns();
52 | }
53 |
--------------------------------------------------------------------------------
/scss/bootstrap/_images.scss:
--------------------------------------------------------------------------------
1 | // Responsive images (ensure images don't scale beyond their parents)
2 | //
3 | // This is purposefully opt-in via an explicit class rather than being the default for all `
`s.
4 | // We previously tried the "images are responsive by default" approach in Bootstrap v2,
5 | // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
6 | // which weren't expecting the images within themselves to be involuntarily resized.
7 | // See also https://github.com/twbs/bootstrap/issues/18178
8 | .img-fluid {
9 | @include img-fluid;
10 | }
11 |
12 |
13 | // Image thumbnails
14 | .img-thumbnail {
15 | padding: $thumbnail-padding;
16 | background-color: $thumbnail-bg;
17 | border: $thumbnail-border-width solid $thumbnail-border-color;
18 | @include border-radius($thumbnail-border-radius);
19 | @include transition($thumbnail-transition);
20 | @include box-shadow($thumbnail-box-shadow);
21 |
22 | // Keep them at most 100% wide
23 | @include img-fluid;
24 | }
25 |
26 | //
27 | // Figures
28 | //
29 |
30 | .figure {
31 | // Ensures the caption's text aligns with the image.
32 | display: inline-block;
33 | }
34 |
35 | .figure-img {
36 | margin-bottom: ($spacer / 2);
37 | line-height: 1;
38 | }
39 |
40 | .figure-caption {
41 | font-size: $figure-caption-font-size;
42 | color: $figure-caption-color;
43 | }
44 |
--------------------------------------------------------------------------------
/scss/bootstrap/_jumbotron.scss:
--------------------------------------------------------------------------------
1 | .jumbotron {
2 | padding: $jumbotron-padding ($jumbotron-padding / 2);
3 | margin-bottom: $jumbotron-padding;
4 | background-color: $jumbotron-bg;
5 | @include border-radius($border-radius-lg);
6 |
7 | @include media-breakpoint-up(sm) {
8 | padding: ($jumbotron-padding * 2) $jumbotron-padding;
9 | }
10 | }
11 |
12 | .jumbotron-fluid {
13 | padding-right: 0;
14 | padding-left: 0;
15 | @include border-radius(0);
16 | }
17 |
--------------------------------------------------------------------------------
/scss/bootstrap/_media.scss:
--------------------------------------------------------------------------------
1 | .media {
2 | display: flex;
3 | align-items: flex-start;
4 | }
5 |
6 | .media-body {
7 | flex: 1;
8 | }
9 |
--------------------------------------------------------------------------------
/scss/bootstrap/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Toggles
2 | //
3 | // Used in conjunction with global variables to enable certain theme features.
4 |
5 | // Utilities
6 | @import "mixins/breakpoints";
7 | @import "mixins/hover";
8 | @import "mixins/image";
9 | @import "mixins/badge";
10 | @import "mixins/resize";
11 | @import "mixins/screen-reader";
12 | @import "mixins/size";
13 | @import "mixins/reset-text";
14 | @import "mixins/text-emphasis";
15 | @import "mixins/text-hide";
16 | @import "mixins/text-truncate";
17 | @import "mixins/visibility";
18 |
19 | // // Components
20 | @import "mixins/alert";
21 | @import "mixins/buttons";
22 | @import "mixins/caret";
23 | @import "mixins/pagination";
24 | @import "mixins/lists";
25 | @import "mixins/list-group";
26 | @import "mixins/nav-divider";
27 | @import "mixins/forms";
28 | @import "mixins/table-row";
29 |
30 | // // Skins
31 | @import "mixins/background-variant";
32 | @import "mixins/border-radius";
33 | @import "mixins/box-shadow";
34 | @import "mixins/gradients";
35 | @import "mixins/transition";
36 |
37 | // // Layout
38 | @import "mixins/clearfix";
39 | // @import "mixins/navbar-align";
40 | @import "mixins/grid-framework";
41 | @import "mixins/grid";
42 | @import "mixins/float";
43 |
--------------------------------------------------------------------------------
/scss/bootstrap/_nav.scss:
--------------------------------------------------------------------------------
1 | // Base class
2 | //
3 | // Kickstart any navigation component with a set of style resets. Works with
4 | // `