import { Component, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatMenuModule } from '@angular/material/menu'; import { MatToolbarModule } from '@angular/material/toolbar'; import { Router, RouterLink } from '@angular/router'; import { AuthService } from '../core/auth.service'; /** App bar shared by the library and editor screens. */ @Component({ selector: 'app-toolbar', imports: [MatToolbarModule, MatButtonModule, MatIconModule, MatMenuModule, RouterLink], template: ` videogame_asset LudosData add New game @if (user(); as currentUser) { } person Account `, styles: ` .toolbar { position: sticky; top: 0; z-index: 10; gap: 0.5rem; } .brand { display: inline-flex; align-items: center; gap: 0.5rem; color: inherit; text-decoration: none; font-weight: 600; } .spacer { flex: 1 1 auto; } .menu-header { display: flex; flex-direction: column; padding: 0.5rem 1rem; line-height: 1.3; } .menu-header small { opacity: 0.7; } /* Keep the bar usable on a phone: icons stay, text labels drop out. */ @media (max-width: 599px) { .brand-text, .label-md { display: none; } } `, }) export class Toolbar { private readonly auth = inject(AuthService); private readonly router = inject(Router); readonly user = this.auth.user; logout(): void { this.auth.logout(); void this.router.navigate(['/login']); } }