syncfusion-react-stepper — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-react-stepper (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Stepper component guides users through a multi-step workflow or process with visual indicators, step labels, and flexible configuration. It's ideal for wizards, checkout flows, onboarding processes, and any guided user experience requiring sequential navigation.
Use the Stepper component when you need to:
Key Capabilities:
📄 Read: references/getting-started.md
📄 Read: references/steps-and-configuration.md
📄 Read: references/orientations-and-types.md
📄 Read: references/events-and-interactions.md
📄 Read: references/linear-flow-and-validation.md
📄 Read: references/animation-template-tooltip.md
📄 Read: references/methods-and-advanced.md
📄 Read: references/accessibility-globalization.md
import React from 'react';
import { StepperComponent, StepsDirective, StepDirective } from '@syncfusion/ej2-react-navigations';
import '@syncfusion/ej2-base/styles/tailwind3.css';
import '@syncfusion/ej2-navigations/styles/tailwind3.css';
function App() {
return (
<div>
<StepperComponent>
<StepsDirective>
<StepDirective iconCss="sf-icon-cart" label="Cart" />
<StepDirective iconCss="sf-icon-transport" label="Delivery" />
<StepDirective iconCss="sf-icon-payment" label="Payment" />
<StepDirective iconCss="sf-icon-success" label="Confirmation" />
</StepsDirective>
</StepperComponent>
</div>
);
}
export default App;import React from 'react';
import { StepperComponent } from '@syncfusion/ej2-react-navigations';
import '@syncfusion/ej2-base/styles/tailwind3.css';
import '@syncfusion/ej2-navigations/styles/tailwind3.css';
function App() {
const steps = [
{ iconCss: 'sf-icon-cart', label: 'Cart' },
{ iconCss: 'sf-icon-transport', label: 'Delivery' },
{ iconCss: 'sf-icon-payment', label: 'Payment' },
{ iconCss: 'sf-icon-success', label: 'Confirmation' }
];
return (
<div>
<StepperComponent steps={steps} />
</div>
);
}
export default App;const [activeStep, setActiveStep] = React.useState(0);
const stepperRef = React.useRef(null);
const handleStepChanging = (args) => {
// Validate current step before advancing
if (!validateStep(activeStep)) {
args.cancel = true; // Prevent transition
}
};
<StepperComponent
ref={stepperRef}
stepChanging={handleStepChanging}
>
{/* steps */}
</StepperComponent>// Linear: Users must complete steps sequentially
<StepperComponent linear={true}>
// Non-linear: Users can skip to any step
<StepperComponent linear={false}>// Auto-switch orientation based on screen size
const [orientation, setOrientation] = React.useState('horizontal');
React.useEffect(() => {
const handleResize = () => {
setOrientation(window.innerWidth < 768 ? 'vertical' : 'horizontal');
};
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
<StepperComponent orientation={orientation}>| Prop | Type | Default | Purpose | |
|---|---|---|---|---|
activeStep | number | 0 | Currently active step index | |
animation | StepperAnimationSettingsModel | undefined | Animation configuration (enable, duration, delay) | |
cssClass | string | '' | CSS class for custom styling | |
enablePersistence | boolean | false | Persist component state between page reloads | |
enableRtl | boolean | false | Enable right-to-left layout | |
labelPosition | string | 'Bottom' | Label placement: 'Top', 'Bottom', 'Start', 'End' | |
linear | boolean | false | Enforce sequential step navigation | |
locale | string | 'en-US' | Localization culture code | |
orientation | string | 'horizontal' | Layout direction: 'horizontal' or 'vertical' | |
readOnly | boolean | false | Disable user interaction | |
showTooltip | boolean | true | Show tooltips on hover | |
stepType | string | 'Default' | Visual mode: 'Default', 'Label', 'Indicator' | |
steps | StepModel[] | [] | Array of step objects (property-based pattern) | |
template | string \ | function | undefined | Custom template for steps |
tooltipTemplate | string \ | function | undefined | Custom template for tooltips |
| Property | Type | Purpose |
|---|---|---|
cssClass | string | CSS class for individual step styling |
disabled | boolean | Disable the step |
iconCss | string | Icon CSS class for the step |
isValid | boolean | Validation status of the step |
label | string | Step label text |
optional | boolean | Mark step as optional |
status | string | Step status: 'NotStarted', 'InProgress', 'Completed' |
text | string | Text content (usually number) |
| Property | Type | Default | Purpose |
|---|---|---|---|
enable | boolean | true | Enable animations |
duration | number | 400 | Animation duration in milliseconds |
delay | number | 0 | Delay before animation starts |
| Event | Fires | Use For | Arguments |
|---|---|---|---|
created | After component initialization | Setup, initialization | Event |
stepChanged | After step changes | Update UI, load content | StepperChangedEventArgs |
stepChanging | Before step changes | Validate, prevent transitions | StepperChangingEventArgs |
stepClick | User clicks step | Track interactions | StepperClickEventArgs |
beforeStepRender | Before rendering each step | Customize step appearance | StepperRenderingEventArgs |
| Method | Parameters | Returns | Purpose |
|---|---|---|---|
reset() | none | void | Reset stepper to initial state (activeStep: 0) |
nextStep() | none | void | Move to next step programmatically |
previousStep() | none | void | Move to previous step programmatically |
refreshProgressbar() | none | void | Refresh progress bar on container resize |
destroy() | none | void | Destroy component and release resources |
Event Arguments Reference:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.