Field
폼 필드를 구성하는 레이아웃 컴포넌트
Basic Usage
Field는 Label, Input, Description, Error 메시지를 그룹화합니다.
업무용 이메일을 입력하세요.
tsx
<Field>
<FieldLabel htmlFor="email">Email</FieldLabel>
<Input id="email" type="email" placeholder="you@example.com" />
<FieldDescription>업무용 이메일을 입력하세요.</FieldDescription>
</Field>With Error
유효성 검증 실패 시 에러 메시지를 표시합니다.
유효한 이메일 주소를 입력하세요.
tsx
<Field data-invalid="true">
<FieldLabel htmlFor="email">Email</FieldLabel>
<Input id="email" type="email" aria-invalid="true" defaultValue="invalid-email" />
<FieldError>유효한 이메일 주소를 입력하세요.</FieldError>
</Field>Horizontal Orientation
가로 방향 레이아웃을 지원합니다.
서비스 이용을 위해 필수입니다.
tsx
<Field orientation="horizontal">
<Checkbox id="terms" />
<FieldContent>
<FieldLabel htmlFor="terms">이용약관에 동의합니다</FieldLabel>
<FieldDescription>서비스 이용을 위해 필수입니다.</FieldDescription>
</FieldContent>
</Field>Field Group
FieldGroup과 FieldSet으로 여러 필드를 그룹화할 수 있습니다.
tsx
<FieldSet>
<FieldLegend>개인정보</FieldLegend>
<FieldGroup>
<Field>
<FieldLabel htmlFor="name">이름</FieldLabel>
<Input id="name" placeholder="홍길동" />
</Field>
<Field>
<FieldLabel htmlFor="phone">연락처</FieldLabel>
<Input id="phone" placeholder="010-0000-0000" />
</Field>
</FieldGroup>
</FieldSet>Usage
tsx
import {
Field,
FieldLabel,
FieldDescription,
FieldError,
FieldGroup,
FieldSet,
FieldLegend,
FieldContent,
} from '@gpters-internal/ui';
function Example() {
return (
<Field>
<FieldLabel htmlFor="email">Email</FieldLabel>
<Input id="email" type="email" />
<FieldDescription>업무용 이메일을 입력하세요.</FieldDescription>
</Field>
);
}