import { forwardRef, type InputHTMLAttributes } from 'react'
import { Input } from '@base-ui/react/input'
import { cn } from './cn'
import { FIELD_BOX_CLASSES, FIELD_DISABLED_CLASSES, FIELD_FOCUS_RING_CLASSES, FIELD_SIZE_CLASSES, FIELD_TEXT_CLASSES } from './looks'
/**
* Peek's TextInput (2026-08-28): the inset field with a 8px radius, 14px
* text, the focus border in every theme (Katerina, 2026-08-28: Ship's inputs
* focus like Signal's) — and Signal's glow on top.
* Plus a disabled look (Ship's addition): the disabled surface and text,
* no pointer. On Base UI's `Input` since stage 3 of the migration
* (2026-09-07).
*
* Base UI's `Input` is a native `` that finds a surrounding `Field` on
* its own, so the id plumbing this used to do — `useFieldControlId`, and the
* context behind it — is gone. Outside a `Field` it behaves as before: the
* field context has a default, so nothing has to be wrapped.
*/
export interface TextInputProps extends Omit, 'size'> {
/**
* `small` is 24px tall with 12px text — the small `Select`'s size, so a
* field can share a dense row with small selects (D67, 2026-09-13: Peek's
* reference widget hand-built one because this was 38px). Replaces the
* native `size` attribute, which counts characters and which no caller
* used; set a width with the layout instead.
*/
size?: 'default' | 'small'
}
export const TextInput = forwardRef(function TextInput({ className, type = 'text', size = 'default', ...props }, ref) {
return (
)
})