All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Backend Tests (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 7s
CI / Checkstyle Main (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 11s
CI / Docker backend validation (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 27s
CI / oxlint (pull_request) Successful in 23s
CI / eslint (pull_request) Successful in 32s
CI / prettier (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 45s
243 lines
9.5 KiB
HTML
243 lines
9.5 KiB
HTML
<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">
|
|
<div class="flex items-center space-x-2">
|
|
<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">Trust. Play. Win.</span>
|
|
</div>
|
|
</a>
|
|
|
|
<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"
|
|
>
|
|
<img class="mr-2 w-4 h-4" src="assets/games.svg" alt="gamess" />
|
|
Spiele
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="hidden md:flex items-center space-x-1">
|
|
@if (!isLoggedIn()) {
|
|
<button
|
|
(click)="showLogin.emit()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Anmelden
|
|
</button>
|
|
<button
|
|
(click)="showRegister.emit()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Registrieren
|
|
</button>
|
|
}
|
|
|
|
@if (isLoggedIn()) {
|
|
<div
|
|
class="flex items-center px-4 py-2 mr-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"
|
|
>
|
|
<app-animated-number [value]="balance()" [duration]="0.5"></app-animated-number>
|
|
</span>
|
|
</div>
|
|
|
|
<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()"
|
|
>
|
|
<img class="mr-2 w-3 h-3" src="assets/deposit.svg" alt="deposits" />
|
|
Einzahlen
|
|
</button>
|
|
|
|
<app-deposit
|
|
[isOpen]="isDepositModalOpen"
|
|
(closeModalEmitter)="closeDepositModal()"
|
|
></app-deposit>
|
|
|
|
<button
|
|
class="flex items-center px-4 py-2 bg-slate-700 text-white font-medium rounded-lg hover:bg-slate-600 border border-slate-600 transition-colors duration-200"
|
|
(click)="openTransactionModal()"
|
|
>
|
|
<img class="mr-2 w-4 h-4" src="assets/transaction.svg" alt="transactions" />
|
|
Transaktionen
|
|
</button>
|
|
|
|
<app-transaction-history
|
|
[isOpen]="isTransactionModalOpen"
|
|
(closeEventEmitter)="closeTransactionModal()"
|
|
/>
|
|
|
|
<button
|
|
(click)="logout()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Abmelden
|
|
</button>
|
|
}
|
|
</div>
|
|
|
|
<div class="md:hidden">
|
|
<button
|
|
(click)="toggleMenu()"
|
|
class="p-2 text-white hover:text-emerald-400 rounded-lg transition-colors duration-200"
|
|
>
|
|
<svg
|
|
class="h-6 w-6"
|
|
[class.hidden]="isMenuOpen"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M4 6h16M4 12h16M4 18h16"
|
|
/>
|
|
</svg>
|
|
<svg
|
|
class="h-6 w-6"
|
|
[class.hidden]="!isMenuOpen"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M6 18L18 6M6 6l12 12"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<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
|
|
routerLink="/home"
|
|
class="flex items-center px-4 py-3 text-white/90 hover:text-white hover:bg-white/10 rounded-lg transition-colors duration-200"
|
|
>
|
|
<img class="mr-2 w-4 h-4" src="assets/games.svg" alt="gamess" />
|
|
Spiele
|
|
</a>
|
|
|
|
<div class="border-t border-slate-600 pt-3 space-y-3">
|
|
@if (!isLoggedIn()) {
|
|
<button
|
|
(click)="showLogin.emit()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Anmelden
|
|
</button>
|
|
<button
|
|
(click)="showRegister.emit()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Registrieren
|
|
</button>
|
|
}
|
|
@if (isLoggedIn()) {
|
|
<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"
|
|
>
|
|
<app-animated-number [value]="balance()" [duration]="0.5"></app-animated-number> €
|
|
</span>
|
|
</div>
|
|
|
|
<button
|
|
(click)="openDepositModal()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Einzahlen
|
|
</button>
|
|
|
|
<button
|
|
(click)="openTransactionModal()"
|
|
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"
|
|
>
|
|
Transaktionen
|
|
</button>
|
|
|
|
<button
|
|
(click)="logout()"
|
|
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"
|
|
/>
|
|
</svg>
|
|
Abmelden
|
|
</button>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|