From 325bc118ee47ed3c9e772d195775036867e89563 Mon Sep 17 00:00:00 2001 From: Jan-Marlon Leibl Date: Wed, 12 Feb 2025 12:26:48 +0100 Subject: [PATCH] feat: add footer component and FontAwesome integration --- frontend/bun.lock | 14 +++ frontend/package.json | 4 + frontend/src/app/app.component.html | 9 +- frontend/src/app/app.component.ts | 4 +- frontend/src/app/app.config.ts | 2 + .../components/footer/footer.component.html | 114 ++++++++++++++++++ .../components/footer/footer.component.ts | 23 ++++ .../components/navbar/navbar.component.html | 61 ++++++++-- .../components/navbar/navbar.component.ts | 4 +- frontend/src/styles.css | 1 + 10 files changed, 219 insertions(+), 17 deletions(-) create mode 100644 frontend/src/app/shared/components/footer/footer.component.html create mode 100644 frontend/src/app/shared/components/footer/footer.component.ts diff --git a/frontend/bun.lock b/frontend/bun.lock index 5011117..8a74659 100644 --- a/frontend/bun.lock +++ b/frontend/bun.lock @@ -12,6 +12,10 @@ "@angular/platform-browser": "^18.2.0", "@angular/platform-browser-dynamic": "^18.2.0", "@angular/router": "^18.2.0", + "@fortawesome/angular-fontawesome": "^1.0.0", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", "@tailwindcss/postcss": "^4.0.3", "keycloak-angular": "^16.0.1", "keycloak-js": "^25.0.5", @@ -333,6 +337,16 @@ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.23.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g=="], + "@fortawesome/angular-fontawesome": ["@fortawesome/angular-fontawesome@1.0.0", "", { "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.7.1", "tslib": "^2.8.1" }, "peerDependencies": { "@angular/core": "^19.0.0" } }, "sha512-EC2fYuXIuw2ld1kzJi+zysWus6OeGGfLQtbh0hW9zyyq5aBo8ZJkcJKBsVQ8E6Mg7nHyTWaXn+sdcXTPDWz+UQ=="], + + "@fortawesome/fontawesome-common-types": ["@fortawesome/fontawesome-common-types@6.7.2", "", {}, "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg=="], + + "@fortawesome/fontawesome-svg-core": ["@fortawesome/fontawesome-svg-core@6.7.2", "", { "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" } }, "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA=="], + + "@fortawesome/free-brands-svg-icons": ["@fortawesome/free-brands-svg-icons@6.7.2", "", { "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" } }, "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q=="], + + "@fortawesome/free-solid-svg-icons": ["@fortawesome/free-solid-svg-icons@6.7.2", "", { "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" } }, "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA=="], + "@inquirer/checkbox": ["@inquirer/checkbox@2.5.0", "", { "dependencies": { "@inquirer/core": "^9.1.0", "@inquirer/figures": "^1.0.5", "@inquirer/type": "^1.5.3", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" } }, "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA=="], "@inquirer/confirm": ["@inquirer/confirm@3.1.22", "", { "dependencies": { "@inquirer/core": "^9.0.10", "@inquirer/type": "^1.5.2" } }, "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg=="], diff --git a/frontend/package.json b/frontend/package.json index 921ca25..c79aae0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,6 +23,10 @@ "@angular/platform-browser": "^18.2.0", "@angular/platform-browser-dynamic": "^18.2.0", "@angular/router": "^18.2.0", + "@fortawesome/angular-fontawesome": "^1.0.0", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", "@stripe/stripe-js": "^5.6.0", "@tailwindcss/postcss": "^4.0.3", "keycloak-angular": "^16.0.1", diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html index 6659729..67fc2d4 100644 --- a/frontend/src/app/app.component.html +++ b/frontend/src/app/app.component.html @@ -1,2 +1,7 @@ - - +
+ +
+ +
+ +
diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index 0a852aa..14626aa 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -3,10 +3,12 @@ import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import { KeycloakAngularModule } from 'keycloak-angular'; import { NavbarComponent } from './shared/components/navbar/navbar.component'; +import { FooterComponent } from './shared/components/footer/footer.component'; + @Component({ selector: 'app-root', standalone: true, - imports: [CommonModule, RouterOutlet, KeycloakAngularModule, NavbarComponent], + imports: [CommonModule, RouterOutlet, KeycloakAngularModule, NavbarComponent, FooterComponent], providers: [], templateUrl: './app.component.html', styleUrl: './app.component.css', diff --git a/frontend/src/app/app.config.ts b/frontend/src/app/app.config.ts index c6b9f77..8401ece 100644 --- a/frontend/src/app/app.config.ts +++ b/frontend/src/app/app.config.ts @@ -4,6 +4,7 @@ import { provideExperimentalZonelessChangeDetection, } from '@angular/core'; import { provideRouter } from '@angular/router'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { routes } from './app.routes'; import { @@ -38,6 +39,7 @@ export const appConfig: ApplicationConfig = { providers: [ provideRouter(routes), KeycloakAngularModule, + FontAwesomeModule, { provide: APP_INITIALIZER, useFactory: initializeApp, diff --git a/frontend/src/app/shared/components/footer/footer.component.html b/frontend/src/app/shared/components/footer/footer.component.html new file mode 100644 index 0000000..c5709d3 --- /dev/null +++ b/frontend/src/app/shared/components/footer/footer.component.html @@ -0,0 +1,114 @@ + diff --git a/frontend/src/app/shared/components/footer/footer.component.ts b/frontend/src/app/shared/components/footer/footer.component.ts new file mode 100644 index 0000000..006a23b --- /dev/null +++ b/frontend/src/app/shared/components/footer/footer.component.ts @@ -0,0 +1,23 @@ +import { Component } from '@angular/core'; +import { RouterLink } from '@angular/router'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; +import { faMoneyBillTransfer, faCreditCard, faWallet } from '@fortawesome/free-solid-svg-icons'; +import { faPaypal, faGooglePay, faApplePay } from '@fortawesome/free-brands-svg-icons'; + +@Component({ + selector: 'app-footer', + standalone: true, + templateUrl: './footer.component.html', + imports: [FontAwesomeModule], +}) +export class FooterComponent { + currentYear: number = new Date().getFullYear(); + + // Payment method icons + faPaypal = faPaypal; + faCreditCard = faCreditCard; + faMoneyBillTransfer = faMoneyBillTransfer; + faWallet = faWallet; + faGooglePay = faGooglePay; + faApplePay = faApplePay; +} diff --git a/frontend/src/app/shared/components/navbar/navbar.component.html b/frontend/src/app/shared/components/navbar/navbar.component.html index 61447ad..fa990e6 100644 --- a/frontend/src/app/shared/components/navbar/navbar.component.html +++ b/frontend/src/app/shared/components/navbar/navbar.component.html @@ -6,23 +6,54 @@ Trustworthy Casino
-
@@ -30,13 +61,19 @@
- Games + Games
+ class="cursor-pointer w-full px-4 py-1.5 rounded bg-emerald-500 hover:bg-emerald-600 text-white text-sm font-medium transition-colors duration-200" + > + Login +
- \ No newline at end of file + diff --git a/frontend/src/app/shared/components/navbar/navbar.component.ts b/frontend/src/app/shared/components/navbar/navbar.component.ts index 338201c..43053a3 100644 --- a/frontend/src/app/shared/components/navbar/navbar.component.ts +++ b/frontend/src/app/shared/components/navbar/navbar.component.ts @@ -6,7 +6,7 @@ import { CommonModule } from '@angular/common'; selector: 'app-navbar', templateUrl: './navbar.component.html', standalone: true, - imports: [CommonModule, RouterModule] + imports: [CommonModule, RouterModule], }) export class NavbarComponent { isMenuOpen = false; @@ -14,4 +14,4 @@ export class NavbarComponent { toggleMenu() { this.isMenuOpen = !this.isMenuOpen; } -} \ No newline at end of file +} diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 12c08a1..eacf745 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -17,3 +17,4 @@ body { --mdc-dialog-supporting-text-color: #9ca3af !important; --mdc-dialog-container-shape: 6px !important; } +