Input

Single-line text field. Pass iconLeading/iconTrailing for inline icons, or invalid for the error state.

Basic

import { Input } from "@tidal-ds/react";

<Input placeholder="you@example.com" />

Sizes

<>
  <Input size="md" placeholder="md — 32px (default, standalone / row-full)" />
  <Input size="sm" placeholder="sm — 28px (inline / dense / table filter rows)" />
</>

With icons

import { Search, AtSign } from "lucide-react";

<>
  <Input placeholder="Search…" iconLeading={<Search />} />
  <Input placeholder="you@example.com" iconLeading={<AtSign />} />
</>

States

<>
  <Input placeholder="Default" />
  <Input disabled defaultValue="can't edit me" />
  <Input readOnly defaultValue="read only" />
  <Input invalid defaultValue="not-an-email" />
</>

Types

<>
  <Input type="email" placeholder="Email" />
  <Input type="password" defaultValue="hunter2" />
  <Input type="number" defaultValue={42} />
  <Input type="file" />
</>

Props

PropTypeDefault
invalidbooleanfalse
disabledbooleanfalse
iconLeadingReactNode
iconTrailingReactNode
…restInputHTMLAttributes

Source

packages/react/src/components/input.tsx