UNPKG

@suiware/kit

Version:

Opinionated React components and hooks for building Sui dApps.

66 lines (64 loc) 1.66 kB
import { useState, useEffect } from 'react'; import { jsxs, jsx } from 'react/jsx-runtime'; // src/components/AmountInput.tsx var AmountInput = ({ value, onChange, placeholder, className = "", disabled = false }) => { const [inputValue, setInputValue] = useState(value); const [error, setError] = useState(null); const validateAmount = (amount) => { if (!amount) return true; if (!/^\d*\.?\d*$/.test(amount)) { return false; } const numericValue = parseFloat(amount); if (isNaN(numericValue)) { return false; } if (numericValue < 0) { return false; } return true; }; const handleChange = (e) => { const newValue = e.target.value.trim(); setInputValue(newValue); if (!newValue) { setError(null); onChange(newValue); return; } if (!validateAmount(newValue)) { setError("Invalid amount"); onChange(newValue); return; } setError(null); onChange(newValue); }; useEffect(() => { setInputValue(value); }, [value]); return /* @__PURE__ */ jsxs("div", { className: `sk-amount-input ${className}`, children: [ /* @__PURE__ */ jsx( "input", { type: "text", value: inputValue, onChange: handleChange, placeholder: placeholder || "Enter SUI amount", disabled, className: `${error ? "error" : ""} ${className}` } ), error && /* @__PURE__ */ jsx("span", { children: error }) ] }); }; var AmountInput_default = AmountInput; export { AmountInput_default }; //# sourceMappingURL=chunk-OTZWN3H4.mjs.map //# sourceMappingURL=chunk-OTZWN3H4.mjs.map