import * as React from "react" import { InputChrome } from "./chrome" import { getInputValue } from "./value" import { parseMoneyLikeInput } from "./numeric-value" import { InputPrimitive } from "./primitive" import { cn } from "@/lib/utils" export type MoneyInputProps = Omit< React.ComponentProps<"input">, "value" | "onChange" | "type" > & { value?: number | string | null onChange?: React.ChangeEventHandler onValueChange?: (value: number | null, rawValue: string) => void prefix?: React.ReactNode suffix?: React.ReactNode wrapperClassName?: string inputClassName?: string } function parseMoneyInput(value: string) { return parseMoneyLikeInput(value) } function MoneyInput({ value, onChange, onValueChange, prefix, suffix, wrapperClassName, inputClassName, className, inputMode = "decimal", ...props }: MoneyInputProps) { const handleChange: React.ChangeEventHandler = (event) => { onChange?.(event) onValueChange?.(parseMoneyInput(event.target.value), event.target.value) } return ( {prefix} ) : null } end={ suffix ? ( {suffix} ) : null } > ) } export { MoneyInput, parseMoneyInput }