UNPKG

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