TextInput

한 줄 텍스트 입력 컴포넌트입니다. 라벨, 에러 상태, 좌우 슬롯을 지원합니다.

사용법

import { TextInput } from '@coldsurf/ocean-road'
import { Search } from 'lucide-react'

<TextInput
  label="이메일"
  placeholder="example@email.com"
  value={value}
  onChange={(e) => setValue(e.target.value)}
/>

// 좌우 슬롯
<TextInput
  placeholder="검색어 입력"
  left={<Search size={16} />}
/>

// 에러 상태
<TextInput
  label="비밀번호"
  isError
  type="password"
/>

Props

InputHTMLAttributes<HTMLInputElement>를 모두 상속합니다.

prop 타입 기본값 설명
label string — 입력 필드 위에 표시될 라벨 텍스트
labelStyle CSSProperties — 라벨 인라인 스타일
isError boolean — true이면 에러 스타일을 적용합니다.
required boolean — true이면 라벨에 필수 표시를 추가합니다.
left ReactNode — 입력 필드 왼쪽 슬롯 (아이콘 등)
right ReactNode — 입력 필드 오른쪽 슬롯

ref

useRef<TextInputRef>로 프로그래매틱 제어가 가능합니다.

import { useRef } from 'react'
import { TextInput, type TextInputRef } from '@coldsurf/ocean-road'

const inputRef = useRef<TextInputRef>(null)

<TextInput ref={inputRef} placeholder="..." />

// 포커스 / 블러
inputRef.current?.focus()
inputRef.current?.blur()

인터랙티브 데모