Contact form is a Forms block from Orvain UI, built for React and Vue with a matching Figma frame.
Best for
A marketing or support form that tells people who reads it, when they hear back, and what to fix when something is off
Anatomy
A quiet grey panel with the overline, heading, one line, a three-node “what happens next” rail and the people who answer · 44px fields with the red required mark, a message that grows to ten lines with attachment tiles and a count from 80% · errors after you leave a field you typed in or on Send, with a summary of field chips that tick green and drop out · Send holds its width, shows a spinner and a fill, then the column becomes the confirmation and the rail ticks Received
In the Orvain Library
Get Contact form for your product
The block’s code in React and Vue, its frame in the Figma file, and the Orvain MCP so your AI tools build with it. Part of every Library plan, alongside every other block.
Part of Forms
04parts
The pieces it is built from. Keep them all, or drop the ones your product doesn’t need.
832 px
Drawn at this width and never stretched past it. Below it, controls, text and spacing step down from the box the block sits in, not the window.
Where Forms earns its place
Reach for Forms
Reach for something else
06to keep
What the block ships with. Hold on to these as you make it yours.
1 line
Is all your assistant needs. With the Orvain MCP connected, it builds the block from your own tokens and components.
Add the Orvain “Contact form” block to this page: a quiet grey panel with the overline, heading, one line, a three-node “what happens next” rail and the people who answer, 44px fields with the red required mark, a message that grows to ten lines with attachment tiles and a count from 80%, errors after you leave a field you typed in or on Send, with a summary of field chips that tick green and drop out, Send holds its width, shows a spinner and a fill, then the column becomes the confirmation and the rail ticks Received.
Contact form is a Forms block from Orvain UI, built for React and Vue with a matching Figma frame. Best for a marketing or support form that tells people who reads it, when they hear back, and what to fix when something is off.
4 parts: a quiet grey panel with the overline, heading, one line, a three-node “what happens next” rail and the people who answer; 44px fields with the red required mark, a message that grows to ten lines with attachment tiles and a count from 80%; errors after you leave a field you typed in or on Send, with a summary of field chips that tick green and drop out; and send holds its width, shows a spinner and a fill, then the column becomes the confirmation and the rail ticks Received. Keep them all, or drop the ones your product does not need; the rest of the block holds together without them.
Yes. It is drawn at 832px and never stretched past that. Below it, its controls, text and spacing step down with the container the block sits in rather than the browser window, so it holds up in a sidebar, a tablet layout and a 390px phone without clipping or sideways scrolling.
It ships with text labels on every icon-only button, full keyboard reach with a visible focus ring, states that never rely on colour alone, text contrast that holds when you retheme it, no animation for visitors who ask for reduced motion, and click targets of at least 24px.
It is part of every Orvain Library plan: the React and Vue code, its frame in the Orvain Figma file, and the Orvain MCP server. With the MCP connected, an AI assistant such as Claude Code, Cursor or v0 can build it from one line: “Add the Orvain Contact form block to this page.”
One value changes and applies at once: a switch or an inline field that saves itself, with no Submit to press.
Join the Orvain Dispatch and get production-ready components, free to keep: React and Vue code plus the Figma frame, yours to ship.
Contact form is a Forms block from Orvain UI, built for React and Vue with a matching Figma frame.
Best for
A marketing or support form that tells people who reads it, when they hear back, and what to fix when something is off
Anatomy
A quiet grey panel with the overline, heading, one line, a three-node “what happens next” rail and the people who answer · 44px fields with the red required mark, a message that grows to ten lines with attachment tiles and a count from 80% · errors after you leave a field you typed in or on Send, with a summary of field chips that tick green and drop out · Send holds its width, shows a spinner and a fill, then the column becomes the confirmation and the rail ticks Received
In the Orvain Library
Get Contact form for your product
The block’s code in React and Vue, its frame in the Figma file, and the Orvain MCP so your AI tools build with it. Part of every Library plan, alongside every other block.
Part of Forms
04parts
The pieces it is built from. Keep them all, or drop the ones your product doesn’t need.
832 px
Drawn at this width and never stretched past it. Below it, controls, text and spacing step down from the box the block sits in, not the window.
Where Forms earns its place
Reach for Forms
Reach for something else
06to keep
What the block ships with. Hold on to these as you make it yours.
1 line
Is all your assistant needs. With the Orvain MCP connected, it builds the block from your own tokens and components.
Add the Orvain “Contact form” block to this page: a quiet grey panel with the overline, heading, one line, a three-node “what happens next” rail and the people who answer, 44px fields with the red required mark, a message that grows to ten lines with attachment tiles and a count from 80%, errors after you leave a field you typed in or on Send, with a summary of field chips that tick green and drop out, Send holds its width, shows a spinner and a fill, then the column becomes the confirmation and the rail ticks Received.
Contact form is a Forms block from Orvain UI, built for React and Vue with a matching Figma frame. Best for a marketing or support form that tells people who reads it, when they hear back, and what to fix when something is off.
4 parts: a quiet grey panel with the overline, heading, one line, a three-node “what happens next” rail and the people who answer; 44px fields with the red required mark, a message that grows to ten lines with attachment tiles and a count from 80%; errors after you leave a field you typed in or on Send, with a summary of field chips that tick green and drop out; and send holds its width, shows a spinner and a fill, then the column becomes the confirmation and the rail ticks Received. Keep them all, or drop the ones your product does not need; the rest of the block holds together without them.
Yes. It is drawn at 832px and never stretched past that. Below it, its controls, text and spacing step down with the container the block sits in rather than the browser window, so it holds up in a sidebar, a tablet layout and a 390px phone without clipping or sideways scrolling.
It ships with text labels on every icon-only button, full keyboard reach with a visible focus ring, states that never rely on colour alone, text contrast that holds when you retheme it, no animation for visitors who ask for reduced motion, and click targets of at least 24px.
It is part of every Orvain Library plan: the React and Vue code, its frame in the Orvain Figma file, and the Orvain MCP server. With the MCP connected, an AI assistant such as Claude Code, Cursor or v0 can build it from one line: “Add the Orvain Contact form block to this page.”
One value changes and applies at once: a switch or an inline field that saves itself, with no Submit to press.
Join the Orvain Dispatch and get production-ready components, free to keep: React and Vue code plus the Figma frame, yours to ship.