diff --git a/angular.json b/angular.json
index ab333cf..5cc0115 100644
--- a/angular.json
+++ b/angular.json
@@ -31,7 +31,8 @@
"src/assets"
],
"styles": [
- "src/styles.scss"
+ "src/styles.scss",
+ "src/themes/ddt-theme.scss"
],
"scripts": []
},
diff --git a/package.json b/package.json
index 2c758d3..d987758 100644
--- a/package.json
+++ b/package.json
@@ -11,10 +11,13 @@
"private": true,
"dependencies": {
"@angular/animations": "~13.3.0",
+ "@angular/cdk": "^13.3.8",
"@angular/common": "~13.3.0",
"@angular/compiler": "~13.3.0",
"@angular/core": "~13.3.0",
+ "@angular/flex-layout": "^13.0.0-beta.38",
"@angular/forms": "~13.3.0",
+ "@angular/material": "^13.3.8",
"@angular/platform-browser": "~13.3.0",
"@angular/platform-browser-dynamic": "~13.3.0",
"@angular/router": "~13.3.0",
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
deleted file mode 100644
index 907c131..0000000
--- a/src/app/app-routing.module.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-
-const routes: Routes = [];
-
-@NgModule({
- imports: [RouterModule.forRoot(routes)],
- exports: [RouterModule]
-})
-export class DdtAppRoutingModule { }
diff --git a/src/app/app.component.html b/src/app/app.component.html
deleted file mode 100644
index e11ca59..0000000
--- a/src/app/app.component.html
+++ /dev/null
@@ -1,484 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ title }} app is running!
-
-
-
-
-
-
-
Resources
-
Here are some links to help you get started:
-
-
-
-
-
Next Steps
-
What do you want to do next with your app?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ng generate component xyz
-
ng add @angular/material
-
ng add @angular/pwa
-
ng add _____
-
ng test
-
ng build
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
deleted file mode 100644
index b1c6c96..0000000
--- a/src/app/app.module.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-
-import { AppRoutingModule } from './app-routing.module';
-import { AppComponent } from './app.component';
-
-@NgModule({
- declarations: [
- AppComponent
- ],
- imports: [
- BrowserModule,
- AppRoutingModule
- ],
- providers: [],
- bootstrap: [AppComponent]
-})
-export class AppModule { }
diff --git a/src/app/common/common.module.ts b/src/app/common/common.module.ts
new file mode 100644
index 0000000..659838e
--- /dev/null
+++ b/src/app/common/common.module.ts
@@ -0,0 +1,127 @@
+import { DragDropModule } from '@angular/cdk/drag-drop';
+import { ScrollingModule } from '@angular/cdk/scrolling';
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+import { MatAutocompleteModule } from '@angular/material/autocomplete';
+import { MatBadgeModule } from '@angular/material/badge';
+import { MatButtonModule } from '@angular/material/button';
+import { MatButtonToggleModule } from '@angular/material/button-toggle';
+import { MatCardModule } from '@angular/material/card';
+import { MatCheckboxModule } from '@angular/material/checkbox';
+import { MatChipsModule } from '@angular/material/chips';
+import { MatNativeDateModule } from '@angular/material/core';
+import { MatDatepickerModule } from '@angular/material/datepicker';
+import { MatDialogModule } from '@angular/material/dialog';
+import { MatDividerModule } from '@angular/material/divider';
+import { MatExpansionModule } from '@angular/material/expansion';
+import { MatIconModule } from '@angular/material/icon';
+import { MatInputModule } from '@angular/material/input';
+import { MatListModule } from '@angular/material/list';
+import { MatMenuModule } from '@angular/material/menu';
+import { MatPaginatorModule } from '@angular/material/paginator';
+import { MatProgressBarModule } from '@angular/material/progress-bar';
+import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
+import { MatRadioModule } from '@angular/material/radio';
+import { MatSelectModule } from '@angular/material/select';
+import { MatSidenavModule } from '@angular/material/sidenav';
+import { MatSlideToggleModule } from '@angular/material/slide-toggle';
+import { MatSnackBarModule } from '@angular/material/snack-bar';
+import { MatSortModule } from '@angular/material/sort';
+import { MatStepperModule } from '@angular/material/stepper';
+import { MatTableModule } from '@angular/material/table';
+import { MatTabsModule } from '@angular/material/tabs';
+import { MatToolbarModule } from '@angular/material/toolbar';
+import { MatTooltipModule } from '@angular/material/tooltip';
+import { RouterModule } from '@angular/router';
+import { FlexLayoutModule } from '@angular/flex-layout';
+import { HeaderComponent } from './component/header/header.component';
+
+
+
+@NgModule({
+ declarations: [
+ HeaderComponent
+ ],
+ imports: [
+ CommonModule,
+ MatBadgeModule,
+ MatSnackBarModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatProgressSpinnerModule,
+ MatCardModule,
+ MatButtonModule,
+ MatDividerModule,
+ MatSidenavModule,
+ MatListModule,
+ MatAutocompleteModule,
+ MatToolbarModule,
+ MatTooltipModule,
+ MatMenuModule,
+ MatDialogModule,
+ MatTableModule,
+ MatPaginatorModule,
+ MatSortModule,
+ MatCheckboxModule,
+ MatStepperModule,
+ MatDatepickerModule,
+ MatButtonToggleModule,
+ // MatMomentDateModule,
+ MatProgressBarModule,
+ MatExpansionModule,
+ MatRadioModule,
+ MatTabsModule,
+ ScrollingModule,
+ MatSlideToggleModule,
+ DragDropModule,
+ MatChipsModule,
+ MatNativeDateModule,
+ FlexLayoutModule,
+ RouterModule,
+ FormsModule,
+ ReactiveFormsModule,
+ ],
+ exports: [
+ MatBadgeModule,
+ MatSnackBarModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatProgressSpinnerModule,
+ MatCardModule,
+ MatButtonModule,
+ MatDividerModule,
+ MatSidenavModule,
+ MatListModule,
+ MatAutocompleteModule,
+ MatToolbarModule,
+ MatTooltipModule,
+ MatMenuModule,
+ MatDialogModule,
+ MatTableModule,
+ MatPaginatorModule,
+ MatSortModule,
+ MatCheckboxModule,
+ MatStepperModule,
+ MatDatepickerModule,
+ MatButtonToggleModule,
+ // MatMomentDateModule,
+ MatProgressBarModule,
+ MatExpansionModule,
+ MatRadioModule,
+ MatTabsModule,
+ ScrollingModule,
+ MatSlideToggleModule,
+ DragDropModule,
+ MatChipsModule,
+ MatNativeDateModule,
+ FlexLayoutModule,
+ RouterModule,
+ FormsModule,
+ ReactiveFormsModule,
+ HeaderComponent
+ ]
+})
+export class DdtCommonModule { }
diff --git a/src/app/common/component/header/header.component.html b/src/app/common/component/header/header.component.html
new file mode 100644
index 0000000..78097a3
--- /dev/null
+++ b/src/app/common/component/header/header.component.html
@@ -0,0 +1,13 @@
+
+
+ My App
+
+
+
+
diff --git a/src/app/app.component.scss b/src/app/common/component/header/header.component.scss
similarity index 100%
rename from src/app/app.component.scss
rename to src/app/common/component/header/header.component.scss
diff --git a/src/app/common/component/header/header.component.spec.ts b/src/app/common/component/header/header.component.spec.ts
new file mode 100644
index 0000000..381e8e8
--- /dev/null
+++ b/src/app/common/component/header/header.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { HeaderComponent } from './header.component';
+
+describe('HeaderComponent', () => {
+ let component: HeaderComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ HeaderComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(HeaderComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/common/component/header/header.component.ts b/src/app/common/component/header/header.component.ts
new file mode 100644
index 0000000..b5b8246
--- /dev/null
+++ b/src/app/common/component/header/header.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'ddt-header',
+ templateUrl: './header.component.html',
+ styleUrls: ['./header.component.scss']
+})
+export class HeaderComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/ddt-app-routing.module.ts b/src/app/ddt-app-routing.module.ts
new file mode 100644
index 0000000..993f1d1
--- /dev/null
+++ b/src/app/ddt-app-routing.module.ts
@@ -0,0 +1,14 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+
+const routes: Routes = [
+ { path: '', redirectTo: '/onboard/startup', pathMatch:'full' },
+ { path: 'onboard', loadChildren: () => import('src/app/onboard/onboard.module').then(m => m.OnboardModule) },
+ { path: 'home', loadChildren: () => import('src/app/home/home.module').then(m => m.HomeModule) }
+];
+
+@NgModule({
+ imports: [RouterModule.forRoot(routes)],
+ exports: [RouterModule]
+})
+export class DdtAppRoutingModule { }
diff --git a/src/app/ddt-app.component.html b/src/app/ddt-app.component.html
new file mode 100644
index 0000000..85b68ca
--- /dev/null
+++ b/src/app/ddt-app.component.html
@@ -0,0 +1,2 @@
+
+
diff --git a/src/app/ddt-app.component.scss b/src/app/ddt-app.component.scss
new file mode 100644
index 0000000..9f9fa22
--- /dev/null
+++ b/src/app/ddt-app.component.scss
@@ -0,0 +1,9 @@
+.root-container {
+ flex-direction: column;
+ box-sizing: border-box;
+ display: flex;
+ flex: 1;
+ position: relative;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
diff --git a/src/app/app.component.spec.ts b/src/app/ddt-app.component.spec.ts
similarity index 76%
rename from src/app/app.component.spec.ts
rename to src/app/ddt-app.component.spec.ts
index 35a244d..d3f2fc7 100644
--- a/src/app/app.component.spec.ts
+++ b/src/app/ddt-app.component.spec.ts
@@ -1,6 +1,6 @@
import { TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
-import { AppComponent } from './app.component';
+import { DdtAppComponent } from './ddt-app.component';
describe('AppComponent', () => {
beforeEach(async () => {
@@ -9,25 +9,25 @@ describe('AppComponent', () => {
RouterTestingModule
],
declarations: [
- AppComponent
+ DdtAppComponent
],
}).compileComponents();
});
it('should create the app', () => {
- const fixture = TestBed.createComponent(AppComponent);
+ const fixture = TestBed.createComponent(DdtAppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'DevDesignerTools'`, () => {
- const fixture = TestBed.createComponent(AppComponent);
+ const fixture = TestBed.createComponent(DdtAppComponent);
const app = fixture.componentInstance;
expect(app.title).toEqual('DevDesignerTools');
});
it('should render title', () => {
- const fixture = TestBed.createComponent(AppComponent);
+ const fixture = TestBed.createComponent(DdtAppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement;
expect(compiled.querySelector('.content span')?.textContent).toContain('DevDesignerTools app is running!');
diff --git a/src/app/app.component.ts b/src/app/ddt-app.component.ts
similarity index 50%
rename from src/app/app.component.ts
rename to src/app/ddt-app.component.ts
index 51cf776..3099490 100644
--- a/src/app/app.component.ts
+++ b/src/app/ddt-app.component.ts
@@ -2,9 +2,9 @@ import { Component } from '@angular/core';
@Component({
selector: 'ddt-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.scss']
+ templateUrl: './ddt-app.component.html',
+ styleUrls: ['./ddt-app.component.scss']
})
-export class AppComponent {
+export class DdtAppComponent {
title = 'DevDesignerTools';
}
diff --git a/src/app/ddt-app.module.ts b/src/app/ddt-app.module.ts
new file mode 100644
index 0000000..d86db16
--- /dev/null
+++ b/src/app/ddt-app.module.ts
@@ -0,0 +1,24 @@
+import { NgModule } from '@angular/core';
+import { BrowserModule } from '@angular/platform-browser';
+
+import { DdtAppRoutingModule } from './ddt-app-routing.module';
+import { DdtAppComponent } from './ddt-app.component';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { SharedModule } from './shared/shared.module';
+import { HttpClientModule } from '@angular/common/http';
+
+@NgModule({
+ declarations: [
+ DdtAppComponent
+ ],
+ imports: [
+ BrowserModule,
+ DdtAppRoutingModule,
+ BrowserAnimationsModule,
+ HttpClientModule,
+ SharedModule
+ ],
+ providers: [],
+ bootstrap: [DdtAppComponent]
+})
+export class DdtAppModule { }
diff --git a/src/app/home/component/dashboard/dashboard.component.html b/src/app/home/component/dashboard/dashboard.component.html
new file mode 100644
index 0000000..df9e4bf
--- /dev/null
+++ b/src/app/home/component/dashboard/dashboard.component.html
@@ -0,0 +1,24 @@
+
+
Dashboard
+
+
+
+
+
+ {{card.title}}
+
+
+
+
+
+
+
+
+ Card Content Here
+
+
+
+
+
diff --git a/src/app/home/component/dashboard/dashboard.component.scss b/src/app/home/component/dashboard/dashboard.component.scss
new file mode 100644
index 0000000..49a8146
--- /dev/null
+++ b/src/app/home/component/dashboard/dashboard.component.scss
@@ -0,0 +1,21 @@
+.grid-container {
+ margin: 20px;
+}
+
+.dashboard-card {
+ position: absolute;
+ top: 15px;
+ left: 15px;
+ right: 15px;
+ bottom: 15px;
+}
+
+.more-button {
+ position: absolute;
+ top: 5px;
+ right: 10px;
+}
+
+.dashboard-card-content {
+ text-align: center;
+}
diff --git a/src/app/home/component/dashboard/dashboard.component.spec.ts b/src/app/home/component/dashboard/dashboard.component.spec.ts
new file mode 100644
index 0000000..e7a80c6
--- /dev/null
+++ b/src/app/home/component/dashboard/dashboard.component.spec.ts
@@ -0,0 +1,40 @@
+import { LayoutModule } from '@angular/cdk/layout';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+import { MatButtonModule } from '@angular/material/button';
+import { MatCardModule } from '@angular/material/card';
+import { MatGridListModule } from '@angular/material/grid-list';
+import { MatIconModule } from '@angular/material/icon';
+import { MatMenuModule } from '@angular/material/menu';
+
+import { DashboardComponent } from './dashboard.component';
+
+describe('DashboardComponent', () => {
+ let component: DashboardComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [DashboardComponent],
+ imports: [
+ NoopAnimationsModule,
+ LayoutModule,
+ MatButtonModule,
+ MatCardModule,
+ MatGridListModule,
+ MatIconModule,
+ MatMenuModule,
+ ]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DashboardComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should compile', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/home/component/dashboard/dashboard.component.ts b/src/app/home/component/dashboard/dashboard.component.ts
new file mode 100644
index 0000000..820fb88
--- /dev/null
+++ b/src/app/home/component/dashboard/dashboard.component.ts
@@ -0,0 +1,33 @@
+import { Component } from '@angular/core';
+import { map } from 'rxjs/operators';
+import { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';
+
+@Component({
+ selector: 'ddt-dashboard',
+ templateUrl: './dashboard.component.html',
+ styleUrls: ['./dashboard.component.scss']
+})
+export class DashboardComponent {
+ /** Based on the screen size, switch from standard to one column per row */
+ cards = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
+ map(({ matches }) => {
+ if (matches) {
+ return [
+ { title: 'Card 1', cols: 1, rows: 1 },
+ { title: 'Card 2', cols: 1, rows: 1 },
+ { title: 'Card 3', cols: 1, rows: 1 },
+ { title: 'Card 4', cols: 1, rows: 1 }
+ ];
+ }
+
+ return [
+ { title: 'Card 1', cols: 2, rows: 1 },
+ { title: 'Card 2', cols: 1, rows: 1 },
+ { title: 'Card 3', cols: 1, rows: 2 },
+ { title: 'Card 4', cols: 1, rows: 1 }
+ ];
+ })
+ );
+
+ constructor(private breakpointObserver: BreakpointObserver) {}
+}
diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts
new file mode 100644
index 0000000..e9e87ee
--- /dev/null
+++ b/src/app/home/home-routing.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { DashboardComponent } from './component/dashboard/dashboard.component';
+
+const routes: Routes = [
+ {path:'', component: DashboardComponent}
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule]
+})
+export class HomeRoutingModule { }
diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts
new file mode 100644
index 0000000..ef80ce2
--- /dev/null
+++ b/src/app/home/home.module.ts
@@ -0,0 +1,27 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import { HomeRoutingModule } from './home-routing.module';
+import { DashboardComponent } from './component/dashboard/dashboard.component';
+import { MatGridListModule } from '@angular/material/grid-list';
+import { MatCardModule } from '@angular/material/card';
+import { MatMenuModule } from '@angular/material/menu';
+import { MatIconModule } from '@angular/material/icon';
+import { MatButtonModule } from '@angular/material/button';
+import { LayoutModule } from '@angular/cdk/layout';
+
+
+@NgModule({
+ declarations: [DashboardComponent],
+ imports: [
+ CommonModule,
+ HomeRoutingModule,
+ MatGridListModule,
+ MatCardModule,
+ MatMenuModule,
+ MatIconModule,
+ MatButtonModule,
+ LayoutModule
+ ]
+})
+export class HomeModule { }
diff --git a/src/app/onboard/components/boarding-root/boarding-root.component.html b/src/app/onboard/components/boarding-root/boarding-root.component.html
new file mode 100644
index 0000000..0680b43
--- /dev/null
+++ b/src/app/onboard/components/boarding-root/boarding-root.component.html
@@ -0,0 +1 @@
+
diff --git a/src/app/onboard/components/boarding-root/boarding-root.component.scss b/src/app/onboard/components/boarding-root/boarding-root.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/onboard/components/boarding-root/boarding-root.component.spec.ts b/src/app/onboard/components/boarding-root/boarding-root.component.spec.ts
new file mode 100644
index 0000000..b60a471
--- /dev/null
+++ b/src/app/onboard/components/boarding-root/boarding-root.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { BoardingRootComponent } from './boarding-root.component';
+
+describe('BoardingRootComponent', () => {
+ let component: BoardingRootComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ BoardingRootComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(BoardingRootComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/onboard/components/boarding-root/boarding-root.component.ts b/src/app/onboard/components/boarding-root/boarding-root.component.ts
new file mode 100644
index 0000000..6a2725b
--- /dev/null
+++ b/src/app/onboard/components/boarding-root/boarding-root.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'ddt-boarding-root',
+ templateUrl: './boarding-root.component.html',
+ styleUrls: ['./boarding-root.component.scss']
+})
+export class BoardingRootComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/onboard/components/getting-started/getting-started.component.html b/src/app/onboard/components/getting-started/getting-started.component.html
new file mode 100644
index 0000000..842470a
--- /dev/null
+++ b/src/app/onboard/components/getting-started/getting-started.component.html
@@ -0,0 +1 @@
+getting-started works!
diff --git a/src/app/onboard/components/getting-started/getting-started.component.scss b/src/app/onboard/components/getting-started/getting-started.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/onboard/components/getting-started/getting-started.component.spec.ts b/src/app/onboard/components/getting-started/getting-started.component.spec.ts
new file mode 100644
index 0000000..8745475
--- /dev/null
+++ b/src/app/onboard/components/getting-started/getting-started.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { GettingStartedComponent } from './getting-started.component';
+
+describe('GettingStartedComponent', () => {
+ let component: GettingStartedComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ GettingStartedComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(GettingStartedComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/onboard/components/getting-started/getting-started.component.ts b/src/app/onboard/components/getting-started/getting-started.component.ts
new file mode 100644
index 0000000..c620f79
--- /dev/null
+++ b/src/app/onboard/components/getting-started/getting-started.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'ddt-getting-started',
+ templateUrl: './getting-started.component.html',
+ styleUrls: ['./getting-started.component.scss']
+})
+export class GettingStartedComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/onboard/components/startup/startup.component.html b/src/app/onboard/components/startup/startup.component.html
new file mode 100644
index 0000000..0fa54d2
--- /dev/null
+++ b/src/app/onboard/components/startup/startup.component.html
@@ -0,0 +1,28 @@
+
+
+
![logo](../assets/images/app-logo.png)
+
+
+
+
periphex
+
Dev Designer Tools
+
Reusable tested tools to build robust
+ Angular applications in quick time
+
+
+
Star
+
+
+
+
+
![logo](../assets/images/app-logo.png)
+
+
+
diff --git a/src/app/onboard/components/startup/startup.component.scss b/src/app/onboard/components/startup/startup.component.scss
new file mode 100644
index 0000000..fc8ee38
--- /dev/null
+++ b/src/app/onboard/components/startup/startup.component.scss
@@ -0,0 +1,8 @@
+.app-logo {
+ &-mobile {
+ width: 190px;
+ }
+ &-desktop {
+ width: 250px;
+ }
+}
diff --git a/src/app/onboard/components/startup/startup.component.spec.ts b/src/app/onboard/components/startup/startup.component.spec.ts
new file mode 100644
index 0000000..0bd68a0
--- /dev/null
+++ b/src/app/onboard/components/startup/startup.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { StartupComponent } from './startup.component';
+
+describe('StartupComponent', () => {
+ let component: StartupComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ StartupComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(StartupComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/onboard/components/startup/startup.component.ts b/src/app/onboard/components/startup/startup.component.ts
new file mode 100644
index 0000000..2713671
--- /dev/null
+++ b/src/app/onboard/components/startup/startup.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'ddt-startup',
+ templateUrl: './startup.component.html',
+ styleUrls: ['./startup.component.scss']
+})
+export class StartupComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/onboard/onboard-routing.module.ts b/src/app/onboard/onboard-routing.module.ts
new file mode 100644
index 0000000..1e664a2
--- /dev/null
+++ b/src/app/onboard/onboard-routing.module.ts
@@ -0,0 +1,18 @@
+import { BoardingRootComponent } from './components/boarding-root/boarding-root.component';
+import { StartupComponent } from './components/startup/startup.component';
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+
+const routes: Routes = [
+ {
+ path: '', component: BoardingRootComponent, children: [
+ { path: 'startup', component: StartupComponent }
+ ]
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule]
+})
+export class OnboardRoutingModule { }
diff --git a/src/app/onboard/onboard.module.ts b/src/app/onboard/onboard.module.ts
new file mode 100644
index 0000000..8aa8e42
--- /dev/null
+++ b/src/app/onboard/onboard.module.ts
@@ -0,0 +1,23 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import { OnboardRoutingModule } from './onboard-routing.module';
+import { GettingStartedComponent } from './components/getting-started/getting-started.component';
+import { StartupComponent } from './components/startup/startup.component';
+import { SharedModule } from '../shared/shared.module';
+import { BoardingRootComponent } from './components/boarding-root/boarding-root.component';
+
+
+@NgModule({
+ declarations: [
+ GettingStartedComponent,
+ StartupComponent,
+ BoardingRootComponent
+ ],
+ imports: [
+ CommonModule,
+ OnboardRoutingModule,
+ SharedModule
+ ]
+})
+export class OnboardModule { }
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
new file mode 100644
index 0000000..b0bc04c
--- /dev/null
+++ b/src/app/shared/shared.module.ts
@@ -0,0 +1,24 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DdtCommonModule } from '../common/common.module';
+import { MatIconRegistry } from '@angular/material/icon';
+import { DomSanitizer } from '@angular/platform-browser';
+
+
+
+@NgModule({
+ declarations: [],
+ imports: [
+ CommonModule,
+ DdtCommonModule
+ ],
+ exports: [
+ DdtCommonModule
+ ]
+})
+export class SharedModule {
+ constructor(iconReg: MatIconRegistry, sanitize: DomSanitizer) {
+ // iconReg.addSvgIconSet(sanitize.bypassSecurityTrustResourceUrl('../../assets/icons/mdi.svg'));
+ iconReg.addSvgIcon('ddt-logo', sanitize.bypassSecurityTrustResourceUrl('../../assets/icons/svg/logo.svg'));
+ }
+ }
diff --git a/src/assets/icons/svg/logo.svg b/src/assets/icons/svg/logo.svg
new file mode 100644
index 0000000..f64bc43
--- /dev/null
+++ b/src/assets/icons/svg/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/app-logo.png b/src/assets/images/app-logo.png
new file mode 100644
index 0000000..9f04c2a
Binary files /dev/null and b/src/assets/images/app-logo.png differ
diff --git a/src/index.html b/src/index.html
index ead4177..0459a91 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,13 +1,22 @@
+
- DevDesignerTools
+ Dev Designers Tools
+
+
+
+
+
-
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
index c7b673c..664b26a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,12 +1,12 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { AppModule } from './app/app.module';
+import { DdtAppModule } from './app/ddt-app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
-platformBrowserDynamic().bootstrapModule(AppModule)
+platformBrowserDynamic().bootstrapModule(DdtAppModule)
.catch(err => console.error(err));
diff --git a/src/styles.scss b/src/styles.scss
index 90d4ee0..e69de29 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -1 +0,0 @@
-/* You can add global styles to this file, and also import other style files */
diff --git a/src/themes/ddt-theme.scss b/src/themes/ddt-theme.scss
new file mode 100644
index 0000000..f312415
--- /dev/null
+++ b/src/themes/ddt-theme.scss
@@ -0,0 +1,77 @@
+
+// Custom Theming for Angular Material
+// For more information: https://material.angular.io/guide/theming
+@use '@angular/material' as mat;
+// Plus imports for other components in your app.
+@import "./variables/spacemanager.scss";
+@import "./variables/utils.scss";
+@import "./variables/colors.scss";
+@import url('https://fonts.googleapis.com/css2?family=Dosis:wght@300;400;500;700&display=swap');
+// Include the common styles for Angular Material. We include this here so that you only
+// have to load a single css file for Angular Material in your app.
+// Be sure that you only ever include this mixin once!
+$typography-configuration: mat-typography-config(
+ $font-family: "'Dosis', sans-serif",
+ $display-4: mat.define-typography-level(112px, 112px, 300, $letter-spacing: -0.05em),
+ $display-3: mat.define-typography-level(56px, 56px, 400, $letter-spacing: -0.02em),
+ $display-2: mat.define-typography-level(45px, 48px, 400, $letter-spacing: -0.005em),
+ $display-1: mat.define-typography-level(34px, 40px, 400),
+ $headline: mat.define-typography-level(24px, 32px, 400),
+ $title: mat.define-typography-level(24px, 28px, 500),
+ $subheading-2: mat.define-typography-level(24px, 28px, 400),
+ $subheading-1: mat.define-typography-level(20px, 24px, 400),
+ $body-2: mat.define-typography-level(20px, 24px, 500),
+ $body-1: mat.define-typography-level(20px, 22px, 400),
+ $caption: mat.define-typography-level(18px, 22px, 400),
+ $button: mat.define-typography-level(14px, 22px, 500),
+ $input: mat.define-typography-level(12px, 1.125, 400)
+);
+
+@include angular-material-typography($typography-configuration);
+@include mat.core($typography-configuration);
+
+@mixin mat-core($typography-config: null) {
+ @include angular-material-typography($typography-config);
+ @include mat-ripple();
+ @include cdk-a11y();
+ @include cdk-overlay();
+ @include cdk-text-field();
+}
+// Define the palettes for your theme using the Material Design palettes available in palette.scss
+// (imported above). For each palette, you can optionally specify a default, lighter, and darker
+// hue. Available color palettes: https://material.io/design/color/
+$DevDesignerTools-primary: mat.define-palette(mat.$indigo-palette);
+$DevDesignerTools-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);
+
+// The warn palette is optional (defaults to red).
+$DevDesignerTools-warn: mat.define-palette(mat.$red-palette);
+
+$dev-designer-tool-config: mat.define-typography-config(
+ $font-family: "'Dosis', sans-serif"
+);
+
+// Create the theme object. A theme consists of configurations for individual
+// theming systems such as "color" or "typography".
+$DevDesignerTools-theme: mat.define-dark-theme((
+ color: (
+ primary: $DevDesignerTools-primary,
+ accent: $DevDesignerTools-accent,
+ warn: $DevDesignerTools-warn,
+ ),
+ typography: $dev-designer-tool-config,
+));
+
+
+
+// Include theme styles for core and each component used in your app.
+// Alternatively, you can import and @include the theme mixins for each component
+// that you are using.
+@include mat.all-component-themes($DevDesignerTools-theme);
+
+/* You can add global styles to this file, and also import other style files */
+
+html, body { height: 100%; background-color: rgb(238, 238, 238); }
+body { margin: 0; font-family: 'Dosis', sans-serif; }
+.spacer {
+ flex: 1 1 auto;
+}
diff --git a/src/themes/variables/_animation.scss b/src/themes/variables/_animation.scss
new file mode 100644
index 0000000..a58f71d
--- /dev/null
+++ b/src/themes/variables/_animation.scss
@@ -0,0 +1,156 @@
+.animation-slide-in-up {
+ @include animation(0, 0.5s, animation-slide-in-up, ease);
+}
+
+.animation-slide-in-down {
+ @include animation(0, 0.5s, animation-slide-in-down, ease);
+}
+
+.animation-slide-in-right {
+ @include animation(0, 0.5s, animation-slide-in-right, ease);
+}
+
+.animation-slide-in-left {
+ @include animation(0, 0.5s, animation-slide-in-left, ease);
+}
+
+.animation-slide-out-up {
+ @include animation(0, 0.5s, animation-slide-out-up, ease);
+}
+
+.animation-slide-out-down {
+ @include animation(0, 0.5s, animation-slide-out-down, ease);
+}
+
+.animation-slide-out-right {
+ @include animation(0, 0.5s, animation-slide-out-right, ease);
+}
+
+.animation-slide-out-left {
+ @include animation(0, 0.5s, animation-slide-out-left, ease);
+}
+
+// -- Slide Animations -- //
+
+// Slide Out Top from Center
+@include keyframe(animation-slide-out-up) {
+ 0% {
+ transform: translate(0, 0);
+ }
+
+ 100% {
+ transform: translate(0, -100%);
+ }
+}
+
+@include keyframe(animation-slide-out-down) {
+ 0% {
+ transform: translate(0, 0);
+ }
+
+ 100% {
+ transform: translate(0, 100%);
+ }
+}
+
+// Slide Out Left from Center
+@include keyframe(animation-slide-out-left) {
+ 0% {
+ transform: translate(0, 0);
+ }
+
+ 100% {
+ transform: translate(-100%, 0);
+ }
+}
+
+// Slide out Right from Center
+@include keyframe(animation-slide-out-right) {
+ 0% {
+ transform: translate(0, 0);
+ }
+
+ 100% {
+ transform: translate(100%, 0);
+ }
+}
+
+@include keyframe(animation-slide-in-up) {
+ 0% {
+ transform: translate(0, 100%);
+ }
+
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+@include keyframe(animation-slide-in-down) {
+ 0% {
+ transform: translate(0, -100%);
+ }
+
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+// Slide in Left to Center
+@include keyframe(animation-slide-in-left) {
+ 0% {
+ transform: translate(-100%, 0);
+ }
+
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+// Slide in Right to Center
+@include keyframe(animation-slide-in-right) {
+ 0% {
+ transform: translate(100%, 0);
+ }
+
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+@mixin keyframe($animation_name) {
+ @-webkit-keyframes #{$animation_name} {
+ @content;
+ }
+
+ @-moz-keyframes #{$animation_name} {
+ @content;
+ }
+
+ @-o-keyframes #{$animation_name} {
+ @content;
+ }
+
+ @keyframes #{$animation_name} {
+ @content;
+ }
+}
+
+@mixin animation($delay, $duration, $animation, $direction: forward, $fillmode: fowards) {
+ -webkit-animation-delay: $delay;
+ -webkit-animation-duration: $duration;
+ -webkit-animation-name: $animation;
+ -webkit-animation-fill-mode: $fillmode;
+ -webkit-animation-direction: $direction;
+
+ -moz-animation-delay: $delay;
+ -moz-animation-duration: $duration;
+ -moz-animation-name: $animation;
+ -moz-animation-fill-mode: $fillmode;
+ -moz-animation-direction: $direction;
+
+ animation-delay: $delay;
+ animation-duration: $duration;
+ animation-name: $animation;
+ animation-fill-mode: $fillmode;
+ animation-direction: $direction;
+}
diff --git a/src/themes/variables/_colors.scss b/src/themes/variables/_colors.scss
new file mode 100644
index 0000000..39ecf9d
--- /dev/null
+++ b/src/themes/variables/_colors.scss
@@ -0,0 +1,289 @@
+@import "helper.scss";
+
+%text {
+ color: #fff !important;
+}
+
+%content {
+ border: 1px solid #ccc;
+ padding: 10px;
+ color: #333;
+ & .text,
+ .number {
+ @extend %text;
+ }
+}
+
+.bg {
+ &-red {
+ background-color: #f44336 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ &-gradient {
+ background: gradient(#f44336, #d32f2f);
+ color: gradient-color(#f44336);
+ }
+ }
+ &-pink {
+ background-color: #e91e63 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+ //New Pink Color Added Here
+ &-light-pink {
+ background-color: #ffd1e0 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-purple {
+ background-color: #9c27b0 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-deep-purple {
+ background-color: #673ab7 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-indigo {
+ background-color: #3f51b5 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-blue {
+ background-color: #2196f3 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ &-gradient {
+ background: gradient(#2196f3, #1976d2);
+ color: gradient-color(#2196f3);
+ }
+ }
+
+ &-light-blue {
+ background-color: #03a9f4 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ &-gradient {
+ background: gradient(#e3f2fd, #90caf9);
+ color: gradient-color(#90caf9);
+ }
+ }
+
+ &-cyan {
+ background-color: #00bcd4 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-teal {
+ background-color: #009688 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ &-gradient {
+ background: gradient(#009688, #00796b);
+ color: gradient-color(#009688);
+ }
+ }
+
+ &-green {
+ background-color: #4caf50 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ &-gradient {
+ background: gradient(#8bc34a, #689f38);
+ color: gradient-color(#8bc34a);
+ }
+ }
+
+ &-light-green {
+ background-color: #8bc34a !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-lime {
+ background-color: #cddc39 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-yellow {
+ background-color: #ffe821 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-amber {
+ background-color: #ffc107 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ &-gradient {
+ background: gradient(#ffc107, #ffa000);
+ color: gradient-color(#ffc107);
+ }
+ }
+
+ &-orange {
+ background-color: #ff9800 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-deep-orange {
+ background-color: #ff5722 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-brown {
+ background-color: #795548 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-grey {
+ background-color: #9e9e9e !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-blue-grey {
+ background-color: #607d8b !important;
+ color: #fff;
+
+ & .content {
+ @extend %content;
+ }
+ }
+
+ &-black {
+ background-color: #000000 !important;
+ color: #fff;
+ & .content {
+ @extend %content;
+ }
+ }
+ &-white {
+ background-color: #ffffff !important;
+ color: #fff;
+ }
+ &-extra-light-green {
+ background-color: #ddfcd6 !important;
+ color: #fff;
+ }
+}
+
+.col {
+ &-red {
+ color: #f44336 !important;
+ }
+ &-pink {
+ color: #e91e63 !important;
+ }
+ &-purple {
+ color: #9c27b0 !important;
+ }
+ &-deep-purple {
+ color: #673ab7 !important;
+ }
+ &-indigo {
+ color: #3f51b5 !important;
+ }
+ &-blue {
+ color: #2196f3 !important;
+ }
+ &-light-blue {
+ color: #03a9f4 !important;
+ }
+ &-cyan {
+ color: #00bcd4 !important;
+ }
+ &-teal {
+ color: #009688 !important;
+ }
+ &-green {
+ color: #4caf50 !important;
+ }
+ &-light-green {
+ color: #8bc34a !important;
+ }
+ &-lime {
+ color: #cddc39 !important;
+ }
+ &-yellow {
+ color: #ffe821 !important;
+ }
+ &-amber {
+ color: #ffc107 !important;
+ }
+ &-orange {
+ color: #ff9800 !important;
+ }
+ &-deep-orange {
+ color: #ff5722 !important;
+ }
+ &-brown {
+ color: #795548 !important;
+ }
+ &-grey {
+ color: #9e9e9e !important;
+ }
+ &-blue-grey {
+ color: #607d8b !important;
+ }
+ &-black {
+ color: #000000 !important;
+ }
+ &-white {
+ color: #ffffff !important;
+ }
+ &-font-green {
+ color: #109115 !important;
+ }
+ &-light-brown {
+ color: #815849 !important;
+ }
+}
diff --git a/src/themes/variables/_helper.scss b/src/themes/variables/_helper.scss
new file mode 100644
index 0000000..40bd9da
--- /dev/null
+++ b/src/themes/variables/_helper.scss
@@ -0,0 +1,76 @@
+// Import all the tools needed to customize the theme and extract parts of it
+@import "~@angular/material/theming";
+
+@mixin setMatColors($theme, $isDark) {
+ $primary: map-get($theme, primary);
+ $accent: map-get($theme, accent);
+ $warn: map-get($theme, warn);
+
+ .content {
+ display: inline-block;
+ padding: 7px 16px;
+
+ & .text {
+ font-size: 13px;
+ margin-top: 11px;
+ color: isDark($isDark);
+ }
+
+ & .number {
+ font-weight: normal;
+ font-size: 26px;
+ margin-top: 2px;
+ color: isDark($isDark);
+ }
+
+ & .number-gt-xs {
+ font-weight: normal;
+ font-size: 26px;
+ margin-top: 30px;
+ color: isDark($isDark);
+ text-align: center;
+ }
+ }
+}
+
+@function set-text-color($color) {
+ @if (lightness($color) > 50) {
+ @return #000000 is-important(true); // Lighter backgorund, return dark color
+ } @else {
+ @return #ffffff is-important(true); // Darker background, return light color
+ }
+}
+
+@function gradient($color1, $color2) {
+ @return linear-gradient(to bottom right, $color1, $color2);
+}
+
+@function gradient-color($color) {
+ @return set-text-color($color);
+}
+
+@function getMatColors($type) {
+ @if ($type == "primary") {
+ @return $primary-color;
+ }
+
+ @if ($type == "accent") {
+ @return $accent-color;
+ }
+
+ @if ($type == "warn") {
+ @return $warn-color;
+ }
+}
+
+@function isDark($dark) {
+ @if ($dark == "false") {
+ @return #000000; // Lighter backgorund, return dark color
+ } @else {
+ @return #ffffff; // Darker background, return light color
+ }
+}
+
+@function is-important($important) {
+ @return #{if($important, "!important", "")};
+}
diff --git a/src/themes/variables/_spacemanager.scss b/src/themes/variables/_spacemanager.scss
new file mode 100644
index 0000000..55c5b8c
--- /dev/null
+++ b/src/themes/variables/_spacemanager.scss
@@ -0,0 +1,112 @@
+/*
+This .scss loop will create "margin helpers" and "padding helpers" for use in your web projects.
+It will generate several classes such as:
+
+.m-r-10 which gives margin-right 10 pixels.
+.m-r-15 gives MARGIN to the RIGHT 15 pixels.
+.m-t-15 gives MARGIN to the TOP 15 pixels and so on.
+
+.p-b-5 gives PADDING to the BOTTOM of 5 pixels
+.p-l-40 gives PADDING to the LEFT of 40 pixels
+
+The first letter is "m" or "p" for MARGIN or PADDING
+Second letter is "t", "b", "l", or "r" for TOP, BOTTOM, LEFT, or RIGHT
+Third letter is the number of spacing in pixels. Adjust the amounts generated by editing the $spaceamounts variable below.
+
+*/
+
+$spaceAmounts: (
+ -1,
+ -2,
+ -3,
+ -4,
+ -5,
+ -6,
+ -7,
+ -8,
+ -9,
+ -10,
+ -15,
+ -20,
+ -25,
+ -30,
+ -35,
+ -40,
+ -45,
+ -50,
+ -60,
+ -70,
+ -75,
+ -80,
+ -85,
+ -100,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 15,
+ 20,
+ 25,
+ 30,
+ 35,
+ 40,
+ 45,
+ 50,
+ 60,
+ 70,
+ 75,
+ 80,
+ 85,
+ 100
+); // Adjust this to include the pixel amounts you need.
+$sides: (top, bottom, left, right, all, tb, lr); // Leave this variable alone
+
+@each $space in $spaceAmounts {
+ @each $side in $sides {
+ @if $side == 'all' {
+ .m-all-#{$space} {
+ margin: #{$space}px !important;
+ }
+ .p-all-#{$space} {
+ padding: #{$space}px !important;
+ }
+ } @else if $side == 'tb' {
+ .m-tb-#{$space} {
+ margin-top: #{$space}px !important;
+ margin-bottom: #{$space}px !important;
+ }
+ .p-tb-#{$space} {
+ padding-top: #{$space}px !important;
+ padding-bottom: #{$space}px !important;
+ }
+ } @else if $side == 'lr' {
+ .m-tb-#{$space} {
+ margin-left: #{$space}px !important;
+ margin-right: #{$space}px !important;
+ }
+ .p-tb-#{$space} {
+ padding-left: #{$space}px !important;
+ padding-right: #{$space}px !important;
+ }
+ } @else {
+ .m-#{str-slice($side, 0, 1)}-#{$space} {
+ margin-#{$side}: #{$space}px !important;
+ }
+
+ .p-#{str-slice($side, 0, 1)}-#{$space} {
+ padding-#{$side}: #{$space}px !important;
+ }
+ }
+ }
+}
+
+.m-l-5p {
+ margin-left:5% !important;
+}
diff --git a/src/themes/variables/_utils.scss b/src/themes/variables/_utils.scss
new file mode 100644
index 0000000..1e93aff
--- /dev/null
+++ b/src/themes/variables/_utils.scss
@@ -0,0 +1,60 @@
+$spaceAmounts: (100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0);
+$options: ("%", px, rem, vw, vh);
+
+@each $space in $spaceAmounts {
+ @each $option in $options {
+ @if $option == 'vw' {
+ .width-#{$space} {
+ width: #{$space}#{$option} !important;
+ }
+ } @else if $option == 'vh'{
+ .height-#{$space} {
+ height: #{$space}#{$option} !important;
+ }
+ } @else {
+ .width-#{$space} {
+ width: #{$space}#{$option} !important;
+ }
+
+ .height-#{$space} {
+ height: #{$space}#{$option} !important;
+ }
+ }
+ }
+}
+
+$alignments: ("center", "space-between", "space-around", "space-evenly", "flex-start", "flex-end");
+
+@each $align in $alignments {
+ .justify-#{$align} {
+ justify-content: #{$align};
+ }
+
+ .items-#{$align} {
+ align-items: #{$align};
+ }
+
+ .justify-items-#{$align} {
+ justify-items: #{$align};
+ }
+
+ .content-#{$align} {
+ align-content: #{$align};
+ }
+}
+
+$displayProps: ("block", "inline-block", "inline", "flex", "grid", "inline-flex", "inline-grid", "table", "inline-table", "list-item", "none", "contents");
+
+@each $disp in $displayProps {
+ .d-#{$disp} {
+ display: #{$disp};
+ }
+}
+
+$textAlignments: ("left", "right", "center", "revert");
+
+@each $textAlign in $textAlignments {
+ .text-#{$textAlign} {
+ text-align: #{$textAlign};
+ }
+}