# `input`

```strand
element input: node
```

A text field: `input { text: <-> query }`. Focused, it copies its
selection with Ctrl+C or Ctrl+Insert, cuts it with Ctrl+X or
Shift+Delete and pastes at the caret with Ctrl+V or Shift+Insert,
through the compositor's clipboard (a `password` copies nothing; a
paste becomes one line).

It takes no children.

Also every prop and event of [`node`](/reference/elements/node.html.md).

| Prop | Type | |
| --- | --- | --- |
| `text` | `<-> text` | Its text, bound two-way. |
| `placeholder` | `text` | Shown while it is empty. |
| `type` | `InputKind` | `password` masks it, and the text it binds is a password: `check::secret_flow` warns where that reaches anything that shows, keeps or sends it, other than `auth.submit`, `polkit.respond`, `greetd.submit` and a network's `connect_with` (its length and whether it is empty are free to show). |
| `focus` | `bool` | Takes keyboard focus when shown, and again whenever it turns true while its surface has the keyboard (`focus: mode == search`). Tab and Shift+Tab move focus between a surface's inputs and lists, unless an `on key` around the focused one hears keys: then Tab is that handler's. |
| `nav` | `Node` | Routes arrow keys to a `list`: `nav: results`. |
