Spinner
Spinner는 불확정 로딩 상태를 시각적으로 표시하는 컴포넌트입니다. Ring, Dots, Bars, Orbit 4가지 variant를 제공하며, 데이터 패칭이나 페이지 전환 등 완료 시점을 알 수 없는 비동기 처리에 사용합니다.
4
Variants
3
Sizes
3
Colors
Pure
React
Playground
Preview
ringdefaultdefault
Variant
Size
Color
Speed
<Spinner />Variants
Ring
회전 링, 가장 표준적인 로딩 표현
Dots
3개의 점이 순서대로 페이드되는 펄스 애니메이션
Bars
4개의 바가 물결치는 스케일 애니메이션
Orbit
Y축 3D 회전, 5가지 서브 스타일 (Ring, Dots, Cube, Flip, Morph)
Sizes
smRing16px
Orbit22px
defaultRing24px
Orbit32px
lgRing32px
Orbit44px
| Size | Ring | Orbit | Ring | Dots | Bars | Orbit |
|---|---|---|---|---|---|---|
sm | 16px | 22px | ||||
default | 24px | 32px | ||||
lg | 32px | 44px |
Features
Color
3가지 색상 옵션입니다. current는 부모 요소의 텍스트 색상을 상속해 버튼 내부 등에서 자연스럽게 어울립니다.
default
primary
current
<Spinner color="default" />
<Spinner color="primary" />
<Spinner color="current" />Speed
애니메이션 속도를 3단계로 조정할 수 있습니다.
slow
default
fast
<Spinner speed="slow" />
<Spinner speed="default" />
<Spinner speed="fast" />3D Orbit Styles
5가지 3D 오빗 스타일을 한눈에 비교할 수 있습니다.
API
Component Structure
Spinner— Pure React스탠드얼론 컴포넌트, 서브 컴포넌트 없음
Props
variant"ring""ring" | "dots" | "bars" | "orbit"스피너의 시각적 variant
orbitStyle"ring""ring" | "dots" | "cube" | "flip" | "morph"Orbit 서브 스타일 (orbit variant 전용)
size"default""sm" | "default" | "lg"사이즈
color"default""default" | "primary" | "current"색상 (default: 다크, primary: 브랜드, current: 부모 텍스트 색상 상속)
speed"default""slow" | "default" | "fast"애니메이션 속도
label"Loading"string접근성 레이블 (aria-label)
classNameundefinedstring추가 CSS 클래스
| Name | Type | Default | Description |
|---|---|---|---|
variant | "ring" | "dots" | "bars" | "orbit" | "ring" | 스피너의 시각적 variant |
orbitStyle | "ring" | "dots" | "cube" | "flip" | "morph" | "ring" | Orbit 서브 스타일 (orbit variant 전용) |
size | "sm" | "default" | "lg" | "default" | 사이즈 |
color | "default" | "primary" | "current" | "default" | 색상 (default: 다크, primary: 브랜드, current: 부모 텍스트 색상 상속) |
speed | "slow" | "default" | "fast" | "default" | 애니메이션 속도 |
label | string | "Loading" | 접근성 레이블 (aria-label) |
className | string | undefined | 추가 CSS 클래스 |
Anatomy
Ring
1
2
Dots
1
2
3
Bars
1
2
3
4
Orbit (Default: Dual Ring)
1
2
1
Track
배경 링
2
Indicator
활성 부분
D
Dots
순차 페이드
O
Orbit
3D 회전
Best Practices
✓
권장
- ✓불확정 대기 시간에는 Spinner를 사용합니다
- ✓버튼 내부에는 size="sm"과 color="current"를 사용합니다
- ✓텍스트 옆 인라인 표시에는 dots variant가 적합합니다
✕
지양
- ✕진행률을 알 수 있는 경우 Spinner를 사용하지 않습니다. Progress를 사용합니다.
- ✕한 페이지에 Spinner를 동시에 많이 표시하지 않습니다
- ✕사용자 조작 완료 후 피드백에는 Spinner를 사용하지 않습니다. Toast를 사용합니다.
Accessibility
ARIA / WCAG
role="status"자동 부여aria-label="Loading"기본값labelprop으로 커스텀 레이블- 스크린 리더 지원 완료