CurrencyInput

Locale-aware money input. Stores a number (single-currency) or a composite { amount, currency } object (multi-currency).

Installation

pnpm dlx shadcn@latest add @shadmin/currency-input

Usage

import { CurrencyInput } from '@/components/admin';
 
<CurrencyInput source="price" currency="USD" />
<CurrencyInput source="price" currencies={["USD", "EUR", "JPY"]} />
<CurrencyInput source="price" currency="USD" storeAsMinorUnits />

Props

PropRequiredTypeDefaultDescription
sourceRequiredstring-Form field name
currencyOptionalstring-ISO-4217 code (single-currency mode)
currenciesOptionalreadonly string[]-Enable currency selector; stores composite
displayLocaleOptionalstringApp localeOverride locale for symbol/step
storeAsMinorUnitsOptionalbooleanfalseStore integer cents
labelOptionalstring | falseInferredCustom label, false to hide
helperTextOptionalReactNode-Helper text
disabledOptionalbooleanfalseDisable input + currency selector
defaultValueOptionalnumber | { amount, currency }-Initial value
validateOptionalValidator | Validator[]-Validation
classNameOptionalstring-CSS class on the row

Single- vs multi-currency

Pass currency for single-currency apps; the value is a plain number. Pass currencies to render a select beside the amount; the value is composite. Don't pass both — currencies takes precedence.