MoneyInput
Importe en una moneda, con separadores de miles mientras se escribe y el número limpio en el formulario.
Usar
import { MoneyInput } from "@unozero-ai/ui/react";
<MoneyInput></MoneyInput>Configurador
Cambia las propiedades, escribe un importe y sal del campo para ver su formato completo.
<MoneyInput value={1250000} label="Anticipo para confirmar" helperText="El 30 % de la estancia." />Básico
Un importe en una moneda, con el aspecto de Input: tarifas, anticipos, pagos. Mientras escribes agrupa los miles sin mover el cursor (borrar un punto borra la cifra de al lado); al salir del campo muestra el formato completo de la moneda. value es un número o null, nunca el texto con puntos. Las cifras van en mono tabular (la Regla de los Tres Papeles) y el símbolo va fuera del texto, a su lado. Para cantidades sin moneda (noches, puntos) usa NumberInput.
Monedas
currency es el código ISO 4217 (COP por defecto). Separadores, símbolo, su posición y decimales salen de Intl.NumberFormat con el idioma de setLocale: el peso va sin centavos aunque ISO le dé dos, porque nadie los usa; el dólar y el euro llevan dos. Esta web usa el idioma por defecto del kit, es, y por eso el peso sale como «COP» detrás de la cifra; con setLocale("es-CO") al arrancar tu app sale «$» delante. El lector de pantalla oye la moneda junto a la etiqueta.
Estados y tamaños
Los mismos de Input. El error dice qué cifra esperaba, no solo que está mal (la Regla del Tenant), y el campo se sacude cuando llega. readonly para un total que calcula el sistema y se puede copiar; disabled para un importe que no aplica aquí. size acepta sm, md y lg, con la altura de los tokens de densidad.
En un formulario
Es un control de formulario nativo: con name envía el número limpio (1500000, 1234.5), y un campo vacío no se envía. required, min y max los valida el navegador con sus mensajes, y el kit escribe la cifra del límite con el formato de la moneda. El botón type="reset" vacía los campos. En React, onInput llega en cada tecla con e.currentTarget.value ya convertido en número, y onChange al salir del campo. Prueba con 20.000 y con 1.500.000.
API
Generada del custom-elements.json que publica @unozero-ai/ui. Las partes se estilan desde tu CSS con el nombre del elemento: uz-button::part(base).