A money field that stays raw while you type and normalizes with Intl.NumberFormat on blur — grouping, fixed decimals, clamping, and a number | null value.
npx shadcn@latest add @zyeon/currency-inputZyeon UI limits how often it can be asked, and Currency Input hasn't had its turn. Its source will show here once it has.