Compare commits

..

4 commits

Author SHA1 Message Date
Phan Huy Tran
463090b224 style: fix pipelines
All checks were successful
CI / Get Changed Files (pull_request) Successful in 16s
Label PRs based on size / Check PR size (pull_request) Successful in 17s
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
CI / oxlint (pull_request) Successful in 38s
CI / prettier (pull_request) Successful in 43s
CI / eslint (pull_request) Successful in 49s
Claude PR Review / claude-code (pull_request) Successful in 1m17s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Successful in 58s
CI / Docker frontend validation (pull_request) Successful in 35s
2025-06-04 11:52:49 +02:00
Phan Huy Tran
64923719e4 feat: restyle navbar
Some checks failed
CI / Get Changed Files (pull_request) Successful in 13s
Label PRs based on size / Check PR size (pull_request) Successful in 20s
Pull Request Labeler / labeler (pull_request_target) Successful in 10s
CI / oxlint (pull_request) Failing after 37s
CI / eslint (pull_request) Failing after 53s
CI / prettier (pull_request) Failing after 38s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m41s
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Successful in 1m15s
CI / Docker frontend validation (pull_request) Successful in 1m8s
2025-06-04 11:49:03 +02:00
Phan Huy Tran
e5e47ff96e feat: improve game grid 2025-06-04 11:17:36 +02:00
Phan Huy Tran
ada291b640 feat: adjust game grid 2025-06-04 11:05:21 +02:00
7 changed files with 118 additions and 60 deletions

View file

@ -45,7 +45,9 @@
</div>
<!-- Bottom row with 2 games centered -->
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4 max-w-2xl mx-auto xl:max-w-3xl xl:gap-6">
<div
class="grid grid-cols-1 sm:grid-cols-2 gap-4 max-w-2xl mx-auto xl:max-w-3xl xl:gap-6"
>
<div class="card group" *ngFor="let game of featuredGames.slice(3, 5)">
<div class="relative overflow-hidden rounded-lg">
<img

View file

