# Stepper

A numbered journey with a clear present step.

- Family: Navigation, imported from `mizu-ui` or `mizu-ui/navigation`
- Docs: https://mizu.user64bit.world/components/stepper
- Source: https://github.com/0xuser64bit/mizu/blob/main/packages/mizu/src/navigation/Navigation.tsx

## Usage

```tsx
"use client";

import { useState } from "react";
import { Stepper } from "mizu-ui";

export function Example() {
  const [step, setStep] = useState("review");
  return (
    <Stepper
      current={step}
      onStepChange={setStep}
      steps={[
        { id: "prepare", label: "Prepare", description: "Choose the package" },
        { id: "review", label: "Review", description: "Check the details" },
        { id: "release", label: "Release", description: "Publish when ready" },
      ]}
    />
  );
}
```

## Copy it with the shadcn CLI

```sh
npx shadcn@latest init 0xuser64bit/mizu/preset # once, where there is no components.json
npx shadcn@latest add 0xuser64bit/mizu/stepper
```

## Props

- `steps`: `{id,label,description?,disabled?}[]`. Ordered steps.
- `current`: `string`. Current step id.
- `onStepChange`: `function`. Optional navigation; omit for a static indicator.

## Accessibility

Ordered list with aria-current step. Buttons are optional; progression rules belong to the caller.

## Motion

CSS transitions explain state changes. Reduced motion removes travel.
