お世話になっております。
以下の処理において、currentIndex を
slideWidth に掛け合わせる理由が理解できません。
削除すると B までしか移動せず、
currentIndex が果たす意味がより分からなくなりました。
  next.addEventListener('click', () => {
    currentIndex++;
    const slideWidth = slides[0].getBoundingClientRect().width;
    ul.style.transform = `translateX(${-1 * slideWidth * currentIndex}px)`;
  });
そもそも、translateX() は X 軸方向に何 px 分
画像を移動させるかを表す処理です。
であれば、translateX(${-1 * slideWidth}px) で既に、
「X 軸のマイナス方向に画像の width 分移動する」処理は
実現されており、currentIndex をかける必要はないのではないでしょうか。
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?