Skip to content
tcpsystemsui

Theme

Colour scheme
Accent
Density
Radius
Esc

NumberInput

A numeric field with decrement and increment buttons and optional unit.

beta

Examples

Shipping quantity

How many units to ship
Shipping quantity.svelte
<script lang="ts">
	import Field from '@tcpsystems/ui/foundation/Field';
	import NumberInput from '@tcpsystems/ui/foundation/NumberInput';
	let quantity = $state(3);
</script>

<Field label="Shipping quantity" hint="How many units to ship">
	{#snippet control(props)}
		<NumberInput {...props} bind:value={quantity} min={1} max={99} unit="pcs" />
	{/snippet}
</Field>

Discount percentage

Discount percentage.svelte
<script lang="ts">
	import NumberInput from '@tcpsystems/ui/foundation/NumberInput';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	let discount = $state(15);
	const uid = $props.id();
</script>

<Stack>
	<label for={uid}>Discount percentage</label>
	<NumberInput id={uid} bind:value={discount} min={0} max={100} step={5} unit="%" />
</Stack>

API

Import
import NumberInput from '@tcpsystems/ui/foundation/NumberInput';
PropTypeDefault
kind?'mono'none
describedby?stringnone
invalid?'true'none
value?native$bindable()
min?number | stringnone
max?number | stringnone
step?number | string1
unit?stringnone
decrementLabel?string'Decrease'
incrementLabel?string'Increase'
disabled?nativenone
readonly?nativenone
HookKind
.tcp-numberRoot class
data-dirData attribute
data-kindData attribute