Heading fonts

Choose a Google Fonts family. The selected font loads from Google Fonts; Inter and Geist Serif are bundled locally.

Search Reflow

Keyboard shortcuts

Use these keys while you are not typing in a field.

Search⌘K
Cycle themeT
Cycle accentA
Cycle heading fontF
Cycle radiusR
Cycle sizeS
Cycle iconsI
Cycle hoverH
Toggle navigation[
Toggle properties]
Previous / next demo slide←→
Show shortcuts?
Skip to content
Open navigationClose navigation

Make them yours

Theme
SystemT
Accent
BlueA
Heading font
InterF
Radius
RoundedR
Size
DefaultS
Icons
LucideI
Hover
FluidH

Playground variant

InputGroup

InputGroup

Related input fields with a shared hover surface and validation messages.

Installation

Import from the Reflow workspace package.

Playground

Open demo

Multiple Fields

Error State

API Reference

Public props for the Reflow implementation. Native controls also accept their standard HTML attributes and Remix event mixes.

InputGroup

PropTypeDefaultDescription
childrenRemixNode—Child nodes to render inside the element.
size"default" | "compact"—Control density or icon-button dimensions.

InputField

PropTypeDefaultDescription
disabledboolean—The `disabled` HTML attribute.
namestring—The `name` HTML attribute.
type"number" | "hidden" | "color" | "button" | "search" | "checkbox" | "radio" | "date" | "time" | "text" | "submit" | "reset" | "range" | "email" | "image" | "tel" | "url" | "datetime-local" | "file" | "month" | "password" | "week"—Single or multiple expansion mode.
valuestring | number—The `value` HTML attribute.
size"default" | "compact"—Control density or icon-button dimensions.
checkedboolean—The `checked` HTML attribute.
defaultCheckedboolean—The `defaultChecked` HTML attribute.
defaultValuestring | number—The `defaultValue` HTML attribute.
indeterminateboolean—The `indeterminate` HTML attribute.
placeholderstring—The `placeholder` HTML attribute.
requiredboolean—The `required` HTML attribute.
idstring—Stable identifier.
label*string—Accessible name or visible label for the control.
labelHiddenboolean—Keeps the label accessible while hiding it visually.
descriptionRemixNode—Additional explanatory text.
errorRemixNode—Validation message or error state.
iconRemixNode—Icon content.
onChange((value: string, event: Event) => void)—Called with the updated value.