Counter
Input component for incrementing and decrementing numeric values, plus a badge-style number display.
Import
import { Counter, NumberCounter } from "@raydenui/ui";Usage
Basic Counter
0
<Counter />Controlled Counter
const [value, setValue] = useState(5);
<Counter value={value} onChange={setValue} />Sizes
3
5
7
<Counter size="sm" />
<Counter size="md" />
<Counter size="lg" />Shapes
1
2
3
<Counter shape="rounded" />
<Counter shape="block" />
<Counter shape="pill" />With Min/Max
5
<Counter min={0} max={10} defaultValue={5} />With Step
10
<Counter step={5} defaultValue={0} />Disabled
3
<Counter disabled defaultValue={3} />NumberCounter
A badge-style display for showing numeric values.
Basic
5
<NumberCounter value={5} />Sizes
3
12
99
<NumberCounter value={3} size="sm" />
<NumberCounter value={12} size="md" />
<NumberCounter value={99} size="lg" />Colors
5
3
8
2
<NumberCounter value={5} color="orange" />
<NumberCounter value={3} color="red" />
<NumberCounter value={8} color="grey" />
<NumberCounter value={2} color="white" />In Context
// Shopping cart badge
<div className="relative">
<ShoppingCartIcon className="w-6 h-6" />
<NumberCounter
value={3}
size="sm"
color="red"
className="absolute -top-2 -right-2"
/>
</div>
// Notification count
<div className="flex items-center gap-2">
<span>Messages</span>
<NumberCounter value={12} size="sm" />
</div>Props
Counter
| Prop | Type | Default | Description |
|---|---|---|---|
value | number | — | Current value (controlled) |
onChange | (value: number) => void | — | Change callback |
defaultValue | number | 0 | Initial value (uncontrolled) |
size | "sm" | "md" | "lg" | "sm" | Button and text size |
shape | "rounded" | "block" | "pill" | "rounded" | Container border radius |
min | number | 0 | Minimum allowed value |
max | number | Infinity | Maximum allowed value |
step | number | 1 | Increment/decrement amount |
disabled | boolean | false | Disabled state |
className | string | — | Additional CSS classes |
NumberCounter
| Prop | Type | Default | Description |
|---|---|---|---|
value | number | string | — | Display value (required) |
size | "sm" | "md" | "lg" | "sm" | Badge size |
color | "orange" | "red" | "grey" | "white" | "orange" | Background color |
className | string | — | Additional CSS classes |
Size Reference
Counter Sizes
| Size | Button | Icon | Text |
|---|---|---|---|
sm | 32px | 16px | text-sm |
md | 40px | 20px | text-sm |
lg | 48px | 24px | text-base |
NumberCounter Sizes
| Size | Padding | Min Size |
|---|---|---|
sm | 4px | 16px |
md | 4px | 28px |
lg | 8px | 36px |
Accessibility
- Increment button has
aria-label="Increase" - Decrement button has
aria-label="Decrease" - Buttons are disabled when at min/max limits
- Supports keyboard navigation
Last updated on