Textarea
여러 줄 텍스트 입력을 위한 Textarea 컴포넌트입니다. class="textarea"를 사용하며, form_field와 조합해 레이블·힌트·유효성 메시지를 구성합니다.
기본
레이블과 힌트 텍스트가 포함된 폼 필드입니다.
500자 이내로 작성해 주세요.
단독 사용
form_field 없이 textarea만 사용할 수 있습니다. 메모·댓글 입력 등 간단한 다중 입력에 적합합니다.
크기
textarea_sm · textarea(기본) · textarea_lg로 padding·font-size를 조절합니다. 너비와는 별개이며 textarea_fit 등과 자유롭게 조합할 수 있습니다.
너비
크기와 독립적으로 너비를 제어합니다. 기본은 부모 100%, textarea_fit · form_field_fit으로 --input-max-width(320px)까지 제한합니다.
행 수
HTML rows 속성으로 초기 높이를 지정합니다. 리사이즈가 허용된 경우 사용자가 높이를 조절할 수 있습니다.
리사이즈
textarea_resize_* 클래스로 사용자 리사이즈 동작을 제어합니다. 기본값은 리사이즈 없음(resize: none)입니다.
고정 높이가 필요한 폼에 사용합니다.
필수 필드
required 속성과 form_field-required로 필수 입력을 표시합니다.
최소 10자 이상 입력해 주세요.
글자 수 카운터
TextareaShowCount로 textarea 우측 하단에 현재 글자 수를 표시합니다. maxLength와 함께 사용하면 0/200 형식으로 최대 글자 수를 함께 보여 줍니다. 카운터 ID는 textarea의 aria-describedby에 자동으로 연결되며, 스크린 리더에는 현재·최대 글자 수를 음성 안내합니다.
200자 이내로 작성해 주세요.
100자 이내로 작성해 주세요.
200자 이내로 작성해 주세요.
상태
disabled · readonly · is-error · is-success로 입력 상태를 표현합니다. 오류·성공 메시지는 색상만으로 전달하지 않고 텍스트와 aria 속성을 함께 사용합니다.
disabled 속성으로 편집을 막습니다.
10자 이상 입력해 주세요.
조합 예시
문의 폼에서 필수 입력·글자 수 안내·유효성 피드백을 조합한 예시입니다. aria-invalid · aria-describedby · maxLength로 접근성을 보완합니다.
API · Props
| Prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
ref | React.Ref<HTMLTextAreaElement> | — | 실제 textarea DOM 참조 |
value | string | — | 제어 컴포넌트 값 (Vue model-value 대응) |
defaultValue | string | '' | 비제어 초기 값 |
rows | number | string | 3 | textarea rows 속성 |
size | 'sm' | 'md' | 'lg' | md | textarea_sm · textarea_lg |
placeholder | string | — | placeholder 속성 |
disabled | boolean | false | 비활성 |
error | boolean | false | 오류 상태 (is-error) |
block | boolean | false | 부모 너비 100% (textarea_block) |
className | string | — | textarea 루트에 추가 클래스 |
onChange | (event) => void | — | 값 변경 콜백 (Vue update:modelValue 대응) |
API · Children
| Children | 설명 |
|---|---|
children | 초기 텍스트. React에서는 value/defaultValue 사용을 권장합니다. |
TextareaShowCount | Textarea를 감싸 현재/최대 글자 수와 접근성 안내를 자동으로 갱신하는 래퍼 |
API · Events
| 이벤트 | 설명 |
|---|---|
onChange | 입력 값 변경 시 (Vue update:modelValue 대응) |
클래스 · 속성
React 컴포넌트가 렌더하는 OOCSS 클래스입니다. HTML 마크업으로 직접 작성할 때 동일하게 조합합니다.
| 클래스 | 설명 |
|---|---|
textarea | 텍스트영역 루트 |
textarea_sm · textarea_lg · textarea_block | 크기·너비 |
textarea_wrap · textarea_show-count · textarea_count | TextareaShowCount 글자 수 카운터 구조 |
is-error · is-disabled | 상태 |
디자인 토큰
| 토큰 | 기본값 | 설명 |
|---|---|---|
--textarea-min-height | 5rem | 최소 높이 |
--textarea-count-inset-x · --textarea-count-inset-y | 0.75rem · 0.5rem | 글자 수 카운터 위치 |