Wizard

Betav1.0.0

다단계 스텝 플로우(Stepper). 상단 인디케이터(번호·라벨·연결선) + 현재 스텝 패널 + 네비게이션으로 구성. controlled/uncontrolled 모두 지원하며useWizard()훅으로 next/prev/goTo 를 직접 제어합니다.

Loading…
import {
  Wizard,
  WizardSteps,
  WizardPanel,
  useWizard,
} from "@/components/ui/wizard";

<Wizard steps={["Account", "Profile", "Confirm"]}>
  <WizardSteps clickable />

  <WizardPanel step={0}>{/* 계정 폼 */}</WizardPanel>
  <WizardPanel step={1}>{/* 프로필 폼 */}</WizardPanel>
  <WizardPanel step={2}>{/* 확인 */}</WizardPanel>

  <WizardActions />
</Wizard>

// 네비게이션은 useWizard() 로 직접 구성
function WizardActions() {
  const { isFirst, isLast, next, prev } = useWizard();
  return (
    <div className="flex justify-end gap-2">
      <Button variant="outline" onClick={prev} disabled={isFirst}>이전</Button>
      <Button onClick={next}>{isLast ? "완료" : "다음"}</Button>
    </div>
  );
}

Installation

pnpm dlx shadcn@latest add https://groudit.com/r/wizard.json

Composition

Wizard (steps, value/onValueChange)
├── WizardSteps (clickable) — 인디케이터
├── WizardPanel (step) — 현재 스텝만 렌더
└── useWizard() — next/prev/goTo/isFirst/isLast

Dependencies

설치 시 자동으로 함께 들어오는 의존성. 모든 버전은 정확히 고정되어 자동 업데이트를 방지합니다.

npm packages

PackageVersion
clsx2.1.1
tailwind-merge3.6.0

Groudit components

이 컴포넌트가 의존하는 다른 Groudit 컴포넌트 — 함께 설치됩니다.

Accessibility

Keyboard interactions

KeyDescription
Tab
스텝 인디케이터 · 패널 · 네비게이션 버튼 순환.
EnterSpace
이전/다음/완료 버튼 실행, clickable 스텝 이동.

WCAG 2.1 AA

이 컴포넌트는 다음 Success Criteria 충족을 목표로 합니다.

Notes

  • 현재 스텝에 aria-current="step" 부여 — 스크린리더가 진행 위치 안내.
  • WizardPanel 은 role="tabpanel". 현재 스텝만 렌더해 포커스 혼선 방지.
  • 연결선·체크 아이콘은 장식용(aria-hidden). 라벨/번호로 의미 전달.