@ -7,10 +7,7 @@ import format from 'ajv/dist/vocabularies/format';
@Component({
selector: 'app-homepage',
standalone: true,
imports: [
NgFor,
],
imports: [NgFor],
templateUrl: './home.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})

View file

@ -64,20 +64,20 @@
>
</div>
</div>
<div class="hidden lg:block card">
</div>
<div class="slider-grid">
<div class="card">
<div class="game-card-content">
<h3 class="game-heading-sm">Coinflip</h3>
<p class="game-text">Münzwurf</p>
<h3 class="game-heading-sm">Poker</h3>
<p class="game-text">Texas Hold'em & mehr</p>
<a
routerLink="game/blackjack"
routerLink="/game/poker"
class="button-primary w-full py-2 inline-block text-center"
>Jetzt Spielen</a
>
</div>
</div>
</div>
<div class="slider-grid">
<div class="card">
<div class="game-card-content">
<h3 class="game-heading-sm">Dice</h3>
@ -165,7 +165,7 @@
<div class="stat-container">
<div class="stat-number">24/7</div>
<div class="stat-text">Support</div>
<div class="stat-text">Support <span class="text-emerald text-xs">*</span></div>
</div>
</div>
</div>

View file

@ -5,19 +5,24 @@
<h3 class="footer-heading">Casino Spiele</h3>
<ul class="space-y-3">
<li>
<a routerLink="/game/slots" class="footer-link">Slots</a>
<a routerLink="/games" class="footer-link">Slots</a>
</li>
<li>
<a routerLink="/game/blackjack" class="footer-link">Blackjack</a>
<a routerLink="/games" class="footer-link">Blackjack</a>
</li>
<li>
<a routerLink="/game/dice" class="footer-link">Dice</a>
<a routerLink="/games" class="footer-link">Poker</a>
</li>
<li>
<a routerLink="/game/coinflip" class="footer-link">Coinflip</a>
<a routerLink="/games" class="footer-link">Liars Dice</a>
</li>
</ul>
</div>
<div class="footer-section">
<h3 class="footer-heading">Andere Spiele</h3>
<ul class="space-y-3">
<li>
<a routerLink="/game/lootboxes" class="footer-link">Lootboxen</a>
<a routerLink="/games" class="footer-link">Lootboxen</a>
</li>
</ul>
</div>
@ -49,6 +54,10 @@
<fa-icon [icon]="faGooglePay" class="footer-payment-icon"></fa-icon>
<span class="footer-payment-text">Google Pay</span>
</div>
<div class="footer-payment-method">
<fa-icon [icon]="faApplePay" class="footer-payment-icon"></fa-icon>
<span class="footer-payment-text">Apple Pay</span>
</div>
</div>
</div>
</div>
@ -56,6 +65,10 @@
<div class="mt-12 pt-8 border-t border-deep-blue-light">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="footer-copyright">
<span class="footer-disclaimer">
<span class="text-emerald">*</span> nicht vorhanden.
</span>
<br />
© {{ currentYear }} Trustworthy Casino. Keine Rechte vorbehalten.
</div>
</div>

View file

@ -1,14 +1,13 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { faCreditCard, faMoneyBillTransfer, faWallet } from '@fortawesome/free-solid-svg-icons';
import { faGooglePay, faPaypal } from '@fortawesome/free-brands-svg-icons';
import { RouterLink } from '@angular/router';
import { faApplePay, faGooglePay, faPaypal } from '@fortawesome/free-brands-svg-icons';
@Component({
selector: 'app-footer',
standalone: true,
templateUrl: './footer.component.html',
imports: [FontAwesomeModule, RouterLink],
imports: [FontAwesomeModule],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class FooterComponent {
@ -19,4 +18,5 @@ export class FooterComponent {
faMoneyBillTransfer = faMoneyBillTransfer;
faWallet = faWallet;
faGooglePay = faGooglePay;
faApplePay = faApplePay;
}

View file

@ -1,20 +1,19 @@
<nav class="bg-deep-blue-light border-b border-emerald-500/30 shadow-lg">
<div class="max-w-full mx-auto px-6">
<div class="flex justify-between items-center h-16">
<!-- Logo and Brand -->
<div class="flex items-center space-x-6">
<a routerLink="/" class="flex items-center space-x-3 group">
<div class="flex flex-col">
<span class="text-xl font-bold text-white">
Trustworthy Casino
</span>
<span class="text-xs text-emerald-400 font-medium">Premium Gaming</span>
<span class="text-xl font-bold text-white"> Trustworthy Casino </span>
<span class="text-xs text-emerald-400 font-medium">Trust. Play. Win.</span>
</div>
</a>
<!-- Navigation Links -->
<div class="hidden md:flex items-center space-x-1">
<a routerLink="/home" class="flex items-center px-4 py-2 text-white/90 hover:text-white font-medium rounded-lg hover:bg-white/10 transition-colors duration-200">
<a
routerLink="/home"
class="flex items-center px-4 py-2 text-white/90 hover:text-white font-medium rounded-lg hover:bg-white/10 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 24 24">
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" />
</svg>
@ -23,7 +22,6 @@
</div>
</div>
<!-- User Actions -->
<div class="hidden md:flex items-center space-x-2">
@if (!isLoggedIn()) {
<button
@ -31,7 +29,12 @@
class="flex items-center px-4 py-2 text-white font-medium border border-emerald-500 rounded-lg hover:bg-emerald-500/10 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
/>
</svg>
Anmelden
</button>
@ -40,28 +43,41 @@
class="flex items-center px-4 py-2 bg-emerald-600 text-white font-medium rounded-lg hover:bg-emerald-500 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"
/>
</svg>
Registrieren
</button>
}
@if (isLoggedIn()) {
<!-- Balance Display -->
<div class="flex items-center px-4 py-2 bg-slate-700 border border-emerald-500/30 rounded-lg font-medium">
<div
class="flex items-center px-4 py-2 bg-slate-700 border border-emerald-500/30 rounded-lg font-medium"
>
<span class="text-emerald-400 text-sm mr-2">Guthaben:</span>
<span [class]="balance() < 0 ? 'text-red-400 font-bold' : 'text-white font-bold'" class="text-sm">
<span
[class]="balance() < 0 ? 'text-red-400 font-bold' : 'text-white font-bold'"
class="text-sm"
>
<app-animated-number [value]="balance()" [duration]="0.5"></app-animated-number>
</span>
</div>
<!-- Action Buttons -->
<button
class="flex items-center px-4 py-2 bg-emerald-600 text-white font-medium rounded-lg hover:bg-emerald-500 transition-colors duration-200"
(click)="openDepositModal()"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 6v6m0 0v6m0-6h6m-6 0H6"
/>
</svg>
Einzahlen
</button>
@ -88,14 +104,18 @@
class="flex items-center px-4 py-2 text-red-400 font-medium border border-red-500/50 rounded-lg hover:bg-red-500/10 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"
/>
</svg>
Abmelden
</button>
}
</div>
<!-- Mobile Menu Button -->
<div class="md:hidden">
<button
(click)="toggleMenu()"
@ -133,7 +153,6 @@
</div>
</div>
<!-- Mobile Menu -->
<div [class]="isMenuOpen ? 'block' : 'hidden'" class="md:hidden">
<div class="px-2 pt-2 pb-4 space-y-3 bg-slate-700 rounded-lg mt-2">
<a
@ -153,7 +172,12 @@
class="w-full flex items-center justify-center px-4 py-3 text-white font-medium border border-emerald-500 rounded-lg hover:bg-emerald-500/10 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
/>
</svg>
Anmelden
</button>
@ -162,16 +186,25 @@
class="w-full flex items-center justify-center px-4 py-3 bg-emerald-600 text-white font-medium rounded-lg hover:bg-emerald-500 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"
/>
</svg>
Registrieren
</button>
}
@if (isLoggedIn()) {
<!-- Mobile Balance Display -->
<div class="flex items-center justify-center px-4 py-3 bg-slate-700 border border-emerald-500/30 rounded-lg">
<div
class="flex items-center justify-center px-4 py-3 bg-slate-700 border border-emerald-500/30 rounded-lg"
>
<span class="text-emerald-400 text-sm font-medium mr-2">Guthaben:</span>
<span [class]="balance() < 0 ? 'text-red-400 font-bold' : 'text-white font-bold'" class="text-sm">
<span
[class]="balance() < 0 ? 'text-red-400 font-bold' : 'text-white font-bold'"
class="text-sm"
>
<app-animated-number [value]="balance()" [duration]="0.5"></app-animated-number>
</span>
</div>
@ -181,7 +214,12 @@
class="w-full flex items-center justify-center px-4 py-3 bg-emerald-600 text-white font-medium rounded-lg hover:bg-emerald-500 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 6v6m0 0v6m0-6h6m-6 0H6"
/>
</svg>
Einzahlen
</button>
@ -191,7 +229,12 @@
class="w-full flex items-center justify-center px-4 py-3 bg-slate-700 text-white font-medium rounded-lg hover:bg-slate-600 border border-slate-600 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"
/>
</svg>
Transaktionen
</button>
@ -201,7 +244,12 @@
class="w-full flex items-center justify-center px-4 py-3 text-red-400 font-medium border border-red-500/50 rounded-lg hover:bg-red-500/10 transition-colors duration-200"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"
/>
</svg>
Abmelden
</button>

View file

@ -10,12 +10,10 @@ import {
} from '@angular/core';
import { RouterModule } from '@angular/router';
import { AuthService } from '@service/auth.service';
import {Observable, Subscription} from 'rxjs';
import { Subscription } from 'rxjs';
import { AnimatedNumberComponent } from '@blackjack/components/animated-number/animated-number.component';
import {DepositComponent} from "../../../feature/deposit/deposit.component";
import {TransactionHistoryComponent} from "../../../feature/transaction-history/transaction-history.component";
import {TransactionData} from "../../../model/TransactionData";
import {TransactionService} from "@service/transaction.service";
import { DepositComponent } from '../../../feature/deposit/deposit.component';
import { TransactionHistoryComponent } from '../../../feature/transaction-history/transaction-history.component';
@Component({
selector: 'app-navbar',