← All @molecule/* packages · App templates
@molecule/app-contact-form-reactFeature · contact-form · App (browser) · v1.0.1 · Apache-2.0
Generic name + email + message form with submit handler
npm install @molecule/app-contact-form-react@molecule/app-contact-form-react is a ready-made contact-form feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.
import { ContactForm } from '@molecule/app-contact-form-react'
;<ContactForm
title="Get in touch"
description="We'll respond within one business day."
onSubmit={async (values) => {
await api.sendContactMessage(values)
}}
successContent={<p>Thanks! We'll be in touch soon.</p>}
/>Works with: @molecule/app-react, @molecule/app-ui, @molecule/app-ui-react
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Generic contact form (name + email + message + extras).
Exports <ContactForm> and ContactFormValues type.
import { ContactForm } from '@molecule/app-contact-form-react'
;<ContactForm
title="Get in touch"
description="We'll respond within one business day."
onSubmit={async (values) => {
await api.sendContactMessage(values)
}}
successContent={<p>Thanks! We'll be in touch soon.</p>}
/>
feature
npm install @molecule/app-contact-form-react @molecule/app-react @molecule/app-ui @molecule/app-ui-react react
npm install -D @types/react
ContactFormPropsProps for {@link ContactForm}.
interface ContactFormProps {
/** Called with the form values on submit. Return a Promise to block double-submit. */
onSubmit: (values: ContactFormValues) => void | Promise<void>
/** Form heading. */
title?: ReactNode
/** Optional supporting copy under the heading. */
description?: ReactNode
/** Custom submit-button label. */
submitLabel?: ReactNode
/** Rendered when the form successfully submits. */
successContent?: ReactNode
/** Extra fields rendered above the message textarea. */
extraFields?: ReactNode
/** Extra classes. */
className?: string
}
ContactFormValuesShape of values collected by the contact form and passed to onSubmit.
interface ContactFormValues {
name: string
email: string
message: string
/** App-supplied additional fields. */
[key: string]: string
}
ContactForm(props)Generic name + email + message contact form with submit handling and
success state. extraFields slot lets apps add domain-specific
inputs (subject, phone, agent id, etc.).
function ContactForm({
onSubmit,
title,
description,
submitLabel,
successContent,
extraFields,
className,
}: ContactFormProps): JSX.Element | null
props — Component props (see {@link ContactFormProps}).Peer dependencies:
@molecule/app-react ^1.0.1@molecule/app-ui ^1.0.1@molecule/app-ui-react ^1.0.1react ^18.0.0 || ^19.0.0@molecule/app-react@molecule/app-ui@molecule/app-ui-reactreactonSubmit receives ONLY { name, email, message } — inputs rendered via
the extraFields slot are displayed but NOT collected; own their state in
the parent and merge them inside your onSubmit (or a wrapping form).
Always pass successContent: without it the form clears silently after a
successful submit with no user feedback. If onSubmit throws, the thrown
Error.message is shown verbatim below the form — throw translated,
user-safe messages. Placeholders/buttons use contactForm.* i18n keys
(companion bond: @molecule/app-locales-contact-form).
Translation strings are provided by @molecule/app-locales-contact-form.