MNEE
v0.0.1

Components

Input

Stable

Base text input with optional label, hint, and error states. Extends all native input HTML attributes.

Design system owned. Prefix/suffix symbols, leading icons, and required indicators are handled by this component — pass props, don't add wrapper divs. Engineers should not manually position absolute spans or hardcode focus rings around inputs.

Default

With label & hint

We'll never share your email.

Error state

Username is already taken.

Disabled

With prefix

$

With suffix

%

With leading icon

Required field

InputStack

Use layout="stacked" to render label, input, hint/error, and an action button in a vertical stack.

Figma component: InputStack — linked here because nested Code Connect instances are not yet supported in Figma Dev Mode.

Default

This is your public display name.

With required

This is your public display name.

Error

When error is set, it replaces the hint text and the border turns red.

This is your public display name.

Disabled

Pass disabled to the Input and the action Button to disable the entire group.

This is your public display name.

Without hint

Without button

This is your public display name.

InputInline

Use layout="inline" to place the action beside the field — ideal for newsletter sign-ups and quick-submit forms. Hint text is hidden in inline mode.

Figma component: InputInline — linked here because nested Code Connect instances are not yet supported in Figma Dev Mode.

Default

With required

Error

Invalid email address.

Disabled

Without label

Usage

import { Input } from "@mnee-ui/ui"

Props

PropTypeDefaultDescription
labelstringLabel text rendered above the input
hintstringHelper text shown below (hidden when error is set)
errorstringError message; applies error styling and aria-invalid
prefixstringText adornment inside the left edge of the border (e.g. "$", "https://")
suffixstringText adornment inside the right edge of the border (e.g. "%", ".com")
leadingIconReactNodeIcon at the left of the input — pass a Lucide icon; size and color are design-system controlled
trailingIconReactNodeIcon at the right of the input
requiredbooleanfalseMarks the field as required; renders a red * after the label text
disabledbooleanfalseDisables the input
placeholderstringPlaceholder text
classNamestringLayout utilities only (margin, width) — applied to the outer field wrapper
layout"stacked" | "inline"stacked: renders action below the field; inline: renders action beside it (hint hidden)
actionReactNodeAction element (e.g. Button) placed via the layout slot