

<InteractiveDemo
  name="number-field"
  engine="source"
  controls="[
  	{
  		type: &#x22;string&#x22;,
  		name: &#x22;label&#x22;,
  		defaultValue: &#x22;Quantity&#x22;,
  	},
  	{
  		type: &#x22;boolean&#x22;,
  		name: &#x22;isDisabled&#x22;,
  		defaultValue: false,
  	},
  	{
  		type: &#x22;boolean&#x22;,
  		name: &#x22;isReadOnly&#x22;,
  		defaultValue: false,
  	},
  	{
  		type: &#x22;boolean&#x22;,
  		name: &#x22;isInvalid&#x22;,
  		defaultValue: false,
  	},
  ]"
/>

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npx shadcn@latest add @dotui/number-field
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm dlx shadcn@latest add @dotui/number-field
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn dlx shadcn@latest add @dotui/number-field
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun x shadcn@latest add @dotui/number-field
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## Usage [#usage]

Use `NumberField` to allow users to enter a numeric value with keyboard or increment/decrement buttons.

```tsx
import { NumberField } from "@/components/ui/number-field";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/field";
```

```tsx
<NumberField>
	<Label>Quantity</Label>
	<Input />
</NumberField>
```

## Examples [#examples]

<Examples>
  <Example name="number-field/demos/basic" />

  <Example name="number-field/demos/sizes" />

  <Example name="number-field/demos/label" />

  <Example name="number-field/demos/description" />

  <Example name="number-field/demos/error-message" />

  <Example name="number-field/demos/format-options" />

  <Example name="number-field/demos/disabled" />

  <Example name="number-field/demos/read-only" />

  <Example name="number-field/demos/required" />

  <Example name="number-field/demos/uncontrolled" />

  <Example name="number-field/demos/controlled" />
</Examples>

## API Reference [#api-reference]

<Reference name="number-field" />
