Skip to content
tcpsystemsui

Theme

Colour scheme
Accent
Density
Radius
Esc

InputGroup

A group that joins prefix or suffix adornments to one input control.

beta

Examples

Domain

https://
Domain.svelte
<script lang="ts">
	import InputGroup from '@tcpsystems/ui/foundation/InputGroup';
	import Input from '@tcpsystems/ui/foundation/Input';
	import Field from '@tcpsystems/ui/foundation/Field';
	let domain = $state('studio.tcp.systems');
</script>

<Field label="Deployment domain">
	{#snippet control(props)}
		<InputGroup prefix="https://"><Input {...props} bind:value={domain} /></InputGroup>
	{/snippet}
</Field>

Suffix and actions

USD
Suffix and actions.svelte
<script lang="ts">
	import InputGroup from '@tcpsystems/ui/foundation/InputGroup';
	import Input from '@tcpsystems/ui/foundation/Input';
	import Field from '@tcpsystems/ui/foundation/Field';
	import Button from '@tcpsystems/ui/foundation/Button';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	let budget = $state(120);
	let slug = $state('studio-production');
</script>

<Stack>
	<Field label="Monthly budget">
		{#snippet control(props)}<InputGroup suffix="USD"><Input {...props} type="number" bind:value={budget} /></InputGroup>{/snippet}
	</Field>
	<Field label="Project slug">
		{#snippet control(props)}
			<InputGroup>
				<Input {...props} bind:value={slug} />
				{#snippet end()}<Button onclick={() => slug = 'studio-production'}>Reset</Button>{/snippet}
			</InputGroup>
		{/snippet}
	</Field>
</Stack>

Disabled and error

https://
https://
Enter a full domain name.
Disabled and error.svelte
<script lang="ts">
	import InputGroup from '@tcpsystems/ui/foundation/InputGroup';
	import Input from '@tcpsystems/ui/foundation/Input';
	import Field from '@tcpsystems/ui/foundation/Field';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	let domain = $state('studio');
</script>

<Stack>
	<Field label="Managed domain">
		{#snippet control(props)}<InputGroup prefix="https://"><Input {...props} disabled value="ai.tcp.systems" /></InputGroup>{/snippet}
	</Field>
	<Field label="Custom domain" error={domain.includes('.') ? undefined : 'Enter a full domain name.'}>
		{#snippet control(props)}<InputGroup prefix="https://"><Input {...props} bind:value={domain} /></InputGroup>{/snippet}
	</Field>
</Stack>

API

Import
import InputGroup from '@tcpsystems/ui/foundation/InputGroup';
PropTypeDefault
prefix?stringnone
suffix?stringnone
Snippet
start
end
children
HookKind
.tcp-input-groupRoot class