@@ -1,5 +1,6 @@ | |||||
import { NgModule } from '@angular/core'; | import { NgModule } from '@angular/core'; | ||||
import { RouterModule, Routes } from '@angular/router'; | import { RouterModule, Routes } from '@angular/router'; | ||||
import { EServicesComponent } from './e-services/e-services.component'; | |||||
import { LoginComponent } from './login/login.component'; | import { LoginComponent } from './login/login.component'; | ||||
import { MockComponent } from './mock/mock.component'; | import { MockComponent } from './mock/mock.component'; | ||||
import { RegisterBusinessComponent } from './register-business/register-business.component'; | import { RegisterBusinessComponent } from './register-business/register-business.component'; | ||||
@@ -11,7 +12,10 @@ const routes: Routes = [ | |||||
{ component: MockComponent, path: 'mock' }, | { component: MockComponent, path: 'mock' }, | ||||
{ component: TabsComponent, path: 'tabs', children : [ | { component: TabsComponent, path: 'tabs', children : [ | ||||
{ | { | ||||
path: '', pathMatch: 'full', redirectTo: 'register-business' | |||||
path: '', pathMatch: 'full', redirectTo: 'e-services' | |||||
}, { | |||||
path: 'e-services', | |||||
component: EServicesComponent, | |||||
}, { | }, { | ||||
path: 'register-business', | path: 'register-business', | ||||
component: RegisterBusinessComponent, | component: RegisterBusinessComponent, | ||||
@@ -8,6 +8,7 @@ import { TabsComponent } from './tabs/tabs.component'; | |||||
import { RegisterBusinessComponent } from './register-business/register-business.component'; | import { RegisterBusinessComponent } from './register-business/register-business.component'; | ||||
import { FormsModule } from '@angular/forms'; | import { FormsModule } from '@angular/forms'; | ||||
import { MockComponent } from './mock/mock.component'; | import { MockComponent } from './mock/mock.component'; | ||||
import { EServicesComponent } from './e-services/e-services.component'; | |||||
@NgModule({ | @NgModule({ | ||||
declarations: [ | declarations: [ | ||||
@@ -15,7 +16,8 @@ import { MockComponent } from './mock/mock.component'; | |||||
LoginComponent, | LoginComponent, | ||||
TabsComponent, | TabsComponent, | ||||
RegisterBusinessComponent, | RegisterBusinessComponent, | ||||
MockComponent | |||||
MockComponent, | |||||
EServicesComponent | |||||
], | ], | ||||
imports: [ | imports: [ | ||||
BrowserModule, | BrowserModule, | ||||
@@ -0,0 +1,58 @@ | |||||
<header class="tab-header"> | |||||
<h2> | |||||
E-Services | |||||
</h2> | |||||
</header> | |||||
<header class="page-heading"> | |||||
<h1> Sole Proprietership & Partnership </h1> | |||||
<p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad deleniti, adipisci doloribus maxime cum voluptatibus ea, ratione at odit ab modi nihil ipsam? Odit cum ullam harum. Voluptatem, fugiat vel. </p> | |||||
</header> | |||||
<section class="table"> | |||||
<header> | |||||
<div class="cell"> S/N </div> | |||||
<div class="cell"> E-Services </div> | |||||
<div class="cell"> Fees (S$) </div> | |||||
<div class="cell"> Actions </div> | |||||
</header> | |||||
<ul> | |||||
<li> | |||||
<div class="cell"> 1 </div> | |||||
<div class="cell"> | |||||
<h5> Application for a New Business Name </h5> | |||||
<p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Animi sapiente beatae est nobis voluptatibus. Pariatur, unde enim libero dignissimos quos ipsa sed vitae ex illum rem, eius explicabo fugit nisi! </p> | |||||
</div> | |||||
<div class="cell"> 2000 </div> | |||||
<div class="cell"> | |||||
<button [routerLink]="['/tabs/register-business']"> Apply </button> | |||||
</div> | |||||
</li> | |||||
<li> | |||||
<div class="cell"> 2 </div> | |||||
<div class="cell"> | |||||
<h5> Application to register Person(s) Business </h5> | |||||
<p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Animi sapiente beatae est nobis voluptatibus. Pariatur, unde enim libero dignissimos quos ipsa sed vitae ex illum rem, eius explicabo fugit nisi! </p> | |||||
</div> | |||||
<div class="cell"> 2000 </div> | |||||
<div class="cell"> | |||||
<button [routerLink]="['/tabs/register-business']"> Apply </button> | |||||
</div> | |||||
</li> | |||||
<li> | |||||
<div class="cell"> 2 </div> | |||||
<div class="cell"> | |||||
<h5> Withdrawal of Name Application </h5> | |||||
<p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Animi sapiente beatae est nobis voluptatibus. Pariatur, unde enim libero dignissimos quos ipsa sed vitae ex illum rem, eius explicabo fugit nisi! </p> | |||||
</div> | |||||
<div class="cell"> 2000 </div> | |||||
<div class="cell"> | |||||
<button [routerLink]="['/tabs/register-business']"> Apply </button> | |||||
</div> | |||||
</li> | |||||
</ul> | |||||
</section> |
@@ -0,0 +1,115 @@ | |||||
.page-heading { | |||||
text-align: center; | |||||
line-height: 1.5; | |||||
margin: 3rem auto; | |||||
h1 { | |||||
font-size: 3rem; | |||||
color: var(--dark-grey); | |||||
filter: brightness(80%); | |||||
font-weight: 300; | |||||
letter-spacing: 0.5px; | |||||
margin-bottom: 1.5rem; | |||||
} | |||||
p { | |||||
font-size: 1.4rem; | |||||
color: var(--dark-grey); | |||||
width: 50%; | |||||
margin: 0 auto; | |||||
} | |||||
} | |||||
.table { | |||||
margin: 4rem auto; | |||||
width: calc(100% - 4rem); | |||||
border-radius: 1rem; | |||||
overflow: auto; | |||||
border: 2px solid var(--border-grey); | |||||
min-height: 10rem; | |||||
header { | |||||
background: linear-gradient(90deg, var(--secondary) 0%, var(--primary)); | |||||
color: white; | |||||
font-size: 1.6rem; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: flex-start; | |||||
text-align: center; | |||||
height: 5.5rem; | |||||
font-weight: 300; | |||||
letter-spacing: 0.5px; | |||||
} | |||||
.cell { | |||||
&:nth-child(1) { | |||||
width: 10%; | |||||
} | |||||
&:nth-child(2) { | |||||
text-align: left; | |||||
width: calc(90% - 30rem); | |||||
} | |||||
&:nth-child(3) { | |||||
width: 10rem; | |||||
} | |||||
&:nth-child(4) { | |||||
width: 20rem; | |||||
} | |||||
} | |||||
ul { | |||||
list-style: none; | |||||
} | |||||
li { | |||||
display: flex; | |||||
align-items: flex-start; | |||||
justify-content: flex-start; | |||||
text-align: center; | |||||
padding: 2rem 0; | |||||
&:nth-child(even) { | |||||
background-color: var(--border-grey); | |||||
} | |||||
.cell { | |||||
font-size: 1.4rem; | |||||
color: var(--dark-grey); | |||||
line-height: 1.7; | |||||
&:nth-child(1) { | |||||
margin-top: 1rem; | |||||
font-weight: 500; | |||||
} | |||||
&:nth-child(3) { | |||||
font-size: 1.6rem; | |||||
margin-top: 1rem; | |||||
letter-spacing: 0.5px; | |||||
} | |||||
&:nth-child(4) { | |||||
align-self: center; | |||||
} | |||||
h5 { | |||||
font-weight: 500; | |||||
filter: brightness(80%); | |||||
font-size: 1.6rem; | |||||
} | |||||
button { | |||||
background-color: var(--highlight); | |||||
font-size: 1.5rem; | |||||
letter-spacing: 0.5px; | |||||
color: white; | |||||
border-radius: 4rem; | |||||
height: 4rem; | |||||
width: 90%; | |||||
display: block; | |||||
margin: 0 auto; | |||||
border: 0px; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; | |||||
import { EServicesComponent } from './e-services.component'; | |||||
describe('EServicesComponent', () => { | |||||
let component: EServicesComponent; | |||||
let fixture: ComponentFixture<EServicesComponent>; | |||||
beforeEach(async () => { | |||||
await TestBed.configureTestingModule({ | |||||
declarations: [ EServicesComponent ] | |||||
}) | |||||
.compileComponents(); | |||||
}); | |||||
beforeEach(() => { | |||||
fixture = TestBed.createComponent(EServicesComponent); | |||||
component = fixture.componentInstance; | |||||
fixture.detectChanges(); | |||||
}); | |||||
it('should create', () => { | |||||
expect(component).toBeTruthy(); | |||||
}); | |||||
}); |
@@ -0,0 +1,15 @@ | |||||
import { Component, OnInit } from '@angular/core'; | |||||
@Component({ | |||||
selector: 'app-e-services', | |||||
templateUrl: './e-services.component.html', | |||||
styleUrls: ['./e-services.component.scss'] | |||||
}) | |||||
export class EServicesComponent implements OnInit { | |||||
constructor() { } | |||||
ngOnInit(): void { | |||||
} | |||||
} |
@@ -1,4 +1,4 @@ | |||||
<header> | |||||
<header class="tab-header"> | |||||
<h2> | <h2> | ||||
Business Name Application | Business Name Application | ||||
</h2> | </h2> | ||||
@@ -1,26 +1,3 @@ | |||||
header { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: flex-start; | |||||
padding: 0 2rem; | |||||
&::after { | |||||
content: ''; | |||||
display: block; | |||||
flex-grow: 1; | |||||
height: 2px; | |||||
background-color: var(--border-grey); | |||||
opacity: 0.7; | |||||
margin-left: 2rem; | |||||
} | |||||
h2 { | |||||
font-size: 2.4rem; | |||||
color: var(--primary); | |||||
font-weight: 400; | |||||
} | |||||
} | |||||
.search-input-container { | .search-input-container { | ||||
width: 60%; | width: 60%; | ||||
margin: 0 auto; | margin: 0 auto; | ||||
@@ -12,7 +12,7 @@ interface Plan { | |||||
styleUrls: ['./register-business.component.scss'] | styleUrls: ['./register-business.component.scss'] | ||||
}) | }) | ||||
export class RegisterBusinessComponent implements OnInit { | export class RegisterBusinessComponent implements OnInit { | ||||
formState: 'CHECK_NAME' | 'INIT_REGISTER' | 'CONFIRM_INIT' | 'REGISTER_FORM' | 'SELECT_PLAN' | 'COMPLETE_PURCHASE' | undefined = 'SELECT_PLAN'; | |||||
formState: 'CHECK_NAME' | 'INIT_REGISTER' | 'CONFIRM_INIT' | 'REGISTER_FORM' | 'SELECT_PLAN' | 'COMPLETE_PURCHASE' | undefined = 'CHECK_NAME'; | |||||
nameToCheck: string = 'JK Enterprises ACRA Ltd'; | nameToCheck: string = 'JK Enterprises ACRA Ltd'; | ||||
isAppealing: boolean = false; | isAppealing: boolean = false; | ||||
agreeToReserve: boolean = false; | agreeToReserve: boolean = false; | ||||
@@ -2,6 +2,10 @@ | |||||
<figure class="logo"> | <figure class="logo"> | ||||
<img src="assets/icons/logo.svg" alt="logo image"> | <img src="assets/icons/logo.svg" alt="logo image"> | ||||
</figure> | </figure> | ||||
<nav> | |||||
<a [routerLink]="['/tabs/e-services']"> E-Services </a> | |||||
</nav> | |||||
<div class="search-input"> | <div class="search-input"> | ||||
<input type="text" placeholder="Search for Business Entities"> | <input type="text" placeholder="Search for Business Entities"> | ||||
@@ -16,21 +20,6 @@ | |||||
</section> | </section> | ||||
<section class="tabs"> | |||||
<button class="active"> | |||||
<img src="assets/icons/home.svg" alt="home icon"> | |||||
</button> | |||||
<button> | |||||
<img src="assets/icons/dashboard.svg" alt="dashboard icon"> | |||||
</button> | |||||
<button> | |||||
<img src="assets/icons/tiles-dashboard.svg" alt="tiles dashboard icon"> | |||||
</button> | |||||
<button> | |||||
<img src="assets/icons/settings.svg" alt="settings icon"> | |||||
</button> | |||||
</section> | |||||
<div class="page"> | <div class="page"> | ||||
<router-outlet></router-outlet> | <router-outlet></router-outlet> | ||||
</div> | </div> |
@@ -17,6 +17,23 @@ $header-height: 10rem; | |||||
} | } | ||||
} | } | ||||
nav { | |||||
margin: 0 2rem; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: flex-start; | |||||
a { | |||||
font-size: 1.6rem; | |||||
letter-spacing: 0.5px; | |||||
color: var(--dark-grey); | |||||
&:hover { | |||||
text-decoration: underline; | |||||
} | |||||
} | |||||
} | |||||
.search-input { | .search-input { | ||||
position: relative; | position: relative; | ||||
margin-left: auto; | margin-left: auto; | ||||
@@ -85,47 +102,9 @@ $header-height: 10rem; | |||||
} | } | ||||
} | } | ||||
$tabs-width: 7rem; | |||||
$tabs-offset: 20px; | |||||
.tabs { | |||||
position: fixed; | |||||
height: calc(100% - #{$header-height} - 20px); | |||||
top: $header-height; | |||||
left: $tabs-offset; | |||||
background-color: var(--primary); | |||||
border-radius: $tabs-width; | |||||
width: $tabs-width; | |||||
overflow: hidden; | |||||
display: flex; | |||||
align-items: center; | |||||
flex-direction: column; | |||||
button { | |||||
display: block; | |||||
width: 100%; | |||||
background-color: transparent; | |||||
border: 0px; | |||||
margin: 2.5rem 0; | |||||
&:last-child { | |||||
margin-top: auto; | |||||
} | |||||
img { | |||||
width: 1.8rem; | |||||
} | |||||
&.active { | |||||
img { | |||||
opacity: 0.6; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.page { | .page { | ||||
height: calc(100vh - #{$header-height}); | height: calc(100vh - #{$header-height}); | ||||
margin: 0 auto; | |||||
overflow: auto; | overflow: auto; | ||||
margin-left: calc(#{$tabs-width} + #{$tabs-offset}); | |||||
width: calc(100% - 4rem); | |||||
} | } |
@@ -0,0 +1 @@ | |||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512"><title>ionicons-v5-o</title><line x1="160" y1="144" x2="448" y2="144" style="fill:none;stroke:#f0ead1;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><line x1="160" y1="256" x2="448" y2="256" style="fill:none;stroke:#f0ead1;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><line x1="160" y1="368" x2="448" y2="368" style="fill:none;stroke:#f0ead1;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><circle cx="80" cy="144" r="16" style="fill:none;stroke:#f0ead1;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><circle cx="80" cy="256" r="16" style="fill:none;stroke:#f0ead1;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><circle cx="80" cy="368" r="16" style="fill:none;stroke:#f0ead1;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/></svg> |
@@ -23,4 +23,28 @@ button, a { | |||||
--border-grey: #e8e8e8; | --border-grey: #e8e8e8; | ||||
--error: #d07a7a; | --error: #d07a7a; | ||||
--success: #88b749; | --success: #88b749; | ||||
} | |||||
.tab-header { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: flex-start; | |||||
padding: 0 2rem; | |||||
&::after { | |||||
content: ''; | |||||
display: block; | |||||
flex-grow: 1; | |||||
height: 2px; | |||||
background-color: var(--border-grey); | |||||
opacity: 0.7; | |||||
margin-left: 2rem; | |||||
} | |||||
h2 { | |||||
font-size: 2.4rem; | |||||
color: var(--primary); | |||||
font-weight: 400; | |||||
} | |||||
} | } |