Form

Betav1.0.0

react-hook-form + zod 위에 만든 폼 컴포넌트. label / control / description / message 자동 연결.

Loading…
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
import {
  Form,
  FormControl,
  FormDescription,
  FormField,
  FormItem,
  FormLabel,
  FormMessage,
} from "@/components/ui/form";

const schema = z.object({
  username: z.string().min(2),
  email: z.string().email(),
});

const form = useForm<z.infer<typeof schema>>({
  resolver: zodResolver(schema),
  defaultValues: { username: "", email: "" },
});

<Form {...form}>
  <form onSubmit={form.handleSubmit(onSubmit)}>
    <FormField
      control={form.control}
      name="username"
      render={({ field }) => (
        <FormItem>
          <FormLabel>Username</FormLabel>
          <FormControl><Input {...field} /></FormControl>
          <FormMessage />
        </FormItem>
      )}
    />
    <Button type="submit">Submit</Button>
  </form>
</Form>

Installation

pnpm dlx shadcn@latest add https://groudit.com/r/form.json

Composition

Form
└── FormField
    └── FormItem
        ├── FormLabel
        ├── FormControl
        ├── FormDescription
        └── FormMessage

Dependencies

설치 시 자동으로 함께 들어오는 의존성. 모든 버전은 정확히 고정되어 자동 업데이트를 방지합니다.

npm packages

PackageVersion
react-hook-form7.77.0
@hookform/resolvers5.4.0
zod4.4.3
clsx2.1.1
tailwind-merge3.6.0

Groudit components

이 컴포넌트가 의존하는 다른 Groudit 컴포넌트 — 함께 설치됩니다.

Accessibility

이 컴포넌트는 WAI-ARIA form 패턴을 따릅니다.

WCAG 2.1 AA

이 컴포넌트는 다음 Success Criteria 충족을 목표로 합니다.

Notes

  • FormControl 이 자동으로 label htmlFor, aria-describedby, aria-invalid 연결.
  • 에러 메시지는 FormMessage 로 — 사용자가 폼 오류 즉시 인지 가능.