CoachMark

Designer doc
CoachMark component provides guided tours and contextual help by highlighting specific elements on the page.

Example

Basic Usage
A multi-step tour with navigation controls. Toggle showOverlay to display a backdrop behind the highlighted element. When overlay is active, you can enable clickThrough to allow users to interact with the highlighted element.
View code
Variant
The showOverlay prop also controls the popover variant automatically: info (dark semMod1st background) when overlay is off, and default (standard popover background) when overlay is on. You can override this by explicitly setting the variant prop.
View code
Spacing overlay
Use overlayProps.spacing to make the overlay open more to introduce something like new select option.
View code
With a drawer
By default, the coach mark will use the wrapped element as the reference for drawing the highlight box around it. You can further control this with CoachMarkReference. It uses absolute positioning, so you can place it in a relative container to make it appear where you want.
View code
Coach mark but from dialog
View code
Hotspot
Hotspot are used to draw attention to specific UI elements in a subtle, non-intrusive way. They are ideal when you want to encourage exploration without disrupting the user’s workflow.
They appear as pulsating dots and rely on user interaction to trigger. When activated, the hotspot opens a popover to provide additional context or guidance.
View code

API

CoachMarkActionButton
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
colorTypeColorTypes
Set color based on theme. If color is specified, that prop is used instead of this.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
leftIconReactNode
Element before the label. Equivalent to element on the label with some margin.
loadingboolean
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
radiusnumber
rightIconReactNode
Element after the label. Equivalent to element on the label with some margin.
sizeButtonSizes
variantButtonVariants
Prefers naming it as variant because type is a known button html property.
CoachMarkHotspot
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
placementPlacementstop-end
CoachMarkOverlay
Prop nameTypeDefaultDescription
clickThroughboolean
elevationLevelnumber
overlayPropsSVGProps<SVGRectElement>
referenceHTMLElement
spacingnumber | [number, number] | [number, number, number] | [number, number, number, number][1, 1]
all - top,bottom | left,right - top | left,right | bottom - top | right | bottom | left
spacingBottomnumber
spacingLeftnumber
spacingRightnumber
spacingTopnumber
svgPropsSVGProps<SVGSVGElement>
CoachMarkPopover
Prop nameTypeDefaultDescription
activeboolean
arrowArrowProps
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
basisnumber
Width of the popover
clickThroughboolean
closeOnBlurboolean
Dismiss popover when its blurred. Suggested to use tgt with PopoverTrigger.Click
containerHTMLElement
contentReactNode
elevationLevelnumber3
focusChildOnOpenboolean
Focus the child element when the popover is opened. Default is true.
focusOnOpenboolean
Auto focus the popover inner elements when set to true
immediateboolean
initialActiveboolean
maxHeightnumber
Max height of the popover(in px), might be overwritten by the middleware when the window size is too small for it
offset[number, number]showOverlay ? OFFSET_WITH_OVERLAY : OFFSET_WITHOUT_OVERLAY
onActiveChange(active: boolean) => void
onComponentBlur() => void
Callback function that will be called when the whole Popover component is blurred.
overlayPropsPartial<CoachMarkOverlayProps>
placementPlacements
popperOptionsPopperPopperOptions
Options for floating.ui instance
popperUpdateKeystring
shouldKeyDownReturn(e: KeyboardEvent<HTMLDivElement>) => boolean
By default when closeOnBlur=true, the focus will return to the trigger element when the key down event is not printable. When closeOnBlur=false, the focus will be kept while typing printable characters in popover.(dialog like behavior) Use this prop if you want to change this behavior, the boolean returned from this function will decide if the key down event should return the focus to trigger element.
showOverlaybooleantrue
springConfigPartial<AnimationConfig>
triggerPopoverTrigger
variantCoachMarkPopoverVariants
CoachMarkPopoverActions
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
CoachMarkPopoverClose
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
colorTypeColorTypes
Set color based on theme. If color is specified, that prop is used instead of this.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
loadingboolean
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
radiusstring
sizeIconButtonSizes
tooltipReactNode
tooltipPropsOmit<TooltipProps, "title" | "children">
variantIconButtonVariants
CoachMarkPopoverContent
Prop nameTypeDefaultDescription
actionElementReactNode
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
childrenContainerPropsHTMLAttributes<HTMLDivElement>
CoachMarkPopoverTitle
Prop nameTypeDefaultDescription
actionElementReactNode
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
CoachMarkProgress
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
CoachMarkReference
CoachMark
Prop nameTypeDefaultDescription
asany
Tag or component, but a simple tag (i.e. built-in components, e.g. div, span) is recommended.
disabledboolean
Equivalent to button's disabled property.
keyboardClickKeysstring[]
onBlurFocusEventHandler<HTMLDivElement>
onClickMouseEventHandler<HTMLDivElement>
onKeyDownKeyboardEventHandler<HTMLDivElement>
onKeyUpKeyboardEventHandler<HTMLDivElement>
onMouseDownMouseEventHandler<HTMLDivElement>
onMouseLeaveMouseEventHandler<HTMLDivElement>
onMouseUpMouseEventHandler<HTMLDivElement>
onReleaseEventHandler<SyntheticEvent<HTMLDivElement, Event>>
Callback that's triggered after click i.e. mouseup and keyup of enter or space.
onTouchEndTouchEventHandler<HTMLDivElement>
onTouchStartTouchEventHandler<HTMLDivElement>
placementPlacementstop-end
    Example
    Example
    Basic Usage
    Basic Usage
    Variant
    Variant
    Spacing overlay
    Spacing overlay
    With a drawer
    With a drawer
    Coach mark but from dialog
    Coach mark but from dialog
    Hotspot
    Hotspot
    API
    API
    CoachMarkActionButton
    CoachMarkActionButton
    CoachMarkHotspot
    CoachMarkHotspot
    CoachMarkOverlay
    CoachMarkOverlay
    CoachMarkPopover
    CoachMarkPopover
    CoachMarkPopoverActions
    CoachMarkPopoverActions
    CoachMarkPopoverClose
    CoachMarkPopoverClose
    CoachMarkPopoverContent
    CoachMarkPopoverContent
    CoachMarkPopoverTitle
    CoachMarkPopoverTitle
    CoachMarkProgress
    CoachMarkProgress
    CoachMarkReference
    CoachMarkReference
    CoachMark
    CoachMark
Coral is a thoroughly developed design system widely adopted by developers and designers for creating beautiful and user-friendly Sea internal products.

Copyright © 2018-2026 Sea Labs