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 follow the Radix UI implementation with accessible primitives from the Radix stack 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>
)
}