Skip to Content
DocumentationComponents

Components

FormKit Gov provides React components that wrap VA Design System web components with React Hook Form integration.

Field Components

ComponentDescriptionStorybook
TextInputFieldSingle-line text inputView 
TextareaFieldMulti-line text inputView 
SelectFieldDropdown selectionView 
CheckboxFieldSingle checkboxView 
CheckboxGroupFieldMultiple checkboxesView 
RadioFieldRadio button groupView 
DateFieldDate picker (month/day/year)View 
MemorableDateFieldMemorable date with dropdownsView 
NumberFieldNumeric inputView 
CurrencyFieldCurrency input with formattingView 
PhoneFieldPhone number with formattingView 
SSNFieldSocial Security Number with maskingView 
FileUploadFieldFile upload with validationView 
FileUploadMultipleFieldMultiple-file uploadView 
ComboBoxFieldSearchable dropdownView 
PrivacyAgreementFieldPrivacy policy checkboxView 
SignatureFieldStatement-of-truth attestationView 

Action Components

ComponentDescriptionStorybook
ButtonPrimary/secondary action buttonView 
ButtonPairPaired primary/secondary buttonsView 
ComponentDescriptionStorybook
NavigationButtonsBack/Continue/Submit controls for wizardsView 

Feedback Components

ComponentDescriptionStorybook
AlertStatus alert (info/success/warning/error)View 
AdditionalInfoProgressive-disclosure trigger + contentView 

Structure Components

ComponentDescriptionStorybook
AccordionCollapsible sections containerView 
AccordionItemA single collapsible sectionView 
SegmentedProgressBarMulti-step progress indicatorView 

Molecular Components

ComponentDescriptionStorybook
FullNameFieldFirst, middle, last, suffixView 
AddressFieldComplete address formView 

Review Components

ComponentDescriptionStorybook
ReviewSectionSection with edit buttonView 
ReviewItemSingle field displayView 
ReviewListList of review itemsView 
ReviewFieldLabeled value with empty-stateView 
ReviewFullNameFieldFormatted full nameView 
ReviewAddressFieldFormatted multi-line addressView 
ReviewDateFieldFormatted date valueView 

Form Components

The composable Form primitives connect field components to React Hook Form, following the shadcn/ui pattern. See the Form primitives story .

ComponentDescription
FormForm wrapper with React Hook Form
FormFieldField controller wrapper
FormItemField container
FormLabelField label
FormControlInput wrapper
FormDescriptionHelp text
FormMessageError message

Field Layout Primitives

Unstyled, control-agnostic layout primitives for arranging labels, controls, descriptions, and errors. See the Field primitives story .

ComponentDescription
FieldField container (vertical or horizontal)
FieldGroupStacks multiple Fields
FieldSetFieldset for grouping related controls
FieldLegendLegend for a FieldSet
FieldLabelLabel element for a control
FieldContentContent wrapper for horizontal layouts
FieldTitleTitle within FieldContent
FieldDescriptionHelp text for a field
FieldErrorValidation error(s) from React Hook Form
FieldSeparatorVisual separator between sections

Branding

ComponentDescriptionStorybook
LogoFormKit Gov brand mark (SVG)View 

Usage Example

import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Form, FormField } from '@formkit-gov/react'; import { TextInputField } from '@formkit-gov/react/components'; import { createEmailSchema } from '@formkit-gov/core/schemas'; const schema = z.object({ email: createEmailSchema(), }); function EmailForm() { const form = useForm({ resolver: zodResolver(schema), defaultValues: { email: '' }, }); return ( <Form form={form} onSubmit={data => console.log(data)}> <FormField control={form.control} name="email" render={({ field, fieldState }) => ( <TextInputField {...field} label="Email address" type="email" error={fieldState.error?.message} required /> )} /> <va-button type="submit">Submit</va-button> </Form> ); }

For interactive examples, visit Storybook . See the complete form example  for a full integration demo.

Next Steps

Last updated on