import { Component, computed, input } from '@angular/core'; import { AlertComponent } from '@shared/ui/alert/alert.component'; type BannerType = 'info' | 'warning' | 'error'; type AlertType = 'info' | 'ok' | 'warning' | 'error'; /** Molecule: a polite, announced status banner. Wraps the alert atom and maps the banner type to an alert type. Pure UI: the container computes the message. */ @Component({ selector: 'app-upload-status-banner', imports: [AlertComponent], template: `
{{ message() }}
`, }) export class UploadStatusBannerComponent { message = input.required(); type = input('info'); protected readonly alertType = computed(() => this.type() === 'info' ? 'info' : this.type(), ); }