**Input** — text field on a sunken well. Supports label, leading icon (search), trailing element, and error state.

```jsx
<Input label="Channel name" value={v} onChange={e=>set(e.target.value)} />
<Input leadingIcon={<SearchIcon/>} placeholder="Search channels…" />
<Input label="Number" error="Already in use" value="5.1" />
```

Props: `label`, `leadingIcon`, `trailing`, `error`, `size` (sm·md), `disabled`, `type`.
