@suiware/kit
Version:
Opinionated React components and hooks for building Sui dApps.
66 lines (64 loc) • 1.66 kB
JavaScript
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