Custom Shadcn Number Field for React and Tailwind CSS. A numeric input element with increment and decrement buttons, and a scrub area.
Browse 6 production-ready Shadcn Number Field components for dashboards, forms, and product UI. These examples use Base UI primitives from @base-ui/react and stay fully compatible with Shadcn Create so radius, color, and typography match your configured theme.
Browse all 6 Shadcn Number Field components for copy-ready layouts, dashboards, and forms built with Tailwind CSS in the ReUI library.
import {
NumberField,
NumberFieldDecrement,
NumberFieldGroup,
NumberFieldIncrement,
NumberFieldInput,
NumberFieldScrubArea,
} from "@/components/ui/number-field"<NumberField defaultValue={0}>
<NumberFieldScrubArea label="Quantity" />
<NumberFieldGroup>
<NumberFieldDecrement />
<NumberFieldInput />
<NumberFieldIncrement />
</NumberFieldGroup>
</NumberField>import {
NumberField,
NumberFieldDecrement,
NumberFieldGroup,
NumberFieldIncrement,
NumberFieldInput,
NumberFieldScrubArea,
} from "@/components/reui/number-field"
export function Pattern() {
return (
<div className="w-full max-w-48">
<NumberField defaultValue={5} min={0} max={100}>
<NumberFieldScrubArea label="Amount" />
<NumberFieldGroup>
<NumberFieldDecrement />
<NumberFieldInput />
<NumberFieldIncrement />
</NumberFieldGroup>
</NumberField>
</div>
)
}
import {
NumberField,
NumberFieldDecrement,
NumberFieldGroup,
NumberFieldIncrement,
NumberFieldInput,
NumberFieldScrubArea,
} from "@/components/reui/number-field"
export function Pattern() {
return (
<div className="w-full max-w-48">
<NumberField defaultValue={5} min={0} max={100} size="sm">
<NumberFieldScrubArea label="Small" />
<NumberFieldGroup>
<NumberFieldDecrement />
<NumberFieldInput />
<NumberFieldIncrement />
</NumberFieldGroup>
</NumberField>
</div>
)
}
import {
NumberField,
NumberFieldDecrement,
NumberFieldGroup,
NumberFieldIncrement,
NumberFieldInput,
NumberFieldScrubArea,
} from "@/components/reui/number-field"
export function Pattern() {
return (
<div className="w-full max-w-48">
<NumberField defaultValue={5} min={0} max={100} size="lg">
<NumberFieldScrubArea label="Large" />
<NumberFieldGroup>
<NumberFieldDecrement />
<NumberFieldInput />
<NumberFieldIncrement />
</NumberFieldGroup>
</NumberField>
</div>
)
}
import {
NumberField,
NumberFieldDecrement,
NumberFieldGroup,
NumberFieldIncrement,
NumberFieldInput,
NumberFieldScrubArea,
} from "@/components/reui/number-field"
export function Pattern() {
return (
<div className="w-full max-w-48">
<NumberField defaultValue={5} min={0} max={100}>
<NumberFieldScrubArea label="Amount" />
<NumberFieldGroup>
<NumberFieldInput className="text-left" />
<NumberFieldDecrement className="rounded-none!" />
<NumberFieldIncrement />
</NumberFieldGroup>
</NumberField>
</div>
)
}