Corpora UI
Atoms

Form

Form validation and submission using Base UI fields.

Usage

Import the stylesheet once at the application root: @exegia/corpora-ui/index.css.

import { Form } from "@exegia/corpora-ui/ui/form"
import { useState } from "react"
import { Field, FieldLabel, FieldError } from "@exegia/corpora-ui/ui/field"
import { Input } from "@exegia/corpora-ui/ui/input"
import { Button } from "@exegia/corpora-ui/ui/button"

function ComponentPreview({ placeholder }: { placeholder: string }) {
  const [submitted, setSubmitted] = useState(false)
  return (
    <div className="relative mx-auto w-full max-w-lg p-6">
      <Form onSubmit={(event) => { event.preventDefault(); setSubmitted(true) }} className="grid gap-4">
      <Field name="email"><FieldLabel>Email</FieldLabel><Input type="email" required placeholder={placeholder} /><FieldError /></Field>
      <Button type="submit">Validate</Button><p role="status">{submitted ? "Email accepted." : "Enter an email address to validate."}</p>
    </Form>
    </div>
  )
}

<ComponentPreview placeholder={"you@example.com"} />

API notes

onSubmit handles valid submissions; prevent the default browser navigation when handling client-side. errors supplies field errors keyed by name. Compose labeled Field controls for validation messages.

Last updated on

On this page