UNPKG

@suiware/kit

Version:

Opinionated React components and hooks for building Sui dApps.

68 lines (65 loc) 1.71 kB
'use strict'; var react = require('react'); var jsxRuntime = require('react/jsx-runtime'); // src/components/AmountInput.tsx var AmountInput = ({ value, onChange, placeholder, className = "", disabled = false }) => { const [inputValue, setInputValue] = react.useState(value); const [error, setError] = react.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); }; react.useEffect(() => { setInputValue(value); }, [value]); return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `sk-amount-input ${className}`, children: [ /* @__PURE__ */ jsxRuntime.jsx( "input", { type: "text", value: inputValue, onChange: handleChange, placeholder: placeholder || "Enter SUI amount", disabled, className: `${error ? "error" : ""} ${className}` } ), error && /* @__PURE__ */ jsxRuntime.jsx("span", { children: error }) ] }); }; var AmountInput_default = AmountInput; module.exports = AmountInput_default; //# sourceMappingURL=AmountInput.js.map //# sourceMappingURL=AmountInput.js.map