Function
See SafariGuideAutoplayProps
The guide as a labelled group, cycling through the steps and answering a horizontal drag
The iPad's and the Mac's guide are the same component because they are the same guide with different contents: the steps come from SAFARI_INSTALL_STEPS, the copy from a namespace keyed by platform, and the picture from SafariWindowScreen. Nothing about the playing is per-platform, so nothing about the playing is written twice.
The pacing, the wrap and the gesture live in useGuidePlayback, which the iPhone guide reads from too. All three are specified to behave the same way, and that is the one place that says how.
The step counter counts taps, not frames. The result is a frame and not a tap: the learner does nothing on it, so numbering it would tell them the flow costs one more step than it does.
It holds no dismissal state; onDismiss hands that to the caller.
The Safari install guide, playing itself: one platform's taps on a loop, and a drag to move it by hand.