Skip to main content

TourZone

TourZone is a wrapper component that registers an element as a step in the tour. It measures the wrapped element and uses its position to drive the highlight overlay.

import { TourZone } from 'react-native-lumen';

<TourZone
stepKey="feature-button"
name="Feature"
description="Tap this button to activate the feature."
order={1}
shape="rounded-rect"
borderRadius={12}
>
<MyButton />
</TourZone>;

Props

Core

PropTypeDefaultDescription
stepKeystringRequiredUnique identifier for this step.
namestringundefinedTitle shown in the tooltip.
descriptionstringRequiredDescription text shown in the tooltip.
ordernumberundefinedStep order (used when stepsOrder is not set on TourProvider).
styleViewStyleundefinedStyle for the wrapping container.

Zone Shape & Appearance

PropTypeDefaultDescription
shape'rounded-rect' | 'circle' | 'pill''rounded-rect'Shape of the cutout in the overlay.
borderRadiusnumber10Border radius (applies to rounded-rect shape).
zonePaddingnumber0Uniform padding around the highlighted element.
zonePaddingTopnumberundefinedTop padding override.
zonePaddingRightnumberundefinedRight padding override.
zonePaddingBottomnumberundefinedBottom padding override.
zonePaddingLeftnumberundefinedLeft padding override.
zoneBorderWidthnumber0Width of the border ring around the zone.
zoneBorderColorstring'transparent'Color of the border ring.

Glow Effect

These props require enableGlow: true in the TourProvider config.

PropTypeDefaultDescription
zoneGlowColorstring'#FFFFFF'Color of the glow (supports rgba for opacity).
zoneGlowRadiusnumber10Blur radius of the glow.
zoneGlowSpreadnumber5Spread radius of the glow.
zoneGlowOffsetXnumber0Horizontal offset of the glow.
zoneGlowOffsetYnumber0Vertical offset of the glow.

Interaction & Enforcement

PropTypeDefaultDescription
clickablebooleanfalseIf true, the highlighted element remains interactive during the tour.
preventInteractionbooleanundefinedOverrides the global preventInteraction setting for this step.
requiredbooleanfalseIf true, the Skip button is hidden for this step.
completedbooleanundefinedIf false, the Next/Finish button is disabled until this becomes true.

Grouping Props via zoneStyle

All zone appearance props can be grouped into a single zoneStyle object:

PropTypeDescription
zoneStyleZoneStyleObject containing all zone appearance options. Overrides individual props.

Custom Render

PropTypeDescription
renderCustomCard(props: CardProps) => ReactNodeCustom tooltip renderer for this specific step. Overrides the global renderCard.

ZoneStyle Object

interface ZoneStyle {
padding?: number;
paddingTop?: number;
paddingRight?: number;
paddingBottom?: number;
paddingLeft?: number;
borderRadius?: number;
shape?: 'rounded-rect' | 'circle' | 'pill';
borderWidth?: number;
borderColor?: string;
glowColor?: string; // requires enableGlow: true
glowRadius?: number; // requires enableGlow: true
glowSpread?: number; // requires enableGlow: true
glowOffsetX?: number; // requires enableGlow: true
glowOffsetY?: number; // requires enableGlow: true
springDamping?: number; // Per-step spring damping override
springStiffness?: number; // Per-step spring stiffness override
}

Examples

Shape Variants

// Rounded rectangle (default)
<TourZone stepKey="card" shape="rounded-rect" borderRadius={12}>
<MyCard />
</TourZone>

// Circle — ideal for FAB buttons
<TourZone stepKey="fab" shape="circle">
<FloatingActionButton />
</TourZone>

// Pill — ideal for horizontal tag rows
<TourZone stepKey="tags" shape="pill">
<TagList />
</TourZone>

Glow + Border Styling

// Using individual props
<TourZone
stepKey="important"
zoneGlowColor="rgba(255, 107, 107, 0.6)"
zoneBorderColor="#FF6B6B"
zoneGlowSpread={5}
zoneGlowOffsetY={2}
zonePadding={16}
>
<ImportantFeature />
</TourZone>

// Using zoneStyle object
<TourZone
stepKey="premium"
zoneStyle={{
shape: 'pill',
glowColor: 'rgba(255, 215, 0, 0.5)',
borderColor: '#FFD700',
borderWidth: 3,
}}
>
<PremiumBadge />
</TourZone>