UNPKG

@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
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