The button already names the control. The inner <img alt> is announced again, so VoiceOver/NVDA reads the member name twice on the family-card spotlight toggle.
Fix: alt="" (and aria-hidden="true" on the img) in the interactive branch only. Keep the real alt on the non-interactive <span> branch, where there is no button label.
`lib-avatar-stack` in interactive mode (#752) renders:
```html
<button [attr.aria-label]="avatar.alt" ...>
<img [src]="avatar.url" [alt]="avatar.alt" />
</button>
```
The button already names the control. The inner `<img alt>` is announced again, so VoiceOver/NVDA reads the member name twice on the family-card spotlight toggle.
Fix: `alt=""` (and `aria-hidden="true"` on the img) in the interactive branch only. Keep the real alt on the non-interactive `<span>` branch, where there is no button label.
Resolved in spikersoft-angular PR #818 (merged to master). Interactive avatar-stack images are decorative (alt="" + aria-hidden) so AT no longer announces the name twice. Closing.
Resolved in spikersoft-angular [PR #818](https://git.spikersoft.com/spikerj/spikersoft-angular/pulls/818) (merged to `master`). Interactive avatar-stack images are decorative (`alt=""` + `aria-hidden`) so AT no longer announces the name twice. Closing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
lib-avatar-stackin interactive mode (#752) renders:The button already names the control. The inner
<img alt>is announced again, so VoiceOver/NVDA reads the member name twice on the family-card spotlight toggle.Fix:
alt=""(andaria-hidden="true"on the img) in the interactive branch only. Keep the real alt on the non-interactive<span>branch, where there is no button label.Resolved in spikersoft-angular PR #818 (merged to
master). Interactive avatar-stack images are decorative (alt=""+aria-hidden) so AT no longer announces the name twice. Closing.