diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index a22517397c..5efac346e4 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -4,16 +4,20 @@ import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: '',
- loadChildren: () => import('./home/home.module').then(m => m.HomeModule)
+ loadChildren: () =>
+ import('./home/home.module').then((m) => m.HomeModule),
},
{
path: 'repos',
- loadChildren: () => import('./repositories/repositories.module').then(m => m.RepositoriesModule)
- }
+ loadChildren: () =>
+ import('./repositories/repositories.module').then(
+ (m) => m.RepositoriesModule
+ ),
+ },
];
@NgModule({
- imports: [RouterModule.forRoot(routes, {useHash: true})],
- exports: [RouterModule]
+ imports: [RouterModule.forRoot(routes, { useHash: true })],
+ exports: [RouterModule],
})
-export class AppRoutingModule { }
+export class AppRoutingModule {}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 6bec4a3eb3..fe9c0c21ad 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -13,10 +13,7 @@ import { AppSwitcher20Module } from '@carbon/icons-angular/lib/app-switcher/20';
import { HeaderComponent } from './header/header.component';
@NgModule({
- declarations: [
- AppComponent,
- HeaderComponent
- ],
+ declarations: [AppComponent, HeaderComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
@@ -25,8 +22,8 @@ import { HeaderComponent } from './header/header.component';
UIShellModule,
Notification20Module,
UserAvatar20Module,
- AppSwitcher20Module
+ AppSwitcher20Module,
],
- bootstrap: [AppComponent]
+ bootstrap: [AppComponent],
})
-export class AppModule { }
+export class AppModule {}
diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts
index 263087858f..3c6fb199b5 100644
--- a/src/app/home/home.module.ts
+++ b/src/app/home/home.module.ts
@@ -1,6 +1,11 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
-
+import {
+ BreadcrumbModule,
+ ButtonModule,
+ GridModule,
+ TabsModule,
+} from 'carbon-components-angular';
import { HomeRoutingModule } from './home-routing.module';
import { LandingPageComponent } from './landing-page/landing-page.component';
@@ -8,7 +13,11 @@ import { LandingPageComponent } from './landing-page/landing-page.component';
declarations: [LandingPageComponent],
imports: [
CommonModule,
- HomeRoutingModule
- ]
+ HomeRoutingModule,
+ BreadcrumbModule,
+ GridModule,
+ ButtonModule,
+ TabsModule,
+ ],
})
-export class HomeModule { }
+export class HomeModule {}
diff --git a/src/app/home/landing-page/landing-page.component.html b/src/app/home/landing-page/landing-page.component.html
index 8d1873e93e..b7a95b31fb 100644
--- a/src/app/home/landing-page/landing-page.component.html
+++ b/src/app/home/landing-page/landing-page.component.html
@@ -1 +1,93 @@
-
landing-page works!
+
+
+
+
+
+ Getting started
+
+
+
+ Design & build with Carbon
+
+
+
+
+
+
+
+
+
+
+
+ What is Carbon?
+
+
+ Carbon is IBM’s open-source design system
+ for digital products and experiences. With
+ the IBM Design Language as its foundation,
+ the system consists of working code, design
+ tools and resources, human interface
+ guidelines, and a vibrant community of
+ contributors.
+
+
Learn more
+
+
+
+
+
+
+
+
+
+
+
+ Rapidly build beautiful and accessible
+ experiences. The Carbon kit contains all
+ resources you need to get started.
+
+
+
+
+
+
+
+
+ Carbon provides styles and components in
+ Vanilla, React, Angular, and Vue for anyone
+ building on the web.
+
+
+
+
+
+
+
+
+
+
The Principles
+
+
Carbon is Open
+
Carbon is Modular
+
+ Carbon is Consistent
+
+
+
diff --git a/src/app/home/landing-page/landing-page.component.scss b/src/app/home/landing-page/landing-page.component.scss
index e69de29bb2..a654029cec 100644
--- a/src/app/home/landing-page/landing-page.component.scss
+++ b/src/app/home/landing-page/landing-page.component.scss
@@ -0,0 +1,66 @@
+@import "~carbon-components/scss/globals/scss/vendor/@carbon/type/scss/font-family";
+@import "~carbon-components/scss/globals/scss/typography";
+
+.landing-page__illo {
+ max-width: 100%;
+}
+
+@mixin landing-page-background() {
+ background-color: $ui-01;
+ position: relative;
+
+ &::before {
+ content: "";
+ position: absolute;
+ left: -$spacing-05;
+ top: 0;
+ right: -$spacing-05;
+ bottom: 0;
+ background: $ui-01;
+ z-index: -1;
+ }
+}
+
+.landing-page__banner {
+ padding-top: $spacing-05;
+ padding-bottom: $spacing-07 * 4;
+ @include landing-page-background;
+}
+
+.landing-page__heading {
+ @include type-style("productive-heading-05");
+}
+
+.landing-page__r2 {
+ margin-top: rem(-40px);
+}
+
+.landing-page__tab-content {
+ padding-top: $layout-05;
+ padding-bottom: $layout-05;
+}
+
+.landing-page__subheading {
+ @include type-style("productive-heading-03");
+ @include carbon--font-weight("semibold");
+}
+
+.landing-page__p {
+ @include type-style("productive-heading-03");
+ margin-top: $spacing-06;
+ margin-bottom: $spacing-08;
+
+ @include carbon--breakpoint-between((320px + 1), md) {
+ max-width: 75%;
+ }
+}
+
+.landing-page__r3 {
+ padding-top: $spacing-09;
+ padding-bottom: $spacing-09;
+ @include landing-page-background;
+}
+
+.landing-page__label {
+ @include type-style("heading-01");
+}
diff --git a/src/app/home/landing-page/landing-page.component.spec.ts b/src/app/home/landing-page/landing-page.component.spec.ts
index 463ba36fda..2474f4f9df 100644
--- a/src/app/home/landing-page/landing-page.component.spec.ts
+++ b/src/app/home/landing-page/landing-page.component.spec.ts
@@ -1,5 +1,10 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
+import {
+ BreadcrumbModule,
+ ButtonModule,
+ GridModule,
+ TabsModule,
+} from 'carbon-components-angular';
import { LandingPageComponent } from './landing-page.component';
describe('LandingPageComponent', () => {
@@ -8,9 +13,9 @@ describe('LandingPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
- declarations: [ LandingPageComponent ]
- })
- .compileComponents();
+ declarations: [LandingPageComponent],
+ imports: [BreadcrumbModule, GridModule, ButtonModule, TabsModule],
+ }).compileComponents();
}));
beforeEach(() => {
diff --git a/src/app/repositories/repo-page/repo-page.component.html b/src/app/repositories/repo-page/repo-page.component.html
index 97046993ff..75a582ed9d 100644
--- a/src/app/repositories/repo-page/repo-page.component.html
+++ b/src/app/repositories/repo-page/repo-page.component.html
@@ -1 +1,7 @@
-repo-page works!
+
diff --git a/src/app/repositories/repo-page/repo-page.component.scss b/src/app/repositories/repo-page/repo-page.component.scss
index e69de29bb2..a06188b8c4 100644
--- a/src/app/repositories/repo-page/repo-page.component.scss
+++ b/src/app/repositories/repo-page/repo-page.component.scss
@@ -0,0 +1,6 @@
+@import "~carbon-components/scss/globals/scss/typography";
+
+.repo-page .cds--row {
+ padding-top: $spacing-05;
+ padding-bottom: $spacing-05;
+}
diff --git a/src/app/repositories/repo-page/repo-page.component.spec.ts b/src/app/repositories/repo-page/repo-page.component.spec.ts
index 25364e32e9..41fc12d7af 100644
--- a/src/app/repositories/repo-page/repo-page.component.spec.ts
+++ b/src/app/repositories/repo-page/repo-page.component.spec.ts
@@ -1,6 +1,7 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
+import { GridModule, TableModule } from 'carbon-components-angular';
import { RepoPageComponent } from './repo-page.component';
+import { RepoTableComponent } from '../repo-table/repo-table.component';
describe('RepoPageComponent', () => {
let component: RepoPageComponent;
@@ -8,9 +9,9 @@ describe('RepoPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
- declarations: [ RepoPageComponent ]
- })
- .compileComponents();
+ declarations: [RepoPageComponent, RepoTableComponent],
+ imports: [GridModule, TableModule],
+ }).compileComponents();
}));
beforeEach(() => {
diff --git a/src/app/repositories/repo-table/repo-table.component.html b/src/app/repositories/repo-table/repo-table.component.html
new file mode 100644
index 0000000000..c3078d07fc
--- /dev/null
+++ b/src/app/repositories/repo-table/repo-table.component.html
@@ -0,0 +1,10 @@
+
+
+ Carbon Repositories
+
+ A collection of public Carbon repositories.
+
+
+
+
+
diff --git a/src/app/repositories/repo-table/repo-table.component.scss b/src/app/repositories/repo-table/repo-table.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/repositories/repo-table/repo-table.component.spec.ts b/src/app/repositories/repo-table/repo-table.component.spec.ts
new file mode 100644
index 0000000000..884f69e38e
--- /dev/null
+++ b/src/app/repositories/repo-table/repo-table.component.spec.ts
@@ -0,0 +1,26 @@
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+
+import { RepoTableComponent } from "./repo-table.component";
+import { GridModule, TableModule } from "carbon-components-angular";
+
+describe("RepoTableComponent", () => {
+ let component: RepoTableComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [RepoTableComponent],
+ imports: [GridModule, TableModule],
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RepoTableComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it("should create", () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/repositories/repo-table/repo-table.component.ts b/src/app/repositories/repo-table/repo-table.component.ts
new file mode 100644
index 0000000000..d3a05d337a
--- /dev/null
+++ b/src/app/repositories/repo-table/repo-table.component.ts
@@ -0,0 +1,64 @@
+import { Component, OnInit } from '@angular/core';
+
+import {
+ TableModel,
+ TableItem,
+ TableHeaderItem,
+} from 'carbon-components-angular';
+
+@Component({
+ selector: 'app-repo-table',
+ templateUrl: './repo-table.component.html',
+ styleUrls: ['./repo-table.component.scss'],
+})
+export class RepoTableComponent implements OnInit {
+ model = new TableModel();
+
+ constructor() {}
+
+ ngOnInit() {
+ this.model.data = [
+ [
+ new TableItem({
+ data: 'Repo 1',
+ expandedData: 'Row description',
+ }),
+ new TableItem({ data: 'Date' }),
+ new TableItem({ data: 'Date' }),
+ new TableItem({ data: '123' }),
+ new TableItem({ data: '456' }),
+ new TableItem({ data: 'Links' }),
+ ],
+ [
+ new TableItem({
+ data: 'Repo 2',
+ expandedData: 'Row description',
+ }),
+ new TableItem({ data: 'Date' }),
+ new TableItem({ data: 'Date' }),
+ new TableItem({ data: '123' }),
+ new TableItem({ data: '456' }),
+ new TableItem({ data: 'Links' }),
+ ],
+ [
+ new TableItem({
+ data: 'Repo 3',
+ expandedData: 'Row description',
+ }),
+ new TableItem({ data: 'Date' }),
+ new TableItem({ data: 'Date' }),
+ new TableItem({ data: '123' }),
+ new TableItem({ data: '456' }),
+ new TableItem({ data: 'Links' }),
+ ],
+ ];
+ this.model.header = [
+ new TableHeaderItem({ data: 'Name' }),
+ new TableHeaderItem({ data: 'Created' }),
+ new TableHeaderItem({ data: 'Updated' }),
+ new TableHeaderItem({ data: 'Open Issues' }),
+ new TableHeaderItem({ data: 'Stars' }),
+ new TableHeaderItem({ data: 'Links' }),
+ ];
+ }
+}
diff --git a/src/app/repositories/repositories.module.ts b/src/app/repositories/repositories.module.ts
index f0cd4578a6..d1b3706ece 100644
--- a/src/app/repositories/repositories.module.ts
+++ b/src/app/repositories/repositories.module.ts
@@ -3,12 +3,11 @@ import { CommonModule } from '@angular/common';
import { RepositoriesRoutingModule } from './repositories-routing.module';
import { RepoPageComponent } from './repo-page/repo-page.component';
+import { GridModule, TableModule } from 'carbon-components-angular';
+import { RepoTableComponent } from './repo-table/repo-table.component';
@NgModule({
- declarations: [RepoPageComponent],
- imports: [
- CommonModule,
- RepositoriesRoutingModule
- ]
+ declarations: [RepoPageComponent, RepoTableComponent],
+ imports: [CommonModule, RepositoriesRoutingModule, GridModule, TableModule],
})
-export class RepositoriesModule { }
+export class RepositoriesModule {}
diff --git a/src/assets/scss/carbon-overrides.scss b/src/assets/scss/carbon-overrides.scss
new file mode 100644
index 0000000000..505306dc4d
--- /dev/null
+++ b/src/assets/scss/carbon-overrides.scss
@@ -0,0 +1,27 @@
+// makes the grid fit the entire width of the page
+.cds--grid--full-width {
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+// removes excess padding for nested full width grids
+.cds--grid--full-width .cds--grid--full-width {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+// removes extraneous row margins in the full width grid
+.cds--grid--full-width .cds--row {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+// aligns the tabs to the right
+.landing-page__r2 .cds--tabs__nav {
+ right: 0;
+}
+
+// forces the navigation items to be displayed at all viewport sizes
+.cds--header__nav {
+ display: block;
+}
diff --git a/src/assets/tab-illo.png b/src/assets/tab-illo.png
new file mode 100644
index 0000000000..736f59dd64
Binary files /dev/null and b/src/assets/tab-illo.png differ
diff --git a/src/styles.scss b/src/styles.scss
index ab04f659aa..1215975730 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -5,7 +5,12 @@
// $carbon--theme: $carbon--theme--g10;
@import "~carbon-components/scss/globals/scss/styles";
+@import "./assets/scss/carbon-overrides.scss";
.bx--header__nav {
display: block;
}
+
+$feature-flags: (
+ grid-columns-16: true,
+);
diff --git a/src/typings.d.ts b/src/typings.d.ts
index dc6483d61d..8a49231ba6 100644
--- a/src/typings.d.ts
+++ b/src/typings.d.ts
@@ -1,4 +1 @@
-/* SystemJS module definition */
-declare var module: {
- id: string;
-};
+declare module '@carbon/icons/*';