diff --git a/angular.json b/angular.json
index c5e42b1..b898616 100644
--- a/angular.json
+++ b/angular.json
@@ -1,102 +1,104 @@
{
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
- "version": 1,
- "newProjectRoot": "projects",
- "projects": {
- "mindstep": {
- "projectType": "application",
- "schematics": {
- "@schematics/angular:component": {
- "style": "scss",
- "standalone": false
- },
- "@schematics/angular:directive": {
- "standalone": false
- },
- "@schematics/angular:pipe": {
- "standalone": false
- }
- },
- "root": "",
- "sourceRoot": "src",
- "prefix": "app",
- "architect": {
- "build": {
- "builder": "@angular-devkit/build-angular:application",
- "options": {
- "outputPath": "dist/mindstep",
- "index": "src/index.html",
- "browser": "src/main.ts",
- "polyfills": ["zone.js"],
- "tsConfig": "tsconfig.app.json",
- "inlineStyleLanguage": "scss",
- "assets": ["src/favicon.ico", "src/assets"],
- "styles": ["src/styles.scss"],
- "scripts": []
- },
- "configurations": {
- "production": {
- "budgets": [
- {
- "type": "initial",
- "maximumWarning": "500kb",
- "maximumError": "1mb"
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "version": 1,
+ "newProjectRoot": "projects",
+ "projects": {
+ "mindstep": {
+ "projectType": "application",
+ "schematics": {
+ "@schematics/angular:component": {
+ "style": "scss",
+ "standalone": false
+ },
+ "@schematics/angular:directive": {
+ "standalone": false
},
- {
- "type": "anyComponentStyle",
- "maximumWarning": "2kb",
- "maximumError": "4kb"
+ "@schematics/angular:pipe": {
+ "standalone": false
}
- ],
- "outputHashing": "all"
},
- "development": {
- "optimization": false,
- "extractLicenses": false,
- "sourceMap": true
- }
- },
- "defaultConfiguration": "production"
- },
- "serve": {
- "builder": "@angular-devkit/build-angular:dev-server",
- "configurations": {
- "production": {
- "buildTarget": "mindstep:build:production"
- },
- "development": {
- "buildTarget": "mindstep:build:development"
+ "root": "",
+ "sourceRoot": "src",
+ "prefix": "app",
+ "architect": {
+ "build": {
+ "builder": "@angular-devkit/build-angular:application",
+ "options": {
+ "outputPath": "dist/mindstep",
+ "index": "src/index.html",
+ "browser": "src/main.ts",
+ "polyfills": ["zone.js"],
+ "tsConfig": "tsconfig.app.json",
+ "inlineStyleLanguage": "scss",
+ "assets": ["src/favicon.ico", "src/assets"],
+ "styles": ["src/styles.scss"],
+ "scripts": []
+ },
+ "configurations": {
+ "production": {
+ "budgets": [{
+ "type": "initial",
+ "maximumWarning": "500kb",
+ "maximumError": "1mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kb",
+ "maximumError": "4kb"
+ }
+ ],
+ "outputHashing": "all"
+ },
+ "development": {
+ "optimization": false,
+ "extractLicenses": false,
+ "sourceMap": true
+ }
+ },
+ "defaultConfiguration": "production"
+ },
+ "serve": {
+ "builder": "@angular-devkit/build-angular:dev-server",
+ "configurations": {
+ "production": {
+ "buildTarget": "mindstep:build:production"
+ },
+ "development": {
+ "buildTarget": "mindstep:build:development"
+ }
+ },
+ "defaultConfiguration": "development"
+ },
+ "extract-i18n": {
+ "builder": "@angular-devkit/build-angular:extract-i18n",
+ "options": {
+ "buildTarget": "mindstep:build"
+ }
+ },
+ "test": {
+ "builder": "@angular-devkit/build-angular:karma",
+ "options": {
+ "polyfills": ["zone.js", "zone.js/testing"],
+ "tsConfig": "tsconfig.spec.json",
+ "inlineStyleLanguage": "scss",
+ "assets": ["src/favicon.ico", "src/assets"],
+ "styles": ["src/styles.scss"],
+ "scripts": []
+ }
+ },
+ "lint": {
+ "builder": "@angular-eslint/builder:lint",
+ "options": {
+ "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
+ }
+ }
}
- },
- "defaultConfiguration": "development"
- },
- "extract-i18n": {
- "builder": "@angular-devkit/build-angular:extract-i18n",
- "options": {
- "buildTarget": "mindstep:build"
- }
- },
- "test": {
- "builder": "@angular-devkit/build-angular:karma",
- "options": {
- "polyfills": ["zone.js", "zone.js/testing"],
- "tsConfig": "tsconfig.spec.json",
- "inlineStyleLanguage": "scss",
- "assets": ["src/favicon.ico", "src/assets"],
- "styles": ["src/styles.scss"],
- "scripts": []
- }
- },
- "lint": {
- "builder": "@angular-eslint/builder:lint",
- "options": {
- "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
- }
}
- }
+ },
+ "cli": {
+ "schematicCollections": [
+ "@angular-eslint/schematics"
+ ],
+ "analytics": false
}
- },
- "cli": {
- "schematicCollections": ["@angular-eslint/schematics"]
- }
}
diff --git a/src/app/pages/gamificacao/gamificacao-routing.module.ts b/src/app/pages/gamificacao/gamificacao-routing.module.ts
new file mode 100644
index 0000000..1e681c7
--- /dev/null
+++ b/src/app/pages/gamificacao/gamificacao-routing.module.ts
@@ -0,0 +1,24 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Routes, RouterModule } from '@angular/router';
+
+// componentes
+import { GamificacaoComponent } from './gamificacao.component';
+import { JogoDaMemoriaComponent } from './jogo-da-memoria/jogo-da-memoria.component';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: GamificacaoComponent,
+ },
+ {
+ path: 'jogo-memoria',
+ component: JogoDaMemoriaComponent,
+ },
+];
+
+@NgModule({
+ imports: [CommonModule, RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class gamificacaoRoutingModule {}
diff --git a/src/app/pages/gamificacao/gamificacao.component.html b/src/app/pages/gamificacao/gamificacao.component.html
new file mode 100644
index 0000000..7c7f098
--- /dev/null
+++ b/src/app/pages/gamificacao/gamificacao.component.html
@@ -0,0 +1,46 @@
+
+
+
+ últimos jogos
+
+
+
+
+
+ experimente novas habilidades
+
+
+
+
+
diff --git a/src/app/pages/gamificacao/gamificacao.component.scss b/src/app/pages/gamificacao/gamificacao.component.scss
new file mode 100644
index 0000000..10bd937
--- /dev/null
+++ b/src/app/pages/gamificacao/gamificacao.component.scss
@@ -0,0 +1,115 @@
+@import '../../../styles/base/variables';
+@import '../../../styles/base/fonts';
+:root {
+ background-color: $background;
+}
+
+.header {
+ width: 100vw;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.gif {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ img {
+ width: 40%;
+ height: 40%;
+ }
+}
+
+p {
+ color: $boto-1;
+ font-family: $secondary-font;
+}
+
+.ultimos-jogos {
+ p {
+ padding: 0.9%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: $background-p;
+ margin: 5% 0px;
+ text-align: center;
+ font-size: 16px;
+ font-weight: 600;
+ }
+}
+
+a {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ list-style: none;
+ gap: 10px;
+ p {
+ font-family: $primary-font;
+ }
+}
+
+.gif {
+ padding-bottom: 60px;
+}
+
+.span-p {
+ padding: 15px;
+ p {
+ text-align: center;
+ font-size: 18px;
+ font-weight: 700;
+ }
+}
+
+.footer-content {
+ position: absolute;
+ bottom: 10px;
+ width: 100vw;
+ z-index: 101;
+ display: flex;
+ justify-content: center;
+}
+
+.nav {
+ width: 250px;
+ height: 47px;
+ background-color: $background;
+ border-radius: 7px;
+ padding: 3px 7px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ img {
+ width: 18px;
+ height: 18px;
+ }
+ label {
+ font-family: $primary-font;
+ font-weight: 400;
+ font-size: 12px;
+ color: $boto-1;
+ }
+ .nav-home {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ }
+ .nav-serch {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ }
+ .nav-perfil {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ }
+}
diff --git a/src/app/pages/gamificacao/gamificacao.component.spec.ts b/src/app/pages/gamificacao/gamificacao.component.spec.ts
new file mode 100644
index 0000000..b879413
--- /dev/null
+++ b/src/app/pages/gamificacao/gamificacao.component.spec.ts
@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { GamificacaoComponent } from './gamificacao.component';
+
+describe('GamificacaoComponent', () => {
+ let component: GamificacaoComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [GamificacaoComponent],
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(GamificacaoComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/gamificacao/gamificacao.component.ts b/src/app/pages/gamificacao/gamificacao.component.ts
new file mode 100644
index 0000000..972bc25
--- /dev/null
+++ b/src/app/pages/gamificacao/gamificacao.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-gamificacao',
+ templateUrl: './gamificacao.component.html',
+ styleUrl: './gamificacao.component.scss',
+})
+export class GamificacaoComponent {}
diff --git a/src/app/pages/gamificacao/gamificacao.module.ts b/src/app/pages/gamificacao/gamificacao.module.ts
new file mode 100644
index 0000000..ec57340
--- /dev/null
+++ b/src/app/pages/gamificacao/gamificacao.module.ts
@@ -0,0 +1,15 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from '../../shared/shared.module';
+//import { ComponentsModule } from '../../shared/components/components.module';
+
+import { GamificacaoComponent } from './gamificacao.component';
+import { gamificacaoRoutingModule } from './gamificacao-routing.module';
+import { JogoDaMemoriaModule } from './jogo-da-memoria/jogo-da-memoria.module';
+
+@NgModule({
+ imports: [CommonModule, SharedModule, gamificacaoRoutingModule, JogoDaMemoriaModule],
+ declarations: [GamificacaoComponent],
+ exports: [],
+})
+export class GamificacaoModule {}
diff --git a/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.html b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.html
new file mode 100644
index 0000000..446497e
--- /dev/null
+++ b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
![Card Image]()
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.scss b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.scss
new file mode 100644
index 0000000..0cb47ed
--- /dev/null
+++ b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.scss
@@ -0,0 +1,157 @@
+@import '../../../../styles/base/variables';
+@import '../../../../styles/base/fonts';
+.header {
+ width: 100vw;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.slider-container {
+ position: absolute;
+ width: 80%;
+ margin: 0 auto;
+ text-align: center;
+}
+
+.name-game {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: $boto-1;
+ font-size: 20px;
+ font-family: $primary-font;
+ font-weight: 700;
+ text-align: center;
+}
+
+.labels {
+ padding-top: 45px;
+ display: flex;
+ justify-content: space-around;
+ margin-bottom: 10px;
+ span {
+ font-family: $primary-font;
+ font-size: 14px;
+ color: $boto-1;
+ }
+}
+
+.slider {
+ -webkit-appearance: none;
+ width: 80%;
+ height: 8px;
+ border-radius: 5px;
+ background: linear-gradient(to right, #459c25, #d1b61b, #c30000);
+ opacity: 0.9;
+ transition: opacity 0.2s;
+}
+
+.slider::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 6px;
+ height: 20px;
+ border-radius: 20%;
+ background: $botao;
+ cursor: pointer;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
+}
+
+.slider::-moz-range-thumb {
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: #0000ff;
+ cursor: pointer;
+}
+
+.game-board {
+ padding: 60px 0px 20px 0;
+ display: flex;
+ flex-wrap: wrap;
+ max-width: 700px;
+ justify-content: center;
+ gap: 10px;
+ margin: auto;
+}
+
+.card {
+ font-family: $primary-font;
+ font-weight: 500;
+ font-size: 16px;
+ color: $boto-1;
+ position: relative;
+ width: 115px;
+ height: 115px;
+ cursor: pointer;
+ perspective: 1000px;
+ transform-style: preserve-3d;
+ &.flipped .front,
+ &.matched .front {
+ transform: rotateY(0);
+ }
+ &.flipped .back,
+ &.matched .back {
+ transform: rotateY(180deg);
+ }
+ .front,
+ .back {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ backface-visibility: hidden;
+ transition: transform 0.6s;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid $boto-1;
+ border-radius: 8px;
+ }
+ .front {
+ transform: rotateY(180deg);
+ }
+ .back {
+ background: #a29bfe;
+ transform: rotateY(0);
+ }
+}
+
+/* Centraliza o botão no container */
+
+.complete-button {
+ margin-bottom: 50px;
+ padding: 10px 20px;
+ background-color: #d9d7f1;
+ /* Cor de fundo do botão */
+ border: none;
+ border-radius: 8px;
+ /* Bordas arredondadas */
+ color: #4a4aad;
+ /* Cor do texto */
+ font-weight: bold;
+ font-size: 12px;
+ cursor: pointer;
+ box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
+ /* Sombra leve */
+ transition:
+ background-color 0.3s ease,
+ transform 0.2s ease;
+ /* Centraliza o botão no centro do container */
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* Efeito de hover */
+
+.complete-button:hover {
+ background-color: #c1b9f0;
+}
+
+/* Efeito ao clicar */
+
+.complete-button:active {
+ transform: scale(0.98);
+ /* Leve redução */
+}
diff --git a/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.spec.ts b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.spec.ts
new file mode 100644
index 0000000..3d70f41
--- /dev/null
+++ b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.spec.ts
@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { JogoDaMemoriaComponent } from './jogo-da-memoria.component';
+
+describe('JogoDaMemoriaComponent', () => {
+ let component: JogoDaMemoriaComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [JogoDaMemoriaComponent],
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(JogoDaMemoriaComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.ts b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.ts
new file mode 100644
index 0000000..84f74f6
--- /dev/null
+++ b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.component.ts
@@ -0,0 +1,71 @@
+import { Component, OnInit } from '@angular/core';
+
+interface Card {
+ id: number;
+ image: string | null;
+ flipped: boolean;
+ matched: boolean;
+}
+@Component({
+ selector: 'app-gamificacao',
+ templateUrl: './jogo-da-memoria.component.html',
+ styleUrl: './jogo-da-memoria.component.scss',
+})
+export class JogoDaMemoriaComponent implements OnInit {
+ cards: Card[] = [];
+ flippedCards: Card[] = [];
+ lockBoard: boolean = false;
+
+ ngOnInit(): void {
+ this.setupGame();
+ }
+
+ setupGame(): void {
+ const images = ['assets/image1.png', 'assets/image2.png']; // Substitua pelos caminhos das imagens reais
+ const deck = [...images, ...images].map((image, index) => ({
+ id: index,
+ image,
+ flipped: false,
+ matched: false,
+ }));
+ this.cards = this.shuffleArray(deck);
+ }
+
+ shuffleArray(array: any[]): any[] {
+ return array.sort(() => Math.random() - 0.5);
+ }
+
+ flipCard(card: Card): void {
+ if (this.lockBoard || card.flipped || card.matched) return;
+
+ card.flipped = true;
+ this.flippedCards.push(card);
+
+ if (this.flippedCards.length === 2) {
+ this.checkForMatch();
+ }
+ }
+
+ checkForMatch(): void {
+ const [card1, card2] = this.flippedCards;
+
+ if (card1.image === card2.image) {
+ card1.matched = true;
+ card2.matched = true;
+ this.flippedCards = [];
+ } else {
+ this.lockBoard = true;
+ setTimeout(() => {
+ card1.flipped = false;
+ card2.flipped = false;
+ this.flippedCards = [];
+ this.lockBoard = false;
+ }, 1000);
+ }
+ }
+
+ onComplete(): void {
+ // Aqui você pode adicionar a lógica desejada ao concluir o jogo.
+ alert('Jogo concluído!');
+ }
+}
diff --git a/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.module.ts b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.module.ts
new file mode 100644
index 0000000..f12d76f
--- /dev/null
+++ b/src/app/pages/gamificacao/jogo-da-memoria/jogo-da-memoria.module.ts
@@ -0,0 +1,10 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { JogoDaMemoriaComponent } from './jogo-da-memoria.component';
+import { SharedModule } from '../../../shared/shared.module';
+
+@NgModule({
+ declarations: [JogoDaMemoriaComponent],
+ imports: [SharedModule, CommonModule],
+})
+export class JogoDaMemoriaModule {}
diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html
index 31c04dd..08fdde4 100644
--- a/src/app/pages/home/home.component.html
+++ b/src/app/pages/home/home.component.html
@@ -1,9 +1,20 @@