Summary
Preview images of uploaded workout programs in MuscleMap.jsx (line 295) use alt=\"\", marking them as decorative when they are in fact content images. The BodySVG and HeatmapBodySVG components in bodymap.jsx render without a <title>, <desc>, or aria-label, giving screen reader users no understanding of what the body map represents or which muscles are highlighted.
Priority
High
Acceptance criteria
Summary
Preview images of uploaded workout programs in
MuscleMap.jsx(line 295) usealt=\"\", marking them as decorative when they are in fact content images. TheBodySVGandHeatmapBodySVGcomponents inbodymap.jsxrender without a<title>,<desc>, oraria-label, giving screen reader users no understanding of what the body map represents or which muscles are highlighted.Priority
High
Acceptance criteria
MuscleMap.jsxhave a meaningfulaltattribute (e.g.\"Bilde av treningsprogram {index + 1}\")BodySVG<svg>element hasaria-labelthat describes the view and context (e.g.\"Frontside: primære og sekundære muskler for gjeldende økt\")HeatmapBodySVG<svg>element hasaria-labelappropriate to its context (report view, history view, etc.) — passed in as a prop so callers can customise itBodySVG(e.g. template thumbnails in Bibliotek) setaria-hidden=\"true\"on the SVG