import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'; import { NgClass } from '@angular/common'; export type ButtonVariant = | 'primary' | 'secondary' | 'danger' | 'danger-secondary' | 'cancel'; @Component({ selector: 'app-button', imports: [NgClass], templateUrl: './button.component.html', styleUrl: './button.component.scss', changeDetection: ChangeDetectionStrategy.OnPush }) export class ButtonComponent { readonly variant = input('primary'); readonly type = input<'button' | 'submit' | 'reset'>('button'); readonly disabled = input(false); readonly buttonClass = input(''); protected readonly buttonClasses = computed(() => { const variants: Record = { primary: 'btn-primary', secondary: 'btn-outline-primary', danger: 'btn-danger', 'danger-secondary': 'btn-outline-danger', cancel: 'btn-secondary' }; return ['btn', variants[this.variant()], this.buttonClass()]; }); }