Feedback and status

CoachMark
v1.0.7
Documentation Under Review

An interactive guided tour component for product onboarding with full custom styling support. Built on react-joyride with customizable tooltips, 13 placement options, and CVA theming capabilities.

Prefer AI-assisted development?

This documentation is available via the Catalyst MCP Server. Learn how to connect →

Catalyst CoachMark extends react-joyride with built-in Catalyst design tokens, custom tooltip rendering, and 13 placement options — giving you a production-ready guided tour with zero configuration.

Preview
BOTTOM
BOTTOM-START
BOTTOM-END
LEFT-START
LEFT
LEFT-END
RIGHT-START
RIGHT
RIGHT-END
TOP-START
TOP
TOP-END
CENTER

Installation

npm install @pmi/catalyst-coachmark
import { CoachMark } from '@pmi/catalyst-coachmark';

API Reference

CoachMark

Prop

Type

Step

Prop

Type

TooltipRenderProps

Prop

Type

Accessibility

CoachMark is designed to support WCAG 2.2 AA compliance. Because the tooltip UI is fully consumer-provided via tooltipComponent, several criteria are shared responsibilities:

  • Focus Not Obscured (2.4.11) — Ensure the active tooltip is not hidden behind the spotlight overlay. Use disableOverlay or adjust spotlightPadding if needed.
  • Target Size (2.5.8) — Interactive elements inside your custom tooltip must be at least 24×24px. Use size="sm" or larger for Catalyst Buttons.
  • Color Contrast — Custom tooltip colors must meet a 4.5:1 contrast ratio in both light and dark modes.
  • Always spread tooltipProps onto the tooltip container — it carries the required aria-label and role attributes injected by react-joyride.

Keyboard Interactions

KeyDescription
TabMove focus between interactive elements in the tooltip
Enter / SpaceActivate the focused button (Next, Back, Skip)
EscapeClose the tour

Choosing the Right Component

ComponentWhen to use
CoachMarkMulti-step guided tours and feature onboarding flows
TooltipSingle-element contextual hints on hover/focus
PopoverInteractive overlays triggered by a user action
DialogFull modal interruptions requiring user acknowledgement

On this page