@dynamic-labs/sdk-react-core
Version:
A React SDK for implementing wallet web3 authentication and authorization to your website.
46 lines (41 loc) • 5.4 kB
JavaScript
'use client'
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var React = require('react');
var reactI18next = require('react-i18next');
require('@dynamic-labs/sdk-api-core');
require('../../shared/logger.cjs');
require('@dynamic-labs/iconic');
require('@dynamic-labs/wallet-connector-core');
var arrowLeft = require('../../shared/assets/arrow-left.cjs');
var check = require('../../shared/assets/check.cjs');
var pencilAltIcon = require('../../shared/assets/pencil-alt-icon.cjs');
require('../../context/ViewContext/ViewContext.cjs');
require('@dynamic-labs/wallet-book');
require('@dynamic-labs/utils');
require('../../utils/constants/colors.cjs');
require('../../utils/constants/values.cjs');
require('../../shared/consts/index.cjs');
var classNames = require('../../utils/functions/classNames/classNames.cjs');
var Icon = require('../Icon/Icon.cjs');
var IconButton = require('../IconButton/IconButton.cjs');
var IconWithSpinner = require('../IconWithSpinner/IconWithSpinner.cjs');
var IconWithStatus = require('../IconWithStatus/IconWithStatus.cjs');
var ModalHeader = require('../ModalHeader/ModalHeader.cjs');
var ModalHeaderBanner = require('../ModalHeaderBanner/ModalHeaderBanner.cjs');
var PinField = require('../PinField/PinField.cjs');
var RetrySendVerificationCodeSection = require('../RetrySendVerificationCodeSection/RetrySendVerificationCodeSection.cjs');
var Typography = require('../Typography/Typography.cjs');
const OTPVerificationView = ({ onClickBack, onClickEditDestination, isLoading, disabled, displayedDestination, description, onPinComplete, isValid, error, retryHandler, onPinChange, successBannerTextKey, MainIcon, hideHeader, appendAboveOTPInput, appendToEnd, }) => {
const { t } = reactI18next.useTranslation();
const backButton = onClickBack && (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: onClickBack, "data-testid": 'back-button', children: jsxRuntime.jsx(arrowLeft.ReactComponent, {}) }));
const titleCopyKey = React.useMemo(() => isValid
? 'dyn_otp_verification.verification_succeeded'
: 'dyn_otp_verification.confirm_code', [isValid]);
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!hideHeader && (jsxRuntime.jsx(ModalHeader.ModalHeader, { alignContent: 'bottom', leading: onClickBack && backButton, children: jsxRuntime.jsx("div", { className: 'otp-verification-view__status-header', children: jsxRuntime.jsx(Typography.Typography, { weight: 'medium', variant: 'title', color: 'primary', className: 'otp-verification-view__title', copykey: titleCopyKey, children: t(titleCopyKey) }) }) })), successBannerTextKey && (jsxRuntime.jsx(ModalHeaderBanner.ModalHeaderBanner, { type: 'notice', messageKey: successBannerTextKey, disableTruncate: true })), jsxRuntime.jsx(ModalHeaderBanner.ModalHeaderBanner, { type: 'error', messageKey: error === null || error === void 0 ? void 0 : error.message }), jsxRuntime.jsxs("div", { className: classNames.classNames('otp-verification-view', {
'otp-verification-view--message': Boolean(successBannerTextKey || error),
}), children: [isValid && (jsxRuntime.jsx(IconWithStatus.IconWithStatus, { Icon: MainIcon, iconSize: 64, InnerIcon: check.ReactComponent })), !isValid && (jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: MainIcon, iconSize: 96, isSpinning: isLoading, className: 'otp-verification-view__icon-with-spinner', treatAsFunctionComponent: true })), jsxRuntime.jsxs("div", { className: 'otp-verification-view__body', children: [isValid && (jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_otp_verification.hang_tight', children: t('dyn_otp_verification.hang_tight') })), !isValid &&
(description ? (jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_otp_verification.description', children: description })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_otp_verification.description', children: t('dyn_otp_verification.description') }), jsxRuntime.jsxs("div", { className: 'otp-verification-view__destination-container', children: [displayedDestination && (jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'bold', color: 'secondary', children: displayedDestination })), onClickEditDestination && (jsxRuntime.jsx(IconButton.IconButton, { onClick: onClickEditDestination, "data-testid": 'otp-verification-view__edit-button', children: jsxRuntime.jsx(Icon.Icon, { color: 'text-tertiary', children: jsxRuntime.jsx(pencilAltIcon.ReactComponent, {}) }) }))] })] })))] }), appendAboveOTPInput, jsxRuntime.jsx(PinField.PinField, { initialValue: Array(6).join('.').split('.'), isLoading: isLoading, handleComplete: onPinComplete, isValidated: isValid, inputMode: 'numeric', pattern: '[0-9]*', hasError: Boolean(error), onChange: onPinChange, disabled: disabled }), retryHandler && (jsxRuntime.jsx(RetrySendVerificationCodeSection.RetrySendVerificationCodeSection, { className: 'otp-verification-view__retry-container', retryHandler: retryHandler })), appendToEnd] })] }));
};
exports.OTPVerificationView = OTPVerificationView;