@turnkey/react-wallet-kit
Version:
The easiest and most powerful way to integrate Turnkey's Embedded Wallets into your React applications.
94 lines (91 loc) • 3.98 kB
JavaScript
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
import { jsxs, jsx } from 'react/jsx-runtime';
import { useState } from 'react';
import { IconButton, ActionButton } from '../design/Buttons.mjs';
import { PhoneInputBox } from '../design/Inputs.mjs';
import { faArrowRight } from '@fortawesome/free-solid-svg-icons';
import clsx from 'clsx';
import { useTurnkey } from '../../providers/client/Hook.mjs';
function PhoneNumberInput(props) {
var _config$ui$preferLarg, _config$ui;
var _useTurnkey = useTurnkey(),
config = _useTurnkey.config;
var onContinue = props.onContinue;
var _useState = useState(""),
_useState2 = _slicedToArray(_useState, 2),
phone = _useState2[0],
setPhone = _useState2[1];
var _useState3 = useState(""),
_useState4 = _slicedToArray(_useState3, 2),
formattedPhone = _useState4[0],
setFormattedPhone = _useState4[1];
var _useState5 = useState(false),
_useState6 = _slicedToArray(_useState5, 2),
isValid = _useState6[0],
setIsValid = _useState6[1];
var _useState7 = useState(false),
_useState8 = _slicedToArray(_useState7, 2),
loading = _useState8[0],
setLoading = _useState8[1];
var useContinueButton = (_config$ui$preferLarg = config === null || config === void 0 ? void 0 : (_config$ui = config.ui) === null || _config$ui === void 0 ? void 0 : _config$ui.preferLargeActionButtons) !== null && _config$ui$preferLarg !== void 0 ? _config$ui$preferLarg : false;
var handleContinue = /*#__PURE__*/function () {
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(isValid && onContinue)) {
_context.next = 8;
break;
}
setLoading(true);
_context.prev = 2;
_context.next = 5;
return Promise.resolve(onContinue(phone, formattedPhone));
case 5:
_context.prev = 5;
setLoading(false);
return _context.finish(5);
case 8:
case "end":
return _context.stop();
}
}, _callee, null, [[2,, 5, 8]]);
}));
return function handleContinue() {
return _ref.apply(this, arguments);
};
}();
var buttonDisabled = !isValid;
var buttonClass = clsx("transition-all duration-300", (isValid || useContinueButton) && "bg-primary-light dark:bg-primary-dark hover:bg-primary-light/90 dark:hover:bg-primary-dark/90 text-primary-text-light dark:text-primary-text-dark");
return jsxs("div", {
className: clsx("w-full items-center justify-center space-y-3", useContinueButton ? "flex flex-col" : "flex flex-row"),
children: [jsxs("div", {
className: clsx("w-full", !useContinueButton && "relative flex items-center"),
children: [jsx(PhoneInputBox, {
value: phone,
onChange: function onChange(raw, formatted, valid) {
setPhone(raw);
setFormattedPhone(formatted);
setIsValid(valid);
},
onEnter: handleContinue
}), !useContinueButton && jsx(IconButton, {
icon: faArrowRight,
onClick: handleContinue,
disabled: buttonDisabled,
loading: loading,
className: clsx("absolute right-2 w-6 h-6", buttonClass),
spinnerClassName: "text-primary-text-light dark:text-primary-text-dark"
})]
}), useContinueButton && jsx(ActionButton, {
onClick: handleContinue,
disabled: buttonDisabled,
loading: loading,
className: clsx("w-full", buttonClass),
spinnerClassName: "text-primary-text-light dark:text-primary-text-dark",
children: "Continue"
})]
});
}
export { PhoneNumberInput };
//# sourceMappingURL=Phone.mjs.map