컴포넌트/Formatted Input

Formatted Input

자동 포맷팅이 적용된 특수 입력 컴포넌트입니다.
카드 번호, OTP, 전화번호, 금액 등 다양한 형식을 지원합니다.

설치

Terminal
npx @msub-core/ui-cli add formatted-input

카드 번호

카드 번호를 자동으로 4자리씩 포맷팅하고, 카드 브랜드를 자동 인식합니다.

TSX
import { CardInput } from "@msub-core/ui/components/formatted-input"

function PaymentForm() {
  const [cardNumber, setCardNumber] = useState("")

  return (
    <CardInput
      label="카드 번호"
      value={cardNumber}
      onChange={setCardNumber}
      showCardType={true}
    />
  )
}
PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring-No입력값 (숫자와 공백 포함)
onChange(value: string) => void-No값 변경 시 호출되는 콜백
errorstring-No에러 메시지
showCardTypebooleantrueNo우측에 카드사 로고 표시 여부

OTP / 인증번호

개별 입력칸으로 구성된 인증번호 입력 컴포넌트입니다. 자동 포커스 이동과 붙여넣기를 지원합니다.

PropTypeDefaultRequiredDescription
lengthnumber6NoOTP 자리수
valuestring-No입력값
onChange(value: string) => void-No값 변경 시 호출되는 콜백
onComplete(value: string) => void-No모든 자리가 입력되었을 때 호출되는 콜백
labelstring-No입력 필드 레이블
errorstring-No에러 메시지
disabledbooleanfalseNo비활성화 여부
autoFocusbooleanfalseNo마운트 시 자동 포커스

전화번호

한국(010-1234-5678) 또는 미국((123) 456-7890) 형식을 지원합니다.

PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring-No입력값
onChange(value: string) => void-No값 변경 시 호출되는 콜백
format"kr" | "us""kr"No전화번호 포맷 국가
errorstring-No에러 메시지

금액

자동으로 천 단위 구분자를 추가하고 통화 기호를 표시합니다.

PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring | number-No입력값
onChange(value: number) => void-No값 변경 시 호출되는 콜백. 숫자값이 전달됩니다.
currencystring"₩"No통화 기호
showFormattedValuebooleanfalseNo하단에 포맷팅된 값 표시 여부
helperTextstring-No하단 도움말 텍스트
errorstring-No에러 메시지
localestring"ko-KR"No숫자 포맷팅 로케일

날짜

YYYY.MM.DD 형식으로 자동 포맷팅됩니다. 구분자를 변경할 수 있습니다.

PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring-No입력값
onChange(value: string) => void-No값 변경 시 호출되는 콜백
separator"." | "-" | "/""."No날짜 구분자
errorstring-No에러 메시지

주민등록번호

000000-0000000 형식으로 자동 포맷팅됩니다. 포커스 해제 시 뒷자리가 마스킹됩니다.

PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring-No입력값
onChange(value: string) => void-No값 변경 시 호출되는 콜백
maskBackDigitsbooleantrueNo뒷자리 마스킹 여부
errorstring-No에러 메시지

사업자등록번호

000-00-00000 형식으로 자동 포맷팅됩니다.

PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring-No입력값
onChange(value: string) => void-No값 변경 시 호출되는 콜백
errorstring-No에러 메시지

우편번호

한국(00000) 또는 미국(00000-0000) 형식을 지원합니다.

PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
valuestring-No입력값
onChange(value: string) => void-No값 변경 시 호출되는 콜백
format"kr" | "us""kr"No우편번호 포맷 국가
errorstring-No에러 메시지

기간 (날짜 범위)

시작일과 종료일을 입력받는 날짜 범위 컴포넌트입니다.

~
PropTypeDefaultRequiredDescription
labelstring-No입력 필드 레이블
startValuestring-No시작일 값
endValuestring-No종료일 값
onStartChange(value: string) => void-No시작일 변경 콜백
onEndChange(value: string) => void-No종료일 변경 콜백
separator"." | "-" | "/""."No날짜 구분자
errorstring-No에러 메시지
disabledbooleanfalseNo비활성화 여부

카드 결제 폼 예시

실제 결제 폼에서 사용하는 것처럼 카드 정보 입력 컴포넌트를 조합한 예시입니다.
결제 버튼을 클릭하면 결제 완료 애니메이션을 확인할 수 있습니다.

컴포넌트 목록

CardInput

카드 번호 (0000 0000 0000 0000)

OTPInput

OTP/인증번호 (개별 입력칸)

PhoneInput

전화번호 (010-1234-5678)

AmountInput

금액 (₩1,234,567)

DateInput

날짜 (YYYY.MM.DD)

ExpiryInput

카드 유효기간 (MM / YY)

CVCInput

CVC 번호 (3-4자리)

SSNInput

주민등록번호 (000000-0******)

BusinessNumberInput

사업자등록번호 (000-00-00000)

PostalCodeInput

우편번호 (00000)

DateRangeInput

기간 (시작일 ~ 종료일)