Skip to content
tcpsystemsui

Theme

Colour scheme
Accent
Density
Radius
Esc

Input

Native single-line text control.

beta

Examples

Basic text input

Basic text input.svelte
<script lang="ts">
	import Input from '@tcpsystems/ui/foundation/Input';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	let searchQuery = $state('');
	let filterTag = $state('');
	const uid = $props.id();
</script>

<Stack>
	<label for={uid + '-search'}>Search deployments</label>
	<Input id={uid + '-search'} placeholder="Type to search by name, region, or status" bind:value={searchQuery} />
	<label for={uid + '-tag'}>Filter by tag</label>
	<Input id={uid + '-tag'} placeholder="e.g. production, staging" bind:value={filterTag} />
</Stack>

Disabled and error

Disabled and error.svelte
<script lang="ts">
	import Input from '@tcpsystems/ui/foundation/Input';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	let email = $state('admin@tcp.systems');
	const uid = $props.id();
</script>

<Stack>
	<label for={uid + '-email'}>Admin email</label>
	<Input id={uid + '-email'} value={email} disabled />
	<Input placeholder="Error state" invalid="true" />
</Stack>

With field

Generate from Settings > Security
With field.svelte
<script lang="ts">
	import Field from '@tcpsystems/ui/foundation/Field';
	import Input from '@tcpsystems/ui/foundation/Input';
	let apiKey = $state('');
</script>

<Field label="API key" hint="Generate from Settings > Security">
	{#snippet control(props)}
		<Input {...props} bind:value={apiKey} />
	{/snippet}
</Field>

API

Import
import Input from '@tcpsystems/ui/foundation/Input';
PropTypeDefault
kind?'mono'none
describedby?stringnone
invalid?'true'none
value?native$bindable()
HookKind
.tcp-inputRoot class
data-kindData attribute