import { ChangeDetectionStrategy, Component, input } from '@angular/core';
import { initials } from './copy';
/** Overlapping initials (members of a project, people on a ticket). */
@Component({
selector: 'ts-avatars',
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
@for (name of names().slice(0, max()); track $index) {
{{ initialsOf(name) }}
}
@if (names().length > max()) {
+{{ names().length - max() }}
}
`,
styles: `
:host {
display: inline-flex;
align-items: center;
padding-left: 0.375rem;
}
.ts-avatar {
display: inline-grid;
place-items: center;
width: var(--ts-avatar-size, 1.75rem);
height: var(--ts-avatar-size, 1.75rem);
margin-left: -0.375rem;
border-radius: 50%;
border: 2px solid var(--ts-surface);
background: color-mix(in srgb, var(--ts-brand) 18%, var(--ts-surface));
color: color-mix(in srgb, var(--ts-brand) 70%, var(--ts-ink));
font-family: var(--ts-font-mono);
font-size: 0.625rem;
font-weight: 600;
letter-spacing: 0;
}
.ts-avatar--more {
background: var(--ts-sunken);
color: var(--ts-muted);
}
`,
})
export class AvatarsComponent {
readonly names = input.required();
readonly max = input(5);
protected readonly initialsOf = initials;
}