+ {testimonials.map((testimonial) => (
+
+ ))}
+ {/* The second set only exists to close the desktop loop. It is
+ rendered after mount so mobile never ships a duplicate copy,
+ and so the server and first client render agree. */}
+ {isDesktop &&
+ testimonials.map((testimonial) => (
+
-
-
-
-
- “{testimonial.testimonial}”
-
-
- ))}
+ ))}
+
+
+
+ {/* The controls pause regardless of PAUSE_ON_HOVER: stepping is
+ pointless if the drift immediately carries the card away. Hover
+ is covered as well as focus because Safari does not focus a
+ button on click. */}
+