diff --git a/src/app/team/member.component.html b/src/app/team/member.component.html
new file mode 100644
index 00000000..14420091
--- /dev/null
+++ b/src/app/team/member.component.html
@@ -0,0 +1,21 @@
+
+
+
+
+ {{member.name}}
+ {{member.role}}
+
+
+
+
+ {{member.bio}}
+
+
+
+
+
+
+
diff --git a/src/app/team/member.component.scss b/src/app/team/member.component.scss
new file mode 100644
index 00000000..519c2db3
--- /dev/null
+++ b/src/app/team/member.component.scss
@@ -0,0 +1,17 @@
+.mat-card {
+ width: 210px;
+ margin: 10px;
+}
+
+.header-image {
+ background-size: cover;
+}
+
+.mat-card-actions {
+ text-align: center;
+ margin-bottom: 1px;
+}
+
+.mat-card-title {
+ font-size: 20px;
+}
diff --git a/src/app/team/member.component.spec.ts b/src/app/team/member.component.spec.ts
new file mode 100644
index 00000000..6a0aeed2
--- /dev/null
+++ b/src/app/team/member.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { MemberComponent } from './member.component';
+
+describe('MemberComponent', () => {
+ let component: MemberComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ MemberComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MemberComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/team/member.component.ts b/src/app/team/member.component.ts
new file mode 100644
index 00000000..e7e6d952
--- /dev/null
+++ b/src/app/team/member.component.ts
@@ -0,0 +1,12 @@
+import { Component, Input } from '@angular/core';
+
+import { IMember } from './team.models';
+
+@Component({
+ selector: 'app-member',
+ templateUrl: './member.component.html',
+ styleUrls: ['./member.component.scss']
+})
+export class MemberComponent{
+ @Input() member: IMember;
+}
diff --git a/src/app/team/social-sharing/social-sharing.component.html b/src/app/team/social-sharing/social-sharing.component.html
new file mode 100644
index 00000000..1e6a2ce0
--- /dev/null
+++ b/src/app/team/social-sharing/social-sharing.component.html
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/app/team/social-sharing/social-sharing.component.scss b/src/app/team/social-sharing/social-sharing.component.scss
new file mode 100644
index 00000000..c9ca3717
--- /dev/null
+++ b/src/app/team/social-sharing/social-sharing.component.scss
@@ -0,0 +1,18 @@
+@import "../../../styles/colors";
+
+a.mat-button {
+ font-size: 25px;
+}
+
+.icon-github {
+ color: $icon-color-github;
+}
+
+.icon-twitter {
+ color: $icon-color-twitter;
+
+}
+
+.icon-linkedin {
+ color: $icon-color-linkedin;
+}
diff --git a/src/app/team/social-sharing/social-sharing.component.spec.ts b/src/app/team/social-sharing/social-sharing.component.spec.ts
new file mode 100644
index 00000000..b496dcaf
--- /dev/null
+++ b/src/app/team/social-sharing/social-sharing.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SocialSharingComponent } from './social-sharing.component';
+
+describe('SocialSharingComponent', () => {
+ let component: SocialSharingComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ SocialSharingComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(SocialSharingComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/team/social-sharing/social-sharing.component.ts b/src/app/team/social-sharing/social-sharing.component.ts
new file mode 100644
index 00000000..fe779d26
--- /dev/null
+++ b/src/app/team/social-sharing/social-sharing.component.ts
@@ -0,0 +1,12 @@
+import { Component, Input } from '@angular/core';
+
+@Component({
+ selector: 'app-social-sharing',
+ templateUrl: './social-sharing.component.html',
+ styleUrls: ['./social-sharing.component.scss']
+})
+export class SocialSharingComponent {
+ @Input() githubUrl: string;
+ @Input() twitterUrl: string;
+ @Input() linkedinUrl: string;
+}
diff --git a/src/app/team/team.component.html b/src/app/team/team.component.html
index 9bbb6ce4..2dafbeb2 100644
--- a/src/app/team/team.component.html
+++ b/src/app/team/team.component.html
@@ -1,3 +1,15 @@
-
- team works!
-
+
+
+
diff --git a/src/app/team/team.component.scss b/src/app/team/team.component.scss
index e69de29b..9d5730f6 100644
--- a/src/app/team/team.component.scss
+++ b/src/app/team/team.component.scss
@@ -0,0 +1,22 @@
+:host {
+ display: block;
+ max-width: 1000px;
+ margin: 0 auto;
+}
+
+h2 {
+ text-align: center;
+ margin: 0;
+ padding: 20px;
+}
+
+section.wrapper {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: center;
+}
+
+div.team-section {
+ box-shadow: -1px 3px 5px 0px #d6d6d6;
+ margin-bottom: 3px;
+}
diff --git a/src/app/team/team.component.ts b/src/app/team/team.component.ts
index e83fbc24..8d87e5a1 100644
--- a/src/app/team/team.component.ts
+++ b/src/app/team/team.component.ts
@@ -1,10 +1,22 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
+import { Observable } from 'rxjs/Observable';
+
+import { TeamService } from './team.service';
+import { ITeam } from './team.models';
@Component({
selector: 'app-team',
templateUrl: './team.component.html',
styleUrls: ['./team.component.scss']
})
-export class TeamComponent {
- constructor() {}
+export class TeamComponent implements OnInit {
+ team$: Observable;
+
+ constructor(
+ private service: TeamService
+ ) {}
+
+ ngOnInit() {
+ this.team$ = this.service.getTeam();
+ }
}
diff --git a/src/app/team/team.models.ts b/src/app/team/team.models.ts
new file mode 100644
index 00000000..dbf68dde
--- /dev/null
+++ b/src/app/team/team.models.ts
@@ -0,0 +1,14 @@
+export interface ITeam {
+ coreTeam: IMember[];
+ learningTeam: IMember[];
+}
+
+export interface IMember {
+ name: string;
+ role: string;
+ githubUrl: string;
+ avatar: string;
+ twitterUrl: string;
+ linkedinUrl: string;
+ bio: string;
+}
diff --git a/src/app/team/team.module.ts b/src/app/team/team.module.ts
index 4089c977..f940a1b2 100644
--- a/src/app/team/team.module.ts
+++ b/src/app/team/team.module.ts
@@ -1,10 +1,27 @@
import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import {
+ MatCardModule,
+ MatButtonModule,
+ MatIconModule,
+} from '@angular/material';
-import { TeamComponent } from './team.component';
import { TeamRoutingModule } from './team-routing.module';
+import { TeamComponent } from './team.component';
+import { TeamService } from './team.service';
+import { MemberComponent } from './member.component';
+import { SocialSharingComponent } from './social-sharing/social-sharing.component';
@NgModule({
- imports: [TeamRoutingModule],
- declarations: [TeamComponent]
+ imports: [
+ TeamRoutingModule,
+ CommonModule,
+ MatCardModule,
+ MatButtonModule,
+ MatIconModule
+ ],
+ providers: [TeamService],
+ declarations: [TeamComponent, MemberComponent, SocialSharingComponent]
})
export class TeamModule {}
diff --git a/src/app/team/team.service.spec.ts b/src/app/team/team.service.spec.ts
new file mode 100644
index 00000000..42ce51ec
--- /dev/null
+++ b/src/app/team/team.service.spec.ts
@@ -0,0 +1,15 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { TeamService } from './team.service';
+
+describe('TeamService', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ providers: [TeamService]
+ });
+ });
+
+ it('should be created', inject([TeamService], (service: TeamService) => {
+ expect(service).toBeTruthy();
+ }));
+});
diff --git a/src/app/team/team.service.ts b/src/app/team/team.service.ts
new file mode 100644
index 00000000..0ccb8fcb
--- /dev/null
+++ b/src/app/team/team.service.ts
@@ -0,0 +1,103 @@
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs/Observable';
+import 'rxjs/add/observable/from';
+
+import { ITeam, IMember } from './team.models';
+
+@Injectable()
+export class TeamService {
+ getTeam(): Observable {
+ return Observable.from([{
+ coreTeam: [{
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }, {
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }, {
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }, {
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }],
+ learningTeam: [{
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }, {
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }, {
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }, {
+ 'name': 'Ben Lesh',
+ 'role': 'Developer',
+ 'githubUrl': 'https://github.com/benlesh',
+ 'avatar': 'https://github.com/benlesh.png',
+ 'twitterUrl': 'https://twitter.com/BenLesh',
+ 'linkedinUrl': 'https://www.linkedin.com/in/blesh/',
+ 'bio':
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
+ 'Sed est odio, sodales et tellus a, semper pellentesque elit. ' +
+ 'Mauris purus dui, dignissim nec sodales ut, feugiat et purus.'
+ }]
+ }]);
+ }
+}
diff --git a/src/assets/fonts/icomoon.woff b/src/assets/fonts/icomoon.woff
new file mode 100644
index 00000000..5f98b0ad
Binary files /dev/null and b/src/assets/fonts/icomoon.woff differ
diff --git a/src/styles.scss b/src/styles.scss
index 5030d9c6..507f884f 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -1,6 +1,7 @@
@import '~@angular/material/theming';
@import './app/operators/operator-theme';
@import './styles/code-helpers';
+@import './styles/icons';
@include mat-core();
// Define the theme.
diff --git a/src/styles/_colors.scss b/src/styles/_colors.scss
new file mode 100644
index 00000000..d02fac6f
--- /dev/null
+++ b/src/styles/_colors.scss
@@ -0,0 +1,3 @@
+$icon-color-github: #6f066f;
+$icon-color-twitter: #4073d4;
+$icon-color-linkedin: #3D7CA4;
diff --git a/src/styles/_icons.scss b/src/styles/_icons.scss
new file mode 100644
index 00000000..66071de8
--- /dev/null
+++ b/src/styles/_icons.scss
@@ -0,0 +1,31 @@
+@font-face {
+ font-family: 'icomoon';
+ src: url('assets/fonts/icomoon.woff?6yfful') format('woff');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="icon-"], [class*=" icon-"] {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: 'icomoon' !important;
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-linkedin:before {
+ content: "\f08c";
+}
+.icon-twitter:before {
+ content: "\f099";
+}
+.icon-github:before {
+ content: "\f09b";
+}