New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@ludumvitae/form

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ludumvitae/form

Reusable form components, providers, and hooks for LV Artifact projects.

latest
Source
npmnpm
Version
0.0.3
Version published
Weekly downloads
0
-100%
Maintainers
1
Weekly downloads
 
Created
Source

@ludumvitae/form

npm version GitHub release (latest by date) CI license: MIT

Links: GitHub repo · npm package

A small, practical set of form building blocks for LV Artifact projects. It’s built on TanStack Form and Zod, and it stays UI-agnostic so you can bring your own components.

Install

pnpm add @ludumvitae/form

Quickstart (Provider)

import { useAppForm, FormProvider, FormModeContext } from '@ludumvitae/form'

const schema = z.object({ name: z.string().min(2).max(50) })

export function MyForm() {
  const form = useAppForm({
    defaultValues: { name: '' },
    validators: { onSubmit: schema },
    onSubmit: ({ value }) => console.log(value),
  })

  return (
    <FormModeContext.Provider value="edit">
      <FormProvider schema={schema} mode="edit">
        <form onSubmit={(e) => { e.preventDefault(); form.handleSubmit() }}>
          <form.AppField name="name">{(field) => <field.TextField label="Name" />}</form.AppField>
        </form>
      </FormProvider>
    </FormModeContext.Provider>
  )
}

Quickstart (Standalone)

import { TextField } from '@ludumvitae/form'

export function Standalone() {
  const [name, setName] = useState('')
  return <TextField label="Name" value={name} onChange={(e) => setName(e.target.value)} />
}

What’s included

  • Hooks/contexts: useAppForm, fieldContext, useFieldContext, formContext, useFormContext, FormModeContext, useFormMode
  • Providers: FormProvider, FormSchemaProvider, FormSchemaContext, useFormSchemaContext
  • Fields: TextField, TextAreaField, EmailField, PasswordField, NumberField, CheckboxField, RadioField, SelectField, SwitchField, ArrayField, ObjectArrayField, DatePicker, TimePicker, DateTimePickerField, LengthCounter, FieldErrors
  • Components: ErrorDisplay, SubmitButton, ResetButton, FormFooter

Validation

  • Default: validate on submit via validators.onSubmit
  • Optional: validators.onChange/validators.onBlur for alternative flows
  • Schema-aware: FormProvider passes your Zod schema to fields; LengthCounter and constraints (min/max/pattern) are automatically derived for string fields

Adapters (advanced)

Some features are app-specific or rely on external services/UI. Use the adapter interfaces in src/adapters/types.ts and inject your own implementations:

  • File uploads: FileUploadAdapter
  • Signature: SignatureAdapter
  • Phone: PhoneAdapter
  • Entity selects: EntitySelectAdapter
  • Grid navigation: GridNavigationAdapter

Contributing

We welcome issues and PRs.

  • File issues: https://github.com/ludum-vitae-core/form/issues
  • Open PRs: https://github.com/ludum-vitae-core/form/pulls

Before submitting, run the build locally:

pnpm i
pnpm build

Keywords

forms

FAQs

Package last updated on 04 Nov 2025

Related posts