Textarea
Textarea는 여러 줄 텍스트를 입력하는 폼 요소입니다. 댓글, 설명, 메시지 등 긴 텍스트 입력에 사용합니다.
2
Variants
2
Sizes
4
Resize
Field
Field
Playground
미리보기
defaultstandard4 rows / 16px
Variant
Size
Radius
Resize
Rows
State
Field
Focus
<Textarea placeholder="Type your message..." />Variants
Default
일반 폼에 쓰는 기본 보더 스타일
일반 폼
Filled
돋보여야 할 입력란에 쓰는 배경 강조 스타일
카드 내 폼
Sizes
Textarea 높이는 rows 속성으로 제어합니다. size 프로퍼티는 패딩과 폰트 크기만 조정합니다.
compact패딩8px 12px
폰트14px
standard패딩12px 16px
폰트16px
| Size | 패딩 | 폰트 | 용도 | 미리보기 |
|---|---|---|---|---|
compact | 8px 12px | 14px | 좁은 공간용 | |
standard | 12px 16px | 16px | 표준 (권장) |
Features
Resize
None
none크기 고정이 필요할 때 사용
Vertical
vertical세로 방향만 허용, 가장 일반적인 옵션
Horizontal
horizontal가로 방향만 허용, 특수한 경우에 사용
Both
both상하좌우 모두 허용, 자유도가 필요할 때
States
Default정상
0/500
Error에러
필수 항목입니다
Disabled비활성
포커스 상태
focusRing: false(기본값): 클릭 시 보더 변화만, 키보드 Tab 시 포커스 링 자동 표시. focusRing: true: 항상 포커스 링 표시.
API
Props
variant"default""default" | "filled"텍스트 영역 시각 스타일
size"default""compact" | "default"패딩과 폰트 크기 (compact: 좁은 공간용)
radius"default""none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full"모서리 둥글기 크기 (6px)
resize"vertical""none" | "vertical" | "horizontal" | "both"리사이즈 방향
rows4number표시 행 수
focusRingfalseboolean커스텀 포커스 링 표시. false여도 키보드 조작 시 자동 표시
errorundefinedboolean에러 상태 (빨간 보더)
disabledundefinedboolean비활성 상태
placeholderundefinedstring플레이스홀더 텍스트
| Name | Type | Default | Description |
|---|---|---|---|
variant | "default" | "filled" | "default" | 텍스트 영역 시각 스타일 |
size | "compact" | "default" | "default" | 패딩과 폰트 크기 (compact: 좁은 공간용) |
radius | "none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full" | "default" | 모서리 둥글기 크기 (6px) |
resize | "none" | "vertical" | "horizontal" | "both" | "vertical" | 리사이즈 방향 |
rows | number | 4 | 표시 행 수 |
focusRing | boolean | false | 커스텀 포커스 링 표시. false여도 키보드 조작 시 자동 표시 |
error | boolean | undefined | 에러 상태 (빨간 보더) |
disabled | boolean | undefined | 비활성 상태 |
placeholder | string | undefined | 플레이스홀더 텍스트 |
Field
errorfalseboolean에러 상태. Field.Error와 Textarea에 자동 전파
disabledfalseboolean비활성 상태. Field.Label과 Textarea에 자동 전파
gap"default""none" | "xs" | "sm" | "default" | "lg"자식 요소 간 간격 (0 / 4 / 6 / 8 / 12px)
| Name | Type | Default | Description |
|---|---|---|---|
error | boolean | false | 에러 상태. Field.Error와 Textarea에 자동 전파 |
disabled | boolean | false | 비활성 상태. Field.Label과 Textarea에 자동 전파 |
gap | "none" | "xs" | "sm" | "default" | "lg" | "default" | 자식 요소 간 간격 (0 / 4 / 6 / 8 / 12px) |
Field.Label
requiredfalseboolean필수 마크(*)를 라벨 끝에 표시
| Name | Type | Default | Description |
|---|---|---|---|
required | boolean | false | 필수 마크(*)를 라벨 끝에 표시 |
Anatomy
1
2
Comment
3
Share your thoughts or feedback.
The more detail you provide,
the faster we can respond.
The more detail you provide,
the faster we can respond.
4
52 / 200
1
Field
Field 래퍼
2
Label
라벨
3
Textarea Area
텍스트 입력 영역
4
Char Count
글자 수 (선택)
Best Practices
✓
권장
- ✓적절한 rows 속성으로 초기 높이 설정
- ✓글자 수 제한이 있을 경우 카운터 표시
- ✓리사이즈가 불필요하면 resize="none" 설정
- ✓플레이스홀더로 입력 예시 표시
✕
지양
- ✗짧은 텍스트에 Textarea 사용하지 않기 (→ Input)
- ✗극단적으로 작은 rows 설정하지 않기
- ✗글자 수 제한을 사전에 명시하지 않고 잘라내지 않기
- ✗라벨 없이 사용하지 않기
Accessibility
키보드 조작
Tab포커스 이동
Enter줄바꿈
Esc포커스 해제
WCAG 2.2 준수
- 포커스 인디케이터
- aria-invalid (에러 시)
- aria-describedby 지원
- 대비율 4.5:1 이상