--- title: Form description: A form wrapper component that simplifies validation and submission. links: doc: https://base-ui.com/react/components/form#api-reference --- ## Installation CLI Manual ```bash npx shadcn@latest add @coss/form ``` Install the following dependencies: ```bash npm install @base-ui/react zod ``` Copy and paste the following code into your project. Update the import paths to match your project setup. ## Usage ```tsx import { Field, FieldError, FieldLabel, } from "@/components/ui/field" import { Form } from "@/components/ui/form" import { Input } from "@/components/ui/input" ``` ```tsx
{ /* handle submit */ }} > Email Please enter a valid email.
``` ## API Reference ### Form Thin wrapper around Base UI `Form` with no default layout. Pass **`className`** for spacing and structure (for example `flex w-full flex-col gap-4` for a vertical field stack). **Dialog, sheet, drawer:** Place **`DialogHeader`** (or sheet/drawer header) **outside** the form. Wrap **`DialogPanel`** and **`DialogFooter`** only in **`
`** (or **``**). The **`contents`** display value keeps panel and footer participating correctly in the popup flex layout without nesting the header inside the ``. ## Examples ### Using with Zod ## Changelog - [Apr 17, 2026](/ui/docs/changelog#form) — **`Form`** no longer applies default layout classes; pass **`className`** for stacked fields (`flex w-full flex-col gap-4`); for overlays, wrap **panel + footer** in **`Form className="contents"`** with **header** outside.