--- productId: joy-ui title: React Stepper component components: Stepper, Step, StepButton, StepIndicator githubLabel: 'scope: stepper' materialDesign: https://m1.material.io/components/steppers.html --- # Stepper

Steppers convey progress through numbered steps. It provides a wizard-like workflow.

{{"component": "@mui/docs/ComponentLinkHeader"}} ## Introduction Stepper displays progress through a sequence of logical and numbered steps. It support horizontal and vertical orientation for desktop and mobile viewports. Joy UI Steppers are implemented using a collection of related components: - [Stepper](#basics) - a required container for steps. Renders as a `
    ` by default. - [Step](#basics) - a step. Renders as a `
  1. ` by default. - [StepIndicator](#indicator) - an optional indicator of a step. {{"demo": "StepperUsage.js", "hideToolbar": true, "bg": "gradient"}} ## Basics ```jsx import Stepper from '@mui/joy/Stepper'; import Step from '@mui/joy/Step'; ``` {{"demo": "BasicStepper.js"}} ## Customization ### Indicator Pass StepIndicator as an element to Step's `indicator` prop to create number or icon indicators. The StepIndicator supports Joy UI's four [global variants](/joy-ui/main-features/global-variants/): `soft` (default), `solid`, `outlined`, and `plain`. {{"demo": "IndicatorStepper.js"}} :::info To learn how to add your own variants, check out [Themed components—Extend variants](/joy-ui/customization/themed-components/#extend-variants). Note that you lose the global variants when you add custom variants. ::: #### Indicator at the top Set Step's `orientation="vertical"` to show an indicator at the top. {{"demo": "IndicatorTopStepper.js"}} ### Button To make the Step clickable, renders the `StepButton` component as a direct child of the Step. {{"demo": "ButtonStepper.js"}} ### Sizes The Stepper component comes in three sizes: `sm`, `md` (default), and `lg`. {{"demo": "SizesStepper.js"}} :::info To learn how to add custom sizes to the component, check out [Themed components—Extend sizes](/joy-ui/customization/themed-components/#extend-sizes). ::: ### Vertical Use `orientation="vertical"` to display the Stepper vertically. If you don't provide an indicator prop to the Step, a dot (pseudo element) will be used as the indicator. {{"demo": "VerticalStepper.js"}} #### Extra content For vertical Steppers, you can pass more content to the Step by grouping it inside an HTML element. The Step switches its display to CSS `grid` when the Stepper's orientation is vertical. {{"demo": "VerticalExtraContentStepper.js"}} ### Connector The connector is a pseudo element of the Step. To customize it, target `::after` element of the Step using `sx` prop. {{"demo": "ConnectorStepper.js"}} ## CSS Variables {{"demo": "StepperVariables.js"}} ## Common examples ### Company registration {{"demo": "CompanyRegistrationStepper.js"}} ### Dotted connector {{"demo": "DottedConnector.js"}} ### Icon stepper {{"demo": "IconStepper.js"}}