├── src
├── assets
│ ├── .gitkeep
│ ├── images
│ │ ├── logo.png
│ │ ├── dancer.jpg
│ │ ├── favicon.ico
│ │ ├── logo-2.png
│ │ ├── user-images
│ │ │ ├── user-1.jpg
│ │ │ ├── user-2.jpg
│ │ │ └── user-3.jpg
│ │ ├── banner-images
│ │ │ └── banner-image-1.jpg
│ │ ├── company-images
│ │ │ ├── company-logo1.png
│ │ │ ├── company-logo2.png
│ │ │ ├── company-logo3.png
│ │ │ ├── company-logo4.png
│ │ │ ├── company-logo5.png
│ │ │ ├── company-logo6.png
│ │ │ ├── company-logo7.png
│ │ │ ├── company-logo8.png
│ │ │ └── company-logo9.png
│ │ └── gallery-images
│ │ │ ├── gallery-image-1.jpg
│ │ │ ├── gallery-image-2.jpg
│ │ │ ├── gallery-image-3.jpg
│ │ │ ├── gallery-image-4.jpg
│ │ │ ├── gallery-image-5.jpg
│ │ │ └── gallery-image-6.jpg
│ ├── fonts
│ │ ├── FontAwesome.otf
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ └── fontawesome-webfont.woff2
│ ├── js
│ │ ├── pushy.min.js
│ │ ├── images-loaded.min.js
│ │ └── wow.min.js
│ └── css
│ │ ├── namari-color.css
│ │ ├── font-awesome.css.map
│ │ └── font-awesome.min.css
├── polyfills.ts
├── app
│ ├── navigation
│ │ ├── navigation.component.css
│ │ ├── navigation.component.ts
│ │ └── navigation.component.html
│ ├── gallery
│ │ ├── models
│ │ │ └── image.model.ts
│ │ ├── image-block
│ │ │ ├── image-block.component.html
│ │ │ └── image-block.component.ts
│ │ └── gallery-page
│ │ │ ├── gallery-page.component.html
│ │ │ └── gallery-page.component.ts
│ ├── about
│ │ ├── models
│ │ │ ├── feature.model.ts
│ │ │ └── intro.model.ts
│ │ ├── feature-block
│ │ │ ├── feature-block.component.ts
│ │ │ └── feature-block.component.html
│ │ └── about-page
│ │ │ ├── about-page.component.html
│ │ │ └── about-page.component.ts
│ ├── clients
│ │ ├── models
│ │ │ ├── company.model.ts
│ │ │ └── client.model.ts
│ │ ├── companies-block
│ │ │ ├── companies-block.component.html
│ │ │ └── companies-block.component.ts
│ │ └── clients-page
│ │ │ ├── clients-page.component.html
│ │ │ └── clients-page.component.ts
│ ├── notfound
│ │ └── notfound-page
│ │ │ ├── notfound-page.component.css
│ │ │ ├── notfound-page.component.html
│ │ │ └── notfound-page.component.ts
│ ├── footer
│ │ ├── footer.component.css
│ │ ├── footer.model.ts
│ │ ├── footer.component.html
│ │ └── footer.component.ts
│ ├── pricing
│ │ ├── models
│ │ │ ├── pricing.model.ts
│ │ │ └── plan.model.ts
│ │ ├── pricing-block
│ │ │ ├── pricing-block.component.ts
│ │ │ └── pricing-block.component.html
│ │ └── pricing-page
│ │ │ ├── pricing-page.component.html
│ │ │ └── pricing-page.component.ts
│ ├── services
│ │ ├── models
│ │ │ └── service.model.ts
│ │ └── services-page
│ │ │ ├── services-page.component.ts
│ │ │ └── services-page.component.html
│ ├── testimonial
│ │ ├── models
│ │ │ ├── feedback.model.ts
│ │ │ └── testimonial.model.ts
│ │ ├── feedback-block
│ │ │ ├── feedback-block.component.html
│ │ │ └── feedback-block.component.ts
│ │ └── testimonial-page
│ │ │ ├── testimonial-page.component.html
│ │ │ └── testimonial-page.component.ts
│ ├── social
│ │ ├── models
│ │ │ └── site.model.ts
│ │ ├── social.component.html
│ │ └── social.component.ts
│ ├── app.component.ts
│ ├── home
│ │ ├── models
│ │ │ └── header.model.ts
│ │ └── home-page
│ │ │ ├── home-page.component.html
│ │ │ └── home-page.component.ts
│ ├── shared
│ │ └── services
│ │ │ ├── configuration.ts
│ │ │ ├── config.service.ts
│ │ │ └── in-memory-data.service.ts
│ ├── navmenu
│ │ ├── navmenu.component.html
│ │ └── navmenu.component.ts
│ ├── app.component.html
│ ├── app.module.ts
│ └── app-routing.module.ts
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── main.ts
├── .browserslistrc
├── test.ts
├── karma.conf.js
└── index.html
├── .vscode
└── settings.json
├── img
└── home.png
├── e2e
├── src
│ ├── app.po.ts
│ └── app.e2e-spec.ts
├── tsconfig.e2e.json
└── protractor.conf.js
├── .prettierrc.json
├── .editorconfig
├── tsconfig.app.json
├── tsconfig.spec.json
├── .gitignore
├── .prettierignore
├── tsconfig.json
├── .eslintrc.json
├── package.json
├── angular.json
└── README.md
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/polyfills.ts:
--------------------------------------------------------------------------------
1 | import 'zone.js';
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "angular.enable-strict-mode-prompt": false
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/navigation/navigation.component.css:
--------------------------------------------------------------------------------
1 | #header {
2 | margin-top: 15px;
3 | }
--------------------------------------------------------------------------------
/img/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/img/home.png
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | };
4 |
--------------------------------------------------------------------------------
/src/app/gallery/models/image.model.ts:
--------------------------------------------------------------------------------
1 | export class Image {
2 | id: number;
3 | name: string;
4 | }
5 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/favicon.ico
--------------------------------------------------------------------------------
/src/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/logo.png
--------------------------------------------------------------------------------
/src/assets/images/dancer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/dancer.jpg
--------------------------------------------------------------------------------
/src/assets/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/favicon.ico
--------------------------------------------------------------------------------
/src/assets/images/logo-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/logo-2.png
--------------------------------------------------------------------------------
/src/assets/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/src/app/about/models/feature.model.ts:
--------------------------------------------------------------------------------
1 | export class Feature {
2 | id: number;
3 | icon: string;
4 | title: string;
5 | description: string;
6 | }
7 |
--------------------------------------------------------------------------------
/src/app/clients/models/company.model.ts:
--------------------------------------------------------------------------------
1 | export class Company {
2 | id: number;
3 | name: string;
4 | weblink: string;
5 | logo: string;
6 | }
7 |
--------------------------------------------------------------------------------
/src/app/notfound/notfound-page/notfound-page.component.css:
--------------------------------------------------------------------------------
1 | .big-text {
2 |
3 | font-size: 15em;
4 | }.big-text {
5 |
6 | font-size: 15em;
7 | }
8 |
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/src/assets/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/src/assets/images/user-images/user-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/user-images/user-1.jpg
--------------------------------------------------------------------------------
/src/assets/images/user-images/user-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/user-images/user-2.jpg
--------------------------------------------------------------------------------
/src/assets/images/user-images/user-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/user-images/user-3.jpg
--------------------------------------------------------------------------------
/src/app/footer/footer.component.css:
--------------------------------------------------------------------------------
1 | .footer-social app-social {
2 | float: right;
3 | right: 10px;
4 | margin-right: 0;
5 | margin-left: 15px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/app/about/models/intro.model.ts:
--------------------------------------------------------------------------------
1 | export class Intro {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | title: string;
6 | description: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/footer/footer.model.ts:
--------------------------------------------------------------------------------
1 | export class Footer {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | developer: string;
6 | developerlink: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/clients/models/client.model.ts:
--------------------------------------------------------------------------------
1 | export class Client {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | title: string;
6 | description: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/pricing/models/pricing.model.ts:
--------------------------------------------------------------------------------
1 | export class Pricing {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | title: string;
6 | description: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/services/models/service.model.ts:
--------------------------------------------------------------------------------
1 | export class Service {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | title: string;
6 | description: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/assets/images/banner-images/banner-image-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/banner-images/banner-image-1.jpg
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo1.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo2.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo3.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo4.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo5.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo6.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo7.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo8.png
--------------------------------------------------------------------------------
/src/assets/images/company-images/company-logo9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/company-images/company-logo9.png
--------------------------------------------------------------------------------
/src/assets/images/gallery-images/gallery-image-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/gallery-images/gallery-image-1.jpg
--------------------------------------------------------------------------------
/src/assets/images/gallery-images/gallery-image-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/gallery-images/gallery-image-2.jpg
--------------------------------------------------------------------------------
/src/assets/images/gallery-images/gallery-image-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/gallery-images/gallery-image-3.jpg
--------------------------------------------------------------------------------
/src/assets/images/gallery-images/gallery-image-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/gallery-images/gallery-image-4.jpg
--------------------------------------------------------------------------------
/src/assets/images/gallery-images/gallery-image-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/gallery-images/gallery-image-5.jpg
--------------------------------------------------------------------------------
/src/assets/images/gallery-images/gallery-image-6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewJBateman/angular-website-example/HEAD/src/assets/images/gallery-images/gallery-image-6.jpg
--------------------------------------------------------------------------------
/src/app/testimonial/models/feedback.model.ts:
--------------------------------------------------------------------------------
1 | export class Feedback {
2 | id: number;
3 | name: string;
4 | userimage: string;
5 | comments: string;
6 | company: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/social/models/site.model.ts:
--------------------------------------------------------------------------------
1 | export class Site {
2 | id: number;
3 | link: string;
4 | title: string;
5 | target: string;
6 | username: string;
7 | icon: string;
8 | }
9 |
--------------------------------------------------------------------------------
/src/app/testimonial/models/testimonial.model.ts:
--------------------------------------------------------------------------------
1 | export class Testimonial {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | title: string;
6 | description: string;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-root',
5 | templateUrl: './app.component.html',
6 | })
7 | export class AppComponent {
8 | title = 'Namari Website';
9 | }
10 |
--------------------------------------------------------------------------------
/src/app/home/models/header.model.ts:
--------------------------------------------------------------------------------
1 | export class Header {
2 | id: number;
3 | name: string;
4 | tagline: string;
5 | title: string;
6 | description: string;
7 | image: string;
8 | buttontext: string;
9 | buttonlink: string;
10 | }
11 |
--------------------------------------------------------------------------------
/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getParagraphText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "useTabs": true,
4 | "singleQuote": true,
5 | "semi": true,
6 | "bracketSpacing": true,
7 | "arrowParens": "avoid",
8 | "trailingComma": "es5",
9 | "bracketSameLine": true,
10 | "printWidth": 80,
11 | "endOfLine": "auto"
12 | }
13 |
--------------------------------------------------------------------------------
/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.base.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
--------------------------------------------------------------------------------
/src/app/gallery/image-block/image-block.component.html:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/app/shared/services/configuration.ts:
--------------------------------------------------------------------------------
1 | export const configuration = {
2 | header: {
3 | heading: 'My website',
4 | headingtext:
5 | 'Namari is a free landing page template you can use for your projects.',
6 | buttontext: 'do some action',
7 | buttonlink: 'home',
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/src/app/clients/companies-block/companies-block.component.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | {{ company.name }}
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/app/notfound/notfound-page/notfound-page.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
404
4 |
Nothing Found Here!! try our Home Page
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/app/testimonial/feedback-block/feedback-block.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ feedback.comments }}
4 | {{ feedback.name }} - {{ feedback.company }}
5 |
6 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/app",
6 | "types": []
7 | },
8 | "files": ["src/main.ts", "src/polyfills.ts"],
9 | "include": ["src/**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/gallery/image-block/image-block.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input } from '@angular/core';
2 | import { Image } from '../models/image.model';
3 | @Component({
4 | selector: 'app-image-block',
5 | templateUrl: './image-block.component.html',
6 | standalone: true,
7 | })
8 | export class ImageBlockComponent {
9 | @Input() image: Image;
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/pricing/pricing-block/pricing-block.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input } from '@angular/core';
2 | import { Plan } from '../models/plan.model';
3 |
4 | @Component({
5 | selector: 'app-pricing-block',
6 | templateUrl: './pricing-block.component.html',
7 | standalone: true,
8 | })
9 | export class PricingBlockComponent {
10 | @Input() plan: Plan;
11 | }
12 |
--------------------------------------------------------------------------------
/src/app/navmenu/navmenu.component.html:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/app/pricing/models/plan.model.ts:
--------------------------------------------------------------------------------
1 | export class Plan {
2 | id: 1;
3 | title: string;
4 | subtitle: string;
5 | description: string;
6 | price: string;
7 | currency: string;
8 | downloads: string;
9 | extensions: string;
10 | tutorials: string;
11 | support: string;
12 | updates: string;
13 | buttontext: string;
14 | buttonlink: string;
15 | featured: false;
16 | }
17 |
--------------------------------------------------------------------------------
/src/app/about/feature-block/feature-block.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input } from '@angular/core';
2 | import { Feature } from '../models/feature.model';
3 |
4 | @Component({
5 | selector: 'app-feature-block',
6 | templateUrl: './feature-block.component.html',
7 | standalone: true,
8 | })
9 | export class FeatureBlockComponent {
10 | @Input() feature: Feature;
11 | }
12 |
--------------------------------------------------------------------------------
/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('workspace-project App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 |
10 | it('should display welcome message', () => {
11 | page.navigateTo();
12 | expect(page.getParagraphText()).toEqual('Welcome to angular-website-example!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/src/app/testimonial/feedback-block/feedback-block.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input } from '@angular/core';
2 | import { Feedback } from '../models/feedback.model';
3 |
4 | @Component({
5 | selector: 'app-feedback-block',
6 | templateUrl: './feedback-block.component.html',
7 | standalone: true,
8 | })
9 | export class FeedbackBlockComponent {
10 | @Input() feedback: Feedback;
11 | }
12 |
--------------------------------------------------------------------------------
/src/app/clients/companies-block/companies-block.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input } from '@angular/core';
2 | import { Company } from '../models/company.model';
3 |
4 | @Component({
5 | selector: 'app-companies-block',
6 | templateUrl: './companies-block.component.html',
7 | standalone: true,
8 | })
9 | export class CompaniesBlockComponent {
10 | @Input() company: Company;
11 | }
12 |
--------------------------------------------------------------------------------
/src/app/about/feature-block/feature-block.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
{{ feature.title }}
9 |
{{ feature.description }}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/app/notfound/notfound-page/notfound-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterLink } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-notfound-page',
6 | templateUrl: './notfound-page.component.html',
7 | styleUrls: ['./notfound-page.component.css'],
8 | standalone: true,
9 | imports: [RouterLink],
10 | })
11 | export class NotfoundPageComponent {}
12 |
--------------------------------------------------------------------------------
/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "extends": "./tsconfig.json",
4 | "compilerOptions": {
5 | "outDir": "./out-tsc/spec",
6 | "types": [
7 | "jasmine"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts",
12 | "src/polyfills.ts"
13 | ],
14 | "include": [
15 | "src/**/*.spec.ts",
16 | "src/**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/src/app/social/social.component.html:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic()
12 | .bootstrapModule(AppModule)
13 | .catch(err => console.log(err));
14 |
--------------------------------------------------------------------------------
/src/app/gallery/gallery-page/gallery-page.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | @for (image of images$ | async; track image; let i = $index) {
5 |
8 | }
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/.browserslistrc:
--------------------------------------------------------------------------------
1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 | #
5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed
6 |
7 | > 0.5%
8 | last 2 versions
9 | Firefox ESR
10 | not dead
11 | not IE 9-11
--------------------------------------------------------------------------------
/src/app/footer/footer.component.html:
--------------------------------------------------------------------------------
1 | @if (footer$ | async; as footer) {
2 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting,
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | // First, initialize the Angular testing environment.
11 | getTestBed().initTestEnvironment(
12 | BrowserDynamicTestingModule,
13 | platformBrowserDynamicTesting(),
14 | {
15 | teardown: { destroyAfterEach: false },
16 | }
17 | );
18 |
--------------------------------------------------------------------------------
/src/app/pricing/pricing-page/pricing-page.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | @if (pricing$ | async; as pricing) {
4 |
5 |
{{ pricing.tagline }}
6 | {{ pricing.title }}
7 |
8 | }
9 |
10 | @for (plan of plans$ | async; track plan; let i = $index) {
11 |
14 | }
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/app/navmenu/navmenu.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input, Output, EventEmitter } from '@angular/core';
2 | import { RouterLinkActive, RouterLink } from '@angular/router';
3 |
4 | interface MenuItem {}
5 |
6 | @Component({
7 | selector: 'app-navmenu',
8 | templateUrl: './navmenu.component.html',
9 | standalone: true,
10 | imports: [RouterLinkActive, RouterLink],
11 | })
12 | export class NavmenuComponent {
13 | @Input() menu: MenuItem[];
14 | @Input() menuOpen: boolean;
15 | @Output() menuStatus: EventEmitter;
16 |
17 | toggleMenu(): void {
18 | this.menuStatus.emit(!this.menuOpen);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # IDEs and editors
12 | /.idea
13 | .angular
14 | .project
15 | .classpath
16 | .c9/
17 | *.launch
18 | .settings/
19 | *.sublime-workspace
20 |
21 | # IDE - VSCode
22 | .vscode/*
23 | !.vscode/settings.json
24 | !.vscode/tasks.json
25 | !.vscode/launch.json
26 | !.vscode/extensions.json
27 |
28 | # misc
29 | /.angular/cache
30 | /.sass-cache
31 | /connect.lock
32 | /coverage
33 | /libpeerconnection.log
34 | npm-debug.log
35 | yarn-error.log
36 | testem.log
37 | /typings
38 |
39 | # System Files
40 | .DS_Store
41 | Thumbs.db
42 |
--------------------------------------------------------------------------------
/src/app/testimonial/testimonial-page/testimonial-page.component.html:
--------------------------------------------------------------------------------
1 |
5 |
6 | @if (testimonials$ | async; as testimonial) {
7 |
8 |
{{ testimonial.tagline }}
9 | {{ testimonial.title }}
10 |
11 | }
12 |
13 |
14 | @for (feedback of feedback$ | async; track feedback; let i = $index) {
15 |
18 | }
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/app/about/about-page/about-page.component.html:
--------------------------------------------------------------------------------
1 | @if (intro$ | async; as intro) {
2 |
22 | }
23 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # Compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 | /bazel-out
8 |
9 | # Node
10 | /node_modules
11 | npm-debug.log
12 | yarn-error.log
13 |
14 | # IDEs and editors
15 | .idea/
16 | .project
17 | .classpath
18 | .c9/
19 | *.launch
20 | .settings/
21 | *.sublime-workspace
22 |
23 | # Visual Studio Code
24 | .vscode/*
25 | !.vscode/settings.json
26 | !.vscode/tasks.json
27 | !.vscode/launch.json
28 | !.vscode/extensions.json
29 | .history/*
30 |
31 | # Miscellaneous
32 | /.angular/cache
33 | .sass-cache/
34 | /connect.lock
35 | /coverage
36 | /libpeerconnection.log
37 | testem.log
38 | /typings
39 |
40 | # System files
41 | .DS_Store
42 | Thumbs.db
43 |
--------------------------------------------------------------------------------
/src/app/home/home-page/home-page.component.html:
--------------------------------------------------------------------------------
1 | @if (header$ | async; as header) {
2 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false,
7 | };
8 |
9 | /*
10 | * For easier debugging in development mode, you can import the following file
11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
12 | *
13 | * This import should be commented out in production mode because it will have a negative impact
14 | * on performance if an error is thrown.
15 | */
16 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/src/app/clients/clients-page/clients-page.component.html:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/app/pricing/pricing-block/pricing-block.component.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
{{ plan.title }}
8 |
{{ plan.subtitle }}
9 |
10 |
11 | {{ plan.currency }} {{ plan.price }}
13 |
14 |
{{ plan.description }}
15 |
16 |
17 | {{ plan.downloads }}
18 | {{ plan.extensions }}
19 | {{ plan.tutorials }}
20 | {{ plan.support }}
21 | {{ plan.updates }}
22 |
23 |
{{ plan.buttontext }}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/e2e/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 | './src/**/*.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 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
--------------------------------------------------------------------------------
/src/app/social/social.component.ts:
--------------------------------------------------------------------------------
1 | import { Observable, throwError, catchError } from 'rxjs';
2 | import { Component, OnInit } from '@angular/core';
3 | import { ConfigService } from '../shared/services/config.service';
4 | import { Site } from './models/site.model';
5 | import { AsyncPipe } from '@angular/common';
6 |
7 | @Component({
8 | selector: 'app-social',
9 | templateUrl: './social.component.html',
10 | standalone: true,
11 | imports: [AsyncPipe],
12 | })
13 | export class SocialComponent implements OnInit {
14 | socialsites$: Observable = new Observable();
15 |
16 | constructor(private config: ConfigService) {}
17 |
18 | ngOnInit() {
19 | this.getSocialsites();
20 | }
21 |
22 | getSocialsites(): void {
23 | this.socialsites$ = this.config.getSettings('websites').pipe(
24 | catchError(error => {
25 | console.error('Error fetching feature data:', error);
26 | return throwError(error);
27 | })
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */
2 | {
3 | "compileOnSave": false,
4 | "compilerOptions": {
5 | "baseUrl": "./",
6 | "outDir": "./dist/out-tsc",
7 | "forceConsistentCasingInFileNames": true,
8 | "strict": false,
9 | "noImplicitReturns": true,
10 | "noFallthroughCasesInSwitch": true,
11 | "sourceMap": true,
12 | "declaration": false,
13 | "downlevelIteration": true,
14 | "experimentalDecorators": true,
15 | "moduleResolution": "node",
16 | "importHelpers": true,
17 | "target": "ES2022",
18 | "module": "ES2022",
19 | "lib": [
20 | "ES2022",
21 | "dom"
22 | ],
23 | "strictPropertyInitialization": false,
24 | "useDefineForClassFields": false
25 | },
26 | "angularCompilerOptions": {
27 | "enableI18nLegacyMessageIdFormat": false,
28 | "strictInjectionParameters": true,
29 | "strictInputAccessModifiers": true,
30 | "strictTemplates": true
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
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-devkit/build-angular/plugins/karma'),
14 | ],
15 | client: {
16 | clearContext: false, // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true,
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false,
30 | });
31 | };
32 |
--------------------------------------------------------------------------------
/src/app/home/home-page/home-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Observable, throwError, catchError } from 'rxjs';
3 | import { ConfigService } from '../../shared/services/config.service';
4 | import { Header } from '../models/header.model';
5 | import { AsyncPipe } from '@angular/common';
6 | import { RouterLink } from '@angular/router';
7 |
8 | @Component({
9 | selector: 'app-home-page',
10 | templateUrl: './home-page.component.html',
11 | standalone: true,
12 | imports: [RouterLink, AsyncPipe],
13 | })
14 | export class HomePageComponent implements OnInit {
15 | header$: Observable;
16 |
17 | constructor(private config: ConfigService) {}
18 |
19 | ngOnInit() {
20 | this.getPageData('pages', 7);
21 | }
22 |
23 | getPageData(database: string, id?: number): void {
24 | this.header$ = this.config.getSettings(database, id).pipe(
25 | catchError(error => {
26 | console.error('Error fetching feature data:', error);
27 | return throwError(error);
28 | })
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/app/navigation/navigation.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Location } from '@angular/common';
3 | import { ConfigService } from '../shared/services/config.service';
4 | import { NavmenuComponent } from '../navmenu/navmenu.component';
5 |
6 | @Component({
7 | selector: 'app-navigation',
8 | templateUrl: './navigation.component.html',
9 | styleUrls: ['./navigation.component.css'],
10 | standalone: true,
11 | imports: [NavmenuComponent],
12 | })
13 | export class NavigationComponent implements OnInit {
14 | menu: { id: number; title: string; link: string }[];
15 |
16 | menuOpen: boolean;
17 | database = 'menu';
18 |
19 | constructor(
20 | private location: Location,
21 | private config: ConfigService
22 | ) {}
23 |
24 | ngOnInit() {
25 | this.menuOpen = false;
26 | this.getMenu();
27 | }
28 |
29 | toggleMenu(status: boolean) {
30 | this.menuOpen = status;
31 | }
32 |
33 | getMenu() {
34 | this.config.getSettings(this.database).subscribe(setting => {
35 | this.menu = setting;
36 | });
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/app/services/services-page/services-page.component.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-explicit-any */
2 | import { Observable, throwError, catchError } from 'rxjs';
3 | import { Component, OnInit } from '@angular/core';
4 | import { ConfigService } from '../../shared/services/config.service';
5 | import { Service } from '../models/service.model';
6 | import { AsyncPipe } from '@angular/common';
7 |
8 | @Component({
9 | selector: 'app-services-page',
10 | templateUrl: './services-page.component.html',
11 | standalone: true,
12 | imports: [AsyncPipe],
13 | })
14 | export class ServicesPageComponent implements OnInit {
15 | services$: Observable = new Observable();
16 |
17 | constructor(private config: ConfigService) {}
18 |
19 | ngOnInit() {
20 | this.getPageData('pages', 3);
21 | }
22 |
23 | getPageData(database: string, id?: number) {
24 | this.services$ = this.config.getSettings(database, id).pipe(
25 | catchError(error => {
26 | console.error('Error fetching feature data:', error);
27 | return throwError(error);
28 | })
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/app/gallery/gallery-page/gallery-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Observable, throwError, catchError } from 'rxjs';
2 | import { Component, OnInit } from '@angular/core';
3 | import { ConfigService } from '../../shared/services/config.service';
4 | import { Image } from '../models/image.model';
5 | import { AsyncPipe } from '@angular/common';
6 | import { ImageBlockComponent } from '../image-block/image-block.component';
7 |
8 | @Component({
9 | selector: 'app-gallery-page',
10 | templateUrl: './gallery-page.component.html',
11 | standalone: true,
12 | imports: [ImageBlockComponent, AsyncPipe],
13 | })
14 | export class GalleryPageComponent implements OnInit {
15 | images$: Observable = new Observable();
16 |
17 | constructor(private config: ConfigService) {}
18 |
19 | ngOnInit() {
20 | this.getBlockData('images');
21 | }
22 |
23 | getBlockData(database: string) {
24 | this.images$ = this.config.getSettings(database).pipe(
25 | catchError(error => {
26 | console.error('Error fetching feature data:', error);
27 | return throwError(error);
28 | })
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/app/footer/footer.component.ts:
--------------------------------------------------------------------------------
1 | import { Observable } from 'rxjs';
2 | import { Component, OnInit } from '@angular/core';
3 |
4 | import { ConfigService } from '../shared/services/config.service';
5 | import { Footer } from './footer.model';
6 | import { AsyncPipe } from '@angular/common';
7 | import { SocialComponent } from '../social/social.component';
8 | import { RouterLink } from '@angular/router';
9 |
10 | @Component({
11 | selector: 'app-footer',
12 | templateUrl: './footer.component.html',
13 | styleUrls: ['./footer.component.css'],
14 | standalone: true,
15 | imports: [
16 | RouterLink,
17 | SocialComponent,
18 | AsyncPipe,
19 | ],
20 | })
21 | export class FooterComponent implements OnInit {
22 | // footer$: Observable = new Observable();
23 | footer$: Observable = new Observable();
24 | constructor(private config: ConfigService) {}
25 |
26 | ngOnInit() {
27 | this.getPageData('pages', 6);
28 | }
29 |
30 | getPageData(database: string, id?: number): void {
31 | this.footer$ = this.config.getSettings(database, id);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/app/shared/services/config.service.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-explicit-any */
2 | import { Injectable } from '@angular/core';
3 | import { configuration } from './configuration';
4 | import { Observable, of } from 'rxjs';
5 | import { HttpClient } from '@angular/common/http';
6 | import { catchError } from 'rxjs/operators';
7 |
8 | @Injectable({
9 | providedIn: 'root',
10 | })
11 | export class ConfigService {
12 | readonly config = configuration;
13 | readonly apiUrl = 'api/posts';
14 |
15 | constructor(private http: HttpClient) {}
16 |
17 | private handleError(operation = 'operation', result?: T) {
18 | return (error: Error): Observable => {
19 | console.error(error);
20 | console.log(`${operation} failed: ${error.message}`);
21 | return of(result as T);
22 | };
23 | }
24 |
25 | getConfig() {
26 | return this.config;
27 | }
28 |
29 | getSettings(database: string, id?: number): Observable {
30 | const url = id ? `api/${database}/${id}` : `api/${database}`;
31 | return this.http
32 | .get(url)
33 | .pipe(
34 | catchError(this.handleError(`Error getting data from ${database}`, []))
35 | );
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "ignorePatterns": ["projects/**/*"],
4 | "overrides": [
5 | {
6 | "files": ["*.ts"],
7 | "extends": [
8 | "eslint:recommended",
9 | "plugin:@typescript-eslint/recommended",
10 | "plugin:@angular-eslint/recommended",
11 | "plugin:@angular-eslint/template/process-inline-templates",
12 | "plugin:prettier/recommended"
13 | ],
14 | "rules": {
15 | "@angular-eslint/directive-selector": [
16 | "error",
17 | {
18 | "type": "attribute",
19 | "prefix": "app",
20 | "style": "camelCase"
21 | }
22 | ],
23 | "@angular-eslint/component-selector": [
24 | "error",
25 | {
26 | "type": "element",
27 | "prefix": "app",
28 | "style": "kebab-case"
29 | }
30 | ]
31 | }
32 | },
33 | {
34 | "files": ["*.html"],
35 | "excludedFiles": ["*inline-template-*.component.html"],
36 | "extends": [
37 | "plugin:@angular-eslint/template/recommended",
38 | "plugin:@angular-eslint/template/accessibility",
39 | "plugin:prettier/recommended"
40 | ],
41 | "rules": {
42 | "prettier/prettier": [
43 | "error",
44 | {
45 | "parser": "angular"
46 | }
47 | ]
48 | }
49 | }
50 | ]
51 | }
52 |
--------------------------------------------------------------------------------
/src/app/about/about-page/about-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Observable, throwError, catchError } from 'rxjs';
2 | import { Component, OnInit } from '@angular/core';
3 | import { ConfigService } from 'src/app/shared/services/config.service';
4 | import { Intro } from '../models/intro.model';
5 | import { Feature } from '../models/feature.model';
6 | import { AsyncPipe } from '@angular/common';
7 | import { FeatureBlockComponent } from '../feature-block/feature-block.component';
8 |
9 | @Component({
10 | selector: 'app-about-page',
11 | templateUrl: './about-page.component.html',
12 | standalone: true,
13 | imports: [FeatureBlockComponent, AsyncPipe],
14 | })
15 | export class AboutPageComponent implements OnInit {
16 | intro$: Observable;
17 | features$: Observable;
18 |
19 | constructor(private config: ConfigService) {}
20 |
21 | ngOnInit(): void {
22 | this.getPageData('pages', 1);
23 | this.getBlockData('features');
24 | }
25 |
26 | getPageData(database: string, id?: number): void {
27 | this.intro$ = this.config.getSettings(database, id).pipe(
28 | catchError(error => {
29 | console.error('Error fetching intro data:', error);
30 | return throwError(error);
31 | })
32 | );
33 | }
34 |
35 | getBlockData(database: string) {
36 | this.features$ = this.config.getSettings(database).pipe(
37 | catchError(error => {
38 | console.error('Error fetching feature data:', error);
39 | return throwError(error);
40 | })
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/app/navigation/navigation.component.html:
--------------------------------------------------------------------------------
1 |
46 |
47 |
--------------------------------------------------------------------------------
/src/app/pricing/pricing-page/pricing-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Observable, throwError, catchError } from 'rxjs';
2 | import { Component, OnInit } from '@angular/core';
3 | import { ConfigService } from 'src/app/shared/services/config.service';
4 | import { Pricing } from '../models/pricing.model';
5 | import { Plan } from '../models/plan.model';
6 | import { AsyncPipe } from '@angular/common';
7 | import { PricingBlockComponent } from '../pricing-block/pricing-block.component';
8 |
9 | @Component({
10 | selector: 'app-pricing-page',
11 | templateUrl: './pricing-page.component.html',
12 | standalone: true,
13 | imports: [PricingBlockComponent, AsyncPipe],
14 | })
15 | export class PricingPageComponent implements OnInit {
16 | pricing$: Observable = new Observable();
17 | plans$: Observable = new Observable();
18 |
19 | constructor(private config: ConfigService) {}
20 |
21 | ngOnInit() {
22 | this.getPageData('pages', 5);
23 | this.getBlockData('plans');
24 | }
25 |
26 | getPageData(database: string, id?: number) {
27 | this.pricing$ = this.config.getSettings(database, id).pipe(
28 | catchError(error => {
29 | console.error('Error fetching feature data:', error);
30 | return throwError(error);
31 | })
32 | );
33 | }
34 |
35 | getBlockData(database: string) {
36 | this.plans$ = this.config.getSettings(database).pipe(
37 | catchError(error => {
38 | console.error('Error fetching feature data:', error);
39 | return throwError(error);
40 | })
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/app/clients/clients-page/clients-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Observable, throwError, catchError } from 'rxjs';
3 | import { ConfigService } from 'src/app/shared/services/config.service';
4 | import { Client } from '../models/client.model';
5 | import { Company } from '../models/company.model';
6 | import { AsyncPipe } from '@angular/common';
7 | import { CompaniesBlockComponent } from '../companies-block/companies-block.component';
8 |
9 | @Component({
10 | selector: 'app-clients-page',
11 | templateUrl: './clients-page.component.html',
12 | standalone: true,
13 | imports: [CompaniesBlockComponent, AsyncPipe],
14 | })
15 | export class ClientsPageComponent implements OnInit {
16 | clients$: Observable = new Observable();
17 | companies$: Observable = new Observable();
18 | constructor(private config: ConfigService) {}
19 |
20 | ngOnInit() {
21 | this.getPageData('pages', 2);
22 | this.getBlockData('companies');
23 | }
24 |
25 | getPageData(database: string, id?: number) {
26 | this.clients$ = this.config.getSettings(database, id).pipe(
27 | catchError(error => {
28 | console.error('Error fetching feature data:', error);
29 | return throwError(error);
30 | })
31 | );
32 | }
33 |
34 | getBlockData(database: string) {
35 | this.companies$ = this.config.getSettings(database).pipe(
36 | catchError(error => {
37 | console.error('Error fetching feature data:', error);
38 | return throwError(error);
39 | })
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 | import { HttpClientModule } from '@angular/common/http';
4 | import { HttpClientInMemoryWebApiModule } from 'angular-in-memory-web-api';
5 | import { ReactiveFormsModule } from '@angular/forms';
6 |
7 | // Components
8 | import { AppComponent } from './app.component';
9 | import { FooterComponent } from './footer/footer.component';
10 | import { NavmenuComponent } from './navmenu/navmenu.component';
11 | import { NavigationComponent } from './navigation/navigation.component';
12 | import { SocialComponent } from './social/social.component';
13 |
14 | // Modules
15 | import { AppRoutingModule } from './app-routing.module';
16 |
17 | // Services
18 | import { ConfigService } from './shared/services/config.service';
19 | import { InMemoryDataService } from './shared/services/in-memory-data.service';
20 |
21 | @NgModule({
22 | declarations: [AppComponent],
23 | imports: [
24 | AppRoutingModule,
25 | BrowserModule,
26 | HttpClientModule,
27 | ReactiveFormsModule,
28 |
29 | // The HttpClientInMemoryWebApiModule module intercepts HTTP requests
30 | // and returns simulated server responses.
31 | // Remove it when a real server is ready to receive requests.
32 | HttpClientInMemoryWebApiModule.forRoot(InMemoryDataService, {
33 | dataEncapsulation: false,
34 | passThruUnknownUrl: true,
35 | }),
36 | FooterComponent,
37 | NavigationComponent,
38 | NavmenuComponent,
39 | SocialComponent,
40 | ],
41 | providers: [ConfigService],
42 | bootstrap: [AppComponent],
43 | })
44 | export class AppModule {}
45 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Website
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
30 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
51 |
52 |
55 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/assets/js/pushy.min.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 | function a() {
3 | e.toggleClass(j), d.toggleClass(i), f.toggleClass(k), g.toggleClass(l);
4 | }
5 | function b() {
6 | e.addClass(j),
7 | d.animate({ left: '0px' }, n),
8 | f.animate({ left: o }, n),
9 | g.animate({ left: o }, n);
10 | }
11 | function c() {
12 | e.removeClass(j),
13 | d.animate({ left: '-' + o }, n),
14 | f.animate({ left: '0px' }, n),
15 | g.animate({ left: '0px' }, n);
16 | }
17 | var d = $('.pushy'),
18 | e = $('body'),
19 | f = $('#container'),
20 | g = $('.push'),
21 | h = $('.site-overlay'),
22 | i = 'pushy-left pushy-open',
23 | j = 'pushy-active',
24 | k = 'container-push',
25 | l = 'push-push',
26 | m = $('.menu-btn, .pushy a'),
27 | n = 200,
28 | o = d.width() + 'px';
29 | if (
30 | (cssTransforms3d = (function () {
31 | var a = document.createElement('p'),
32 | b = !1,
33 | c = {
34 | webkitTransform: '-webkit-transform',
35 | OTransform: '-o-transform',
36 | msTransform: '-ms-transform',
37 | MozTransform: '-moz-transform',
38 | transform: 'transform',
39 | };
40 | document.body.insertBefore(a, null);
41 | for (var d in c)
42 | void 0 !== a.style[d] &&
43 | ((a.style[d] = 'translate3d(1px,1px,1px)'),
44 | (b = window.getComputedStyle(a).getPropertyValue(c[d])));
45 | return (
46 | document.body.removeChild(a),
47 | void 0 !== b && b.length > 0 && 'none' !== b
48 | );
49 | })())
50 | )
51 | m.click(function () {
52 | a();
53 | }),
54 | h.click(function () {
55 | a();
56 | });
57 | else {
58 | d.css({ left: '-' + o }), f.css({ 'overflow-x': 'hidden' });
59 | var p = !0;
60 | m.click(function () {
61 | p ? (b(), (p = !1)) : (c(), (p = !0));
62 | }),
63 | h.click(function () {
64 | p ? (b(), (p = !1)) : (c(), (p = !0));
65 | });
66 | }
67 | });
68 |
--------------------------------------------------------------------------------
/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterModule, Routes } from '@angular/router';
4 |
5 | const routes: Routes = [
6 | { path: '', redirectTo: 'home', pathMatch: 'full' },
7 | {
8 | path: 'home',
9 | loadComponent: () =>
10 | import('./home/home-page/home-page.component').then(
11 | mod => mod.HomePageComponent
12 | ),
13 | },
14 | {
15 | path: 'about',
16 | loadComponent: () =>
17 | import('./about/about-page/about-page.component').then(
18 | mod => mod.AboutPageComponent
19 | ),
20 | },
21 | {
22 | path: 'services',
23 | loadComponent: () =>
24 | import('./services/services-page/services-page.component').then(
25 | mod => mod.ServicesPageComponent
26 | ),
27 | },
28 | {
29 | path: 'testimonials',
30 | loadComponent: () =>
31 | import('./testimonial/testimonial-page/testimonial-page.component').then(
32 | mod => mod.TestimonialPageComponent
33 | ),
34 | },
35 | {
36 | path: 'gallery',
37 | loadComponent: () =>
38 | import('./gallery/gallery-page/gallery-page.component').then(
39 | mod => mod.GalleryPageComponent
40 | ),
41 | },
42 | {
43 | path: 'clients',
44 | loadComponent: () =>
45 | import('./clients/clients-page/clients-page.component').then(
46 | mod => mod.ClientsPageComponent
47 | ),
48 | },
49 | {
50 | path: 'pricing',
51 | loadComponent: () =>
52 | import('./pricing/pricing-page/pricing-page.component').then(
53 | mod => mod.PricingPageComponent
54 | ),
55 | },
56 | {
57 | path: '404',
58 | loadChildren: () =>
59 | import('./notfound/notfound-page/notfound-page.component').then(
60 | mod => mod.NotfoundPageComponent
61 | ),
62 | },
63 | { path: '**', redirectTo: '/404' },
64 | ];
65 |
66 | @NgModule({
67 | imports: [CommonModule, RouterModule.forRoot(routes)],
68 | exports: [RouterModule],
69 | declarations: [],
70 | })
71 | export class AppRoutingModule {}
72 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "website-practise",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve",
7 | "build": "ng build --configuration=production",
8 | "test": "ng test",
9 | "lint": "ng lint",
10 | "lint:fix": "ng lint --fix",
11 | "prettier": "prettier --write \"src/**/*.{js,ts,html,scss,json}",
12 | "e2e": "ng e2e"
13 | },
14 | "private": true,
15 | "dependencies": {
16 | "@angular/animations": "^17.2.3",
17 | "@angular/common": "^17.2.3",
18 | "@angular/compiler": "^17.2.3",
19 | "@angular/core": "^17.2.3",
20 | "@angular/forms": "^17.2.3",
21 | "@angular/platform-browser": "^17.2.3",
22 | "@angular/platform-browser-dynamic": "^17.2.3",
23 | "@angular/router": "^17.2.3",
24 | "angular-in-memory-web-api": "^0.17.0",
25 | "core-js": "^3.36.0",
26 | "font-awesome": "^4.7.0",
27 | "rxjs": "~7.8.1",
28 | "tslib": "^2.6.2",
29 | "wowjs": "^1.1.3",
30 | "zone.js": "~0.14.4"
31 | },
32 | "devDependencies": {
33 | "@angular-devkit/build-angular": "^17.2.2",
34 | "@angular-eslint/builder": "17.2.1",
35 | "@angular-eslint/eslint-plugin": "17.2.1",
36 | "@angular-eslint/eslint-plugin-template": "17.2.1",
37 | "@angular-eslint/schematics": "17.2.1",
38 | "@angular-eslint/template-parser": "17.2.1",
39 | "@angular/cli": "^17.2.2",
40 | "@angular/compiler-cli": "^17.2.3",
41 | "@angular/language-service": "^17.2.3",
42 | "@types/flickity": "^2.2.11",
43 | "@types/jasmine": "~5.1.4",
44 | "@types/jasminewd2": "~2.0.13",
45 | "@types/node": "^20.11.24",
46 | "@typescript-eslint/eslint-plugin": "^7.1.0",
47 | "@typescript-eslint/parser": "^7.1.0",
48 | "codelyzer": "^6.0.2",
49 | "eslint": "^8.57.0",
50 | "eslint-config-prettier": "^9.1.0",
51 | "eslint-plugin-prettier": "^5.1.3",
52 | "jasmine-core": "~5.1.2",
53 | "jasmine-spec-reporter": "~7.0.0",
54 | "karma": "~6.4.3",
55 | "karma-chrome-launcher": "~3.2.0",
56 | "karma-coverage-istanbul-reporter": "~3.0.3",
57 | "karma-jasmine": "~5.1.0",
58 | "karma-jasmine-html-reporter": "^2.1.0",
59 | "prettier": "^3.2.5",
60 | "prettier-eslint": "^16.3.0",
61 | "protractor": "~7.0.0",
62 | "ts-node": "~10.9.2",
63 | "typescript": "5.2.2"
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/app/services/services-page/services-page.component.html:
--------------------------------------------------------------------------------
1 | @if (services$ | async; as services) {
2 |
54 | }
55 |
--------------------------------------------------------------------------------
/src/app/testimonial/testimonial-page/testimonial-page.component.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * TestimonialPageComponent class.
3 | *
4 | * This component is responsible for displaying testimonials and feedback on a page.
5 | * It fetches data from the ConfigService and handles any errors that occur.
6 | *
7 | * Properties:
8 | * - testimonials$: An Observable of Testimonial[] that holds the testimonials data.
9 | * - feedback$: An Observable of Feedback[] that holds the feedback data.
10 | *
11 | * Constructor:
12 | * - Accepts an instance of the ConfigService as a dependency.
13 | *
14 | * Methods:
15 | * - ngOnInit(): Lifecycle hook that is called after the component is initialized. It calls the getData() method to fetch the data.
16 | * - handleError(error: any): Handles any errors that occur during data fetching. It logs the error and throws it as an Observable.
17 | * - getData(database: string, id?: number): Fetches the data from the ConfigService based on the provided database and optional id. It assigns the fetched data to the respective properties.
18 | */
19 | import { Observable, throwError, catchError } from 'rxjs';
20 | import { Component, OnInit } from '@angular/core';
21 | import { ConfigService } from '../../shared/services/config.service';
22 | import { Feedback } from '../models/feedback.model';
23 | import { Testimonial } from '../models/testimonial.model';
24 | import { AsyncPipe } from '@angular/common';
25 | import { FeedbackBlockComponent } from '../feedback-block/feedback-block.component';
26 |
27 | @Component({
28 | selector: 'app-testimonial-page',
29 | templateUrl: './testimonial-page.component.html',
30 | standalone: true,
31 | imports: [FeedbackBlockComponent, AsyncPipe],
32 | })
33 | export class TestimonialPageComponent implements OnInit {
34 | testimonials$: Observable;
35 | feedback$: Observable;
36 |
37 | constructor(private config: ConfigService) {}
38 |
39 | ngOnInit() {
40 | this.getData('pages', 4);
41 | this.getData('feedback');
42 | }
43 |
44 | handleError(error: any): Observable {
45 | console.error('Error fetching feature data:', error);
46 | return throwError(error);
47 | }
48 | getData(database: string, id?: number) {
49 | if (id) {
50 | this.testimonials$ = this.config
51 | .getSettings(database, id)
52 | .pipe(catchError(this.handleError));
53 | } else {
54 | this.feedback$ = this.config
55 | .getSettings(database)
56 | .pipe(catchError(this.handleError));
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "angular-website-example": {
7 | "root": "",
8 | "sourceRoot": "src",
9 | "projectType": "application",
10 | "prefix": "app",
11 | "schematics": {},
12 | "targets": {
13 | "build": {
14 | "builder": "@angular-devkit/build-angular:browser",
15 | "options": {
16 | "outputPath": "dist/angular-website-example",
17 | "index": "src/index.html",
18 | "main": "src/main.ts",
19 | "polyfills": "src/polyfills.ts",
20 | "tsConfig": "tsconfig.app.json",
21 | "assets": ["src/favicon.ico", "src/assets"],
22 | "styles": [
23 | "src/styles.css",
24 | "src/assets/css/animate.css",
25 | "node_modules/font-awesome/css/font-awesome.css"
26 | ],
27 | "scripts": [
28 | "node_modules/wowjs/dist/wow.js",
29 | "src/assets/js/wow.min.js",
30 | "src/assets/js/images-loaded.min.js"
31 | ],
32 | "aot": false,
33 | "vendorChunk": true,
34 | "extractLicenses": false,
35 | "buildOptimizer": false,
36 | "sourceMap": true,
37 | "optimization": false,
38 | "namedChunks": true
39 | },
40 | "configurations": {
41 | "production": {
42 | "fileReplacements": [
43 | {
44 | "replace": "src/environments/environment.ts",
45 | "with": "src/environments/environment.prod.ts"
46 | }
47 | ],
48 | "optimization": true,
49 | "outputHashing": "all",
50 | "sourceMap": false,
51 | "namedChunks": false,
52 | "aot": true,
53 | "extractLicenses": true,
54 | "vendorChunk": false,
55 | "buildOptimizer": true
56 | }
57 | },
58 | "defaultConfiguration": ""
59 | },
60 | "serve": {
61 | "builder": "@angular-devkit/build-angular:dev-server",
62 | "options": {
63 | "buildTarget": "angular-website-example:build"
64 | },
65 | "configurations": {
66 | "production": {
67 | "buildTarget": "angular-website-example:build:production"
68 | }
69 | }
70 | },
71 | "extract-i18n": {
72 | "builder": "@angular-devkit/build-angular:extract-i18n",
73 | "options": {
74 | "buildTarget": "angular-website-example:build"
75 | }
76 | },
77 | "test": {
78 | "builder": "@angular-devkit/build-angular:karma",
79 | "options": {
80 | "main": "src/test.ts",
81 | "polyfills": "src/polyfills.ts",
82 | "tsConfig": "tsconfig.spec.json",
83 | "karmaConfig": "src/karma.conf.js",
84 | "styles": ["src/styles.css"],
85 | "scripts": [],
86 | "assets": ["src/favicon.ico", "src/assets"]
87 | }
88 | },
89 | "lint": {
90 | "builder": "@angular-eslint/builder:lint",
91 | "options": {
92 | "lintFilePatterns": [
93 | "src/**/*.ts",
94 | "src/**/*.html"
95 | ]
96 | }
97 | }
98 | }
99 | },
100 | "angular-website-example-e2e": {
101 | "root": "e2e/",
102 | "projectType": "application",
103 | "targets": {
104 | "e2e": {
105 | "builder": "@angular-devkit/build-angular:protractor",
106 | "options": {
107 | "protractorConfig": "e2e/protractor.conf.js",
108 | "devServerTarget": "angular-website-example:serve"
109 | },
110 | "configurations": {
111 | "production": {
112 | "devServerTarget": "angular-website-example:serve:production"
113 | }
114 | }
115 | }
116 | }
117 | }
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # :zap: Angular Website Example
2 |
3 | * Converts a free Namari HTML template to an Angular app
4 | * **Note:** to open web links in a new window use: _ctrl+click on link_
5 |
6 | 
7 | 
8 | 
9 | 
10 |
11 | ## :page_facing_up: Table of contents
12 |
13 | * [:zap: Angular Website Example](#zap-angular-website-example)
14 | * [:page\_facing\_up: Table of contents](#page_facing_up-table-of-contents)
15 | * [:books: General info](#books-general-info)
16 | * [:camera: Screenshots](#camera-screenshots)
17 | * [:signal\_strength: Technologies](#signal_strength-technologies)
18 | * [:floppy\_disk: Setup](#floppy_disk-setup)
19 | * [:computer: Code Examples](#computer-code-examples)
20 | * [:cool: Features](#cool-features)
21 | * [:clipboard: Status \& To-Do List](#clipboard-status--to-do-list)
22 | * [:clap: Inspiration](#clap-inspiration)
23 | * [:file\_folder: License](#file_folder-license)
24 | * [:envelope: Contact](#envelope-contact)
25 |
26 | ## :books: General info
27 |
28 | * Includes code from [AdMISTER STUDIOs](https://www.youtube.com/c/AdMISTERSTUDIOs/featured) - see [:clap: Inspiration](#clap-inspiration) below, but with changes to reduce lines of code and use latest Angular version. Some of the videos listed below are not applicable as I decided to just reproduce the Namari website and not include a blog, user login/logoff, auth guard, separate API etc.
29 | * [Angular feature modules](https://angular.io/guide/feature-modules) used for organisational best practise
30 | * Single service used to fetch data for all pages so this data can be accessed from an API. This meant I could not use custom interface classes. Each module should have its own service with interface class.
31 |
32 | ## :camera: Screenshots
33 |
34 | .
35 |
36 | ## :signal_strength: Technologies
37 |
38 | * [Angular v17](https://angular.io/) JS framework
39 | * [Font Awesome v4](https://fontawesome.com/) icons
40 | * [RxJS Library v7](https://angular.io/guide/rx-library) used to [subscribe](http://reactivex.io/documentation/operators/subscribe.html) to the API data [observable](http://reactivex.io/documentation/observable.html).
41 | * [The HttpClient in @angular/common/http](https://angular.io/guide/http) offers a simplified client HTTP API for Angular applications that rests on the XMLHttpRequest interface exposed by browsers.
42 |
43 | ## :floppy_disk: Setup
44 |
45 | * Run `npm i` to install dependencies.
46 | * Run `ng serve` for a dev server.
47 | * Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
48 |
49 | ## :computer: Code Examples
50 |
51 | * `shared/services/config.service.ts` function to get data from API with inputs: database name and id
52 |
53 | ```typescript
54 | getSettings(database: string, id?: number): Observable {
55 | let url = id? `api/${database}/${id}` : `api/${database}`;
56 | return this.http.get(url).pipe(
57 | catchError(this.handleError(`Error getting data from ${database}`, []))
58 | );
59 | }
60 | ```
61 |
62 | ## :cool: Features
63 |
64 | * Lazy-load modules used for most pages to speed up initial rendering of home page
65 |
66 | ## :clipboard: Status & To-Do List
67 |
68 | * Status: Working
69 | * To-Do: Remove unused CSS. Create separate service for each module?
70 |
71 | ## :clap: Inspiration
72 |
73 | * [Create your first website using angular 6 -- Part 1 -- HTML Template to Angular Component](https://www.youtube.com/watch?v=LYmJOdCuXrs&list=UUcfCHgDDBw65jdnd9DTKwgg&index=19)
74 | * [Create your first website using angular 6 -- Part 2-- Routing and Static data to configuration file](https://www.youtube.com/watch?v=JAb0vvr6foU)
75 | * [Create your first website using angular 6 -- Part 3 -- Configuration File](https://www.youtube.com/watch?v=qBjn8TrXyPY)
76 | * [Create your first website using angular 6 -- Part 4 -- Add BLOG Section](https://www.youtube.com/watch?v=0Nnm2rup5b8)
77 | * [Create your first website using angular 6 -- Part 5 -- 404 Component and Pagination for blog](https://www.youtube.com/watch?v=0Nnm2rup5b8)
78 | * [Create your first website using angular 6 -- Part 6-- Login Signup and Contact form using In Memory](https://www.youtube.com/watch?v=0Nnm2rup5b8)
79 | * [Create your first website using angular 6 -- Part 7-- Add JQUERY and existing JS](https://www.youtube.com/watch?v=0Nnm2rup5b8)
80 | * [Create your first website using angular 6 -- Part 8-- blog post Markdown Editor](https://www.youtube.com/watch?v=0Nnm2rup5b8)
81 | * [Create your first website using angular 6 -- Part 9 -- Static to Dynamic Menu populated from DB](https://www.youtube.com/watch?v=0Nnm2rup5b8)
82 | * [Create your first website using angular 6 -- Part 10 -- User Dashboard Module](https://www.youtube.com/watch?v=0Nnm2rup5b8)
83 | * [Create your first website using angular 6 -- Part 11 -- Named Router Outlets](https://www.youtube.com/watch?v=LKCjQqzc5Ys)
84 | * [Create your first website using angular 6 -- Part 12 -- Local Development SSL](https://www.youtube.com/watch?v=2vbWjzROtUc)
85 | * [Create your first website using angular 6 -- Part 13 -- Components to Feature Modules](https://www.youtube.com/watch?v=WDNV4iifHwM)
86 | * [Create your first website using angular 6 -- Part 14 -- Components to Feature Modules](https://www.youtube.com/watch?v=tj7V67-BY5U)
87 | * [Create your first website using angular 6 -- Part 15 -- Blog Component to Blog Feature Module](https://www.youtube.com/watch?v=By4tT-bNDXY)
88 | * [Create your first website using angular 6 -- Part 16 -- Creating email contact form API](https://www.youtube.com/watch?v=eNj9XbE9kdk&t=22s)
89 | * [Create your first website using angular 6 -- Part 17 -- send email from Angular APP](https://www.youtube.com/watch?v=QCnoamZnTsQ&t=23s)
90 | * [One Page Love website of html templates](https://onepagelove.com/namari)
91 |
92 | ## :file_folder: License
93 |
94 | * N/A
95 |
96 | ## :envelope: Contact
97 |
98 | * Repo created by [ABateman](https://github.com/AndrewJBateman), email: `gomezbateman@yahoo.com`
99 |
--------------------------------------------------------------------------------
/src/assets/css/namari-color.css:
--------------------------------------------------------------------------------
1 | /* Namari Landing Page Dynamic Style Index
2 |
3 | 1. Website Default Styling
4 | 2. Navigation
5 | 3. Primary and Secondary Colors
6 | 4. Banner
7 | 5. Typography
8 | 6. Buttons
9 | 7. Footer
10 |
11 |
12 | /*------------------------------------------------------------------------------------------*/
13 | /* 1. Website Default Styling */
14 | /*------------------------------------------------------------------------------------------*/
15 |
16 | body {
17 | background: #fff;
18 | }
19 |
20 | /* Default Link Color */
21 |
22 | a,
23 | .la-ball-triangle-path {
24 | color: #d2b356;
25 | }
26 |
27 | a:hover,
28 | #header.nav-solid nav a:hover {
29 | color: #d2b356;
30 | }
31 |
32 | /* Default Icon Color */
33 |
34 | .icon i {
35 | color: #d2b356;
36 | }
37 |
38 | /* Border Color */
39 |
40 | #banner .section-heading:before,
41 | .testimonial.classic footer:before {
42 | background: #d2b356;
43 | }
44 |
45 | .pricing-block-content:hover {
46 | border-color: #d2b356;
47 | }
48 |
49 | /*------------------------------------------------------------------------------------------*/
50 | /* 2. Navigation */
51 | /*------------------------------------------------------------------------------------------*/
52 |
53 | /* Transparent Navigation Color on a Banner */
54 |
55 | #header nav a,
56 | #header i {
57 | color: #111;
58 | }
59 |
60 | /* Navigation Colors when the Navigation is sticky and solid */
61 |
62 | #header.nav-solid,
63 | #header.nav-solid a,
64 | #header.nav-solid i,
65 | #nav-mobile ul li a {
66 | color: #333;
67 | }
68 |
69 | /* Navigation Active State */
70 |
71 | #header.nav-solid .active {
72 | color: #d2b356;
73 | border-color: #d2b356;
74 | }
75 |
76 | /*------------------------------------------------------------------------------------------*/
77 | /* 3. Primary and Secondary Colors */
78 | /*------------------------------------------------------------------------------------------*/
79 |
80 | /* Primary Background and Text Colors */
81 |
82 | .primary-color,
83 | .featured .pricing {
84 | background-color: #d2b356;
85 | }
86 |
87 | .primary-color,
88 | .primary-color .section-title,
89 | .primary-color .section-subtitle,
90 | .featured .pricing,
91 | .featured .pricing p {
92 | color: #fff;
93 | }
94 |
95 | .section-heading h2:after {
96 | background: #d2b356;
97 | content: "";
98 | display: block;
99 | width: 30px;
100 | height: 5px;
101 | margin-top: 30px;
102 | }
103 |
104 | .text-center .section-heading h2:after {
105 | margin: 30px auto 25px auto;
106 | }
107 |
108 | /* Primary Icon Colors */
109 |
110 | .primary-color .icon i,
111 | .primary-color i {
112 | color: #fff;
113 | }
114 |
115 | /* Secondary Background and Text Colors */
116 |
117 | .secondary-color {
118 | background-color: #f5f5f5;
119 | }
120 |
121 | /*------------------------------------------------------------------------------------------*/
122 | /* 4. Banner */
123 | /*------------------------------------------------------------------------------------------*/
124 |
125 | /* Banner Background and Text Colors */
126 |
127 | #banner {
128 | background: url("assets/images/banner-images/banner-image-1.jpg") no-repeat
129 | center top;
130 | background-size: cover;
131 | }
132 |
133 | /*------------------------------------------------------------------------------------------*/
134 | /* 5. Typography */
135 | /*------------------------------------------------------------------------------------------*/
136 |
137 | body {
138 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
139 | font-size: 15px;
140 | font-weight: normal;
141 | color: #111;
142 | }
143 |
144 | /* Logo, if you are using Fonts as Logo and not image
145 |
146 | #logo h1 {
147 | font-family:;
148 | font-size:;
149 | font-weight:;
150 | color:;
151 | }
152 |
153 | #logo h2 {
154 | font-family:;
155 | font-size:;
156 | font-weight:;
157 | color:;
158 | }
159 |
160 | */
161 |
162 | /* Banner Typography */
163 |
164 | #banner h1 {
165 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
166 | font-size: 62px;
167 | line-height: 60px;
168 | font-weight: 800;
169 | color: #111;
170 | }
171 |
172 | #banner h2 {
173 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
174 | font-size: 18px;
175 | font-weight: 300;
176 | color: #111;
177 | }
178 |
179 | /* Section Title and Subtitle */
180 |
181 | .section-title {
182 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
183 | font-size: 34px;
184 | font-weight: 700;
185 | color: #111;
186 | }
187 |
188 | .section-subtitle {
189 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
190 | font-size: 16px;
191 | font-weight: 300;
192 | color: #9c9c9c;
193 | }
194 |
195 | /* Testimonial */
196 |
197 | .testimonial q {
198 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
199 | font-size: 17px;
200 | font-weight: 300;
201 | }
202 |
203 | .testimonial.classic q,
204 | .testimonial.classic footer {
205 | color: #111;
206 | }
207 |
208 | /* Standard Headings h1-h6 */
209 |
210 | h1 {
211 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
212 | font-size: 40px;
213 | font-weight: 300;
214 | color: #111;
215 | }
216 |
217 | h2 {
218 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
219 | font-size: 34px;
220 | font-weight: 300;
221 | color: #111;
222 | }
223 |
224 | h3 {
225 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
226 | font-size: 30px;
227 | font-weight: 700;
228 | color: #111;
229 | }
230 |
231 | h4 {
232 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
233 | font-size: 18px;
234 | font-weight: 400;
235 | color: #111;
236 | }
237 |
238 | h5 {
239 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
240 | font-size: 16px;
241 | font-weight: 400;
242 | color: #111;
243 | }
244 |
245 | h6 {
246 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
247 | font-size: 14px;
248 | font-weight: 400;
249 | color: #111;
250 | }
251 |
252 | /*------------------------------------------------------------------------------------------*/
253 | /* 6. Buttons */
254 | /*------------------------------------------------------------------------------------------*/
255 |
256 | /* ----------Default Buttons---------- */
257 |
258 | /* Button Text */
259 |
260 | .button,
261 | input[type="submit"] {
262 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
263 | font-size: 14px;
264 | font-weight: bold;
265 | color: #111;
266 | }
267 |
268 | /* Button Color */
269 |
270 | .button,
271 | input[type="submit"] {
272 | border-color: #111;
273 | }
274 |
275 | /* Button Hover Color */
276 |
277 | .button:hover,
278 | input[type="submit"]:hover {
279 | border-color: #d2b356;
280 | color: #d2b356;
281 | }
282 |
283 | /* ----------Banner Buttons---------- */
284 |
285 | /* Button Text */
286 |
287 | #banner .button {
288 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
289 | font-size: 16px;
290 | color: #111;
291 | }
292 |
293 | /* Button Color */
294 |
295 | #banner .button {
296 | border-color: #111;
297 | }
298 |
299 | /* Button Hover Color */
300 |
301 | #banner .button:hover {
302 | color: #d2b356;
303 | border-color: #d2b356;
304 | }
305 |
306 | /*------------------------------------------------------------------------------------------*/
307 | /* 7. Footer */
308 | /*------------------------------------------------------------------------------------------*/
309 |
310 | #landing-footer,
311 | #landing-footer p,
312 | #landing-footer a {
313 | font-family: "Open Sans", sans-serif, Arial, Helvetica;
314 | font-size: 12px;
315 | font-weight: normal;
316 | color: #999;
317 | }
318 |
319 | /* Footer Icon Color */
320 |
321 | #landing-footer i {
322 | color: #999;
323 | }
324 |
--------------------------------------------------------------------------------
/src/app/shared/services/in-memory-data.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { InMemoryDbService } from 'angular-in-memory-web-api';
3 |
4 | @Injectable({
5 | providedIn: 'root',
6 | })
7 | export class InMemoryDataService implements InMemoryDbService {
8 | createDb() {
9 | const pages = [
10 | {
11 | id: 1,
12 | name: 'intro',
13 | tagline: 'SUCCESS',
14 | title: 'How We Help You To Sell Your Product',
15 | description:
16 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam!',
17 | },
18 | {
19 | id: 2,
20 | name: 'clients',
21 | tagline: 'TRUST',
22 | title: 'Companies who use our services',
23 | description:
24 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam!',
25 | },
26 | {
27 | id: 3,
28 | name: 'services',
29 | tagline: 'BELIEVING',
30 | title: 'Focusing On What Matters Most',
31 | description:
32 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam!',
33 | },
34 | {
35 | id: 4,
36 | name: 'testimonials',
37 | tagline: 'FEEDBACK',
38 | title: 'What our customers are saying',
39 | description: '',
40 | },
41 | {
42 | id: 5,
43 | name: 'pricing',
44 | tagline: 'YOUR CHOICE',
45 | title: 'We have the right package for you',
46 | description: '',
47 | },
48 | {
49 | id: 6,
50 | name: 'footer',
51 | tagline: 'Made with ❤ by',
52 | developer: 'Bateman Industries',
53 | developerlink: 'andrewbateman.org',
54 | },
55 | {
56 | id: 7,
57 | name: 'header',
58 | tagline: 'A FREE AND SIMPLE LANDING PAGE',
59 | title:
60 | 'Namari is free landing page template you can use for your projects. It is free to use for your personal and commercial projects, enjoy!',
61 | buttontext: 'START CREATING TODAY',
62 | buttonlink: '/home',
63 | image: 'banner-image-1.jpg',
64 | },
65 | ];
66 | const features = [
67 | {
68 | id: 1,
69 | icon: 'html5',
70 | title: 'HTML5 & CSS3',
71 | description:
72 | 'Has ne tritani atomorum conclusionemque, in dolorum volumus cotidieque eum. At vis choro neglegentur iudico',
73 | },
74 | {
75 | id: 2,
76 | icon: 'bolt',
77 | title: 'Easy to Use',
78 | description:
79 | 'Cu vero ipsum vim, doctus facilisi sea in. Eam ex falli honestatis repudiandae, sit detracto mediocrem disputationi',
80 | },
81 | {
82 | id: 3,
83 | icon: 'tablet',
84 | title: 'Fully Responsive',
85 | description:
86 | 'Id porro tritani recusabo usu, eum intellegam consequuntur et. Fugit debet ea sit, an pro nemore vivendum',
87 | },
88 | {
89 | id: 4,
90 | icon: 'rocket',
91 | title: 'Parallax Effect',
92 | description:
93 | 'Id porro tritani recusabo usu, eum intellegam consequuntur et. Fugit debet ea sit, an pro nemore vivendum',
94 | },
95 | ];
96 | const images = [
97 | { id: 1, name: 'gallery-image-1.jpg' },
98 | { id: 2, name: 'gallery-image-2.jpg' },
99 | { id: 3, name: 'gallery-image-3.jpg' },
100 | { id: 4, name: 'gallery-image-4.jpg' },
101 | { id: 5, name: 'gallery-image-5.jpg' },
102 | { id: 6, name: 'gallery-image-6.jpg' },
103 | ];
104 | const menu = [
105 | { id: 1, title: 'Home', link: '/home' },
106 | { id: 2, title: 'About', link: '/about' },
107 | { id: 3, title: 'Services', link: '/services' },
108 | { id: 4, title: 'Gallery', link: '/gallery' },
109 | { id: 5, title: 'Testimonials', link: '/testimonials' },
110 | { id: 6, title: 'Clients', link: '/clients' },
111 | { id: 7, title: 'Pricing', link: '/pricing' },
112 | ];
113 | const companies = [
114 | {
115 | id: 1,
116 | name: 'Tree',
117 | weblink: 'company-logo1.png',
118 | logo: 'company-logo1.png',
119 | },
120 | {
121 | id: 2,
122 | name: 'Fingerprint',
123 | weblink: 'company-logo2.png',
124 | logo: 'company-logo2.png',
125 | },
126 | {
127 | id: 3,
128 | name: 'The Man',
129 | weblink: 'company-logo3.png',
130 | logo: 'company-logo3.png',
131 | },
132 | {
133 | id: 4,
134 | name: 'Mustache',
135 | weblink: 'company-logo4.png',
136 | logo: 'company-logo4.png',
137 | },
138 | {
139 | id: 5,
140 | name: 'Goat',
141 | weblink: 'company-logo5.png',
142 | logo: 'company-logo5.png',
143 | },
144 | {
145 | id: 6,
146 | name: 'Justice',
147 | weblink: 'company-logo6.png',
148 | logo: 'company-logo6.png',
149 | },
150 | {
151 | id: 7,
152 | name: 'Ball',
153 | weblink: 'company-logo7.png',
154 | logo: 'company-logo7.png',
155 | },
156 | {
157 | id: 8,
158 | name: 'Cold',
159 | weblink: 'company-logo8.png',
160 | logo: 'company-logo8.png',
161 | },
162 | {
163 | id: 9,
164 | name: 'Cold',
165 | weblink: 'company-logo9.png',
166 | logo: 'company-logo9.png',
167 | },
168 | ];
169 | const feedback = [
170 | {
171 | id: 1,
172 | name: 'John Doe',
173 | userimage: 'user-1.jpg',
174 | comments:
175 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua',
176 | company: 'ABC',
177 | },
178 | {
179 | id: 2,
180 | name: 'Roslyn Doe',
181 | userimage: 'user-2.jpg',
182 | comments:
183 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua',
184 | company: 'Happy Customer',
185 | },
186 | {
187 | id: 3,
188 | name: 'Thomas Doe',
189 | userimage: 'user-3.jpg',
190 | comments:
191 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua',
192 | company: 'Happy Customer',
193 | },
194 | ];
195 | const plans = [
196 | {
197 | id: 1,
198 | title: 'PERSONAL',
199 | subtitle: 'The standard version',
200 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
201 | price: '19',
202 | currency: '₹',
203 | downloads: '5 Downloads',
204 | extensions: '2 Extensions',
205 | tutorials: 'Tutorials',
206 | support: 'Forum Support',
207 | updates: '1 year free updates',
208 | buttontext: 'BUY TODAY',
209 | buttonlink: '#',
210 | featured: false,
211 | },
212 | {
213 | id: 2,
214 | title: 'STUDENT',
215 | subtitle: 'Most popular choice',
216 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
217 | price: '29',
218 | currency: '₹',
219 | downloads: '15 Downloads',
220 | extensions: '5 Extensions',
221 | tutorials: 'Tutorials with files',
222 | support: 'Forum Support',
223 | updates: '2 year free updates',
224 | buttontext: 'BUY TODAY',
225 | buttonlink: '#',
226 | featured: true,
227 | },
228 | {
229 | id: 3,
230 | title: 'BUSINESS',
231 | subtitle: 'For the whole team',
232 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
233 | price: '49',
234 | currency: '₹',
235 | downloads: 'Unlimited Downloads',
236 | extensions: 'Unlimited Downloads',
237 | tutorials: 'HD Video Tutorials',
238 | support: 'Chat Support',
239 | updates: 'Lifetime free updates',
240 | buttontext: 'BUY TODAY',
241 | buttonlink: '#',
242 | featured: false,
243 | },
244 | ];
245 | const websites = [
246 | {
247 | id: 1,
248 | link: 'https://facebook.com/',
249 | title: 'Facebook',
250 | target: '_blank',
251 | username: 'Thor',
252 | icon: 'facebook',
253 | },
254 | // {
255 | // id: 2,
256 | // link: "https://googleplus.com/",
257 | // title: "Google+",
258 | // target: "_blank",
259 | // username: "+jagmohan",
260 | // icon: "google-plus",
261 | // },
262 | {
263 | id: 3,
264 | link: 'https://twitter.com/',
265 | title: 'Twitter',
266 | target: '_blank',
267 | username: 'joker',
268 | icon: 'twitter',
269 | },
270 | {
271 | id: 4,
272 | link: 'https://instagram.com/',
273 | title: 'Instagram',
274 | target: '_blank',
275 | username: 'superman',
276 | icon: 'instagram',
277 | },
278 | // {
279 | // id: 5,
280 | // link: "https://behance.com/",
281 | // title: "Behance",
282 | // target: "_blank",
283 | // username: "jagmohan",
284 | // icon: "behance",
285 | // },
286 | ];
287 |
288 | return {
289 | menu,
290 | pages,
291 | features,
292 | images,
293 | companies,
294 | feedback,
295 | plans,
296 | websites,
297 | };
298 | }
299 | }
300 |
--------------------------------------------------------------------------------
/src/assets/js/images-loaded.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * imagesLoaded PACKAGED v3.1.4
3 | * JavaScript is all like "You images are done yet or what?"
4 | * MIT License
5 | */
6 |
7 | (function () {
8 | function e() {}
9 | function t(e, t) {
10 | for (var n = e.length; n--; ) if (e[n].listener === t) return n;
11 | return -1;
12 | }
13 | function n(e) {
14 | return function () {
15 | return this[e].apply(this, arguments);
16 | };
17 | }
18 | var i = e.prototype,
19 | r = this,
20 | o = r.EventEmitter;
21 | (i.getListeners = function (e) {
22 | var t,
23 | n,
24 | i = this._getEvents();
25 | if ('object' == typeof e) {
26 | t = {};
27 | for (n in i) i.hasOwnProperty(n) && e.test(n) && (t[n] = i[n]);
28 | } else t = i[e] || (i[e] = []);
29 | return t;
30 | }),
31 | (i.flattenListeners = function (e) {
32 | var t,
33 | n = [];
34 | for (t = 0; e.length > t; t += 1) n.push(e[t].listener);
35 | return n;
36 | }),
37 | (i.getListenersAsObject = function (e) {
38 | var t,
39 | n = this.getListeners(e);
40 | return n instanceof Array && ((t = {}), (t[e] = n)), t || n;
41 | }),
42 | (i.addListener = function (e, n) {
43 | var i,
44 | r = this.getListenersAsObject(e),
45 | o = 'object' == typeof n;
46 | for (i in r)
47 | r.hasOwnProperty(i) &&
48 | -1 === t(r[i], n) &&
49 | r[i].push(o ? n : { listener: n, once: !1 });
50 | return this;
51 | }),
52 | (i.on = n('addListener')),
53 | (i.addOnceListener = function (e, t) {
54 | return this.addListener(e, { listener: t, once: !0 });
55 | }),
56 | (i.once = n('addOnceListener')),
57 | (i.defineEvent = function (e) {
58 | return this.getListeners(e), this;
59 | }),
60 | (i.defineEvents = function (e) {
61 | for (var t = 0; e.length > t; t += 1) this.defineEvent(e[t]);
62 | return this;
63 | }),
64 | (i.removeListener = function (e, n) {
65 | var i,
66 | r,
67 | o = this.getListenersAsObject(e);
68 | for (r in o)
69 | o.hasOwnProperty(r) &&
70 | ((i = t(o[r], n)), -1 !== i && o[r].splice(i, 1));
71 | return this;
72 | }),
73 | (i.off = n('removeListener')),
74 | (i.addListeners = function (e, t) {
75 | return this.manipulateListeners(!1, e, t);
76 | }),
77 | (i.removeListeners = function (e, t) {
78 | return this.manipulateListeners(!0, e, t);
79 | }),
80 | (i.manipulateListeners = function (e, t, n) {
81 | var i,
82 | r,
83 | o = e ? this.removeListener : this.addListener,
84 | s = e ? this.removeListeners : this.addListeners;
85 | if ('object' != typeof t || t instanceof RegExp)
86 | for (i = n.length; i--; ) o.call(this, t, n[i]);
87 | else
88 | for (i in t)
89 | t.hasOwnProperty(i) &&
90 | (r = t[i]) &&
91 | ('function' == typeof r ? o.call(this, i, r) : s.call(this, i, r));
92 | return this;
93 | }),
94 | (i.removeEvent = function (e) {
95 | var t,
96 | n = typeof e,
97 | i = this._getEvents();
98 | if ('string' === n) delete i[e];
99 | else if ('object' === n)
100 | for (t in i) i.hasOwnProperty(t) && e.test(t) && delete i[t];
101 | else delete this._events;
102 | return this;
103 | }),
104 | (i.removeAllListeners = n('removeEvent')),
105 | (i.emitEvent = function (e, t) {
106 | var n,
107 | i,
108 | r,
109 | o,
110 | s = this.getListenersAsObject(e);
111 | for (r in s)
112 | if (s.hasOwnProperty(r))
113 | for (i = s[r].length; i--; )
114 | (n = s[r][i]),
115 | n.once === !0 && this.removeListener(e, n.listener),
116 | (o = n.listener.apply(this, t || [])),
117 | o === this._getOnceReturnValue() &&
118 | this.removeListener(e, n.listener);
119 | return this;
120 | }),
121 | (i.trigger = n('emitEvent')),
122 | (i.emit = function (e) {
123 | var t = Array.prototype.slice.call(arguments, 1);
124 | return this.emitEvent(e, t);
125 | }),
126 | (i.setOnceReturnValue = function (e) {
127 | return (this._onceReturnValue = e), this;
128 | }),
129 | (i._getOnceReturnValue = function () {
130 | return this.hasOwnProperty('_onceReturnValue')
131 | ? this._onceReturnValue
132 | : !0;
133 | }),
134 | (i._getEvents = function () {
135 | return this._events || (this._events = {});
136 | }),
137 | (e.noConflict = function () {
138 | return (r.EventEmitter = o), e;
139 | }),
140 | 'function' == typeof define && define.amd
141 | ? define('eventEmitter/EventEmitter', [], function () {
142 | return e;
143 | })
144 | : 'object' == typeof module && module.exports
145 | ? (module.exports = e)
146 | : (this.EventEmitter = e);
147 | }).call(this),
148 | (function (e) {
149 | function t(t) {
150 | var n = e.event;
151 | return (n.target = n.target || n.srcElement || t), n;
152 | }
153 | var n = document.documentElement,
154 | i = function () {};
155 | n.addEventListener
156 | ? (i = function (e, t, n) {
157 | e.addEventListener(t, n, !1);
158 | })
159 | : n.attachEvent &&
160 | (i = function (e, n, i) {
161 | (e[n + i] = i.handleEvent
162 | ? function () {
163 | var n = t(e);
164 | i.handleEvent.call(i, n);
165 | }
166 | : function () {
167 | var n = t(e);
168 | i.call(e, n);
169 | }),
170 | e.attachEvent('on' + n, e[n + i]);
171 | });
172 | var r = function () {};
173 | n.removeEventListener
174 | ? (r = function (e, t, n) {
175 | e.removeEventListener(t, n, !1);
176 | })
177 | : n.detachEvent &&
178 | (r = function (e, t, n) {
179 | e.detachEvent('on' + t, e[t + n]);
180 | try {
181 | delete e[t + n];
182 | } catch (i) {
183 | e[t + n] = void 0;
184 | }
185 | });
186 | var o = { bind: i, unbind: r };
187 | 'function' == typeof define && define.amd
188 | ? define('eventie/eventie', o)
189 | : (e.eventie = o);
190 | })(this),
191 | (function (e, t) {
192 | 'function' == typeof define && define.amd
193 | ? define(
194 | ['eventEmitter/EventEmitter', 'eventie/eventie'],
195 | function (n, i) {
196 | return t(e, n, i);
197 | }
198 | )
199 | : 'object' == typeof exports
200 | ? (module.exports = t(e, require('eventEmitter'), require('eventie')))
201 | : (e.imagesLoaded = t(e, e.EventEmitter, e.eventie));
202 | })(this, function (e, t, n) {
203 | function i(e, t) {
204 | for (var n in t) e[n] = t[n];
205 | return e;
206 | }
207 | function r(e) {
208 | return '[object Array]' === d.call(e);
209 | }
210 | function o(e) {
211 | var t = [];
212 | if (r(e)) t = e;
213 | else if ('number' == typeof e.length)
214 | for (var n = 0, i = e.length; i > n; n++) t.push(e[n]);
215 | else t.push(e);
216 | return t;
217 | }
218 | function s(e, t, n) {
219 | if (!(this instanceof s)) return new s(e, t);
220 | 'string' == typeof e && (e = document.querySelectorAll(e)),
221 | (this.elements = o(e)),
222 | (this.options = i({}, this.options)),
223 | 'function' == typeof t ? (n = t) : i(this.options, t),
224 | n && this.on('always', n),
225 | this.getImages(),
226 | a && (this.jqDeferred = new a.Deferred());
227 | var r = this;
228 | setTimeout(function () {
229 | r.check();
230 | });
231 | }
232 | function c(e) {
233 | this.img = e;
234 | }
235 | function f(e) {
236 | (this.src = e), (v[e] = this);
237 | }
238 | var a = e.jQuery,
239 | u = e.console,
240 | h = u !== void 0,
241 | d = Object.prototype.toString;
242 | (s.prototype = new t()),
243 | (s.prototype.options = {}),
244 | (s.prototype.getImages = function () {
245 | this.images = [];
246 | for (var e = 0, t = this.elements.length; t > e; e++) {
247 | var n = this.elements[e];
248 | 'IMG' === n.nodeName && this.addImage(n);
249 | for (
250 | var i = n.querySelectorAll('img'), r = 0, o = i.length;
251 | o > r;
252 | r++
253 | ) {
254 | var s = i[r];
255 | this.addImage(s);
256 | }
257 | }
258 | }),
259 | (s.prototype.addImage = function (e) {
260 | var t = new c(e);
261 | this.images.push(t);
262 | }),
263 | (s.prototype.check = function () {
264 | function e(e, r) {
265 | return (
266 | t.options.debug && h && u.log('confirm', e, r),
267 | t.progress(e),
268 | n++,
269 | n === i && t.complete(),
270 | !0
271 | );
272 | }
273 | var t = this,
274 | n = 0,
275 | i = this.images.length;
276 | if (((this.hasAnyBroken = !1), !i)) return this.complete(), void 0;
277 | for (var r = 0; i > r; r++) {
278 | var o = this.images[r];
279 | o.on('confirm', e), o.check();
280 | }
281 | }),
282 | (s.prototype.progress = function (e) {
283 | this.hasAnyBroken = this.hasAnyBroken || !e.isLoaded;
284 | var t = this;
285 | setTimeout(function () {
286 | t.emit('progress', t, e),
287 | t.jqDeferred && t.jqDeferred.notify && t.jqDeferred.notify(t, e);
288 | });
289 | }),
290 | (s.prototype.complete = function () {
291 | var e = this.hasAnyBroken ? 'fail' : 'done';
292 | this.isComplete = !0;
293 | var t = this;
294 | setTimeout(function () {
295 | if ((t.emit(e, t), t.emit('always', t), t.jqDeferred)) {
296 | var n = t.hasAnyBroken ? 'reject' : 'resolve';
297 | t.jqDeferred[n](t);
298 | }
299 | });
300 | }),
301 | a &&
302 | (a.fn.imagesLoaded = function (e, t) {
303 | var n = new s(this, e, t);
304 | return n.jqDeferred.promise(a(this));
305 | }),
306 | (c.prototype = new t()),
307 | (c.prototype.check = function () {
308 | var e = v[this.img.src] || new f(this.img.src);
309 | if (e.isConfirmed)
310 | return this.confirm(e.isLoaded, 'cached was confirmed'), void 0;
311 | if (this.img.complete && void 0 !== this.img.naturalWidth)
312 | return (
313 | this.confirm(0 !== this.img.naturalWidth, 'naturalWidth'), void 0
314 | );
315 | var t = this;
316 | e.on('confirm', function (e, n) {
317 | return t.confirm(e.isLoaded, n), !0;
318 | }),
319 | e.check();
320 | }),
321 | (c.prototype.confirm = function (e, t) {
322 | (this.isLoaded = e), this.emit('confirm', this, t);
323 | });
324 | var v = {};
325 | return (
326 | (f.prototype = new t()),
327 | (f.prototype.check = function () {
328 | if (!this.isChecked) {
329 | var e = new Image();
330 | n.bind(e, 'load', this),
331 | n.bind(e, 'error', this),
332 | (e.src = this.src),
333 | (this.isChecked = !0);
334 | }
335 | }),
336 | (f.prototype.handleEvent = function (e) {
337 | var t = 'on' + e.type;
338 | this[t] && this[t](e);
339 | }),
340 | (f.prototype.onload = function (e) {
341 | this.confirm(!0, 'onload'), this.unbindProxyEvents(e);
342 | }),
343 | (f.prototype.onerror = function (e) {
344 | this.confirm(!1, 'onerror'), this.unbindProxyEvents(e);
345 | }),
346 | (f.prototype.confirm = function (e, t) {
347 | (this.isConfirmed = !0),
348 | (this.isLoaded = e),
349 | this.emit('confirm', this, t);
350 | }),
351 | (f.prototype.unbindProxyEvents = function (e) {
352 | n.unbind(e.target, 'load', this), n.unbind(e.target, 'error', this);
353 | }),
354 | s
355 | );
356 | });
357 |
--------------------------------------------------------------------------------
/src/assets/js/wow.min.js:
--------------------------------------------------------------------------------
1 | /*! WOW - v1.1.2 - 2015-08-19
2 | * Copyright (c) 2015 Matthieu Aussaguel; Licensed MIT */ (function () {
3 | var a,
4 | b,
5 | c,
6 | d,
7 | e,
8 | f = function (a, b) {
9 | return function () {
10 | return a.apply(b, arguments);
11 | };
12 | },
13 | g =
14 | [].indexOf ||
15 | function (a) {
16 | for (var b = 0, c = this.length; c > b; b++)
17 | if (b in this && this[b] === a) return b;
18 | return -1;
19 | };
20 | (b = (function () {
21 | function a() {}
22 | return (
23 | (a.prototype.extend = function (a, b) {
24 | var c, d;
25 | for (c in b) (d = b[c]), null == a[c] && (a[c] = d);
26 | return a;
27 | }),
28 | (a.prototype.isMobile = function (a) {
29 | return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
30 | a
31 | );
32 | }),
33 | (a.prototype.createEvent = function (a, b, c, d) {
34 | var e;
35 | return (
36 | null == b && (b = !1),
37 | null == c && (c = !1),
38 | null == d && (d = null),
39 | null != document.createEvent
40 | ? ((e = document.createEvent('CustomEvent')),
41 | e.initCustomEvent(a, b, c, d))
42 | : null != document.createEventObject
43 | ? ((e = document.createEventObject()), (e.eventType = a))
44 | : (e.eventName = a),
45 | e
46 | );
47 | }),
48 | (a.prototype.emitEvent = function (a, b) {
49 | return null != a.dispatchEvent
50 | ? a.dispatchEvent(b)
51 | : b in (null != a)
52 | ? a[b]()
53 | : 'on' + b in (null != a)
54 | ? a['on' + b]()
55 | : void 0;
56 | }),
57 | (a.prototype.addEvent = function (a, b, c) {
58 | return null != a.addEventListener
59 | ? a.addEventListener(b, c, !1)
60 | : null != a.attachEvent
61 | ? a.attachEvent('on' + b, c)
62 | : (a[b] = c);
63 | }),
64 | (a.prototype.removeEvent = function (a, b, c) {
65 | return null != a.removeEventListener
66 | ? a.removeEventListener(b, c, !1)
67 | : null != a.detachEvent
68 | ? a.detachEvent('on' + b, c)
69 | : delete a[b];
70 | }),
71 | (a.prototype.innerHeight = function () {
72 | return 'innerHeight' in window
73 | ? window.innerHeight
74 | : document.documentElement.clientHeight;
75 | }),
76 | a
77 | );
78 | })()),
79 | (c =
80 | this.WeakMap ||
81 | this.MozWeakMap ||
82 | (c = (function () {
83 | function a() {
84 | (this.keys = []), (this.values = []);
85 | }
86 | return (
87 | (a.prototype.get = function (a) {
88 | var b, c, d, e, f;
89 | for (f = this.keys, b = d = 0, e = f.length; e > d; b = ++d)
90 | if (((c = f[b]), c === a)) return this.values[b];
91 | }),
92 | (a.prototype.set = function (a, b) {
93 | var c, d, e, f, g;
94 | for (g = this.keys, c = e = 0, f = g.length; f > e; c = ++e)
95 | if (((d = g[c]), d === a)) return void (this.values[c] = b);
96 | return this.keys.push(a), this.values.push(b);
97 | }),
98 | a
99 | );
100 | })())),
101 | (a =
102 | this.MutationObserver ||
103 | this.WebkitMutationObserver ||
104 | this.MozMutationObserver ||
105 | (a = (function () {
106 | function a() {
107 | 'undefined' != typeof console &&
108 | null !== console &&
109 | console.warn('MutationObserver is not supported by your browser.'),
110 | 'undefined' != typeof console &&
111 | null !== console &&
112 | console.warn(
113 | 'WOW.js cannot detect dom mutations, please call .sync() after loading new content.'
114 | );
115 | }
116 | return (a.notSupported = !0), (a.prototype.observe = function () {}), a;
117 | })())),
118 | (d =
119 | this.getComputedStyle ||
120 | function (a) {
121 | return (
122 | (this.getPropertyValue = function (b) {
123 | var c;
124 | return (
125 | 'float' === b && (b = 'styleFloat'),
126 | e.test(b) &&
127 | b.replace(e, function (a, b) {
128 | return b.toUpperCase();
129 | }),
130 | (null != (c = a.currentStyle) ? c[b] : void 0) || null
131 | );
132 | }),
133 | this
134 | );
135 | }),
136 | (e = /(\-([a-z]){1})/g),
137 | (this.WOW = (function () {
138 | function e(a) {
139 | null == a && (a = {}),
140 | (this.scrollCallback = f(this.scrollCallback, this)),
141 | (this.scrollHandler = f(this.scrollHandler, this)),
142 | (this.resetAnimation = f(this.resetAnimation, this)),
143 | (this.start = f(this.start, this)),
144 | (this.scrolled = !0),
145 | (this.config = this.util().extend(a, this.defaults)),
146 | null != a.scrollContainer &&
147 | (this.config.scrollContainer = document.querySelector(
148 | a.scrollContainer
149 | )),
150 | (this.animationNameCache = new c()),
151 | (this.wowEvent = this.util().createEvent(this.config.boxClass));
152 | }
153 | return (
154 | (e.prototype.defaults = {
155 | boxClass: 'wow',
156 | animateClass: 'animated',
157 | offset: 0,
158 | mobile: !0,
159 | live: !0,
160 | callback: null,
161 | scrollContainer: null,
162 | }),
163 | (e.prototype.init = function () {
164 | var a;
165 | return (
166 | (this.element = window.document.documentElement),
167 | 'interactive' === (a = document.readyState) || 'complete' === a
168 | ? this.start()
169 | : this.util().addEvent(document, 'DOMContentLoaded', this.start),
170 | (this.finished = [])
171 | );
172 | }),
173 | (e.prototype.start = function () {
174 | var b, c, d, e;
175 | if (
176 | ((this.stopped = !1),
177 | (this.boxes = function () {
178 | var a, c, d, e;
179 | for (
180 | d = this.element.querySelectorAll('.' + this.config.boxClass),
181 | e = [],
182 | a = 0,
183 | c = d.length;
184 | c > a;
185 | a++
186 | )
187 | (b = d[a]), e.push(b);
188 | return e;
189 | }.call(this)),
190 | (this.all = function () {
191 | var a, c, d, e;
192 | for (d = this.boxes, e = [], a = 0, c = d.length; c > a; a++)
193 | (b = d[a]), e.push(b);
194 | return e;
195 | }.call(this)),
196 | this.boxes.length)
197 | )
198 | if (this.disabled()) this.resetStyle();
199 | else
200 | for (e = this.boxes, c = 0, d = e.length; d > c; c++)
201 | (b = e[c]), this.applyStyle(b, !0);
202 | return (
203 | this.disabled() ||
204 | (this.util().addEvent(
205 | this.config.scrollContainer || window,
206 | 'scroll',
207 | this.scrollHandler
208 | ),
209 | this.util().addEvent(window, 'resize', this.scrollHandler),
210 | (this.interval = setInterval(this.scrollCallback, 50))),
211 | this.config.live
212 | ? new a(
213 | (function (a) {
214 | return function (b) {
215 | var c, d, e, f, g;
216 | for (g = [], c = 0, d = b.length; d > c; c++)
217 | (f = b[c]),
218 | g.push(
219 | function () {
220 | var a, b, c, d;
221 | for (
222 | c = f.addedNodes || [],
223 | d = [],
224 | a = 0,
225 | b = c.length;
226 | b > a;
227 | a++
228 | )
229 | (e = c[a]), d.push(this.doSync(e));
230 | return d;
231 | }.call(a)
232 | );
233 | return g;
234 | };
235 | })(this)
236 | ).observe(document.body, { childList: !0, subtree: !0 })
237 | : void 0
238 | );
239 | }),
240 | (e.prototype.stop = function () {
241 | return (
242 | (this.stopped = !0),
243 | this.util().removeEvent(
244 | this.config.scrollContainer || window,
245 | 'scroll',
246 | this.scrollHandler
247 | ),
248 | this.util().removeEvent(window, 'resize', this.scrollHandler),
249 | null != this.interval ? clearInterval(this.interval) : void 0
250 | );
251 | }),
252 | (e.prototype.sync = function () {
253 | return a.notSupported ? this.doSync(this.element) : void 0;
254 | }),
255 | (e.prototype.doSync = function (a) {
256 | var b, c, d, e, f;
257 | if ((null == a && (a = this.element), 1 === a.nodeType)) {
258 | for (
259 | a = a.parentNode || a,
260 | e = a.querySelectorAll('.' + this.config.boxClass),
261 | f = [],
262 | c = 0,
263 | d = e.length;
264 | d > c;
265 | c++
266 | )
267 | (b = e[c]),
268 | g.call(this.all, b) < 0
269 | ? (this.boxes.push(b),
270 | this.all.push(b),
271 | this.stopped || this.disabled()
272 | ? this.resetStyle()
273 | : this.applyStyle(b, !0),
274 | f.push((this.scrolled = !0)))
275 | : f.push(void 0);
276 | return f;
277 | }
278 | }),
279 | (e.prototype.show = function (a) {
280 | return (
281 | this.applyStyle(a),
282 | (a.className = a.className + ' ' + this.config.animateClass),
283 | null != this.config.callback && this.config.callback(a),
284 | this.util().emitEvent(a, this.wowEvent),
285 | this.util().addEvent(a, 'animationend', this.resetAnimation),
286 | this.util().addEvent(a, 'oanimationend', this.resetAnimation),
287 | this.util().addEvent(a, 'webkitAnimationEnd', this.resetAnimation),
288 | this.util().addEvent(a, 'MSAnimationEnd', this.resetAnimation),
289 | a
290 | );
291 | }),
292 | (e.prototype.applyStyle = function (a, b) {
293 | var c, d, e;
294 | return (
295 | (d = a.getAttribute('data-wow-duration')),
296 | (c = a.getAttribute('data-wow-delay')),
297 | (e = a.getAttribute('data-wow-iteration')),
298 | this.animate(
299 | (function (f) {
300 | return function () {
301 | return f.customStyle(a, b, d, c, e);
302 | };
303 | })(this)
304 | )
305 | );
306 | }),
307 | (e.prototype.animate = (function () {
308 | return 'requestAnimationFrame' in window
309 | ? function (a) {
310 | return window.requestAnimationFrame(a);
311 | }
312 | : function (a) {
313 | return a();
314 | };
315 | })()),
316 | (e.prototype.resetStyle = function () {
317 | var a, b, c, d, e;
318 | for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++)
319 | (a = d[b]), e.push((a.style.visibility = 'visible'));
320 | return e;
321 | }),
322 | (e.prototype.resetAnimation = function (a) {
323 | var b;
324 | return a.type.toLowerCase().indexOf('animationend') >= 0
325 | ? ((b = a.target || a.srcElement),
326 | (b.className = b.className
327 | .replace(this.config.animateClass, '')
328 | .trim()))
329 | : void 0;
330 | }),
331 | (e.prototype.customStyle = function (a, b, c, d, e) {
332 | return (
333 | b && this.cacheAnimationName(a),
334 | (a.style.visibility = b ? 'hidden' : 'visible'),
335 | c && this.vendorSet(a.style, { animationDuration: c }),
336 | d && this.vendorSet(a.style, { animationDelay: d }),
337 | e && this.vendorSet(a.style, { animationIterationCount: e }),
338 | this.vendorSet(a.style, {
339 | animationName: b ? 'none' : this.cachedAnimationName(a),
340 | }),
341 | a
342 | );
343 | }),
344 | (e.prototype.vendors = ['moz', 'webkit']),
345 | (e.prototype.vendorSet = function (a, b) {
346 | var c, d, e, f;
347 | d = [];
348 | for (c in b)
349 | (e = b[c]),
350 | (a['' + c] = e),
351 | d.push(
352 | function () {
353 | var b, d, g, h;
354 | for (
355 | g = this.vendors, h = [], b = 0, d = g.length;
356 | d > b;
357 | b++
358 | )
359 | (f = g[b]),
360 | h.push(
361 | (a['' + f + c.charAt(0).toUpperCase() + c.substr(1)] =
362 | e)
363 | );
364 | return h;
365 | }.call(this)
366 | );
367 | return d;
368 | }),
369 | (e.prototype.vendorCSS = function (a, b) {
370 | var c, e, f, g, h, i;
371 | for (
372 | h = d(a),
373 | g = h.getPropertyCSSValue(b),
374 | f = this.vendors,
375 | c = 0,
376 | e = f.length;
377 | e > c;
378 | c++
379 | )
380 | (i = f[c]), (g = g || h.getPropertyCSSValue('-' + i + '-' + b));
381 | return g;
382 | }),
383 | (e.prototype.animationName = function (a) {
384 | var b;
385 | try {
386 | b = this.vendorCSS(a, 'animation-name').cssText;
387 | } catch (c) {
388 | b = d(a).getPropertyValue('animation-name');
389 | }
390 | return 'none' === b ? '' : b;
391 | }),
392 | (e.prototype.cacheAnimationName = function (a) {
393 | return this.animationNameCache.set(a, this.animationName(a));
394 | }),
395 | (e.prototype.cachedAnimationName = function (a) {
396 | return this.animationNameCache.get(a);
397 | }),
398 | (e.prototype.scrollHandler = function () {
399 | return (this.scrolled = !0);
400 | }),
401 | (e.prototype.scrollCallback = function () {
402 | var a;
403 | return !this.scrolled ||
404 | ((this.scrolled = !1),
405 | (this.boxes = function () {
406 | var b, c, d, e;
407 | for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++)
408 | (a = d[b]), a && (this.isVisible(a) ? this.show(a) : e.push(a));
409 | return e;
410 | }.call(this)),
411 | this.boxes.length || this.config.live)
412 | ? void 0
413 | : this.stop();
414 | }),
415 | (e.prototype.offsetTop = function (a) {
416 | for (var b; void 0 === a.offsetTop; ) a = a.parentNode;
417 | for (b = a.offsetTop; (a = a.offsetParent); ) b += a.offsetTop;
418 | return b;
419 | }),
420 | (e.prototype.isVisible = function (a) {
421 | var b, c, d, e, f;
422 | return (
423 | (c = a.getAttribute('data-wow-offset') || this.config.offset),
424 | (f =
425 | (this.config.scrollContainer &&
426 | this.config.scrollContainer.scrollTop) ||
427 | window.pageYOffset),
428 | (e =
429 | f +
430 | Math.min(this.element.clientHeight, this.util().innerHeight()) -
431 | c),
432 | (d = this.offsetTop(a)),
433 | (b = d + a.clientHeight),
434 | e >= d && b >= f
435 | );
436 | }),
437 | (e.prototype.util = function () {
438 | return null != this._util ? this._util : (this._util = new b());
439 | }),
440 | (e.prototype.disabled = function () {
441 | return (
442 | !this.config.mobile && this.util().isMobile(navigator.userAgent)
443 | );
444 | }),
445 | e
446 | );
447 | })());
448 | }).call(this);
449 |
--------------------------------------------------------------------------------
/src/assets/css/font-awesome.css.map:
--------------------------------------------------------------------------------
1 | {
2 | "version": 3,
3 | "mappings": "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",
4 | "sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"],
5 | "names": [],
6 | "file": "font-awesome.css"
7 | }
8 |
--------------------------------------------------------------------------------
/src/assets/css/font-awesome.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 | @font-face {
6 | font-family: "FontAwesome";
7 | src: url("../fonts/fontawesome-webfont.eot?v=4.7.0");
8 | src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0")
9 | format("embedded-opentype"),
10 | url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),
11 | url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),
12 | url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),
13 | url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular")
14 | format("svg");
15 | font-weight: normal;
16 | font-style: normal;
17 | }
18 | .fa {
19 | display: inline-block;
20 | font: normal normal normal 14px/1 FontAwesome;
21 | font-size: inherit;
22 | text-rendering: auto;
23 | -webkit-font-smoothing: antialiased;
24 | -moz-osx-font-smoothing: grayscale;
25 | }
26 | .fa-lg {
27 | font-size: 1.33333333em;
28 | line-height: 0.75em;
29 | vertical-align: -15%;
30 | }
31 | .fa-2x {
32 | font-size: 2em;
33 | }
34 | .fa-3x {
35 | font-size: 3em;
36 | }
37 | .fa-4x {
38 | font-size: 4em;
39 | }
40 | .fa-5x {
41 | font-size: 5em;
42 | }
43 | .fa-fw {
44 | width: 1.28571429em;
45 | text-align: center;
46 | }
47 | .fa-ul {
48 | padding-left: 0;
49 | margin-left: 2.14285714em;
50 | list-style-type: none;
51 | }
52 | .fa-ul > li {
53 | position: relative;
54 | }
55 | .fa-li {
56 | position: absolute;
57 | left: -2.14285714em;
58 | width: 2.14285714em;
59 | top: 0.14285714em;
60 | text-align: center;
61 | }
62 | .fa-li.fa-lg {
63 | left: -1.85714286em;
64 | }
65 | .fa-border {
66 | padding: 0.2em 0.25em 0.15em;
67 | border: solid 0.08em #eee;
68 | border-radius: 0.1em;
69 | }
70 | .fa-pull-left {
71 | float: left;
72 | }
73 | .fa-pull-right {
74 | float: right;
75 | }
76 | .fa.fa-pull-left {
77 | margin-right: 0.3em;
78 | }
79 | .fa.fa-pull-right {
80 | margin-left: 0.3em;
81 | }
82 | .pull-right {
83 | float: right;
84 | }
85 | .pull-left {
86 | float: left;
87 | }
88 | .fa.pull-left {
89 | margin-right: 0.3em;
90 | }
91 | .fa.pull-right {
92 | margin-left: 0.3em;
93 | }
94 | .fa-spin {
95 | -webkit-animation: fa-spin 2s infinite linear;
96 | animation: fa-spin 2s infinite linear;
97 | }
98 | .fa-pulse {
99 | -webkit-animation: fa-spin 1s infinite steps(8);
100 | animation: fa-spin 1s infinite steps(8);
101 | }
102 | @-webkit-keyframes fa-spin {
103 | 0% {
104 | -webkit-transform: rotate(0deg);
105 | transform: rotate(0deg);
106 | }
107 | 100% {
108 | -webkit-transform: rotate(359deg);
109 | transform: rotate(359deg);
110 | }
111 | }
112 | @keyframes fa-spin {
113 | 0% {
114 | -webkit-transform: rotate(0deg);
115 | transform: rotate(0deg);
116 | }
117 | 100% {
118 | -webkit-transform: rotate(359deg);
119 | transform: rotate(359deg);
120 | }
121 | }
122 | .fa-rotate-90 {
123 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
124 | -webkit-transform: rotate(90deg);
125 | -ms-transform: rotate(90deg);
126 | transform: rotate(90deg);
127 | }
128 | .fa-rotate-180 {
129 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
130 | -webkit-transform: rotate(180deg);
131 | -ms-transform: rotate(180deg);
132 | transform: rotate(180deg);
133 | }
134 | .fa-rotate-270 {
135 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
136 | -webkit-transform: rotate(270deg);
137 | -ms-transform: rotate(270deg);
138 | transform: rotate(270deg);
139 | }
140 | .fa-flip-horizontal {
141 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
142 | -webkit-transform: scale(-1, 1);
143 | -ms-transform: scale(-1, 1);
144 | transform: scale(-1, 1);
145 | }
146 | .fa-flip-vertical {
147 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
148 | -webkit-transform: scale(1, -1);
149 | -ms-transform: scale(1, -1);
150 | transform: scale(1, -1);
151 | }
152 | :root .fa-rotate-90,
153 | :root .fa-rotate-180,
154 | :root .fa-rotate-270,
155 | :root .fa-flip-horizontal,
156 | :root .fa-flip-vertical {
157 | filter: none;
158 | }
159 | .fa-stack {
160 | position: relative;
161 | display: inline-block;
162 | width: 2em;
163 | height: 2em;
164 | line-height: 2em;
165 | vertical-align: middle;
166 | }
167 | .fa-stack-1x,
168 | .fa-stack-2x {
169 | position: absolute;
170 | left: 0;
171 | width: 100%;
172 | text-align: center;
173 | }
174 | .fa-stack-1x {
175 | line-height: inherit;
176 | }
177 | .fa-stack-2x {
178 | font-size: 2em;
179 | }
180 | .fa-inverse {
181 | color: #fff;
182 | }
183 | .fa-glass:before {
184 | content: "\f000";
185 | }
186 | .fa-music:before {
187 | content: "\f001";
188 | }
189 | .fa-search:before {
190 | content: "\f002";
191 | }
192 | .fa-envelope-o:before {
193 | content: "\f003";
194 | }
195 | .fa-heart:before {
196 | content: "\f004";
197 | }
198 | .fa-star:before {
199 | content: "\f005";
200 | }
201 | .fa-star-o:before {
202 | content: "\f006";
203 | }
204 | .fa-user:before {
205 | content: "\f007";
206 | }
207 | .fa-film:before {
208 | content: "\f008";
209 | }
210 | .fa-th-large:before {
211 | content: "\f009";
212 | }
213 | .fa-th:before {
214 | content: "\f00a";
215 | }
216 | .fa-th-list:before {
217 | content: "\f00b";
218 | }
219 | .fa-check:before {
220 | content: "\f00c";
221 | }
222 | .fa-remove:before,
223 | .fa-close:before,
224 | .fa-times:before {
225 | content: "\f00d";
226 | }
227 | .fa-search-plus:before {
228 | content: "\f00e";
229 | }
230 | .fa-search-minus:before {
231 | content: "\f010";
232 | }
233 | .fa-power-off:before {
234 | content: "\f011";
235 | }
236 | .fa-signal:before {
237 | content: "\f012";
238 | }
239 | .fa-gear:before,
240 | .fa-cog:before {
241 | content: "\f013";
242 | }
243 | .fa-trash-o:before {
244 | content: "\f014";
245 | }
246 | .fa-home:before {
247 | content: "\f015";
248 | }
249 | .fa-file-o:before {
250 | content: "\f016";
251 | }
252 | .fa-clock-o:before {
253 | content: "\f017";
254 | }
255 | .fa-road:before {
256 | content: "\f018";
257 | }
258 | .fa-download:before {
259 | content: "\f019";
260 | }
261 | .fa-arrow-circle-o-down:before {
262 | content: "\f01a";
263 | }
264 | .fa-arrow-circle-o-up:before {
265 | content: "\f01b";
266 | }
267 | .fa-inbox:before {
268 | content: "\f01c";
269 | }
270 | .fa-play-circle-o:before {
271 | content: "\f01d";
272 | }
273 | .fa-rotate-right:before,
274 | .fa-repeat:before {
275 | content: "\f01e";
276 | }
277 | .fa-refresh:before {
278 | content: "\f021";
279 | }
280 | .fa-list-alt:before {
281 | content: "\f022";
282 | }
283 | .fa-lock:before {
284 | content: "\f023";
285 | }
286 | .fa-flag:before {
287 | content: "\f024";
288 | }
289 | .fa-headphones:before {
290 | content: "\f025";
291 | }
292 | .fa-volume-off:before {
293 | content: "\f026";
294 | }
295 | .fa-volume-down:before {
296 | content: "\f027";
297 | }
298 | .fa-volume-up:before {
299 | content: "\f028";
300 | }
301 | .fa-qrcode:before {
302 | content: "\f029";
303 | }
304 | .fa-barcode:before {
305 | content: "\f02a";
306 | }
307 | .fa-tag:before {
308 | content: "\f02b";
309 | }
310 | .fa-tags:before {
311 | content: "\f02c";
312 | }
313 | .fa-book:before {
314 | content: "\f02d";
315 | }
316 | .fa-bookmark:before {
317 | content: "\f02e";
318 | }
319 | .fa-print:before {
320 | content: "\f02f";
321 | }
322 | .fa-camera:before {
323 | content: "\f030";
324 | }
325 | .fa-font:before {
326 | content: "\f031";
327 | }
328 | .fa-bold:before {
329 | content: "\f032";
330 | }
331 | .fa-italic:before {
332 | content: "\f033";
333 | }
334 | .fa-text-height:before {
335 | content: "\f034";
336 | }
337 | .fa-text-width:before {
338 | content: "\f035";
339 | }
340 | .fa-align-left:before {
341 | content: "\f036";
342 | }
343 | .fa-align-center:before {
344 | content: "\f037";
345 | }
346 | .fa-align-right:before {
347 | content: "\f038";
348 | }
349 | .fa-align-justify:before {
350 | content: "\f039";
351 | }
352 | .fa-list:before {
353 | content: "\f03a";
354 | }
355 | .fa-dedent:before,
356 | .fa-outdent:before {
357 | content: "\f03b";
358 | }
359 | .fa-indent:before {
360 | content: "\f03c";
361 | }
362 | .fa-video-camera:before {
363 | content: "\f03d";
364 | }
365 | .fa-photo:before,
366 | .fa-image:before,
367 | .fa-picture-o:before {
368 | content: "\f03e";
369 | }
370 | .fa-pencil:before {
371 | content: "\f040";
372 | }
373 | .fa-map-marker:before {
374 | content: "\f041";
375 | }
376 | .fa-adjust:before {
377 | content: "\f042";
378 | }
379 | .fa-tint:before {
380 | content: "\f043";
381 | }
382 | .fa-edit:before,
383 | .fa-pencil-square-o:before {
384 | content: "\f044";
385 | }
386 | .fa-share-square-o:before {
387 | content: "\f045";
388 | }
389 | .fa-check-square-o:before {
390 | content: "\f046";
391 | }
392 | .fa-arrows:before {
393 | content: "\f047";
394 | }
395 | .fa-step-backward:before {
396 | content: "\f048";
397 | }
398 | .fa-fast-backward:before {
399 | content: "\f049";
400 | }
401 | .fa-backward:before {
402 | content: "\f04a";
403 | }
404 | .fa-play:before {
405 | content: "\f04b";
406 | }
407 | .fa-pause:before {
408 | content: "\f04c";
409 | }
410 | .fa-stop:before {
411 | content: "\f04d";
412 | }
413 | .fa-forward:before {
414 | content: "\f04e";
415 | }
416 | .fa-fast-forward:before {
417 | content: "\f050";
418 | }
419 | .fa-step-forward:before {
420 | content: "\f051";
421 | }
422 | .fa-eject:before {
423 | content: "\f052";
424 | }
425 | .fa-chevron-left:before {
426 | content: "\f053";
427 | }
428 | .fa-chevron-right:before {
429 | content: "\f054";
430 | }
431 | .fa-plus-circle:before {
432 | content: "\f055";
433 | }
434 | .fa-minus-circle:before {
435 | content: "\f056";
436 | }
437 | .fa-times-circle:before {
438 | content: "\f057";
439 | }
440 | .fa-check-circle:before {
441 | content: "\f058";
442 | }
443 | .fa-question-circle:before {
444 | content: "\f059";
445 | }
446 | .fa-info-circle:before {
447 | content: "\f05a";
448 | }
449 | .fa-crosshairs:before {
450 | content: "\f05b";
451 | }
452 | .fa-times-circle-o:before {
453 | content: "\f05c";
454 | }
455 | .fa-check-circle-o:before {
456 | content: "\f05d";
457 | }
458 | .fa-ban:before {
459 | content: "\f05e";
460 | }
461 | .fa-arrow-left:before {
462 | content: "\f060";
463 | }
464 | .fa-arrow-right:before {
465 | content: "\f061";
466 | }
467 | .fa-arrow-up:before {
468 | content: "\f062";
469 | }
470 | .fa-arrow-down:before {
471 | content: "\f063";
472 | }
473 | .fa-mail-forward:before,
474 | .fa-share:before {
475 | content: "\f064";
476 | }
477 | .fa-expand:before {
478 | content: "\f065";
479 | }
480 | .fa-compress:before {
481 | content: "\f066";
482 | }
483 | .fa-plus:before {
484 | content: "\f067";
485 | }
486 | .fa-minus:before {
487 | content: "\f068";
488 | }
489 | .fa-asterisk:before {
490 | content: "\f069";
491 | }
492 | .fa-exclamation-circle:before {
493 | content: "\f06a";
494 | }
495 | .fa-gift:before {
496 | content: "\f06b";
497 | }
498 | .fa-leaf:before {
499 | content: "\f06c";
500 | }
501 | .fa-fire:before {
502 | content: "\f06d";
503 | }
504 | .fa-eye:before {
505 | content: "\f06e";
506 | }
507 | .fa-eye-slash:before {
508 | content: "\f070";
509 | }
510 | .fa-warning:before,
511 | .fa-exclamation-triangle:before {
512 | content: "\f071";
513 | }
514 | .fa-plane:before {
515 | content: "\f072";
516 | }
517 | .fa-calendar:before {
518 | content: "\f073";
519 | }
520 | .fa-random:before {
521 | content: "\f074";
522 | }
523 | .fa-comment:before {
524 | content: "\f075";
525 | }
526 | .fa-magnet:before {
527 | content: "\f076";
528 | }
529 | .fa-chevron-up:before {
530 | content: "\f077";
531 | }
532 | .fa-chevron-down:before {
533 | content: "\f078";
534 | }
535 | .fa-retweet:before {
536 | content: "\f079";
537 | }
538 | .fa-shopping-cart:before {
539 | content: "\f07a";
540 | }
541 | .fa-folder:before {
542 | content: "\f07b";
543 | }
544 | .fa-folder-open:before {
545 | content: "\f07c";
546 | }
547 | .fa-arrows-v:before {
548 | content: "\f07d";
549 | }
550 | .fa-arrows-h:before {
551 | content: "\f07e";
552 | }
553 | .fa-bar-chart-o:before,
554 | .fa-bar-chart:before {
555 | content: "\f080";
556 | }
557 | .fa-twitter-square:before {
558 | content: "\f081";
559 | }
560 | .fa-facebook-square:before {
561 | content: "\f082";
562 | }
563 | .fa-camera-retro:before {
564 | content: "\f083";
565 | }
566 | .fa-key:before {
567 | content: "\f084";
568 | }
569 | .fa-gears:before,
570 | .fa-cogs:before {
571 | content: "\f085";
572 | }
573 | .fa-comments:before {
574 | content: "\f086";
575 | }
576 | .fa-thumbs-o-up:before {
577 | content: "\f087";
578 | }
579 | .fa-thumbs-o-down:before {
580 | content: "\f088";
581 | }
582 | .fa-star-half:before {
583 | content: "\f089";
584 | }
585 | .fa-heart-o:before {
586 | content: "\f08a";
587 | }
588 | .fa-sign-out:before {
589 | content: "\f08b";
590 | }
591 | .fa-linkedin-square:before {
592 | content: "\f08c";
593 | }
594 | .fa-thumb-tack:before {
595 | content: "\f08d";
596 | }
597 | .fa-external-link:before {
598 | content: "\f08e";
599 | }
600 | .fa-sign-in:before {
601 | content: "\f090";
602 | }
603 | .fa-trophy:before {
604 | content: "\f091";
605 | }
606 | .fa-github-square:before {
607 | content: "\f092";
608 | }
609 | .fa-upload:before {
610 | content: "\f093";
611 | }
612 | .fa-lemon-o:before {
613 | content: "\f094";
614 | }
615 | .fa-phone:before {
616 | content: "\f095";
617 | }
618 | .fa-square-o:before {
619 | content: "\f096";
620 | }
621 | .fa-bookmark-o:before {
622 | content: "\f097";
623 | }
624 | .fa-phone-square:before {
625 | content: "\f098";
626 | }
627 | .fa-twitter:before {
628 | content: "\f099";
629 | }
630 | .fa-facebook-f:before,
631 | .fa-facebook:before {
632 | content: "\f09a";
633 | }
634 | .fa-github:before {
635 | content: "\f09b";
636 | }
637 | .fa-unlock:before {
638 | content: "\f09c";
639 | }
640 | .fa-credit-card:before {
641 | content: "\f09d";
642 | }
643 | .fa-feed:before,
644 | .fa-rss:before {
645 | content: "\f09e";
646 | }
647 | .fa-hdd-o:before {
648 | content: "\f0a0";
649 | }
650 | .fa-bullhorn:before {
651 | content: "\f0a1";
652 | }
653 | .fa-bell:before {
654 | content: "\f0f3";
655 | }
656 | .fa-certificate:before {
657 | content: "\f0a3";
658 | }
659 | .fa-hand-o-right:before {
660 | content: "\f0a4";
661 | }
662 | .fa-hand-o-left:before {
663 | content: "\f0a5";
664 | }
665 | .fa-hand-o-up:before {
666 | content: "\f0a6";
667 | }
668 | .fa-hand-o-down:before {
669 | content: "\f0a7";
670 | }
671 | .fa-arrow-circle-left:before {
672 | content: "\f0a8";
673 | }
674 | .fa-arrow-circle-right:before {
675 | content: "\f0a9";
676 | }
677 | .fa-arrow-circle-up:before {
678 | content: "\f0aa";
679 | }
680 | .fa-arrow-circle-down:before {
681 | content: "\f0ab";
682 | }
683 | .fa-globe:before {
684 | content: "\f0ac";
685 | }
686 | .fa-wrench:before {
687 | content: "\f0ad";
688 | }
689 | .fa-tasks:before {
690 | content: "\f0ae";
691 | }
692 | .fa-filter:before {
693 | content: "\f0b0";
694 | }
695 | .fa-briefcase:before {
696 | content: "\f0b1";
697 | }
698 | .fa-arrows-alt:before {
699 | content: "\f0b2";
700 | }
701 | .fa-group:before,
702 | .fa-users:before {
703 | content: "\f0c0";
704 | }
705 | .fa-chain:before,
706 | .fa-link:before {
707 | content: "\f0c1";
708 | }
709 | .fa-cloud:before {
710 | content: "\f0c2";
711 | }
712 | .fa-flask:before {
713 | content: "\f0c3";
714 | }
715 | .fa-cut:before,
716 | .fa-scissors:before {
717 | content: "\f0c4";
718 | }
719 | .fa-copy:before,
720 | .fa-files-o:before {
721 | content: "\f0c5";
722 | }
723 | .fa-paperclip:before {
724 | content: "\f0c6";
725 | }
726 | .fa-save:before,
727 | .fa-floppy-o:before {
728 | content: "\f0c7";
729 | }
730 | .fa-square:before {
731 | content: "\f0c8";
732 | }
733 | .fa-navicon:before,
734 | .fa-reorder:before,
735 | .fa-bars:before {
736 | content: "\f0c9";
737 | }
738 | .fa-list-ul:before {
739 | content: "\f0ca";
740 | }
741 | .fa-list-ol:before {
742 | content: "\f0cb";
743 | }
744 | .fa-strikethrough:before {
745 | content: "\f0cc";
746 | }
747 | .fa-underline:before {
748 | content: "\f0cd";
749 | }
750 | .fa-table:before {
751 | content: "\f0ce";
752 | }
753 | .fa-magic:before {
754 | content: "\f0d0";
755 | }
756 | .fa-truck:before {
757 | content: "\f0d1";
758 | }
759 | .fa-pinterest:before {
760 | content: "\f0d2";
761 | }
762 | .fa-pinterest-square:before {
763 | content: "\f0d3";
764 | }
765 | .fa-google-plus-square:before {
766 | content: "\f0d4";
767 | }
768 | .fa-google-plus:before {
769 | content: "\f0d5";
770 | }
771 | .fa-money:before {
772 | content: "\f0d6";
773 | }
774 | .fa-caret-down:before {
775 | content: "\f0d7";
776 | }
777 | .fa-caret-up:before {
778 | content: "\f0d8";
779 | }
780 | .fa-caret-left:before {
781 | content: "\f0d9";
782 | }
783 | .fa-caret-right:before {
784 | content: "\f0da";
785 | }
786 | .fa-columns:before {
787 | content: "\f0db";
788 | }
789 | .fa-unsorted:before,
790 | .fa-sort:before {
791 | content: "\f0dc";
792 | }
793 | .fa-sort-down:before,
794 | .fa-sort-desc:before {
795 | content: "\f0dd";
796 | }
797 | .fa-sort-up:before,
798 | .fa-sort-asc:before {
799 | content: "\f0de";
800 | }
801 | .fa-envelope:before {
802 | content: "\f0e0";
803 | }
804 | .fa-linkedin:before {
805 | content: "\f0e1";
806 | }
807 | .fa-rotate-left:before,
808 | .fa-undo:before {
809 | content: "\f0e2";
810 | }
811 | .fa-legal:before,
812 | .fa-gavel:before {
813 | content: "\f0e3";
814 | }
815 | .fa-dashboard:before,
816 | .fa-tachometer:before {
817 | content: "\f0e4";
818 | }
819 | .fa-comment-o:before {
820 | content: "\f0e5";
821 | }
822 | .fa-comments-o:before {
823 | content: "\f0e6";
824 | }
825 | .fa-flash:before,
826 | .fa-bolt:before {
827 | content: "\f0e7";
828 | }
829 | .fa-sitemap:before {
830 | content: "\f0e8";
831 | }
832 | .fa-umbrella:before {
833 | content: "\f0e9";
834 | }
835 | .fa-paste:before,
836 | .fa-clipboard:before {
837 | content: "\f0ea";
838 | }
839 | .fa-lightbulb-o:before {
840 | content: "\f0eb";
841 | }
842 | .fa-exchange:before {
843 | content: "\f0ec";
844 | }
845 | .fa-cloud-download:before {
846 | content: "\f0ed";
847 | }
848 | .fa-cloud-upload:before {
849 | content: "\f0ee";
850 | }
851 | .fa-user-md:before {
852 | content: "\f0f0";
853 | }
854 | .fa-stethoscope:before {
855 | content: "\f0f1";
856 | }
857 | .fa-suitcase:before {
858 | content: "\f0f2";
859 | }
860 | .fa-bell-o:before {
861 | content: "\f0a2";
862 | }
863 | .fa-coffee:before {
864 | content: "\f0f4";
865 | }
866 | .fa-cutlery:before {
867 | content: "\f0f5";
868 | }
869 | .fa-file-text-o:before {
870 | content: "\f0f6";
871 | }
872 | .fa-building-o:before {
873 | content: "\f0f7";
874 | }
875 | .fa-hospital-o:before {
876 | content: "\f0f8";
877 | }
878 | .fa-ambulance:before {
879 | content: "\f0f9";
880 | }
881 | .fa-medkit:before {
882 | content: "\f0fa";
883 | }
884 | .fa-fighter-jet:before {
885 | content: "\f0fb";
886 | }
887 | .fa-beer:before {
888 | content: "\f0fc";
889 | }
890 | .fa-h-square:before {
891 | content: "\f0fd";
892 | }
893 | .fa-plus-square:before {
894 | content: "\f0fe";
895 | }
896 | .fa-angle-double-left:before {
897 | content: "\f100";
898 | }
899 | .fa-angle-double-right:before {
900 | content: "\f101";
901 | }
902 | .fa-angle-double-up:before {
903 | content: "\f102";
904 | }
905 | .fa-angle-double-down:before {
906 | content: "\f103";
907 | }
908 | .fa-angle-left:before {
909 | content: "\f104";
910 | }
911 | .fa-angle-right:before {
912 | content: "\f105";
913 | }
914 | .fa-angle-up:before {
915 | content: "\f106";
916 | }
917 | .fa-angle-down:before {
918 | content: "\f107";
919 | }
920 | .fa-desktop:before {
921 | content: "\f108";
922 | }
923 | .fa-laptop:before {
924 | content: "\f109";
925 | }
926 | .fa-tablet:before {
927 | content: "\f10a";
928 | }
929 | .fa-mobile-phone:before,
930 | .fa-mobile:before {
931 | content: "\f10b";
932 | }
933 | .fa-circle-o:before {
934 | content: "\f10c";
935 | }
936 | .fa-quote-left:before {
937 | content: "\f10d";
938 | }
939 | .fa-quote-right:before {
940 | content: "\f10e";
941 | }
942 | .fa-spinner:before {
943 | content: "\f110";
944 | }
945 | .fa-circle:before {
946 | content: "\f111";
947 | }
948 | .fa-mail-reply:before,
949 | .fa-reply:before {
950 | content: "\f112";
951 | }
952 | .fa-github-alt:before {
953 | content: "\f113";
954 | }
955 | .fa-folder-o:before {
956 | content: "\f114";
957 | }
958 | .fa-folder-open-o:before {
959 | content: "\f115";
960 | }
961 | .fa-smile-o:before {
962 | content: "\f118";
963 | }
964 | .fa-frown-o:before {
965 | content: "\f119";
966 | }
967 | .fa-meh-o:before {
968 | content: "\f11a";
969 | }
970 | .fa-gamepad:before {
971 | content: "\f11b";
972 | }
973 | .fa-keyboard-o:before {
974 | content: "\f11c";
975 | }
976 | .fa-flag-o:before {
977 | content: "\f11d";
978 | }
979 | .fa-flag-checkered:before {
980 | content: "\f11e";
981 | }
982 | .fa-terminal:before {
983 | content: "\f120";
984 | }
985 | .fa-code:before {
986 | content: "\f121";
987 | }
988 | .fa-mail-reply-all:before,
989 | .fa-reply-all:before {
990 | content: "\f122";
991 | }
992 | .fa-star-half-empty:before,
993 | .fa-star-half-full:before,
994 | .fa-star-half-o:before {
995 | content: "\f123";
996 | }
997 | .fa-location-arrow:before {
998 | content: "\f124";
999 | }
1000 | .fa-crop:before {
1001 | content: "\f125";
1002 | }
1003 | .fa-code-fork:before {
1004 | content: "\f126";
1005 | }
1006 | .fa-unlink:before,
1007 | .fa-chain-broken:before {
1008 | content: "\f127";
1009 | }
1010 | .fa-question:before {
1011 | content: "\f128";
1012 | }
1013 | .fa-info:before {
1014 | content: "\f129";
1015 | }
1016 | .fa-exclamation:before {
1017 | content: "\f12a";
1018 | }
1019 | .fa-superscript:before {
1020 | content: "\f12b";
1021 | }
1022 | .fa-subscript:before {
1023 | content: "\f12c";
1024 | }
1025 | .fa-eraser:before {
1026 | content: "\f12d";
1027 | }
1028 | .fa-puzzle-piece:before {
1029 | content: "\f12e";
1030 | }
1031 | .fa-microphone:before {
1032 | content: "\f130";
1033 | }
1034 | .fa-microphone-slash:before {
1035 | content: "\f131";
1036 | }
1037 | .fa-shield:before {
1038 | content: "\f132";
1039 | }
1040 | .fa-calendar-o:before {
1041 | content: "\f133";
1042 | }
1043 | .fa-fire-extinguisher:before {
1044 | content: "\f134";
1045 | }
1046 | .fa-rocket:before {
1047 | content: "\f135";
1048 | }
1049 | .fa-maxcdn:before {
1050 | content: "\f136";
1051 | }
1052 | .fa-chevron-circle-left:before {
1053 | content: "\f137";
1054 | }
1055 | .fa-chevron-circle-right:before {
1056 | content: "\f138";
1057 | }
1058 | .fa-chevron-circle-up:before {
1059 | content: "\f139";
1060 | }
1061 | .fa-chevron-circle-down:before {
1062 | content: "\f13a";
1063 | }
1064 | .fa-html5:before {
1065 | content: "\f13b";
1066 | }
1067 | .fa-css3:before {
1068 | content: "\f13c";
1069 | }
1070 | .fa-anchor:before {
1071 | content: "\f13d";
1072 | }
1073 | .fa-unlock-alt:before {
1074 | content: "\f13e";
1075 | }
1076 | .fa-bullseye:before {
1077 | content: "\f140";
1078 | }
1079 | .fa-ellipsis-h:before {
1080 | content: "\f141";
1081 | }
1082 | .fa-ellipsis-v:before {
1083 | content: "\f142";
1084 | }
1085 | .fa-rss-square:before {
1086 | content: "\f143";
1087 | }
1088 | .fa-play-circle:before {
1089 | content: "\f144";
1090 | }
1091 | .fa-ticket:before {
1092 | content: "\f145";
1093 | }
1094 | .fa-minus-square:before {
1095 | content: "\f146";
1096 | }
1097 | .fa-minus-square-o:before {
1098 | content: "\f147";
1099 | }
1100 | .fa-level-up:before {
1101 | content: "\f148";
1102 | }
1103 | .fa-level-down:before {
1104 | content: "\f149";
1105 | }
1106 | .fa-check-square:before {
1107 | content: "\f14a";
1108 | }
1109 | .fa-pencil-square:before {
1110 | content: "\f14b";
1111 | }
1112 | .fa-external-link-square:before {
1113 | content: "\f14c";
1114 | }
1115 | .fa-share-square:before {
1116 | content: "\f14d";
1117 | }
1118 | .fa-compass:before {
1119 | content: "\f14e";
1120 | }
1121 | .fa-toggle-down:before,
1122 | .fa-caret-square-o-down:before {
1123 | content: "\f150";
1124 | }
1125 | .fa-toggle-up:before,
1126 | .fa-caret-square-o-up:before {
1127 | content: "\f151";
1128 | }
1129 | .fa-toggle-right:before,
1130 | .fa-caret-square-o-right:before {
1131 | content: "\f152";
1132 | }
1133 | .fa-euro:before,
1134 | .fa-eur:before {
1135 | content: "\f153";
1136 | }
1137 | .fa-gbp:before {
1138 | content: "\f154";
1139 | }
1140 | .fa-dollar:before,
1141 | .fa-usd:before {
1142 | content: "\f155";
1143 | }
1144 | .fa-rupee:before,
1145 | .fa-inr:before {
1146 | content: "\f156";
1147 | }
1148 | .fa-cny:before,
1149 | .fa-rmb:before,
1150 | .fa-yen:before,
1151 | .fa-jpy:before {
1152 | content: "\f157";
1153 | }
1154 | .fa-ruble:before,
1155 | .fa-rouble:before,
1156 | .fa-rub:before {
1157 | content: "\f158";
1158 | }
1159 | .fa-won:before,
1160 | .fa-krw:before {
1161 | content: "\f159";
1162 | }
1163 | .fa-bitcoin:before,
1164 | .fa-btc:before {
1165 | content: "\f15a";
1166 | }
1167 | .fa-file:before {
1168 | content: "\f15b";
1169 | }
1170 | .fa-file-text:before {
1171 | content: "\f15c";
1172 | }
1173 | .fa-sort-alpha-asc:before {
1174 | content: "\f15d";
1175 | }
1176 | .fa-sort-alpha-desc:before {
1177 | content: "\f15e";
1178 | }
1179 | .fa-sort-amount-asc:before {
1180 | content: "\f160";
1181 | }
1182 | .fa-sort-amount-desc:before {
1183 | content: "\f161";
1184 | }
1185 | .fa-sort-numeric-asc:before {
1186 | content: "\f162";
1187 | }
1188 | .fa-sort-numeric-desc:before {
1189 | content: "\f163";
1190 | }
1191 | .fa-thumbs-up:before {
1192 | content: "\f164";
1193 | }
1194 | .fa-thumbs-down:before {
1195 | content: "\f165";
1196 | }
1197 | .fa-youtube-square:before {
1198 | content: "\f166";
1199 | }
1200 | .fa-youtube:before {
1201 | content: "\f167";
1202 | }
1203 | .fa-xing:before {
1204 | content: "\f168";
1205 | }
1206 | .fa-xing-square:before {
1207 | content: "\f169";
1208 | }
1209 | .fa-youtube-play:before {
1210 | content: "\f16a";
1211 | }
1212 | .fa-dropbox:before {
1213 | content: "\f16b";
1214 | }
1215 | .fa-stack-overflow:before {
1216 | content: "\f16c";
1217 | }
1218 | .fa-instagram:before {
1219 | content: "\f16d";
1220 | }
1221 | .fa-flickr:before {
1222 | content: "\f16e";
1223 | }
1224 | .fa-adn:before {
1225 | content: "\f170";
1226 | }
1227 | .fa-bitbucket:before {
1228 | content: "\f171";
1229 | }
1230 | .fa-bitbucket-square:before {
1231 | content: "\f172";
1232 | }
1233 | .fa-tumblr:before {
1234 | content: "\f173";
1235 | }
1236 | .fa-tumblr-square:before {
1237 | content: "\f174";
1238 | }
1239 | .fa-long-arrow-down:before {
1240 | content: "\f175";
1241 | }
1242 | .fa-long-arrow-up:before {
1243 | content: "\f176";
1244 | }
1245 | .fa-long-arrow-left:before {
1246 | content: "\f177";
1247 | }
1248 | .fa-long-arrow-right:before {
1249 | content: "\f178";
1250 | }
1251 | .fa-apple:before {
1252 | content: "\f179";
1253 | }
1254 | .fa-windows:before {
1255 | content: "\f17a";
1256 | }
1257 | .fa-android:before {
1258 | content: "\f17b";
1259 | }
1260 | .fa-linux:before {
1261 | content: "\f17c";
1262 | }
1263 | .fa-dribbble:before {
1264 | content: "\f17d";
1265 | }
1266 | .fa-skype:before {
1267 | content: "\f17e";
1268 | }
1269 | .fa-foursquare:before {
1270 | content: "\f180";
1271 | }
1272 | .fa-trello:before {
1273 | content: "\f181";
1274 | }
1275 | .fa-female:before {
1276 | content: "\f182";
1277 | }
1278 | .fa-male:before {
1279 | content: "\f183";
1280 | }
1281 | .fa-gittip:before,
1282 | .fa-gratipay:before {
1283 | content: "\f184";
1284 | }
1285 | .fa-sun-o:before {
1286 | content: "\f185";
1287 | }
1288 | .fa-moon-o:before {
1289 | content: "\f186";
1290 | }
1291 | .fa-archive:before {
1292 | content: "\f187";
1293 | }
1294 | .fa-bug:before {
1295 | content: "\f188";
1296 | }
1297 | .fa-vk:before {
1298 | content: "\f189";
1299 | }
1300 | .fa-weibo:before {
1301 | content: "\f18a";
1302 | }
1303 | .fa-renren:before {
1304 | content: "\f18b";
1305 | }
1306 | .fa-pagelines:before {
1307 | content: "\f18c";
1308 | }
1309 | .fa-stack-exchange:before {
1310 | content: "\f18d";
1311 | }
1312 | .fa-arrow-circle-o-right:before {
1313 | content: "\f18e";
1314 | }
1315 | .fa-arrow-circle-o-left:before {
1316 | content: "\f190";
1317 | }
1318 | .fa-toggle-left:before,
1319 | .fa-caret-square-o-left:before {
1320 | content: "\f191";
1321 | }
1322 | .fa-dot-circle-o:before {
1323 | content: "\f192";
1324 | }
1325 | .fa-wheelchair:before {
1326 | content: "\f193";
1327 | }
1328 | .fa-vimeo-square:before {
1329 | content: "\f194";
1330 | }
1331 | .fa-turkish-lira:before,
1332 | .fa-try:before {
1333 | content: "\f195";
1334 | }
1335 | .fa-plus-square-o:before {
1336 | content: "\f196";
1337 | }
1338 | .fa-space-shuttle:before {
1339 | content: "\f197";
1340 | }
1341 | .fa-slack:before {
1342 | content: "\f198";
1343 | }
1344 | .fa-envelope-square:before {
1345 | content: "\f199";
1346 | }
1347 | .fa-wordpress:before {
1348 | content: "\f19a";
1349 | }
1350 | .fa-openid:before {
1351 | content: "\f19b";
1352 | }
1353 | .fa-institution:before,
1354 | .fa-bank:before,
1355 | .fa-university:before {
1356 | content: "\f19c";
1357 | }
1358 | .fa-mortar-board:before,
1359 | .fa-graduation-cap:before {
1360 | content: "\f19d";
1361 | }
1362 | .fa-yahoo:before {
1363 | content: "\f19e";
1364 | }
1365 | .fa-google:before {
1366 | content: "\f1a0";
1367 | }
1368 | .fa-reddit:before {
1369 | content: "\f1a1";
1370 | }
1371 | .fa-reddit-square:before {
1372 | content: "\f1a2";
1373 | }
1374 | .fa-stumbleupon-circle:before {
1375 | content: "\f1a3";
1376 | }
1377 | .fa-stumbleupon:before {
1378 | content: "\f1a4";
1379 | }
1380 | .fa-delicious:before {
1381 | content: "\f1a5";
1382 | }
1383 | .fa-digg:before {
1384 | content: "\f1a6";
1385 | }
1386 | .fa-pied-piper-pp:before {
1387 | content: "\f1a7";
1388 | }
1389 | .fa-pied-piper-alt:before {
1390 | content: "\f1a8";
1391 | }
1392 | .fa-drupal:before {
1393 | content: "\f1a9";
1394 | }
1395 | .fa-joomla:before {
1396 | content: "\f1aa";
1397 | }
1398 | .fa-language:before {
1399 | content: "\f1ab";
1400 | }
1401 | .fa-fax:before {
1402 | content: "\f1ac";
1403 | }
1404 | .fa-building:before {
1405 | content: "\f1ad";
1406 | }
1407 | .fa-child:before {
1408 | content: "\f1ae";
1409 | }
1410 | .fa-paw:before {
1411 | content: "\f1b0";
1412 | }
1413 | .fa-spoon:before {
1414 | content: "\f1b1";
1415 | }
1416 | .fa-cube:before {
1417 | content: "\f1b2";
1418 | }
1419 | .fa-cubes:before {
1420 | content: "\f1b3";
1421 | }
1422 | .fa-behance:before {
1423 | content: "\f1b4";
1424 | }
1425 | .fa-behance-square:before {
1426 | content: "\f1b5";
1427 | }
1428 | .fa-steam:before {
1429 | content: "\f1b6";
1430 | }
1431 | .fa-steam-square:before {
1432 | content: "\f1b7";
1433 | }
1434 | .fa-recycle:before {
1435 | content: "\f1b8";
1436 | }
1437 | .fa-automobile:before,
1438 | .fa-car:before {
1439 | content: "\f1b9";
1440 | }
1441 | .fa-cab:before,
1442 | .fa-taxi:before {
1443 | content: "\f1ba";
1444 | }
1445 | .fa-tree:before {
1446 | content: "\f1bb";
1447 | }
1448 | .fa-spotify:before {
1449 | content: "\f1bc";
1450 | }
1451 | .fa-deviantart:before {
1452 | content: "\f1bd";
1453 | }
1454 | .fa-soundcloud:before {
1455 | content: "\f1be";
1456 | }
1457 | .fa-database:before {
1458 | content: "\f1c0";
1459 | }
1460 | .fa-file-pdf-o:before {
1461 | content: "\f1c1";
1462 | }
1463 | .fa-file-word-o:before {
1464 | content: "\f1c2";
1465 | }
1466 | .fa-file-excel-o:before {
1467 | content: "\f1c3";
1468 | }
1469 | .fa-file-powerpoint-o:before {
1470 | content: "\f1c4";
1471 | }
1472 | .fa-file-photo-o:before,
1473 | .fa-file-picture-o:before,
1474 | .fa-file-image-o:before {
1475 | content: "\f1c5";
1476 | }
1477 | .fa-file-zip-o:before,
1478 | .fa-file-archive-o:before {
1479 | content: "\f1c6";
1480 | }
1481 | .fa-file-sound-o:before,
1482 | .fa-file-audio-o:before {
1483 | content: "\f1c7";
1484 | }
1485 | .fa-file-movie-o:before,
1486 | .fa-file-video-o:before {
1487 | content: "\f1c8";
1488 | }
1489 | .fa-file-code-o:before {
1490 | content: "\f1c9";
1491 | }
1492 | .fa-vine:before {
1493 | content: "\f1ca";
1494 | }
1495 | .fa-codepen:before {
1496 | content: "\f1cb";
1497 | }
1498 | .fa-jsfiddle:before {
1499 | content: "\f1cc";
1500 | }
1501 | .fa-life-bouy:before,
1502 | .fa-life-buoy:before,
1503 | .fa-life-saver:before,
1504 | .fa-support:before,
1505 | .fa-life-ring:before {
1506 | content: "\f1cd";
1507 | }
1508 | .fa-circle-o-notch:before {
1509 | content: "\f1ce";
1510 | }
1511 | .fa-ra:before,
1512 | .fa-resistance:before,
1513 | .fa-rebel:before {
1514 | content: "\f1d0";
1515 | }
1516 | .fa-ge:before,
1517 | .fa-empire:before {
1518 | content: "\f1d1";
1519 | }
1520 | .fa-git-square:before {
1521 | content: "\f1d2";
1522 | }
1523 | .fa-git:before {
1524 | content: "\f1d3";
1525 | }
1526 | .fa-y-combinator-square:before,
1527 | .fa-yc-square:before,
1528 | .fa-hacker-news:before {
1529 | content: "\f1d4";
1530 | }
1531 | .fa-tencent-weibo:before {
1532 | content: "\f1d5";
1533 | }
1534 | .fa-qq:before {
1535 | content: "\f1d6";
1536 | }
1537 | .fa-wechat:before,
1538 | .fa-weixin:before {
1539 | content: "\f1d7";
1540 | }
1541 | .fa-send:before,
1542 | .fa-paper-plane:before {
1543 | content: "\f1d8";
1544 | }
1545 | .fa-send-o:before,
1546 | .fa-paper-plane-o:before {
1547 | content: "\f1d9";
1548 | }
1549 | .fa-history:before {
1550 | content: "\f1da";
1551 | }
1552 | .fa-circle-thin:before {
1553 | content: "\f1db";
1554 | }
1555 | .fa-header:before {
1556 | content: "\f1dc";
1557 | }
1558 | .fa-paragraph:before {
1559 | content: "\f1dd";
1560 | }
1561 | .fa-sliders:before {
1562 | content: "\f1de";
1563 | }
1564 | .fa-share-alt:before {
1565 | content: "\f1e0";
1566 | }
1567 | .fa-share-alt-square:before {
1568 | content: "\f1e1";
1569 | }
1570 | .fa-bomb:before {
1571 | content: "\f1e2";
1572 | }
1573 | .fa-soccer-ball-o:before,
1574 | .fa-futbol-o:before {
1575 | content: "\f1e3";
1576 | }
1577 | .fa-tty:before {
1578 | content: "\f1e4";
1579 | }
1580 | .fa-binoculars:before {
1581 | content: "\f1e5";
1582 | }
1583 | .fa-plug:before {
1584 | content: "\f1e6";
1585 | }
1586 | .fa-slideshare:before {
1587 | content: "\f1e7";
1588 | }
1589 | .fa-twitch:before {
1590 | content: "\f1e8";
1591 | }
1592 | .fa-yelp:before {
1593 | content: "\f1e9";
1594 | }
1595 | .fa-newspaper-o:before {
1596 | content: "\f1ea";
1597 | }
1598 | .fa-wifi:before {
1599 | content: "\f1eb";
1600 | }
1601 | .fa-calculator:before {
1602 | content: "\f1ec";
1603 | }
1604 | .fa-paypal:before {
1605 | content: "\f1ed";
1606 | }
1607 | .fa-google-wallet:before {
1608 | content: "\f1ee";
1609 | }
1610 | .fa-cc-visa:before {
1611 | content: "\f1f0";
1612 | }
1613 | .fa-cc-mastercard:before {
1614 | content: "\f1f1";
1615 | }
1616 | .fa-cc-discover:before {
1617 | content: "\f1f2";
1618 | }
1619 | .fa-cc-amex:before {
1620 | content: "\f1f3";
1621 | }
1622 | .fa-cc-paypal:before {
1623 | content: "\f1f4";
1624 | }
1625 | .fa-cc-stripe:before {
1626 | content: "\f1f5";
1627 | }
1628 | .fa-bell-slash:before {
1629 | content: "\f1f6";
1630 | }
1631 | .fa-bell-slash-o:before {
1632 | content: "\f1f7";
1633 | }
1634 | .fa-trash:before {
1635 | content: "\f1f8";
1636 | }
1637 | .fa-copyright:before {
1638 | content: "\f1f9";
1639 | }
1640 | .fa-at:before {
1641 | content: "\f1fa";
1642 | }
1643 | .fa-eyedropper:before {
1644 | content: "\f1fb";
1645 | }
1646 | .fa-paint-brush:before {
1647 | content: "\f1fc";
1648 | }
1649 | .fa-birthday-cake:before {
1650 | content: "\f1fd";
1651 | }
1652 | .fa-area-chart:before {
1653 | content: "\f1fe";
1654 | }
1655 | .fa-pie-chart:before {
1656 | content: "\f200";
1657 | }
1658 | .fa-line-chart:before {
1659 | content: "\f201";
1660 | }
1661 | .fa-lastfm:before {
1662 | content: "\f202";
1663 | }
1664 | .fa-lastfm-square:before {
1665 | content: "\f203";
1666 | }
1667 | .fa-toggle-off:before {
1668 | content: "\f204";
1669 | }
1670 | .fa-toggle-on:before {
1671 | content: "\f205";
1672 | }
1673 | .fa-bicycle:before {
1674 | content: "\f206";
1675 | }
1676 | .fa-bus:before {
1677 | content: "\f207";
1678 | }
1679 | .fa-ioxhost:before {
1680 | content: "\f208";
1681 | }
1682 | .fa-angellist:before {
1683 | content: "\f209";
1684 | }
1685 | .fa-cc:before {
1686 | content: "\f20a";
1687 | }
1688 | .fa-shekel:before,
1689 | .fa-sheqel:before,
1690 | .fa-ils:before {
1691 | content: "\f20b";
1692 | }
1693 | .fa-meanpath:before {
1694 | content: "\f20c";
1695 | }
1696 | .fa-buysellads:before {
1697 | content: "\f20d";
1698 | }
1699 | .fa-connectdevelop:before {
1700 | content: "\f20e";
1701 | }
1702 | .fa-dashcube:before {
1703 | content: "\f210";
1704 | }
1705 | .fa-forumbee:before {
1706 | content: "\f211";
1707 | }
1708 | .fa-leanpub:before {
1709 | content: "\f212";
1710 | }
1711 | .fa-sellsy:before {
1712 | content: "\f213";
1713 | }
1714 | .fa-shirtsinbulk:before {
1715 | content: "\f214";
1716 | }
1717 | .fa-simplybuilt:before {
1718 | content: "\f215";
1719 | }
1720 | .fa-skyatlas:before {
1721 | content: "\f216";
1722 | }
1723 | .fa-cart-plus:before {
1724 | content: "\f217";
1725 | }
1726 | .fa-cart-arrow-down:before {
1727 | content: "\f218";
1728 | }
1729 | .fa-diamond:before {
1730 | content: "\f219";
1731 | }
1732 | .fa-ship:before {
1733 | content: "\f21a";
1734 | }
1735 | .fa-user-secret:before {
1736 | content: "\f21b";
1737 | }
1738 | .fa-motorcycle:before {
1739 | content: "\f21c";
1740 | }
1741 | .fa-street-view:before {
1742 | content: "\f21d";
1743 | }
1744 | .fa-heartbeat:before {
1745 | content: "\f21e";
1746 | }
1747 | .fa-venus:before {
1748 | content: "\f221";
1749 | }
1750 | .fa-mars:before {
1751 | content: "\f222";
1752 | }
1753 | .fa-mercury:before {
1754 | content: "\f223";
1755 | }
1756 | .fa-intersex:before,
1757 | .fa-transgender:before {
1758 | content: "\f224";
1759 | }
1760 | .fa-transgender-alt:before {
1761 | content: "\f225";
1762 | }
1763 | .fa-venus-double:before {
1764 | content: "\f226";
1765 | }
1766 | .fa-mars-double:before {
1767 | content: "\f227";
1768 | }
1769 | .fa-venus-mars:before {
1770 | content: "\f228";
1771 | }
1772 | .fa-mars-stroke:before {
1773 | content: "\f229";
1774 | }
1775 | .fa-mars-stroke-v:before {
1776 | content: "\f22a";
1777 | }
1778 | .fa-mars-stroke-h:before {
1779 | content: "\f22b";
1780 | }
1781 | .fa-neuter:before {
1782 | content: "\f22c";
1783 | }
1784 | .fa-genderless:before {
1785 | content: "\f22d";
1786 | }
1787 | .fa-facebook-official:before {
1788 | content: "\f230";
1789 | }
1790 | .fa-pinterest-p:before {
1791 | content: "\f231";
1792 | }
1793 | .fa-whatsapp:before {
1794 | content: "\f232";
1795 | }
1796 | .fa-server:before {
1797 | content: "\f233";
1798 | }
1799 | .fa-user-plus:before {
1800 | content: "\f234";
1801 | }
1802 | .fa-user-times:before {
1803 | content: "\f235";
1804 | }
1805 | .fa-hotel:before,
1806 | .fa-bed:before {
1807 | content: "\f236";
1808 | }
1809 | .fa-viacoin:before {
1810 | content: "\f237";
1811 | }
1812 | .fa-train:before {
1813 | content: "\f238";
1814 | }
1815 | .fa-subway:before {
1816 | content: "\f239";
1817 | }
1818 | .fa-medium:before {
1819 | content: "\f23a";
1820 | }
1821 | .fa-yc:before,
1822 | .fa-y-combinator:before {
1823 | content: "\f23b";
1824 | }
1825 | .fa-optin-monster:before {
1826 | content: "\f23c";
1827 | }
1828 | .fa-opencart:before {
1829 | content: "\f23d";
1830 | }
1831 | .fa-expeditedssl:before {
1832 | content: "\f23e";
1833 | }
1834 | .fa-battery-4:before,
1835 | .fa-battery:before,
1836 | .fa-battery-full:before {
1837 | content: "\f240";
1838 | }
1839 | .fa-battery-3:before,
1840 | .fa-battery-three-quarters:before {
1841 | content: "\f241";
1842 | }
1843 | .fa-battery-2:before,
1844 | .fa-battery-half:before {
1845 | content: "\f242";
1846 | }
1847 | .fa-battery-1:before,
1848 | .fa-battery-quarter:before {
1849 | content: "\f243";
1850 | }
1851 | .fa-battery-0:before,
1852 | .fa-battery-empty:before {
1853 | content: "\f244";
1854 | }
1855 | .fa-mouse-pointer:before {
1856 | content: "\f245";
1857 | }
1858 | .fa-i-cursor:before {
1859 | content: "\f246";
1860 | }
1861 | .fa-object-group:before {
1862 | content: "\f247";
1863 | }
1864 | .fa-object-ungroup:before {
1865 | content: "\f248";
1866 | }
1867 | .fa-sticky-note:before {
1868 | content: "\f249";
1869 | }
1870 | .fa-sticky-note-o:before {
1871 | content: "\f24a";
1872 | }
1873 | .fa-cc-jcb:before {
1874 | content: "\f24b";
1875 | }
1876 | .fa-cc-diners-club:before {
1877 | content: "\f24c";
1878 | }
1879 | .fa-clone:before {
1880 | content: "\f24d";
1881 | }
1882 | .fa-balance-scale:before {
1883 | content: "\f24e";
1884 | }
1885 | .fa-hourglass-o:before {
1886 | content: "\f250";
1887 | }
1888 | .fa-hourglass-1:before,
1889 | .fa-hourglass-start:before {
1890 | content: "\f251";
1891 | }
1892 | .fa-hourglass-2:before,
1893 | .fa-hourglass-half:before {
1894 | content: "\f252";
1895 | }
1896 | .fa-hourglass-3:before,
1897 | .fa-hourglass-end:before {
1898 | content: "\f253";
1899 | }
1900 | .fa-hourglass:before {
1901 | content: "\f254";
1902 | }
1903 | .fa-hand-grab-o:before,
1904 | .fa-hand-rock-o:before {
1905 | content: "\f255";
1906 | }
1907 | .fa-hand-stop-o:before,
1908 | .fa-hand-paper-o:before {
1909 | content: "\f256";
1910 | }
1911 | .fa-hand-scissors-o:before {
1912 | content: "\f257";
1913 | }
1914 | .fa-hand-lizard-o:before {
1915 | content: "\f258";
1916 | }
1917 | .fa-hand-spock-o:before {
1918 | content: "\f259";
1919 | }
1920 | .fa-hand-pointer-o:before {
1921 | content: "\f25a";
1922 | }
1923 | .fa-hand-peace-o:before {
1924 | content: "\f25b";
1925 | }
1926 | .fa-trademark:before {
1927 | content: "\f25c";
1928 | }
1929 | .fa-registered:before {
1930 | content: "\f25d";
1931 | }
1932 | .fa-creative-commons:before {
1933 | content: "\f25e";
1934 | }
1935 | .fa-gg:before {
1936 | content: "\f260";
1937 | }
1938 | .fa-gg-circle:before {
1939 | content: "\f261";
1940 | }
1941 | .fa-tripadvisor:before {
1942 | content: "\f262";
1943 | }
1944 | .fa-odnoklassniki:before {
1945 | content: "\f263";
1946 | }
1947 | .fa-odnoklassniki-square:before {
1948 | content: "\f264";
1949 | }
1950 | .fa-get-pocket:before {
1951 | content: "\f265";
1952 | }
1953 | .fa-wikipedia-w:before {
1954 | content: "\f266";
1955 | }
1956 | .fa-safari:before {
1957 | content: "\f267";
1958 | }
1959 | .fa-chrome:before {
1960 | content: "\f268";
1961 | }
1962 | .fa-firefox:before {
1963 | content: "\f269";
1964 | }
1965 | .fa-opera:before {
1966 | content: "\f26a";
1967 | }
1968 | .fa-internet-explorer:before {
1969 | content: "\f26b";
1970 | }
1971 | .fa-tv:before,
1972 | .fa-television:before {
1973 | content: "\f26c";
1974 | }
1975 | .fa-contao:before {
1976 | content: "\f26d";
1977 | }
1978 | .fa-500px:before {
1979 | content: "\f26e";
1980 | }
1981 | .fa-amazon:before {
1982 | content: "\f270";
1983 | }
1984 | .fa-calendar-plus-o:before {
1985 | content: "\f271";
1986 | }
1987 | .fa-calendar-minus-o:before {
1988 | content: "\f272";
1989 | }
1990 | .fa-calendar-times-o:before {
1991 | content: "\f273";
1992 | }
1993 | .fa-calendar-check-o:before {
1994 | content: "\f274";
1995 | }
1996 | .fa-industry:before {
1997 | content: "\f275";
1998 | }
1999 | .fa-map-pin:before {
2000 | content: "\f276";
2001 | }
2002 | .fa-map-signs:before {
2003 | content: "\f277";
2004 | }
2005 | .fa-map-o:before {
2006 | content: "\f278";
2007 | }
2008 | .fa-map:before {
2009 | content: "\f279";
2010 | }
2011 | .fa-commenting:before {
2012 | content: "\f27a";
2013 | }
2014 | .fa-commenting-o:before {
2015 | content: "\f27b";
2016 | }
2017 | .fa-houzz:before {
2018 | content: "\f27c";
2019 | }
2020 | .fa-vimeo:before {
2021 | content: "\f27d";
2022 | }
2023 | .fa-black-tie:before {
2024 | content: "\f27e";
2025 | }
2026 | .fa-fonticons:before {
2027 | content: "\f280";
2028 | }
2029 | .fa-reddit-alien:before {
2030 | content: "\f281";
2031 | }
2032 | .fa-edge:before {
2033 | content: "\f282";
2034 | }
2035 | .fa-credit-card-alt:before {
2036 | content: "\f283";
2037 | }
2038 | .fa-codiepie:before {
2039 | content: "\f284";
2040 | }
2041 | .fa-modx:before {
2042 | content: "\f285";
2043 | }
2044 | .fa-fort-awesome:before {
2045 | content: "\f286";
2046 | }
2047 | .fa-usb:before {
2048 | content: "\f287";
2049 | }
2050 | .fa-product-hunt:before {
2051 | content: "\f288";
2052 | }
2053 | .fa-mixcloud:before {
2054 | content: "\f289";
2055 | }
2056 | .fa-scribd:before {
2057 | content: "\f28a";
2058 | }
2059 | .fa-pause-circle:before {
2060 | content: "\f28b";
2061 | }
2062 | .fa-pause-circle-o:before {
2063 | content: "\f28c";
2064 | }
2065 | .fa-stop-circle:before {
2066 | content: "\f28d";
2067 | }
2068 | .fa-stop-circle-o:before {
2069 | content: "\f28e";
2070 | }
2071 | .fa-shopping-bag:before {
2072 | content: "\f290";
2073 | }
2074 | .fa-shopping-basket:before {
2075 | content: "\f291";
2076 | }
2077 | .fa-hashtag:before {
2078 | content: "\f292";
2079 | }
2080 | .fa-bluetooth:before {
2081 | content: "\f293";
2082 | }
2083 | .fa-bluetooth-b:before {
2084 | content: "\f294";
2085 | }
2086 | .fa-percent:before {
2087 | content: "\f295";
2088 | }
2089 | .fa-gitlab:before {
2090 | content: "\f296";
2091 | }
2092 | .fa-wpbeginner:before {
2093 | content: "\f297";
2094 | }
2095 | .fa-wpforms:before {
2096 | content: "\f298";
2097 | }
2098 | .fa-envira:before {
2099 | content: "\f299";
2100 | }
2101 | .fa-universal-access:before {
2102 | content: "\f29a";
2103 | }
2104 | .fa-wheelchair-alt:before {
2105 | content: "\f29b";
2106 | }
2107 | .fa-question-circle-o:before {
2108 | content: "\f29c";
2109 | }
2110 | .fa-blind:before {
2111 | content: "\f29d";
2112 | }
2113 | .fa-audio-description:before {
2114 | content: "\f29e";
2115 | }
2116 | .fa-volume-control-phone:before {
2117 | content: "\f2a0";
2118 | }
2119 | .fa-braille:before {
2120 | content: "\f2a1";
2121 | }
2122 | .fa-assistive-listening-systems:before {
2123 | content: "\f2a2";
2124 | }
2125 | .fa-asl-interpreting:before,
2126 | .fa-american-sign-language-interpreting:before {
2127 | content: "\f2a3";
2128 | }
2129 | .fa-deafness:before,
2130 | .fa-hard-of-hearing:before,
2131 | .fa-deaf:before {
2132 | content: "\f2a4";
2133 | }
2134 | .fa-glide:before {
2135 | content: "\f2a5";
2136 | }
2137 | .fa-glide-g:before {
2138 | content: "\f2a6";
2139 | }
2140 | .fa-signing:before,
2141 | .fa-sign-language:before {
2142 | content: "\f2a7";
2143 | }
2144 | .fa-low-vision:before {
2145 | content: "\f2a8";
2146 | }
2147 | .fa-viadeo:before {
2148 | content: "\f2a9";
2149 | }
2150 | .fa-viadeo-square:before {
2151 | content: "\f2aa";
2152 | }
2153 | .fa-snapchat:before {
2154 | content: "\f2ab";
2155 | }
2156 | .fa-snapchat-ghost:before {
2157 | content: "\f2ac";
2158 | }
2159 | .fa-snapchat-square:before {
2160 | content: "\f2ad";
2161 | }
2162 | .fa-pied-piper:before {
2163 | content: "\f2ae";
2164 | }
2165 | .fa-first-order:before {
2166 | content: "\f2b0";
2167 | }
2168 | .fa-yoast:before {
2169 | content: "\f2b1";
2170 | }
2171 | .fa-themeisle:before {
2172 | content: "\f2b2";
2173 | }
2174 | .fa-google-plus-circle:before,
2175 | .fa-google-plus-official:before {
2176 | content: "\f2b3";
2177 | }
2178 | .fa-fa:before,
2179 | .fa-font-awesome:before {
2180 | content: "\f2b4";
2181 | }
2182 | .fa-handshake-o:before {
2183 | content: "\f2b5";
2184 | }
2185 | .fa-envelope-open:before {
2186 | content: "\f2b6";
2187 | }
2188 | .fa-envelope-open-o:before {
2189 | content: "\f2b7";
2190 | }
2191 | .fa-linode:before {
2192 | content: "\f2b8";
2193 | }
2194 | .fa-address-book:before {
2195 | content: "\f2b9";
2196 | }
2197 | .fa-address-book-o:before {
2198 | content: "\f2ba";
2199 | }
2200 | .fa-vcard:before,
2201 | .fa-address-card:before {
2202 | content: "\f2bb";
2203 | }
2204 | .fa-vcard-o:before,
2205 | .fa-address-card-o:before {
2206 | content: "\f2bc";
2207 | }
2208 | .fa-user-circle:before {
2209 | content: "\f2bd";
2210 | }
2211 | .fa-user-circle-o:before {
2212 | content: "\f2be";
2213 | }
2214 | .fa-user-o:before {
2215 | content: "\f2c0";
2216 | }
2217 | .fa-id-badge:before {
2218 | content: "\f2c1";
2219 | }
2220 | .fa-drivers-license:before,
2221 | .fa-id-card:before {
2222 | content: "\f2c2";
2223 | }
2224 | .fa-drivers-license-o:before,
2225 | .fa-id-card-o:before {
2226 | content: "\f2c3";
2227 | }
2228 | .fa-quora:before {
2229 | content: "\f2c4";
2230 | }
2231 | .fa-free-code-camp:before {
2232 | content: "\f2c5";
2233 | }
2234 | .fa-telegram:before {
2235 | content: "\f2c6";
2236 | }
2237 | .fa-thermometer-4:before,
2238 | .fa-thermometer:before,
2239 | .fa-thermometer-full:before {
2240 | content: "\f2c7";
2241 | }
2242 | .fa-thermometer-3:before,
2243 | .fa-thermometer-three-quarters:before {
2244 | content: "\f2c8";
2245 | }
2246 | .fa-thermometer-2:before,
2247 | .fa-thermometer-half:before {
2248 | content: "\f2c9";
2249 | }
2250 | .fa-thermometer-1:before,
2251 | .fa-thermometer-quarter:before {
2252 | content: "\f2ca";
2253 | }
2254 | .fa-thermometer-0:before,
2255 | .fa-thermometer-empty:before {
2256 | content: "\f2cb";
2257 | }
2258 | .fa-shower:before {
2259 | content: "\f2cc";
2260 | }
2261 | .fa-bathtub:before,
2262 | .fa-s15:before,
2263 | .fa-bath:before {
2264 | content: "\f2cd";
2265 | }
2266 | .fa-podcast:before {
2267 | content: "\f2ce";
2268 | }
2269 | .fa-window-maximize:before {
2270 | content: "\f2d0";
2271 | }
2272 | .fa-window-minimize:before {
2273 | content: "\f2d1";
2274 | }
2275 | .fa-window-restore:before {
2276 | content: "\f2d2";
2277 | }
2278 | .fa-times-rectangle:before,
2279 | .fa-window-close:before {
2280 | content: "\f2d3";
2281 | }
2282 | .fa-times-rectangle-o:before,
2283 | .fa-window-close-o:before {
2284 | content: "\f2d4";
2285 | }
2286 | .fa-bandcamp:before {
2287 | content: "\f2d5";
2288 | }
2289 | .fa-grav:before {
2290 | content: "\f2d6";
2291 | }
2292 | .fa-etsy:before {
2293 | content: "\f2d7";
2294 | }
2295 | .fa-imdb:before {
2296 | content: "\f2d8";
2297 | }
2298 | .fa-ravelry:before {
2299 | content: "\f2d9";
2300 | }
2301 | .fa-eercast:before {
2302 | content: "\f2da";
2303 | }
2304 | .fa-microchip:before {
2305 | content: "\f2db";
2306 | }
2307 | .fa-snowflake-o:before {
2308 | content: "\f2dc";
2309 | }
2310 | .fa-superpowers:before {
2311 | content: "\f2dd";
2312 | }
2313 | .fa-wpexplorer:before {
2314 | content: "\f2de";
2315 | }
2316 | .fa-meetup:before {
2317 | content: "\f2e0";
2318 | }
2319 | .sr-only {
2320 | position: absolute;
2321 | width: 1px;
2322 | height: 1px;
2323 | padding: 0;
2324 | margin: -1px;
2325 | overflow: hidden;
2326 | clip: rect(0, 0, 0, 0);
2327 | border: 0;
2328 | }
2329 | .sr-only-focusable:active,
2330 | .sr-only-focusable:focus {
2331 | position: static;
2332 | width: auto;
2333 | height: auto;
2334 | margin: 0;
2335 | overflow: visible;
2336 | clip: auto;
2337 | }
2338 |
--------------------------------------------------------------------------------