Accessibility
AudioPlayer is a compact cluster of IconButtons and a Slider, so the accessibility story builds on those primitives. The component handles button roles, keyboard activation, and slider semantics. Your app is responsible for localized button titles, the accessible name of the cluster itself, error and loading announcements, and coordination when multiple players appear on one view.
aria-label populated from the configured titles.Slider primitive with standard ARIA pattern (role="slider", aria-valuenow, aria-valuemin, aria-valuemax).aria-disabled; interaction is suppressed but controls remain reachable.showTimeStamps is on, available to screen readers on focus traversal through the cluster.IconButton: "Play recording", "Pause recording", "Skip forward 15 seconds", "Mute", "Unmute".aria-labelledby on a wrapping region, or include the context in the tooltip text).ref.pause.<button>; don't wrap with additional role="button".aria-valuenow in seconds with a matching aria-valuetext in mm:ss format for human-readable current position.src resolver is in flight.IconButton defaults meet the 44×44 target; verify when you override size.AudioPlayer does not autoplay. Don't add autoplay in a wrapper—audio starting without user action is both a WCAG concern and a dispatch UX hazard.