├── .editorconfig
├── .gitignore
├── .vscode
├── extensions.json
├── launch.json
└── tasks.json
├── README.md
├── angular.json
├── package-lock.json
├── package.json
├── src
├── app
│ ├── _components
│ │ └── login
│ │ │ ├── login.component.html
│ │ │ ├── login.component.scss
│ │ │ └── login.component.ts
│ ├── app-routing.module.ts
│ ├── app.component.css
│ ├── app.component.html
│ ├── app.component.scss
│ ├── app.component.spec.ts
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── dashboard
│ │ ├── dashboard.component.html
│ │ ├── dashboard.component.scss
│ │ ├── dashboard.component.spec.ts
│ │ └── dashboard.component.ts
│ ├── data.service.ts
│ ├── home
│ │ ├── home.component.html
│ │ ├── home.component.scss
│ │ ├── home.component.spec.ts
│ │ └── home.component.ts
│ ├── layout
│ │ ├── header
│ │ │ ├── header.component.html
│ │ │ ├── header.component.scss
│ │ │ ├── header.component.spec.ts
│ │ │ └── header.component.ts
│ │ └── sidenav
│ │ │ ├── sidenav.component.html
│ │ │ ├── sidenav.component.scss
│ │ │ ├── sidenav.component.spec.ts
│ │ │ └── sidenav.component.ts
│ ├── main
│ │ ├── appRouterLinkActiveExact.directive.ts
│ │ ├── main.component.html
│ │ ├── main.component.scss
│ │ ├── main.component.spec.ts
│ │ └── main.component.ts
│ ├── pages
│ │ ├── exercicios
│ │ │ ├── exercicios.component.css
│ │ │ ├── exercicios.component.html
│ │ │ └── exercicios.component.ts
│ │ ├── home
│ │ │ ├── home.component.css
│ │ │ ├── home.component.html
│ │ │ └── home.component.ts
│ │ └── profile
│ │ │ ├── profile.component.html
│ │ │ ├── profile.component.scss
│ │ │ ├── profile.component.spec.ts
│ │ │ └── profile.component.ts
│ └── services
│ │ └── sidebar
│ │ ├── sidebar.service.spec.ts
│ │ └── sidebar.service.ts
├── assets
│ ├── .gitkeep
│ ├── logo.png
│ ├── logo.svg
│ └── user.jpg
├── favicon.ico
├── index.html
├── main.ts
├── styles.css
└── styles.scss
├── tsconfig.app.json
├── tsconfig.json
└── tsconfig.spec.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://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 | [*.ts]
12 | quote_type = single
13 |
14 | [*.md]
15 | max_line_length = off
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/.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 | /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 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
3 | "version": "0.2.0",
4 | "configurations": [
5 | {
6 | "name": "ng serve",
7 | "type": "chrome",
8 | "request": "launch",
9 | "preLaunchTask": "npm: start",
10 | "url": "http://localhost:4200/"
11 | },
12 | {
13 | "name": "ng test",
14 | "type": "chrome",
15 | "request": "launch",
16 | "preLaunchTask": "npm: test",
17 | "url": "http://localhost:9876/debug.html"
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
3 | "version": "2.0.0",
4 | "tasks": [
5 | {
6 | "type": "npm",
7 | "script": "start",
8 | "isBackground": true,
9 | "problemMatcher": {
10 | "owner": "typescript",
11 | "pattern": "$tsc",
12 | "background": {
13 | "activeOnStart": true,
14 | "beginsPattern": {
15 | "regexp": "(.*?)"
16 | },
17 | "endsPattern": {
18 | "regexp": "bundle generation complete"
19 | }
20 | }
21 | }
22 | },
23 | {
24 | "type": "npm",
25 | "script": "test",
26 | "isBackground": true,
27 | "problemMatcher": {
28 | "owner": "typescript",
29 | "pattern": "$tsc",
30 | "background": {
31 | "activeOnStart": true,
32 | "beginsPattern": {
33 | "regexp": "(.*?)"
34 | },
35 | "endsPattern": {
36 | "regexp": "bundle generation complete"
37 | }
38 | }
39 | }
40 | }
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LMS
2 |
3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.0.1.
4 |
5 | ## Development server
6 |
7 | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.
8 |
9 | ## Code scaffolding
10 |
11 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
12 |
13 | ## Build
14 |
15 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
16 |
17 | ## Running unit tests
18 |
19 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
20 |
21 | ## Running end-to-end tests
22 |
23 | Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
24 |
25 | ## Further help
26 |
27 | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
28 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 |
6 | "projects": {
7 | "LMS": {
8 | "projectType": "application",
9 | "schematics": {
10 | "@schematics/angular:component": {
11 | "style": "scss"
12 | }
13 | },
14 | "root": "",
15 | "sourceRoot": "src",
16 | "prefix": "app",
17 | "architect": {
18 | "build": {
19 | "builder": "@angular-devkit/build-angular:browser",
20 | "options": {
21 | "outputPath": "dist/lms",
22 | "index": "src/index.html",
23 | "main": "src/main.ts",
24 | "polyfills": [
25 | "zone.js"
26 | ],
27 |
28 | "tsConfig": "tsconfig.app.json",
29 | "inlineStyleLanguage": "scss",
30 | "assets": [
31 | "src/favicon.ico",
32 | "src/assets"
33 | ],
34 | "styles": [
35 |
36 | "node_modules/bootstrap/dist/css/bootstrap.min.css",
37 | "node_modules/font-awesome/css/font-awesome.min.css",
38 |
39 | "src/styles.scss"
40 | ],
41 | "scripts": []
42 | },
43 | "configurations": {
44 | "production": {
45 | "budgets": [
46 | {
47 | "type": "initial",
48 | "maximumWarning": "500kb",
49 | "maximumError": "1mb"
50 | },
51 | {
52 | "type": "anyComponentStyle",
53 | "maximumWarning": "2kb",
54 | "maximumError": "4kb"
55 | }
56 | ],
57 | "outputHashing": "all"
58 | },
59 | "development": {
60 | "buildOptimizer": false,
61 | "optimization": false,
62 | "vendorChunk": true,
63 | "extractLicenses": false,
64 | "sourceMap": true,
65 | "namedChunks": true
66 | }
67 | },
68 | "defaultConfiguration": "production"
69 | },
70 | "serve": {
71 | "builder": "@angular-devkit/build-angular:dev-server",
72 | "configurations": {
73 | "production": {
74 | "browserTarget": "LMS:build:production"
75 | },
76 | "development": {
77 | "browserTarget": "LMS:build:development"
78 | }
79 | },
80 | "defaultConfiguration": "development"
81 | },
82 | "extract-i18n": {
83 | "builder": "@angular-devkit/build-angular:extract-i18n",
84 | "options": {
85 | "browserTarget": "LMS:build"
86 | }
87 | },
88 | "test": {
89 | "builder": "@angular-devkit/build-angular:karma",
90 | "options": {
91 | "polyfills": [
92 | "zone.js",
93 | "zone.js/testing"
94 | ],
95 | "tsConfig": "tsconfig.spec.json",
96 | "inlineStyleLanguage": "scss",
97 | "assets": [
98 | "src/favicon.ico",
99 | "src/assets"
100 | ],
101 | "styles": [
102 | "src/styles.scss"
103 | ],
104 | "scripts": []
105 | }
106 | }
107 | }
108 | }
109 | },
110 | "cli": {
111 | "analytics": "b3bedc4c-9738-459b-9fdb-f821937db495"
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "lms",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve",
7 | "build": "ng build",
8 | "watch": "ng build --watch --configuration development",
9 | "test": "ng test"
10 | },
11 | "private": true,
12 | "dependencies": {
13 | "@angular/animations": "^16.2.5",
14 | "@angular/cdk": "github:angular/cdk-builds",
15 | "@angular/common": "^16.0.0",
16 | "@angular/compiler": "^16.0.0",
17 | "@angular/core": "^16.0.0",
18 | "@angular/forms": "^16.0.0",
19 | "@angular/material": "github:angular/material2-builds",
20 | "@angular/platform-browser": "^16.0.0",
21 | "@angular/platform-browser-dynamic": "^16.0.0",
22 | "@angular/router": "^16.0.0",
23 | "bootstrap": "^5.3.3",
24 | "font-awesome": "^4.7.0",
25 | "rxjs": "~7.8.0",
26 | "tslib": "^2.3.0",
27 | "zone.js": "~0.13.0"
28 | },
29 | "devDependencies": {
30 | "@angular-devkit/build-angular": "^16.0.1",
31 | "@angular/cli": "~16.0.1",
32 | "@angular/compiler-cli": "^16.0.0",
33 | "@types/jasmine": "~4.3.0",
34 | "jasmine-core": "~4.6.0",
35 | "karma": "~6.4.0",
36 | "karma-chrome-launcher": "~3.2.0",
37 | "karma-coverage": "~2.2.0",
38 | "karma-jasmine": "~5.1.0",
39 | "karma-jasmine-html-reporter": "~2.0.0",
40 | "typescript": "~5.0.2"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/app/_components/login/login.component.html:
--------------------------------------------------------------------------------
1 |
login works!
2 |
--------------------------------------------------------------------------------
/src/app/_components/login/login.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/app/_components/login/login.component.scss
--------------------------------------------------------------------------------
/src/app/_components/login/login.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-login',
5 | templateUrl: './login.component.html',
6 | styleUrls: ['./login.component.scss']
7 | })
8 | export class LoginComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { DashboardComponent } from './dashboard/dashboard.component';
4 | import { HomeComponent } from './home/home.component';
5 | import { ProfileComponent } from './pages/profile/profile.component';
6 | import { LoginComponent } from './_components/login/login.component';
7 |
8 | const routes: Routes = [
9 | { path: '', redirectTo: 'home', pathMatch: 'full' },
10 | { path: 'dashboard', component: HomeComponent },
11 | { path: 'home', component: DashboardComponent },
12 | { path: 'profile', component: ProfileComponent },
13 | { path: 'login', component: LoginComponent },
14 |
15 |
16 |
17 | ];
18 | @NgModule({
19 | imports: [RouterModule.forRoot(routes)],
20 | exports: [RouterModule],
21 | })
22 | export class AppRoutingModule {}
23 |
--------------------------------------------------------------------------------
/src/app/app.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/app/app.component.css
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/app/app.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 | import { RouterTestingModule } from '@angular/router/testing';
3 | import { AppComponent } from './app.component';
4 |
5 | describe('AppComponent', () => {
6 | beforeEach(() => TestBed.configureTestingModule({
7 | imports: [RouterTestingModule],
8 | declarations: [AppComponent]
9 | }));
10 |
11 | it('should create the app', () => {
12 | const fixture = TestBed.createComponent(AppComponent);
13 | const app = fixture.componentInstance;
14 | expect(app).toBeTruthy();
15 | });
16 |
17 | it(`should have as title 'LMS'`, () => {
18 | const fixture = TestBed.createComponent(AppComponent);
19 | const app = fixture.componentInstance;
20 | expect(app.title).toEqual('LMS');
21 | });
22 |
23 | it('should render title', () => {
24 | const fixture = TestBed.createComponent(AppComponent);
25 | fixture.detectChanges();
26 | const compiled = fixture.nativeElement as HTMLElement;
27 | expect(compiled.querySelector('.content span')?.textContent).toContain('LMS app is running!');
28 | });
29 | });
30 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-root',
5 | templateUrl: './app.component.html',
6 | styleUrls: ['./app.component.scss']
7 | })
8 | export class AppComponent {
9 | title = 'LMS';
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { BrowserModule } from '@angular/platform-browser';
3 |
4 |
5 | import {MatButtonModule} from '@angular/material/button';
6 |
7 |
8 | import { AppRoutingModule } from './app-routing.module';
9 | import { AppComponent } from './app.component';
10 | import { HeaderComponent } from './layout/header/header.component';
11 | import { SidebarComponent } from './layout/sidenav/sidenav.component';
12 | import { HomeComponent } from './home/home.component';
13 | import { DashboardComponent } from './dashboard/dashboard.component';
14 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
15 | import { MatTableModule } from '@angular/material/table';
16 | import { MatSidenavModule } from '@angular/material/sidenav';
17 | import { MatToolbarModule } from '@angular/material/toolbar';
18 | import { MatMenuModule } from '@angular/material/menu';
19 | import { MatIconModule } from '@angular/material/icon';
20 | import { MatDividerModule } from '@angular/material/divider';
21 | import { MatListModule } from '@angular/material/list';
22 | import { MainComponent } from './main/main.component';
23 | import { RouterLinkActiveExactDirective } from './main/appRouterLinkActiveExact.directive';
24 | import { ProfileComponent } from './pages/profile/profile.component';
25 | import { MatCardModule } from '@angular/material/card';
26 | import { FormsModule } from '@angular/forms';
27 | import { DataService } from './data.service';
28 | import { LoginComponent } from './_components/login/login.component';
29 |
30 | // Import FormsModule
31 | @NgModule({
32 | declarations: [
33 | AppComponent,
34 | HeaderComponent,
35 | SidebarComponent,
36 | HomeComponent,
37 | DashboardComponent,
38 | MainComponent,
39 | RouterLinkActiveExactDirective,
40 | ProfileComponent,
41 | LoginComponent,
42 | ],
43 | imports: [
44 | BrowserModule,
45 | AppRoutingModule,
46 | BrowserAnimationsModule,
47 | // * MATERIAL IMPORTS
48 | MatSidenavModule,
49 | MatToolbarModule,
50 | MatMenuModule,
51 | MatIconModule,
52 | MatDividerModule,
53 | MatListModule,
54 | MatButtonModule,
55 | MatCardModule,
56 | FormsModule,
57 | MatTableModule
58 | ],
59 | providers: [DataService],
60 | bootstrap: [AppComponent]
61 | })
62 | export class AppModule { }
63 |
--------------------------------------------------------------------------------
/src/app/dashboard/dashboard.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | LF-ONE
11 |
12 |
13 |
14 |
28
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | LF-MID
27 |
28 |
29 |
30 |
40
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | LF-PRO
43 |
44 |
45 |
46 |
28
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
Alunos
56 |
57 |
58 |
59 |
60 |
61 |
62 | Firts name |
63 | Last name |
64 | Email |
65 | Plan |
66 | Active-plan |
67 | Date-init |
68 |
69 |
70 |
71 |
72 | 1 |
73 | Mark |
74 | Otto |
75 | 33 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | lista
83 |
84 |
85 |
--------------------------------------------------------------------------------
/src/app/dashboard/dashboard.component.scss:
--------------------------------------------------------------------------------
1 | article{
2 | color:white;
3 | }
4 |
5 | article h5{
6 | font-weight: 600;
7 | }
8 | article{
9 | background: rgb(0,0,205);
10 | background: linear-gradient(90deg, rgba(0,0,205,0.7959558823529411) 39%, rgba(0,0,1,0.8603816526610644) 92%);
11 | }
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/app/dashboard/dashboard.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { DashboardComponent } from './dashboard.component';
4 |
5 | describe('DashboardComponent', () => {
6 | let component: DashboardComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [DashboardComponent]
12 | });
13 | fixture = TestBed.createComponent(DashboardComponent);
14 | component = fixture.componentInstance;
15 | fixture.detectChanges();
16 | });
17 |
18 | it('should create', () => {
19 | expect(component).toBeTruthy();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/app/dashboard/dashboard.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-dashboard',
5 | templateUrl: './dashboard.component.html',
6 | styleUrls: ['./dashboard.component.scss']
7 | })
8 | export class DashboardComponent {
9 |
10 | // isLoading: boolean = false;
11 | // data: string = '';
12 |
13 | // constructor(){
14 | // this.getData();
15 | // }
16 |
17 |
18 | // getData(){
19 | // this.isLoading = true;
20 | // fetch('https://apimanager-lucasfariapp.wiremockapi.cloud/v1/profile')
21 | // .then(dados=>dados.json())
22 | // .then(dados =>{
23 | // this.data= dados['data'][0];
24 | // console.log(this.data);
25 | // })
26 | // .catch(erro => {console.log('Ocorreu um erro')})
27 | // .finally(()=>{
28 | // this.isLoading = false;
29 | // })
30 | // }
31 | }
32 |
--------------------------------------------------------------------------------
/src/app/data.service.ts:
--------------------------------------------------------------------------------
1 | import { HttpClient } from '@angular/common/http';
2 | import { Injectable } from '@angular/core';
3 |
4 | @Injectable({
5 | providedIn: 'root'
6 | })
7 | export class DataService {
8 |
9 | dataUrl= 'https://apimanager-lucasfariapp.wiremockapi.cloud/v1/profile';
10 |
11 | constructor(private http: HttpClient) { }
12 |
13 | listar(){
14 | return this.http.get(`${this.dataUrl}`);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/app/home/home.component.html:
--------------------------------------------------------------------------------
1 | tabela exercicios
2 |
--------------------------------------------------------------------------------
/src/app/home/home.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/app/home/home.component.scss
--------------------------------------------------------------------------------
/src/app/home/home.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { HomeComponent } from './home.component';
4 |
5 | describe('HomeComponent', () => {
6 | let component: HomeComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [HomeComponent]
12 | });
13 | fixture = TestBed.createComponent(HomeComponent);
14 | component = fixture.componentInstance;
15 | fixture.detectChanges();
16 | });
17 |
18 | it('should create', () => {
19 | expect(component).toBeTruthy();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/app/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-home',
5 | templateUrl: './home.component.html',
6 | styleUrls: ['./home.component.scss']
7 | })
8 | export class HomeComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit(): void {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/layout/header/header.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/app/layout/header/header.component.scss:
--------------------------------------------------------------------------------
1 | .example-spacer {
2 | flex: 1 1 auto;
3 | }
4 |
5 | /* toolbar.component.css */
6 | // .custom-toolbar {
7 | // background-color: #f0f0f0; /* Background color of the toolbar */
8 | // border-radius: 10px; /* Adjust the border-radius for a softer look */
9 | // box-shadow: 5px 5px 10px #b9b9b9, -5px -5px 10px #ffffff; /* Neumorphism shadow */
10 | // }
11 |
12 | .mat-icon-button {
13 | /* Background color of the button */
14 | border-radius: 50%; /* Make the button round */
15 | width: 40px; /* Adjust the button width as needed */
16 | height: 40px; /* Adjust the button height as needed */
17 | // box-shadow: 3px 3px 5px #b9b9b9, -3px -3px 5px #ffffff; /* Neumorphism shadow for buttons */
18 | // transition: box-shadow 0.3s ease-in-out; /* Add a smooth transition effect */
19 | }
20 |
21 | /* toolbar.component.css */
22 | // .custom-toolbar {
23 | // background-color: #f0f0f0; /* Background color of the toolbar */
24 | // border-radius: 10px; /* Adjust the border-radius for a softer look */
25 | // box-shadow: 5px 5px 10px #b9b9b9, -5px -5px 10px #ffffff; /* Neumorphism shadow */
26 | // }
27 | .custom-toolbar{
28 | background-color: white;
29 |
30 |
31 | }
32 | .mat-toolbar{
33 | color: black !important;
34 | }
35 | .mat-icon-button {
36 | color: black !important;
37 | background-color: black; /* Background color of the button */
38 | border-radius: 50%; /* Make the button round */
39 | width: 40px; /* Adjust the button width as needed */
40 | height: 40px; /* Adjust the button height as needed */
41 | // box-shadow: 3px 3px 5px #b9b9b9, -3px -3px 5px #ffffff; /* Neumorphism shadow for buttons */
42 | transition: box-shadow 0.3s ease-in-out; /* Add a smooth transition effect */
43 | }
44 |
45 | // .mat-icon-button:hover {
46 | // // box-shadow: 6px 6px 10px #b9b9b9, -6px -6px 10px #ffffff;
47 | // box-shadow: 0px 0px 20px rgba(0, 0, 255, 0.5);/* Adjust the shadow on hover */
48 | // }
49 |
50 | /* Style the button with the "neumorphic-button" class */
51 | .neumorphic-button {
52 | color: black;
53 | /* Background color of the button */
54 | border-radius: 10px; /* Adjust the border-radius for a softer look */
55 | // box-shadow: 5px 5px 10px #b9b9b9, -5px -5px 10px #ffffff; /* Neumorphism shadow for the specific button */
56 | // transition: box-shadow 0.3s ease-in-out; /* Add a smooth transition effect */
57 | transition: transform 0.3s ease-in-out;
58 |
59 | &:hover {
60 | // Scale the button slightly on hover
61 | transform: scale(1.05);
62 | }}
63 |
64 | // .neumorphic-button:hover {
65 | // // box-shadow: 6px 6px 10px #b9b9b9, -6px -6px 10px #ffffff;
66 | // box-shadow: 0px 0px 20px rgba(0, 0, 255, 0.5); /* Adjust the shadow on hover for the specific button */
67 | // // transform: translateY(-2px); /* Add a subtle lift effect on hover */
68 | // }
69 |
70 | /* Adjust the button text color if needed */
71 | .neumorphic-button {
72 | color: black !important; /* Text color */
73 | }
74 |
75 |
76 |
77 | /* Add some spacing between the buttons */
78 | .custom-toolbar button:not(:last-child) {
79 | margin-right: 10px;
80 | }
81 |
82 |
83 | .notification-icon {
84 | color: black !important;
85 | transition: transform 0.2s ease; /* Add smooth transition effect */
86 |
87 | &:hover {
88 | transform: scale(1.2); /* Scale the icon on hover */
89 | }
90 | }
91 |
92 | body {
93 |
94 | color: white !important;
95 | }
96 |
97 | .mat-mdc-icon-button{
98 | color: black !important;
99 | }
100 |
--------------------------------------------------------------------------------
/src/app/layout/header/header.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { HeaderComponent } from './header.component';
4 |
5 | describe('HeaderComponent', () => {
6 | let component: HeaderComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [HeaderComponent]
12 | });
13 | fixture = TestBed.createComponent(HeaderComponent);
14 | component = fixture.componentInstance;
15 | fixture.detectChanges();
16 | });
17 |
18 | it('should create', () => {
19 | expect(component).toBeTruthy();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/app/layout/header/header.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core';
2 | import { Router } from '@angular/router';
3 | import { SidebarService } from 'src/app/services/sidebar/sidebar.service';
4 | import { SidebarComponent } from '../sidenav/sidenav.component';
5 |
6 | @Component({
7 | selector: 'app-header',
8 | templateUrl: './header.component.html',
9 | styleUrls: ['./header.component.scss'],
10 | })
11 | export class HeaderComponent {
12 |
13 | constructor(private sidebarService: SidebarService) {}
14 |
15 | toggleSidebar() {
16 | // Check if the button click event is registered
17 | this.sidebarService.toggleSidebar();
18 | // Check if the visibility state is changing
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/app/layout/sidenav/sidenav.component.html:
--------------------------------------------------------------------------------
1 |
21 |
22 |
--------------------------------------------------------------------------------
/src/app/layout/sidenav/sidenav.component.scss:
--------------------------------------------------------------------------------
1 | /* styles.scss */
2 |
3 | /* Define a mixin for common styles */
4 | @mixin menu-item {
5 | color: black;
6 | text-decoration: none;
7 | display: flex;
8 | align-items: center;
9 | padding: 10px;
10 | border-radius: 10px;
11 | transition: all 0.3s;
12 |
13 | .menu-icon {
14 | font-size: 24px;
15 | margin-right: 10px;
16 | font-weight: 600;
17 | }
18 |
19 | .menu-text {
20 | // font-weight: bold;
21 | }
22 | }
23 |
24 | .sidebar {
25 | // box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
26 | background-color: white;
27 | width: 200px;
28 | padding: 20px;
29 | position: fixed;
30 | height: 100%;
31 | top: 0;
32 | left: 0;
33 | // border-radius: 10%;
34 | overflow-x: hidden;
35 | margin-top: 48px;
36 | // transition: transform 0.3s;
37 | }
38 |
39 | .sidebar ul {
40 | list-style: none;
41 | padding: 0;
42 | }
43 |
44 | .sidebar li {
45 | margin-bottom: 10px;
46 | }
47 |
48 | .sidebar li a {
49 | @include menu-item;
50 |
51 | &:hover {
52 | // box-shadow: 0px 0px 20px rgba(0, 0, 255, 0.5);
53 | background-color: rgb(241, 241, 241);
54 |
55 |
56 | }
57 |
58 | &.active {
59 | color: #0000cd;
60 | // box-shadow: 3px 3px 5px #b9b9b9, -3px -3px 5px #ffffff;
61 | background-color: rgb(241, 241, 241);
62 |
63 | // border-radius: 5%;
64 | }
65 |
66 | &.active:hover {
67 | // color: #ffffff;
68 |
69 | // box-shadow: 4px 4px 6px #b9b9b9, -4px -4px 6px #ffffff;
70 | // background-color: #d5d5d5;
71 | }
72 | }
73 |
74 | .sub-menu {
75 | padding-left: 20px; /* Adjust the value to your desired padding */
76 | }
77 |
78 |
79 |
80 |
81 |
82 | .hideSidebar {
83 | transform: translateX(-100%);
84 | opacity: 0;
85 | transition: transform 0.3s, opacity 0.3s;
86 | }
87 |
88 | /* Define the final state when showing */
89 | .showSidebar {
90 | transform: translateX(0);
91 | opacity: 1;
92 | transition: transform 0.3s, opacity 0.3s;
93 | }
94 |
--------------------------------------------------------------------------------
/src/app/layout/sidenav/sidenav.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { SidenavComponent } from './sidenav.component';
4 |
5 | describe('SidenavComponent', () => {
6 | let component: SidenavComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [SidenavComponent]
12 | });
13 | fixture = TestBed.createComponent(SidenavComponent);
14 | component = fixture.componentInstance;
15 | fixture.detectChanges();
16 | });
17 |
18 | it('should create', () => {
19 | expect(component).toBeTruthy();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/app/layout/sidenav/sidenav.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { SidebarService } from 'src/app/services/sidebar/sidebar.service';
3 | import { trigger, state, style, transition, animate } from '@angular/animations';
4 |
5 | @Component({
6 | selector: 'app-sidenav',
7 | templateUrl: './sidenav.component.html',
8 | styleUrls: ['./sidenav.component.scss'],
9 | animations: [
10 | trigger('fadeInOut', [
11 | state('void', style({ opacity: 0 })),
12 | transition(':enter, :leave', [
13 | animate(300, style({ opacity: 1 })),
14 | ]),
15 | ]),
16 | ],
17 |
18 | })
19 | export class SidebarComponent implements OnInit {
20 |
21 |
22 | isSidebarVisible = true;
23 | isSubmenuOpen = false;
24 | isDashboardSelected = false;
25 |
26 |
27 | constructor(private sidebarService: SidebarService) {}
28 |
29 | ngOnInit() {
30 | this.sidebarService.sidebarVisibility$.subscribe((isVisible) => {
31 | console.log(isVisible)
32 | this.isSidebarVisible = isVisible;
33 | });
34 | }
35 |
36 | toggleSidebar() {
37 | this.isSidebarVisible = !this.isSidebarVisible;
38 | this.sidebarService.toggleSidebar(); // Toggle sidebar state
39 | }
40 |
41 |
42 | toggleSubmenu() {
43 | this.isSubmenuOpen = !this.isSubmenuOpen;
44 | }
45 |
46 |
47 | selectDashboard() {
48 | this.isDashboardSelected = true;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/app/main/appRouterLinkActiveExact.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, Input, ElementRef, HostListener } from '@angular/core';
2 | import { Router } from '@angular/router';
3 |
4 | @Directive({
5 | selector: '[appRouterLinkActiveExact]'
6 | })
7 | export class RouterLinkActiveExactDirective {
8 |
9 | @Input('appRouterLinkActiveExact') link: string | undefined; // Input to specify the link to match exactly
10 |
11 | constructor(private el: ElementRef, private router: Router) {}
12 |
13 | @HostListener('click') onClick() {
14 | // Check if the current URL matches the specified link exactly
15 | const currentUrl = this.router.url;
16 | if (currentUrl === this.link) {
17 | // Add a custom class when the link is clicked and matches exactly
18 | this.el.nativeElement.classList.add('active-exact');
19 | } else {
20 | // Remove the custom class for other links
21 | this.el.nativeElement.classList.remove('active-exact');
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/app/main/main.component.html:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/app/main/main.component.scss:
--------------------------------------------------------------------------------
1 | /* Your global styles.scss or a component-specific SCSS file */
2 | .container {
3 | display: flex;
4 | height: 100vh;
5 |
6 | }
7 |
8 |
9 |
10 | .container {
11 | display: flex;
12 | flex-direction: column; /* Arrange children vertically */
13 | height: 100vh;
14 | }
15 |
16 | .app-header {
17 | position: fixed;
18 | top: 0;
19 | left: 0;
20 | right: 0;
21 |
22 | z-index: 1000; /* Ensure the header is above other content */
23 | }
24 |
25 | .app-sidenav {
26 | flex: 0 0 250px; /* Fixed width for the sidebar */
27 | background-color: #333;
28 | color: white;
29 | padding: 20px;
30 | }
31 |
32 | .content {
33 | position: fixed;
34 | top: 80px; /* Adjust this value to match the height of your header */
35 | /* Adjust this value to match the width of your sidebar */
36 | right: 0;
37 | bottom: 0;
38 |
39 | overflow-y: auto;
40 | z-index: 999; /* Ensure the content is above the sidebar */
41 | }
42 |
43 |
44 |
45 | .content {
46 | flex: 1;
47 | // padding: 20px;
48 | // overflow-y: auto;
49 | // margin-left: 250px;
50 | // transition: margin-left 0.3s ease; /* Add a transition for smooth animation */
51 | }
52 |
53 | /* Style content differently when sidebar is hidden */
54 | .content.content-with-sidebar {
55 | margin-left: 0;
56 | }
57 |
58 |
59 | .with-sidebar {
60 | left: 250px;
61 | padding: 3px;
62 | transition: left 0.3s ease, padding-left 0.3s ease; /* Add transitions for left and padding changes */
63 | }
64 |
65 | /* Remove padding when the sidebar is hidden */
66 | .without-sidebar {
67 | left: 25px;
68 | padding: 3px;
69 | transition: left 0.3s ease, padding-left 0.3s ease; /* Add transitions for left and padding changes */
70 | }
71 |
72 | /* Additional styling to make it visually appealing */
73 |
74 |
75 |
--------------------------------------------------------------------------------
/src/app/main/main.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { MainComponent } from './main.component';
4 |
5 | describe('MainComponent', () => {
6 | let component: MainComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [MainComponent]
12 | });
13 | fixture = TestBed.createComponent(MainComponent);
14 | component = fixture.componentInstance;
15 | fixture.detectChanges();
16 | });
17 |
18 | it('should create', () => {
19 | expect(component).toBeTruthy();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/app/main/main.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { SidebarService } from '../services/sidebar/sidebar.service';
3 |
4 | @Component({
5 | selector: 'app-main',
6 | templateUrl: './main.component.html',
7 | styleUrls: ['./main.component.scss']
8 | })
9 | export class MainComponent {
10 |
11 | isSidebarVisible = true;
12 | constructor(private sidebarService: SidebarService) {}
13 |
14 |
15 | ngOnInit() {
16 | this.sidebarService.sidebarVisibility$.subscribe((isVisible) => {
17 | console.log(isVisible)
18 | this.isSidebarVisible = isVisible;
19 | });
20 | }
21 |
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/app/pages/exercicios/exercicios.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/app/pages/exercicios/exercicios.component.css
--------------------------------------------------------------------------------
/src/app/pages/exercicios/exercicios.component.html:
--------------------------------------------------------------------------------
1 | exercicios works!
2 | ss
3 |
--------------------------------------------------------------------------------
/src/app/pages/exercicios/exercicios.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-exercicios',
5 | templateUrl: './exercicios.component.html',
6 | styleUrl: './exercicios.component.css'
7 | })
8 | export class ExerciciosComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/pages/home/home.component.css:
--------------------------------------------------------------------------------
1 | .rounded{
2 | border-left: 2px solid #0000cd !important;
3 | }
4 |
5 | article{
6 | color:white;
7 | }
8 |
9 | article h5{
10 | font-weight: 600;
11 | }
12 | article{
13 | background: rgb(0,0,205);
14 | background: linear-gradient(90deg, rgba(0,0,205,0.7959558823529411) 39%, rgba(0,0,1,0.8603816526610644) 92%);
15 | }
16 | /* sidebar for small screens */
17 | @media screen and (max-width: 767px){
18 |
19 | .sidebar{
20 | max-width: 18rem;
21 | transform : translateX(-100%);
22 | transition : transform 0.4s ease-out;
23 | }
24 |
25 | .sidebar.active{
26 | transform : translateX(0);
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/app/pages/home/home.component.html:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | LF-ONE
57 |
58 |
59 |
60 |
28
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 | LF-MID
73 |
74 |
75 |
76 |
40
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | LF-PRO
89 |
90 |
91 |
92 |
28
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
Alunos
104 |
105 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
--------------------------------------------------------------------------------
/src/app/pages/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-home',
5 | templateUrl: './home.component.html',
6 | styleUrl: './home.component.css'
7 | })
8 | export class HomeComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/app/pages/profile/profile.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |

13 |
14 |
15 |
Name: John Doe
16 |
17 |
18 |
19 | Address:
20 |
21 |
22 |
23 |
24 |
25 | Phone Number: +1 123-456-7890
26 | Address: {{ address }}
27 | Unique ID: 123456789
28 | Status: Enrolled
29 | Courses Enroll: 5
30 |
31 |
32 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/app/pages/profile/profile.component.scss:
--------------------------------------------------------------------------------
1 | .profile-card {
2 | max-width: 400px;
3 | margin: 0 auto;
4 | padding: 20px;
5 | }
6 |
7 | .profile-header {
8 | text-align: center;
9 | }
10 |
11 | .profile-title {
12 | font-size: 24px;
13 | margin-bottom: 10px;
14 | }
15 |
16 | .profile-content {
17 | display: flex;
18 | align-items: center;
19 | }
20 |
21 | .profile-image {
22 | flex: 1;
23 | text-align: center;
24 |
25 | img {
26 | width: 150px;
27 | height: 150px;
28 | border-radius: 50%;
29 | object-fit: cover;
30 | }
31 | }
32 |
33 | .profile-details {
34 | flex: 3;
35 | padding-left: 20px;
36 |
37 | h2 {
38 | font-size: 20px;
39 | margin-bottom: 10px;
40 | }
41 |
42 | p {
43 | font-size: 16px;
44 | margin: 5px 0;
45 | }
46 | }
47 |
48 | .mat-card-actions {
49 | display: flex;
50 | justify-content: center;
51 | margin-top: 20px;
52 | }
53 |
54 | .custom-card {
55 | border: 1px solid #ccc; /* Add a border */
56 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Add a slight shadow */
57 | /* You can adjust the border color, width, and shadow properties as needed */
58 | }
59 |
--------------------------------------------------------------------------------
/src/app/pages/profile/profile.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { ProfileComponent } from './profile.component';
4 |
5 | describe('ProfileComponent', () => {
6 | let component: ProfileComponent;
7 | let fixture: ComponentFixture
;
8 |
9 | beforeEach(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ProfileComponent]
12 | });
13 | fixture = TestBed.createComponent(ProfileComponent);
14 | component = fixture.componentInstance;
15 | fixture.detectChanges();
16 | });
17 |
18 | it('should create', () => {
19 | expect(component).toBeTruthy();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/src/app/pages/profile/profile.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-profile',
5 | templateUrl: './profile.component.html',
6 | styleUrls: ['./profile.component.scss']
7 | })
8 | export class ProfileComponent {
9 | address = '123 Main St, City, Country';
10 | isEditMode = false;
11 | editAddress() {
12 | // Implement your address editing logic here
13 | // You can open a dialog or navigate to an edit page
14 | // For now, let's just change the address to a placeholder value
15 | this.address = 'New Address, City, Country';
16 | }
17 |
18 |
19 | toggleEditMode() {
20 | this.isEditMode = !this.isEditMode;
21 | }
22 |
23 | saveChanges() {
24 | // Perform save logic here (e.g., update the backend)
25 | // After saving, exit edit mode
26 | this.isEditMode = false;
27 | }
28 |
29 | cancelEdit() {
30 | // Reset any changes made during edit and exit edit mode
31 | this.isEditMode = false;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/app/services/sidebar/sidebar.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { SidebarService } from './sidebar.service';
4 |
5 | describe('SidebarService', () => {
6 | let service: SidebarService;
7 |
8 | beforeEach(() => {
9 | TestBed.configureTestingModule({});
10 | service = TestBed.inject(SidebarService);
11 | });
12 |
13 | it('should be created', () => {
14 | expect(service).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/src/app/services/sidebar/sidebar.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { BehaviorSubject } from 'rxjs';
3 |
4 | @Injectable({
5 | providedIn: 'root',
6 | })
7 | export class SidebarService {
8 |
9 | private sidebarVisibilitySubject = new BehaviorSubject(true);
10 | sidebarVisibility$ = this.sidebarVisibilitySubject.asObservable();
11 |
12 | toggleSidebar() {
13 | this.sidebarVisibilitySubject.next(!this.sidebarVisibilitySubject.value);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/assets/.gitkeep
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/user.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/assets/user.jpg
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Talha-Ahrar/angular15-starter-project/8d7b2478ca2ec7897c63862a7b2a34326d3ddb60/src/favicon.ico
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | App Lucas
6 |
7 |
8 |
9 |
10 |
16 |
17 |
18 |
22 |
23 |
27 |
28 |
29 |
30 |
31 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
2 |
3 | import { AppModule } from './app/app.module';
4 |
5 |
6 | platformBrowserDynamic().bootstrapModule(AppModule)
7 | .catch(err => console.error(err));
8 |
--------------------------------------------------------------------------------
/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | @import "~bootstrap/dist/css/bootstrap.css";
3 |
4 | .sidebar{
5 | top: 0;
6 | left : 0;
7 | z-index : 100;
8 | overflow-y: auto;
9 | }
10 | .list-group-item.active {
11 | background-color: #0000cd;
12 | }
13 |
14 | .overlay{
15 | background-color: rgb(0 0 0 / 45%);
16 | z-index: 99;
17 | }
18 |
--------------------------------------------------------------------------------
/src/styles.scss:
--------------------------------------------------------------------------------
1 | // Define custom colors
2 | $custom-body-color: #ebebeb; // Background color
3 | // Text color
4 |
5 | body {
6 | background-color: $custom-body-color;
7 | // color: white;
8 | }
9 |
10 | // You can also define styles for specific elements or classes using these colors
11 | // .custom-element {
12 | // background-color: $custom-body-color;
13 | // color: $custom-text-color;
14 | // }
15 |
16 | // .another-element {
17 | // background-color: #FFB7B7; // Another custom background color
18 | // color: #F4EEEE; // Another custom text color
19 | // }
20 |
--------------------------------------------------------------------------------
/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": [
9 | "src/main.ts"
10 | ],
11 | "include": [
12 | "src/**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/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": true,
9 | "noImplicitOverride": true,
10 | "noPropertyAccessFromIndexSignature": true,
11 | "noImplicitReturns": true,
12 | "noFallthroughCasesInSwitch": true,
13 | "sourceMap": true,
14 | "declaration": false,
15 | "downlevelIteration": true,
16 | "experimentalDecorators": true,
17 | "moduleResolution": "node",
18 | "importHelpers": true,
19 | "target": "ES2022",
20 | "module": "ES2022",
21 | "useDefineForClassFields": false,
22 | "lib": [
23 | "ES2022",
24 | "dom"
25 | ]
26 | },
27 | "angularCompilerOptions": {
28 | "enableI18nLegacyMessageIdFormat": false,
29 | "strictInjectionParameters": true,
30 | "strictInputAccessModifiers": true,
31 | "strictTemplates": true
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/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 | "include": [
11 | "src/**/*.spec.ts",
12 | "src/**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------