{"version":3,"sources":["../../shared/assets/images/close-modal-icon.svg","assets/images/close.png","assets/images/logoMbankAuth.png","../../shared/assets/images/check-modal-icon.svg","../../shared/assets/images/warning-modal-icon.svg","../../shared/assets/images/sadface-icon.svg","../../shared/faceleaf/services/keys/TOTEM_MR_HML.key.pem","../../shared/faceleaf/services/keys/TOTEM_MR.key.pem","assets/images/error-icon.svg","assets/images/check-icon.svg","assets/images/noSee.svg","assets/images/see.svg","assets/images/mBankCard.png","assets/images/attention.png","../../shared/assets/images/bag.png","assets/images/whiteArrow.png","assets/images/auth-bg.png","assets/images/auth-bg-small.png","assets/images/mbank-mini-card.png","assets/images/whatsapp-pink.png","../../shared/utils/types.tsx","../../shared/index.tsx","../../shared/utils/storage.ts","../../shared/utils/consts.tsx","../../shared/redux/psf/types.tsx","../../shared/styles/theme.ts","../../shared/utils/index.tsx","../../shared/faceleaf/services/auth.ts","../../shared/faceleaf/mappers/auth.ts","../../shared/faceleaf/services/positiveValidation.ts","../../shared/faceleaf/useCases/forgotPasswordUseCase.ts","../../shared/api/index.tsx","../../shared/consts/index.ts","../../shared/faceleaf/services/api.ts","../../shared/faceleaf/useCases/getUserInfo.ts","../../shared/faceleaf/useCases/newAccountUseCase.ts","../../shared/faceleaf/services/authValidation.ts","../../shared/faceleaf/useCases/positiveConsultUseCase.ts","../../shared/faceleaf/useCases/positiveVerifyUseCase.ts","../../shared/faceleaf/components/DialogModal/styles.ts","../../shared/faceleaf/components/DialogModal/index.tsx","../../shared/faceleaf/contexts/DialogContext.tsx","../../shared/faceleaf/services/basicApi.ts","../../shared/faceleaf/useCases/sendVerificationCodeUseCase.ts","../../shared/faceleaf/useCases/getAuthTokenUseCase.ts","../../shared/faceleaf/useCases/getClientDataUseCase.ts","../../shared/faceleaf/useCases/verifyCodeUseCase.ts","../../shared/faceleaf/useCases/getContactInfo.ts","../../shared/faceleaf/services/generateAccountToken.ts","../../shared/faceleaf/useCases/getServiceTokenUseCase.ts","../../shared/faceleaf/useCases/getTotemTokenUseCase.ts","../../shared/faceleaf/contexts/AuthContext.tsx","../../shared/redux/psf/negotiation/types.tsx","../../shared/faceleaf/components/Modal/styles.ts","../../shared/faceleaf/components/Modal/index.tsx","../../shared/faceleaf/contexts/ModalContext.tsx","../../shared/faceleaf/contexts/index.tsx","../../shared/redux/psf/index.tsx","../../shared/redux/psf/negotiation/index.tsx","util/types.tsx","redux/index.tsx","redux/store.tsx","../../shared/redux/psf/negotiation/actions.tsx","../../shared/redux/psf/actions.tsx","../../shared/faceleaf/components/Loading/styles.ts","../../shared/faceleaf/components/Loading/index.tsx","components/Forms/ErrorMessage/styles.ts","components/Forms/ErrorMessage/index.tsx","components/Forms/CaptchaForm/index.tsx","components/Button/styles.tsx","components/Button/index.tsx","components/Forms/InputMask/index.tsx","components/Forms/Input/styles.ts","components/Forms/Input/index.tsx","components/Forms/InputForm/index.tsx","pages/Auth/SignUp/styles.ts","pages/Auth/SignUp/index.tsx","util/consts.tsx","pages/Auth/ForgetPassword/styles.ts","pages/Auth/ForgetPassword/index.tsx","pages/Auth/SignIn/styles.ts","components/CustomToastContent/styles.ts","util/index.tsx","assets/images/question.svg","components/CustomToastContent/index.tsx","pages/Auth/SignIn/index.tsx","components/CardInfo/LimitInfo/components/InDebtInfo/styles.ts","components/CardInfo/LimitInfo/components/InDebtInfo/index.tsx","pages/Invoice/components/Carousel/components/ScrollCarousel/index.tsx","assets/images/barcode.svg","components/CardInfo/LimitInfo/styles.ts","components/CardInfo/LimitInfo/index.tsx","components/CardInfo/styles.ts","components/CardInfo/index.tsx","components/Error/styles.ts","components/Error/index.tsx","components/Header/components/Closed/styles.ts","components/Header/components/Closed/index.tsx","components/Header/components/InDebt/styles.ts","components/Header/components/InDebt/index.tsx","util/invoice.tsx","components/Header/components/User/components/UserModal/styles.ts","components/Header/components/User/components/UserModal/index.tsx","components/Header/components/User/styles.ts","components/Header/components/User/index.tsx","components/Header/styles.ts","components/Header/index.tsx","pages/Home/components/Chart/styles.ts","pages/Home/components/Chart/index.tsx","pages/Home/styles.ts","components/Loading/styles.ts","components/Loading/index.tsx","../../shared/faceleaf/components/HistoryPurchases/styles.ts","../../shared/faceleaf/components/HideValue/index.tsx","../../shared/faceleaf/components/HistoryPurchases/index.tsx","pages/Home/components/History/styles.ts","pages/Home/components/History/index.tsx","pages/Home/index.tsx","pages/Invoice/components/Carousel/styles.ts","components/atoms/typography/index.tsx","pages/Invoice/components/Carousel/components/ItemCarousel/styles.ts","pages/Invoice/components/Carousel/components/ItemCarousel/index.tsx","pages/Invoice/components/Carousel/components/ScrollCarousel/styles.ts","pages/Invoice/components/Carousel/index.tsx","pages/Invoice/components/StatusInvoice/styles.ts","pages/Invoice/components/StatusInvoice/index.tsx","assets/images/close.svg","assets/images/mail.svg","assets/images/correct.svg","components/atoms/buttonLink/styles.ts","components/atoms/buttonLink/index.tsx","components/atoms/media/index.tsx","components/buttonAction/styles.ts","components/buttonAction/index.tsx","assets/images/home-menu-icon.svg","pages/Invoice/components/Details/components/PaymentModal/styles.ts","pages/Invoice/components/Details/components/PaymentModal/index.tsx","pages/Invoice/components/Details/styles.ts","pages/Invoice/components/Details/index.tsx","pages/Invoice/components/History/styles.ts","pages/Invoice/components/History/index.tsx","pages/Invoice/components/MenuHeader/styles.ts","pages/Invoice/components/MenuHeader/index.tsx","pages/Invoice/styles.ts","pages/Invoice/index.tsx","components/Layouts/AuthLayout/styles.ts","components/Layouts/AuthLayout/index.tsx","components/Layouts/DefaultLayout/Menu/styles.ts","assets/images/invoice-detail-menu-icon.svg","assets/images/second-installment-menu-icon.svg","components/Layouts/DefaultLayout/Menu/MenuLink/styles.ts","components/Layouts/DefaultLayout/Menu/MenuLink/index.tsx","components/Layouts/DefaultLayout/Menu/index.tsx","components/Layouts/DefaultLayout/styles.ts","components/Layouts/DefaultLayout/index.tsx","routes/CustomRoute.tsx","pages/Auth/Validation/styles.ts","pages/Auth/Validation/index.tsx","pages/Auth/NewPassword/styles.ts","pages/Auth/NewPassword/index.tsx","pages/Auth/ValidationToken/styles.ts","components/ValidationOption/styles.ts","components/ValidationOption/index.tsx","pages/Auth/ValidationToken/index.tsx","pages/Auth/ValidationTokenHelp/styles.ts","components/ContactCard/styles.ts","components/ContactCard/index.tsx","pages/Auth/ValidationTokenHelp/index.tsx","pages/Auth/ValidationTokenCode/styles.ts","pages/Auth/ValidationTokenCode/index.tsx","routes/index.tsx","styles/global.ts","App.tsx","serviceWorker.ts","index.tsx"],"names":["module","exports","InvoiceItemStatus","MessageType","UserStatusType","storage","memoryStorage","this","scope","key","value","window","sessionStorage","setItem","localStorage","e","getItem","removeItem","AuthFlows","PSFTypes","CardStatusType","TransactionType","InvoiceType","PSF_services_host","process","PSF_user_host","service_url","itaucard_offer_url","finance_info_url","invoices_url","invoice_detail_url","invoice_send_email_url","search_negotiation_url","negociate_search","months","initials","description","SESSION_EXPIRED","BREAKPOINT","colors","marisaPrimary100","marisaPrimary80","marisaPrimary60","marisaPrimary50","marisaPrimary40","marisaPrimary30","marisaPrimary20","marisaPrimary10","marisaSecondary100","marisaSecondary70","marisaSecondary50","marisaSecondary40","marisaSecondary20","marisaSecondary5","marisaSuccess100","marisaSuccess70","marisaSuccess50","marisaSuccess40","marisaSuccess20","marisaSuccess5","marisaWarning100","marisaWarning70","marisaWarning50","marisaWarning40","marisaWarning20","marisaWarning5","marisaError100","marisaError80","marisaError50","marisaError20","marisaError10","marisaPrimaryGradient","mbankPrimary100","mbankPrimary90","mbankPrimary80","mbankPrimary70","mbankPrimary60","mbankPrimary40","mbankPrimary10","mbankSecondary100","mbankSecondary80","mbankSecondary60","mbankSecondary50","mbankSecondary40","mbankWarning100","mbankError100","mbankFaturaParcial100","mbankFaturaFechada100","mbankFaturaPaga100","marisaBlack100","marisaBlack90","marisaBlack80","marisaBlack70","marisaBlack60","marisaBlack50","marisaBlack40","marisaBlack30","marisaBlack20","marisaBlack10","marisaBlack5","marisaBlack0","marisaDarkModeBg100","marisaDarkModeBg80","marisaDarkModeBg60","marisaDarkModeBg40","marisaDarkModeBg20","mbankBlack100","mbankBlack40","fonts","Bold","ExtraLight","Light","Regular","Medium","getRawText","str","split","join","getRawDocument","document","getRawCellphone","cellphone","getUserSession","session","JSON","parse","clearUserSession","camelCase","words","trim","text","forEach","word","index","toUpperCase","slice","toLowerCase","formatMoney","withUnit","money","Intl","NumberFormat","style","currency","minimumFractionDigits","format","parseFloat","replace","getExtendedDate","dateStr","dateSplit","date","Date","parseInt","String","getDate","padStart","getMonth","getDueMonth","cutDay","internalDate","getTime","setDate","getStrToDate","onlyNumbers","getRawMoney","generateGuid","nanoid","authApi","axios","create","baseURL","interceptors","request","use","config","data","marisaNewAcountToNewAcount","codeReturn","codigoRetorno","descricaoRetorno","marisaForgotPasswordToForgotPassword","marisaValidationSendtoValidationSend","marisaAuthToken","token","positiveValidation","a","code","password","captcha","origin","post","qs","stringify","chaveSeguranca","cpfCliente","novaSenha","origem","fluxo","headers","authorization","forgotPasswordUseCase","GlobalVars","history","defaultBody","loginUsuario","ipUsuario","filial","url","endsWith","Authorization","idProcesso","sessionId","callApi","params","onSuccess","onError","generateGUID","idServico","then","response","indexOf","error","message","status","catch","push","api","getUserInfo","console","log","cpfUsuario","modulo","rotina","service","functionality","search","tipo","objectsReturn","ClientDashboard","senha","flagReceberNovidades","newAccountUseCase","authValidation","documentRaw","get","positiveConsultUseCase","idConsult","answers","identificadorTransacaoConsulta","respostas","positiveVerifyUseCase","ModalContainer","styled","ReactModal","theme","OverlayContainer","div","ContentContainer","IconContainer","EmptyIconContainer","CloseButton","button","DialogModal","type","title","onRequestClose","rest","Icon","useMemo","IconCheck","IconEmpty","IconWarning","shouldCloseOnOverlayClick","shouldCloseOnEsc","closeTimeoutMS","overlayElement","props","children","contentElement","onClick","src","IconClose","alt","DialogContext","createContext","DialogProvider","useState","isOpen","setIsOpen","dialogOptions","setDialogOptions","openDialog","useCallback","onClose","closeDialog","Provider","useDialog","context","useContext","Error","basicApi","method","email","flow","number","ddd","substring","celular","cliCpf","evento","sendCode","birthDate","serviceToken","auth","dataNascimento","parseISO","authenticateUserUseCase","getClientDataUseCase","verifyCodeUseCase","getContactInfo","isNotProduction","DEBUG_PROD","SVC_USER","REACT_APP_TOTEM_SVC_USER","SVC_TENANT_ID","REACT_APP_TOTEM_SVC_TENANT_ID","generateAccountToken","secret","HML_KEY","PROD_KEY","now","currentTimestamp","expiration","addHours","payload","sub","aud","iss","exp","iat","jwt","sign","algorithm","getServiceTokenUseCase","serviceAccountToken","REACT_APP_TOTEM_SVC_PASSWORD","getTotemTokenUseCase","NegotiationTypes","AuthContext","AuthProvider","setUser","setSession","documentValidation","setDocumentValidation","captchaToken","setCaptchaToken","requestOrigin","setRequestOrigin","loadingSession","setLoadingSession","loadingValidate","setLoadingValidate","loadingPositiveVerify","setLoadingPositiveVerify","loadingChangePassword","setLoadingChangePassword","setIdConsult","questionValidate","setQuestionValidate","securityKeyValidated","setSecurityKeyValidated","isAuthenticated","signIn","callback","saveUserSession","entities","AllHtmlEntities","decode","userSession","getServiceToken","serviceTokenResponse","signInWithServiceToken","authResponse","validationUser","errorCallback","result","allQuestions","perguntasIdentificacaoPositiva","map","item","codeQuestion","codigoPergunta","question","descricaoPergunta","descriptionReturn","positiveVerify","idTransation","callBack","goBack","answerStr","Object","values","questions","keys","length","includes","getAuthToken","authTokenUserUseCase","getClientData","verifyAuthentication","user","definePassword","resetValidationValues","forgotPassword","sendValidationCode","sent","sendTo","validateCode","isValid","logout","useEffect","useAuth","Modal","canClose","ModalContext","ModalProvider","options","setOptions","openModal","closeModal","component","SharedProvider","initialState","cardInfo","client","finalCard","creditLimit","OPENED","order","invoiceValue","dueDay","dueMonth","nowMonth","bestDayOfBuy","actualMonth","nextMonth","availableLimit","limitProgress","month","year","closureMonth","closureMonthDisplay","closureLabel","invoiceMonth","items","invoiceDate","generated","barcode","userInfo","firstName","name","cityState","address","cardStatus","OK","itaucardClient","cardInfoList","NONE","chartData","positiveValidationId","validated","itaucardOffer","hasOffer","financeInfo","withdrawalLimit","withdrawalLimitCellphone","loading","personalLoan","clientType","isWaitingVerificationCode","reducer","state","action","SEND_EMAIL","SEND_SMS","GET_BARCODE","CLEAR_MESSAGE","LOGIN","GET_DATA","LOGOUT","GET_POSITIVE_VALIDATION_QUESTIONS","id","VALIDATE_ANSWERS","SET_DOCUMENT_FORGOT_PASSWORD","CHANGE_NEW_PASSWORD","CREATE_NEW_ACCOUNT","clear","SET_LOADING","SET_CLIENT_TYPE","SET_IS_WAITING_VERIFICATION_CODE","debtValue","undefined","installmentOffer","quantity","interestRate","valueDiscount","valueTotal","policyCode","installmentsOffer","idTax","hasNegotiation","installments","broken","observation","SEARCH","SEARCH_INSTALLMENTS","SET_INSTALLMENT","installment","SEARCH_NEGOTIATION","NEGOCIATE","CLEAR_OBSERVATION","SET_DATE","combineReducers","psf","negotiation","store","createStore","Reducers","applyMiddleware","ReduxThunk","searchNegotationStatus","dispatch","postData","parcelasAcordo","next","nextFound","situacaoParcela","parcelNumber","numParcela","valorParcela","paymentValue","valorPagamento","dueDate","moment","dataVencimento","paymentDate","dataPagamento","linhaDigitavel","situation","dueDateLimit","dataVencimentoLimite","inNegotiation","ERROR","Promise","resolve","initializeCard","getCardInfo","reject","userCall","invoiceCall","getInvoiceData","itaucardCall","getItaucardOffer","financeInfoCall","getFinanceInfo","personalLoanCall","getPersonalLoan","all","getActualInvoice","invoiceData","cardHistory","getHistoryCardInfo","getChartData","errors","invoicesInfo","invoicesList","faturaPendentePgto","getDetailedInfo","PENDING","faturaAtual","faturaLiquidadas","PAID","actualInvoice","hasInvoiceExpiringInDate","CLOSED","setMonth","sort","b","generateEmptyMonths","invoices","nextInvoice","allMonths","invoice","initialDate","getFullYear","nextDate","monthDiff","differenceInMonths","newMonth","i","addMonths","monthDisplay","getEmptyInvoice","invoiceList","referenceDate","monthInvoiceList","getInvoiceObj","closureDate","dateInvoice","setTime","addDays","dateNow","userData","nome","cidadeUf","endereco","numeroCartao","diaVencimento","melhorDiaCompra","stats","ultFatTotalLimite","ultFatSaldoLimite","diaCorte","situacaoContaCod","cliCPF","isHistorico","Accept","invoicesResponse","Header","nroFatura","valorFatura","dataFatura","setFullYear","itensFaturaList","descricaoEvento","valor","installmentNumber","nroParcelaAtual","installmentsNumber","qtdeParcelas","tipoOperacao","CREDIT","DEBIT","day","sendEmail","emailDestinatario","SUCCESS","getBarcode","numFatura","fatura","getData","getState","list","reverse","purchases","origemOferta","tipoOferta","objects","hasOferta","oferta","dadosOfertaItau","valorLimite","mensagemTela","informacoesFinanceirasContaVO","vrDisponivelSaqueFacil","limiteDisponivelCelular","dadosOferta","dataValidade","animation","keyframes","Container","color","Circle","span","Loading","ErrorMessage","IconError","ResponsiveField","CaptchaForm","control","onChange","render","field","sitekey","ButtonContainer","disabled","css","Button","InputMask","forwardRef","ref","label","InputField","input","isPassword","ReactInputMask","ToggleVisibilityButton","attrs","ValidateIcon","Input","placeholder","inputType","setInputType","isPasswordVisible","setIsPasswordVisible","togglePasswordVisibility","inputRef","mask","IconVisible","IconHidden","InputForm","defaultValue","renderInput","Form","form","Field","schema","yup","required","SignUp","useHistory","useForm","resolver","yupResolver","handleSubmit","watch","setValue","formState","isDocumentValid","rawDocument","validateDocument","toValidation","onSubmit","autoFocus","marginBottom","display","justifyContent","to","ForgetPassword","HideIcon","img","MBankImage","Content","ToastDescription","section","PinkLink","_path","getUserStatusMbank","OVERDUE","IN_DEBT_WITH_AGREEMENT","IN_DEBT","IN_DAY","CustomToastContent","formattedDescription","URL","protocol","isValidHttpUrl","href","target","rel","MBankCard","alignSelf","Close","SignIn","useDispatch","setLoading","reset","toast","info","icon","content","destroy","duration","Attention","AttentionImage","Title","Description","Tip","InDebtInfo","RenderTip","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","slider","startX","scrollLeft","isScrolling","_path2","_ref","svgRef","createElement","width","height","fill","viewBox","d","ForwardRef","Label","MoneySymbol","Bar","Progress","isFull","LabelItem","Row","DueDate","ItemLabel","ItemValue","BestBuyDay","OthersValuesTitle","h1","CreditApproved","QuestionImage","QuestionSVG","QuestionContainer","Loot","CellphoneLimit","ButtonDefault","RightContainer","LimitInfo","setStatus","useSelector","loanValue","lootValue","lootCellphoneValue","usedValue","openPayment","CardInfo","onRetry","ButtonStyled","withoutBackground","ClosedInvoiceHeader","InDebt","userStatus","setUserStatus","cardType","location","isRoot","pathname","handleClick","newAgreement","invoiceConfig","inDebt","background","closed","Closed","pending","opened","paid","Separator","Info","CloseImage","UserModal","visible","handleLogoutClick","logoutAction","Name","Card","BallContainer","Ball","User","setVisible","withHeaderChildren","InvoiceTitleContainer","InvoiceTitle","ValueLabel","UserContainer","ChildrenContainer","InvoiceHeader","Chart","setData","chartDescript","setChartDescript","useTheme","chart","prefix","main","HistoryAndOfferContainer","hasItaucardOffer","LoadingContainer","hide","LoadingStyled","setState","lottie","loadAnimation","container","getElementById","renderer","loop","autoplay","animationData","LoadingAnimation","setTimeout","RowInformations","TopText","grey","ColumnRight","HideValue","show","setShow","defined","layout","setLayout","clientHeight","clientWidth","alignItems","marginLeft","HistoryItemPurchases","orders","isVisible","BagIcon","History","setItems","setHeight","rendered","useRef","current","Math","trunc","historyItems","Home","setError","load","calcFontSize","size","H1","Styled","H2","h2","H3","h3","H4","h4","H5","h5","H6","h6","Span","Typography","P","p","fontWeight","center","fontSize","opacity","lineHeight","LabelStyled","MenuItemContainer","ItemCarousel","selected","onSelectItem","MenuContainer","isDown","registerListeners","initial","scrollDuration","ScrollCarousel","initialItem","menuItems","setMenuItems","marginHorizontal","_setMarginHorizontal","selectedItem","setSelectedItem","marginHorizontalRef","setMarginHorizontal","margin","handleSelectItem","event","menuItem","pageX","screenCenter","screen","x","offsetLeft","easyScroll","scrollableDomEle","direction","easingPreset","scrollAmount","handleMouseUp","round","addEventListener","offsetWidth","click","preventDefault","walk","clearTimeout","minWidth","Carousel","onSelect","StatusInvoice","statusInvoiceMenuHeader","className","fillRule","clipRule","ButtonLink","breakpoints","sm","md","lg","dt","xl","xxl","media","generateMedia","lessThan","isInverted","SubtitleStyled","LabelContainer","ImageContainer","Component","ButtonAction","resetButton","clicked","enabled","RenderIcon","backgroundColor","cursor","subtitle","React","defaultProps","_path3","TitleLabel","ValueContainer","DueDateLabel","DayLabel","DueDateContainer","DueDateLabelContainer","DueDateDayContainer","ButtonLinkContainer","CloseContainer","ContainerSendEmail","SendEmailTitle","ButtonCancel","SendRow","right","top","left","bottom","border","borderRadius","styleLg","padding","PaymentModal","sendEmailEnabled","setSendEmailEnabled","sendAlternativeEmail","setSendAlternativeEmail","buttonEnabled","setButtonEnabled","isSubmitting","setIsSubmiting","mediaLg","useMediaPredicate","test","validateEmail","handleClose","copy","success","maxWidth","Price","isBig","withBorder","ButtonPay","InvoiceStatusText","EnvolvedDescription","MenuHeader","hasMonth","paymentVisible","setPaymentVisible","onSendEmail","onGetBarcode","SadFace","NoHasHistoryContainer","historyPurchase","setHistoryPurchase","hist","DEFAULT","HistoryPurchases","role","aria-label","aria-labelledby","ContainerMenuLarge","MenuForDevices","LargeMenuHeader","WhiteArrow","ContentHistory","ContentColor","bgColor","EnvolvedHistory","Invoice","actualItemInvoice","setActualItemInvoice","useLocation","body","overflow","bgColorMenuHeader","Details","AuthBackground","AuthBackgroundSmall","ImageLogo","LogoMbank","AuthLayout","aside","Marker","ContainerModal","_g","_defs","stroke","strokeWidth","clipPath","transform","NavLink","menu","MenuLink","onClickNav","isActive","find","v","activeClassName","Menu","hasOnclick","setHasOnclick","useModal","findIndex","noHaveHistory","DefaultLayout","CustomRoute","match","useRouteMatch","Layout","ButtonWrapper","Validation","disabledButton","setDisabledButton","useFieldArray","fields","append","watchFieldArray","controlledFields","toPassword","authToken","InputsQuestions","marginTop","InputContainer","min","password_confirmation","oneOf","NewPassword","mode","useFormState","shouldValidate","OptionText","light","CheckboxContainer","CheckboxField","checked","Checkedbox","ValidationOption","handleChange","ValidationToken","selectedOption","setSelectedOption","toVefify","handleSelectedOption","contact","renderOptions","rawNumber","TextBox","ContactCard","ValidationTokenHelp","MbankMiniCard","WhatsappPink","InputWrapper","InputOutterCircle","FakeInput","CalculationText","textInput","HideInput","ValidationTokenCode","isInputFocused","setInputFocused","timer","setTimer","currentChoice","setCurrentChoice","verified","focus","onFocus","onBlur","textAlign","Routes","exact","path","GlobalStyle","createGlobalStyle","setAppElement","App","locale","ptBR","Boolean","hostname","require","ReactDOM","StrictMode","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.3ee092bf.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/close-modal-icon.609ae150.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAARCAYAAADUryzEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADHSURBVHgBpZSLDYIwEIb5u5WPBLqJKziBZQM30E1aosStOK+VGoLXh+ESQmn/7yOXC2C09tRwHbS+N39U5FQD3Pz1GoZLNeyzM6eI6Ow3JyJTIwkwZ8MDUa+OWl8Z7mska5jbNoiHD2uNAgLMd7Nr274E+yWWoZQkBf8IJMn0gURYFKwl3xLgpMDX0znLh90ccvuu01JOSZu+5wiHl/M6NR0lwcueSyNGDo4950aMEhwrJUENnJOgFpYk4O8Io3NUC4uSrf+DN/pXyX0C0KsxAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/check-modal-icon.341c5959.svg\";","module.exports = __webpack_public_path__ + \"static/media/warning-modal-icon.6206d97c.svg\";","module.exports = __webpack_public_path__ + \"static/media/sadface-icon.e189aa58.svg\";","module.exports = __webpack_public_path__ + \"static/media/TOTEM_MR_HML.key.0b35b04f.pem\";","module.exports = __webpack_public_path__ + \"static/media/TOTEM_MR.key.523944be.pem\";","module.exports = __webpack_public_path__ + \"static/media/error-icon.e86191a1.svg\";","module.exports = __webpack_public_path__ + \"static/media/check-icon.2c8c53ce.svg\";","module.exports = __webpack_public_path__ + \"static/media/noSee.d569180a.svg\";","module.exports = __webpack_public_path__ + \"static/media/see.09d13da8.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAuCAMAAABDPIrQAAAA/FBMVEUAAAAaFFcZFFXBBIHsAIzsAI3rAIviAIbcAoPrAIvsAIzrAItiDWjqAIrrAIuXCHeGCXF2DG5QEGREEWE2El4qFFq/BIDsAIynBXkYFFjsAIy1BX7rAIy1Bn7sAI2/BIEcFVcYFFXvAI8gEGAaFFf///+pBnucB3ePCXSDCnFcDmfGxdVDEWF2DG4cFlhQEGRwbZY3El5qDWtUT4G1BX5pDWoeFFdgToQqFFspE1rsAIy2Bn51C203MmxPD2Q2El3x8fW1BH03E15KQHhCEGDj4uq4tsupp8CNiqtQEGUpJGIfFVjHxNWbmbWbmLV/e6BTToBFMXBoDGoeFVju9lBxAAAAJHRSTlMAgEDAoGBAIBBQ4ICAYMCAgICAgICAd3BfIO/f0M+wsG8/MBAsUCX1AAABh0lEQVRIx+3U2VLCMBQG4KJtaAsCruC+tS4IoRSKRdlRXHD3/d/FJIXG2qa2uaoz/gxnuPkmJychQkjEtBCeBGJRFEFRFBUuDADIHAEg/7E9oyiy8J9k5jAVnPW11ZVsdrmQz5eYJ5/SnED0+Z5We1Tplc3q+dnpyTbj6De14MCWXa88zHBzIxgvaIwgfFMrWw7ej41HlVr5o4Px9WIcDPGecdsWwcMwTGc1bnRndWrX0crmb5hO2Rjoun5H6qTbxns2q562FcBs20Dy/hbJZ1SfUNtz3JzjzNIPTJee6C+a9jjQX0kdR8Iuv9ANUhukXmJsdShWJElBXxDYNpzjNwe7N4xiqcjAvpX7rLbDMXTajoohY2XLi6Xgo4J+PCI4wvVkTduMjBtGF5JKfr/XadtMzMin3Xev5zAmJv+qHi+e2n2Ewwd2DPGkaaB3ZavDeIZkUlPMl4Se867sw1ezJ/Ag/Okt5Es+ijF/+LGcTss5XHjwjqrmhD1VVQXObAlRk5iB4eQ43Rddmouw4wYEuwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAiCAYAAAAzrKu4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALnSURBVHgBzZfPahNBHMd/s5mNNWCzShSKoCl6SEHFUvBWSN7ARVIIPbR5guoTpH2C+gbxljaJxGsvJV4kHkqlCPXQ4EbwZNGElIpk03FmTEKa7J+Z2QT7gZDZzezmx/f3m+/8BkFA3haL6wihNTpMsmsEULUBttLpdBUCgCAAlVIpRwA2XV68aabTW6CIcmA9pfJec7oAKVXlNFAEaVrObw4G8J3jhlJgLIVASNxvHk1zsry7+xwUkE5loVCIX8P4q/ADCFmtdnsxm802QQJpxcK6LpcequxsJPISJJFSrFIsPiUIHYI8zT+2vZjJZCzRB6QUI5pWATWMGUmlhRXzsgddxzA3d4ePT09/wfn5b8d3yNgHFpnECp7bAyGOvz9+koD79+7ycadjw97ee/7t8GdMtSoIIJTKGYzXvOzhduzWYMzU03XdcR6zD6Y8TCIwppbbtqMCLYftfD5v+M3zDUzaHvwxROzDMzDm2oiQdZgwtF43WCa85ngGpoVC2zAdDFq3ng2Aa2C8SAX2Q1XYQiiVSkm33x0DG9iDIKO+1el0hJ7z6j4cA+MFL6HWwcFn+Nb4zj9HR18cPcwJbh87O44LYcz5pbuH4DRbZ2fzo93HmGJTsAc/HO3jkmIi7fK0oN3H/HD3cUkxmYIfJRq9AbHYTb4lqTBqHwPFKuXyBiHkNUgSiVyHpaVHNKh/+yVbobXaIbRabZBluPvgivX2Q+kuk5FYeDAIqh/o8vIzUCE0VEY8MFl7GMaIzo7dY+lkqZWGxtC3D42baYD90M1M3ZpFP1AolGPdhxbGWOl41ef4uD527+SkIWyyDhhGOBzHcHFhgKZ87qWt9E/Y3/8AC4mH/PoHva7XGxCELsY0MHrug4CwFVj7qHJ4ciZk25am6fo7OpY6jE4VQixzdfWTZppmk/rXK7gaNFG3m2IDXlwvVlbe0OCyLFr4f1SpO6TM3rY01l2w07aNkO9hYZJgjC2aOWv43l9hWgvfcVcPYgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIsSURBVHgBrVVNchJBFP5e91gV3Qg7d0yqLBf+VJETSE4gWqQKs8EsXUX3io16AHMCWOlYpJAbmJxAliwnNyArqYLp5+tuwBQFRph8i5nu6Xlff++vm3AN6lUT4xYqfsJIk1Nzdp0NrVuoVk1hJ9I/hKmyZJEiQyvpNTvrbNW6hR2tfhG4LKSt8dQWk9OmCLD7YE7Fqv2y9vENNlFaPzCvwKoNi6NViuq11k8ClX9P7W6/b0b/p5R1w7m5zkXL6oSBwm09i/UqpQtleeBEdJu7bhgFZRSHBXsUpKgPTDQiyk5W2lsqy/qxEHXk53OCesaM6uGLz6WvvXcXM1LERBh965qOV1771HAuJLP5Muo1UxHqY6mC86RnOuKpfFXViZ4WZXARYkqqJMzp3IhlA9Df+TIyWWfQAMr6f6zVPlmRRbxw3wVddlpk8Xv3/XP8A92uGchrbyFCZak8pNpUwc1VeHDMsJfYEnqCIEhxvCD1SqUFsSWSvkn9gKjkXpHvbT/HCHkgohhcDEqjEFxYSpEDrgTFba9UWdY+uPNMbg0pfiEOidIUgpvldJ+sJJqD10ri4Nknk+0ThZlS93JHppqzrzptNiMNzXJHRXeV7ybKqfIKmKZ7KtRovsw7ZMDAk0pXRcRcIGLcFEihoB8/qkjBUv3Jw/3L+w+eDofDszE2xOGBKYu3bbkN7mFqX5O/4DR9kZZqIAfkqByxxVt3W9DV3SxQxpYYT6SAZhX0B9or2BGSvCEJAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB9SURBVHgB7ZS9DYAgEEa/S2jYxhXcwA2Mm+EGuoEjOIIbWEP48c5Y2FgQsOM1EIqXxxUHfJBSGkMIp3OuQymPLHnvDUppsmxIZDFGQ0SbtXZCAVrrg6QMleCwXnHhzHUjnwu/rShAKbXfF5mdlMr3UYsm/U9aZdu8pAMyuQDHd6G6j9c9ZAAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/auth-bg.6475622a.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAARCAMAAAAbkScBAAAAnFBMVEUbFFd9C3BaD2gAAAAcFVeqCH0bFVe7BYAbFVa4BX4cFVeXCHZAEGAuFFwbFVimBnm1BYAbEFUbFFccFVg/EWCqBnyGCnK8BIBRD2WYCHctE1z///91DG7GxNWNiqtjDmpiDWl0DG7j4upIMHA4MmwdFFfGxdVUT4Hx8fWZCHcbFFZQD2QpI2EaFFZ/fKFiXouZCXeqqMCcmbaFCnKM4I7IAAAAEnRSTlOAgIAA79/fz8+QkICAgGBQMDDzXq5QAAAAyUlEQVQY013QCQ6CMBAF0Lrv2x9FhbYoVhRUcLn/3aRLKGGShoTXP22HbcZ4wRfhGm4fJx5kgzUbOqFaw+0h5sFxN2JAy66Vnc6V7Zn+SeSddM+YG6tjqpDqWcjS2DnInBGA8n4XkV5f09OZVZEAn0hBRhd/niWIFJBJjlvbgDxNiWQCZ9xYbsjkvMU25x5AQgBNe2vzuYZxa2SIngqoVg7lZuZy5Db4mfGftj4s+E9Y33MKXy8zT9sz201Yb8latZh3u53ObNX7A1LLKEhCdOjrAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAAQlBMVEUAAADsAI3rAIrrAIvnAIftAIzqAIrpAInsAI3tAIzrAIvsAIzsAIztAI3rAIvrAIvtAI3tAIztAI3rAIzrAIvsAIwEG8HcAAAAFXRSTlMA32BwIL8wEO+QUO+v37CAf8+gz0CDcUlAAAAAuUlEQVQY002R22IDIQhEUbyuu9kk7fn/Xy1UazMv4jjAgPKLqucFrzPKP47GQth0h6xJpMQAz8k9aSoLOuh+RlqRjTI47AiopHPzyqgmDP6Qtzab6EGUBHxIH/Ly6yBsZbIYLLh5ywZMsgbiJ3mRPCeY65S7j8CXNVKZbGh46WiNdLmpHfBxvFIdf+VSvA93FNwsFm6U5poK6Xu31sbtu1x7LJavmbmkN5ADC22Wyv2o5sO/4zq1iuMH168KRNz9tc4AAAAASUVORK5CYII=\"","export enum InvoiceItemStatus {\n DEFAULT = 'DEFAULT',\n PAID = 'PAID',\n}\n\nexport enum MessageType {\n NONE = 'none',\n INFORMATION = 'information',\n SUCCESS = 'success',\n ERROR = 'error',\n WARNING = 'warning',\n LOADING = 'loading',\n}\n\nexport interface Message {\n type: MessageType;\n description: string;\n}\n\nexport interface UserSession {\n token: string;\n document: string;\n sessionId: string;\n}\n\nexport interface InvoiceTypeObj {\n title: string;\n buttonLabel: string;\n buttonLabelColor: string;\n textColor: string;\n background: string;\n valueTextColor: string;\n titleTextColor: string;\n}\n\nexport interface SimpleCallback {\n (message: Message): void;\n }\n\nexport interface Callback {\n (): void;\n}\n\nexport interface NegotiationCallback {\n (hasNegotiation: boolean, message: Message): void;\n}\n\nexport enum UserStatusType {\n IN_DAY = 'IN_DAY',\n PENDING = 'PENDING',\n IN_DEBT = 'IN_DEBT',\n IN_DEBT_WITH_AGREEMENT = 'IN_DEBT_WITH_AGREEMENT',\n}","import Storage from \"./utils/storage\"\n\nexport const initializeCard = () => {\n\treturn {\n\t\tclient: '',\n\t\temail: '',\n\t\tfinalCard: '',\n\t\tcreditLimit: '0',\n\t\ttype: 0,\n\t\torder: 0,\n\t\tinvoiceValue: '0,00',\n\t\tdueDay: '',\n\t\tdueMonth: '',\n\t\tnowMonth: '',\n\t\tbestDayOfBuy: 0,\n\t\tactualMonth: '',\n\t\tnextMonth: '',\n\t\tavailableLimit: '0',\n\t\tlimitProgress: 0,\n\t\tmonth: '',\n\t\tyear: 0,\n\t\tclosureMonth: '',\n\t\tclosureLabel: '',\n\t\tinvoiceMonth: '',\n\t\tcutDay: 0,\n\t\titems: [],\n\t\tinvoiceDate: null,\n\t\tgenerated: false,\n\t}\n}\n\nexport const storage = new Storage();","type ScopeType = 'SESSION' | 'LOCAL';\n\nclass Storage {\n private memoryStorage: {[key: string]: string};\n\n constructor() {\n this.memoryStorage = {};\n }\n\n setItem(scope: ScopeType, key: string, value: string) {\n try {\n if (scope === 'SESSION') {\n window.sessionStorage.setItem(key, value);\n } else {\n window.localStorage.setItem(key, value);\n }\n } catch (e) {\n this.memoryStorage[key] = value;\n }\n }\n\n getItem(scope: ScopeType, key: string) {\n try {\n if (scope === 'SESSION') {\n return window.sessionStorage.getItem(key);\n }\n return window.localStorage.getItem(key);\n } catch (e) {\n if (this.memoryStorage[key]) {\n return this.memoryStorage[key];\n }\n return null;\n }\n }\n\n removeItem(scope: ScopeType, key: string) {\n try {\n if (scope === 'SESSION') {\n window.sessionStorage.removeItem(key);\n } else {\n window.localStorage.removeItem(key);\n }\n\n } catch (e) {\n delete this.memoryStorage[key];\n }\n }\n}\n\nexport default Storage;","export const REACT_APP_PSF_AUTH_HOST = process.env.REACT_APP_PSF_AUTH_HOST;\nexport const REACT_APP_PSF_SERVICES_HOST =\n process.env.REACT_APP_PSF_SERVICES_HOST;\nexport const REACT_APP_PSF_USER_HOST = process.env.REACT_APP_PSF_USER_HOST;\n\nconst PSF_auth_host = REACT_APP_PSF_AUTH_HOST;\nconst PSF_services_host = REACT_APP_PSF_SERVICES_HOST;\nconst PSF_user_host = REACT_APP_PSF_USER_HOST;\n\n/* PSF */\nexport const auth_url = `${PSF_auth_host}/security/api/auth/app/nascto`;\n\nexport const service_url = `${PSF_services_host}/psfclientservices/rest/v2/dashboard/searchClient`;\n\nexport const user_url = `${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/consultaIdentificacaoPositiva/DOCUMENT/0`;\nexport const user_validation_url = `${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/validacaoIdentificacaoPositiva`;\nexport const user_new_password_url = `${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/alteracaoSenhaByCpf/esqueci`;\nexport const user_new_account_url = `${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/usuarios/registrarByCpf`;\nexport const itaucard_offer_url = `${PSF_services_host}/psfclientservices/rest/ofertas/search`;\nexport const finance_info_url = `${PSF_services_host}/financialservices/rest/v2/infofinanceiras/getInformacoesFinanceiras`;\n\nexport const invoices_url = `${PSF_services_host}/financialservices/rest/v2/fatura/getListaFaturas`;\nexport const invoice_detail_url = `${PSF_services_host}/financialservices/rest/v2/fatura/getFatura`;\nexport const invoice_send_email_url = `${PSF_services_host}/financialservices/rest/v2/fatura/getFaturaAtualEmail`;\nexport const invoice_send_sms_url = `${PSF_services_host}/financialservices/rest/v2/fatura/getFaturaSms`;\n\nexport const previous_invoice_pdf_url = `${PSF_services_host}/financialservices/rest/v2/fatura/getFaturaPDF`;\n\n//Negotiation\nexport const search_negotiation_url = `${PSF_services_host}/acordo/api/cliente/consulta`;\nexport const search_negotiation_offers_url = `${PSF_services_host}/acordo/api/acordo/ofertas`;\nexport const negociate_url = `${PSF_services_host}/acordo/api/acordo/efetivar`;\nexport const negociate_search = `${PSF_services_host}/acordo/api/acordo/consultar`;\nexport const negociate_send_email_search = `${PSF_services_host}/acordo/api/cliente/enviaBoleto`;\n\nexport const months = [\n { initials: \"Jan\", description: \"Janeiro\" },\n { initials: \"Fev\", description: \"Fevereiro\" },\n { initials: \"Mar\", description: \"Março\" },\n { initials: \"Abr\", description: \"Abril\" },\n { initials: \"Mai\", description: \"Maio\" },\n { initials: \"Jun\", description: \"Junho\" },\n { initials: \"Jul\", description: \"Julho\" },\n { initials: \"Ago\", description: \"Agosto\" },\n { initials: \"Set\", description: \"Setembro\" },\n { initials: \"Out\", description: \"Outubro\" },\n { initials: \"Nov\", description: \"Novembro\" },\n { initials: \"Dez\", description: \"Dezembro\" },\n];\n\nexport const SESSION_EXPIRED = \"Sua sessão expirou, faça login novamente.\";\n\nexport const menu_home = {\n label: \"Início\",\n description: \"Todas as novidades do seu Cartão Marisa para você.\",\n};\nexport const menu_duplicate = {\n label: \"2ª via da fatura\",\n description: \"Consulte a 2ª via de suas faturas de forma rápida.\",\n};\nexport const menu_invoiceDetail = {\n label: \"Detalhamento de faturas\",\n description: \"Consulte o detalhe das compras na sua fatura.\",\n};\nexport const menu_invoicePayment = {\n label: \"Pagamento de faturas\",\n description: \"Pague aqui as faturas que você tem aberta.\",\n};\n\nexport const BREAKPOINT = {\n desktop: \"max-width: 1440px\",\n laptop: \"max-width: 1024px\",\n tablet: \"max-width: 768px\",\n mobileLarge: \"max-width: 425px\",\n mobileMedium: \"max-width: 375px\",\n mobileSmall: \"max-width: 320px\",\n};\n\nexport const SERVICE_TOKEN_KEY = \"@service_token\";\n\nexport enum AuthFlows {\n SIGNUP = \"signup\",\n FORGOT = \"forgot\",\n}\n","import { Message } from '../../utils/types';\n\nexport enum PSFTypes {\n LOGIN = '@PSF/LOGIN',\n SEND_EMAIL = '@PSF/SEND_EMAIL',\n SEND_SMS = '@PSF/SEND_SMS',\n GET_BARCODE = '@PSF/GET_BARCODE',\n CLEAR_MESSAGE = '@PSF/CLEAR_MESSAGE',\n LOGOUT = '@PSF/LOGOUT',\n GET_DATA = '@PSF/GET_DATA',\n GET_POSITIVE_VALIDATION_QUESTIONS = '@PSF/GET_POSITIVE_VALIDATION_QUESTIONS',\n VALIDATE_ANSWERS = '@PSF/VALIDATE_ANSWERS',\n SET_DOCUMENT_FORGOT_PASSWORD = '@PSF/SET_DOCUMENT_FORGOT_PASSWORD',\n CHANGE_NEW_PASSWORD = '@PSF/CHANGE_NEW_PASSWORD',\n CREATE_NEW_ACCOUNT = '@PSF/CREATE_NEW_ACCOUNT',\n SET_LOADING = '@PSF/SET_LOADING',\n SET_CLIENT_TYPE = '@PSF/SET_CLIENT_TYPE',\n SET_IS_WAITING_VERIFICATION_CODE = '@PSF/SET_IS_WAITING_VERIFICATION_CODE',\n}\n\nexport enum CardStatusType {\n OK = 1,\n OVERDUE = 21,\n}\n\nexport interface UserType {\n firstName: string;\n name: string;\n email: string;\n cityState: string;\n address: string;\n cellphone: string;\n finalCard: string;\n dueDay: number;\n bestDayOfBuy: number;\n creditLimit: number;\n availableLimit: number;\n cutDay: number;\n cardStatus: CardStatusType;\n itaucardClient: boolean;\n}\n\nexport enum TransactionType {\n CREDIT = 'C',\n DEBIT = 'D',\n}\n\nexport interface CardInfoItemType {\n key: string;\n description: string;\n date: string;\n value: string;\n installmentNumber: number;\n installmentsNumber: number;\n type: TransactionType;\n message?: string;\n height?: number;\n day: number;\n month: string;\n}\n\nexport interface CardInfoType {\n client: string;\n email: string;\n finalCard: string;\n creditLimit: string;\n type: number;\n order: number;\n invoiceValue: string;\n dueDay: string;\n dueMonth: string;\n nowMonth: string;\n bestDayOfBuy: number;\n actualMonth: string;\n nextMonth: string;\n availableLimit: string;\n limitProgress: number;\n month: string;\n year: number;\n closureMonth: string;\n closureMonthDisplay: string;\n closureLabel: string;\n invoiceMonth: string;\n cutDay: number;\n items: CardInfoItemType[];\n invoiceDate: Date | null;\n generated: boolean;\n barcode?: string;\n}\n\nexport interface Credit {\n hasOffer: boolean;\n value: number;\n message: string;\n}\n\nexport interface ItaucardOffer extends Credit {}\n\nexport interface FinanceInfo {\n withdrawalLimit: number;\n withdrawalLimitCellphone: number;\n}\n\nexport interface PersonalLoan extends Credit {\n expiration: Date | null;\n}\n\nexport type ClientType = 'web' | 'totem';\n\nexport interface PSFState {\n readonly cardInfo: CardInfoType;\n readonly userInfo: UserType;\n readonly cardInfoList: MonthItemType[];\n readonly message: Message;\n readonly token: string;\n readonly chartData: ChartType[];\n readonly questions: PositiveQuestion[];\n readonly answers: { [key: string]: string };\n readonly positiveValidationId: string;\n readonly document: string;\n readonly validated: boolean;\n readonly itaucardOffer: ItaucardOffer;\n readonly financeInfo: FinanceInfo;\n readonly loading: boolean;\n readonly personalLoan: PersonalLoan;\n readonly clientType: ClientType;\n readonly isWaitingVerificationCode: boolean;\n}\n\ninterface StatsInfoType {\n ultFatTotalLimite: string;\n ultFatSaldoLimite: string;\n}\n\nexport interface CardDetailInfoType {\n nome: string;\n email: string;\n numeroCartao: string;\n diaVencimento: string;\n melhorDiaCompra: string;\n stats: StatsInfoType;\n diaCorte: string;\n}\n\nexport interface InvoiceItemType {\n data: string;\n descricaoEvento: string;\n valor: string;\n nroParcelaAtual: string;\n qtdeParcelas: string;\n tipoOperacao: string;\n}\n\nexport interface InvoiceDetailType {\n nroFatura: number;\n valorFatura: string;\n dataFatura: string;\n itensFaturaList?: InvoiceItemType[];\n}\n\nexport interface InvoiceDetailInfoType {\n faturaPendentePgto: InvoiceDetailType[];\n faturaAtual: InvoiceDetailType[];\n faturaLiquidadas: InvoiceDetailType[];\n}\n\nexport enum InvoiceType {\n OPENED = 1,\n CLOSED = 2,\n PENDING = 3,\n PAID = 4,\n}\n\nexport interface MonthItemType {\n key: number;\n month: string;\n monthDisplay: string;\n cardInfo: CardInfoType;\n}\n\nexport interface CallbackBarcode {\n (barcode: string, message: Message): void;\n}\n\ninterface ClearMessage {\n type: typeof PSFTypes.CLEAR_MESSAGE;\n}\n\ninterface Logout {\n type: typeof PSFTypes.LOGOUT;\n}\n\nexport type PSFActions = ClearMessage | Logout;\n\nexport interface ChartType {\n month: string;\n purchases: number;\n value: number;\n}\n\nexport interface PositiveQuestion {\n code: number;\n question: string;\n}\n\nexport interface GetQuestionsCallback {\n (message: Message, itaucardClient: boolean): void;\n}\n\nexport interface SetClientType {\n type: typeof PSFTypes.SET_CLIENT_TYPE,\n payload: {\n clientType: ClientType,\n }\n}\n\nexport interface SetIsWaitingVerificationCode {\n type: typeof PSFTypes.SET_IS_WAITING_VERIFICATION_CODE,\n payload: {\n isWaitingVerificationCode: boolean,\n }\n}","export default {\n colors: {\n marisaPrimary100: '#ff18a2',\n marisaPrimary80: '#FF46B5',\n marisaPrimary60: '#FF69C2',\n marisaPrimary50: '#ff8cd1',\n marisaPrimary40: '#FFA3DA',\n marisaPrimary30: '#FFBAE4',\n marisaPrimary20: '#ffd1ec',\n marisaPrimary10: 'rgba(254, 236, 247, 0.61)',\n\n marisaSecondary100: '#003180',\n marisaSecondary70: '#4D6FA6',\n marisaSecondary50: '#8098BF',\n marisaSecondary40: '#99ACCC',\n marisaSecondary20: '#CCD6E5',\n marisaSecondary5: '#F2F5F9',\n\n marisaSuccess100: '#2DDF89',\n marisaSuccess70: '#6CE9AC',\n marisaSuccess50: '#96EFC4',\n marisaSuccess40: '#B5F4D6',\n marisaSuccess20: '#D5F9E7',\n marisaSuccess5: '#F4FDF9',\n\n marisaWarning100: '#FFB200',\n marisaWarning70: '#FFD84D',\n marisaWarning50: '#FFE380',\n marisaWarning40: '#FFECA6',\n marisaWarning20: '#FFF4CC',\n marisaWarning5: '#FFFCF2',\n\n marisaError100: '#FF4B56',\n marisaError80: '#FF6F78',\n marisaError50: '#FFA5AB',\n marisaError20: '#FFDBDD',\n marisaError10: '#f9e3e0',\n\n marisaPrimaryGradient: '#da127e',\n\n mbankPrimary100: '#1B1557',\n mbankPrimary90: '#443F75',\n mbankPrimary80: '#585482',\n mbankPrimary70: '#A4A1BC',\n mbankPrimary60: '#C9C2D6',\n mbankPrimary40: '#F2F0F4',\n mbankPrimary10: '#FDFDFD',\n\n mbankSecondary100: '#EC008C',\n mbankSecondary80: '#EC45A8',\n mbankSecondary60: '#EA77BB',\n mbankSecondary50: '#ffafdf',\n mbankSecondary40: '#E7B4D2',\n\n mbankWarning100: '#FFC700',\n mbankError100: '#F2392D',\n mbankFaturaParcial100: '#89368F',\n mbankFaturaFechada100: '#CD2D60',\n mbankFaturaPaga100: '#155747',\n\n marisaBlack100: '#302D2D',\n marisaBlack90: '#454242',\n marisaBlack80: '#595757',\n marisaBlack70: '#6E6C6C',\n marisaBlack60: '#838181',\n marisaBlack50: '#989696',\n marisaBlack40: '#ACABAB',\n marisaBlack30: '#C1C0C0',\n marisaBlack20: '#D6D5D5',\n marisaBlack10: '#EBEAEA',\n marisaBlack5: '#F4F4F4',\n marisaBlack0: '#FFFFFF',\n\n marisaDarkModeBg100: '#121212',\n marisaDarkModeBg80: '#232323',\n marisaDarkModeBg60: '#343333',\n marisaDarkModeBg40: '#383838',\n marisaDarkModeBg20: '#838181',\n\n mbankBlack100: '#454242',\n mbankBlack40: '#C5C0C0',\n },\n fonts: {\n Bold: 'Pluto Cond Bold',\n ExtraLight: 'Pluto Cond Extrat Light',\n Light: 'Pluto Cond Light',\n Regular: 'Pluto Cond Regular',\n Medium: 'Pluto Cond Medium',\n },\n};\n","import { nanoid } from 'nanoid';\nimport { UserSession, InvoiceTypeObj, UserStatusType } from \"./types\";\nimport { months } from \"./consts\";\nimport {\n CardInfoType,\n CardStatusType,\n InvoiceType,\n UserType,\n} from \"../redux/psf/types\";\nimport { storage } from \"../\";\nimport theme from 'shared/styles/theme';\n\nexport const getRawText = (str: string): string => {\n return str\n .split(\".\")\n .join(\"\")\n .split(\"-\")\n .join(\"\")\n .split(\"/\")\n .join(\"\")\n .split(\"(\")\n .join(\"\")\n .split(\")\")\n .join(\"\")\n .split(\" \")\n .join(\"\");\n};\n\nexport const getRawDocument = (document: string): string => {\n return document.split('.').join('').split('-').join('').split('/').join('');\n};\n\nexport const getRawCellphone = (cellphone: string | undefined): string | undefined => {\n if (cellphone) {\n return getRawText(cellphone);\n }\n};\n\nexport const formatCellphone = (cellphone: string): string => {\n return `(${cellphone.slice(0, 2)}) ${cellphone.slice(\n 2,\n cellphone.length === 10 ? 6 : 7\n )}-${cellphone.slice(cellphone.length === 10 ? 6 : 7, 11)}`;\n};\n\nexport const setUserSession = (\n document: string,\n token: string,\n sessionId: string\n): void => {\n const userSession: UserSession = {\n token: `Bearer ${token}`,\n document: document,\n sessionId: sessionId,\n };\n\n storage.setItem(\"SESSION\", \"@session\", JSON.stringify(userSession));\n};\n\nexport const getUserSession = (): UserSession => {\n const session = storage.getItem(\"SESSION\", \"@session\");\n return session ? JSON.parse(session) : {};\n};\n\nexport const clearUserSession = (): void => {\n storage.removeItem(\"SESSION\", \"@session\");\n};\n\nexport const camelCase = (str: string): string => {\n let words = str.trim().split(\" \");\n let text = \"\";\n\n words.forEach(\n (word, index) =>\n (text += `${index === 0 ? \"\" : \" \"}${word[0] ?? \"\".toUpperCase()}${word\n .slice(1)\n .toLowerCase()}`)\n );\n\n return text;\n};\n\nexport const formatMoney = (value: string, withUnit = false): string => {\n const money = new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n minimumFractionDigits: 2,\n }).format(parseFloat(value));\n\n return withUnit ? money : money.replace(\"R$\", \"\");\n};\n\nexport const getExtendedDate = (dateStr: string) => {\n const dateSplit = dateStr.split(\"/\");\n const date: Date = new Date(\n parseInt(dateSplit[2], 10),\n parseInt(dateSplit[1], 10) - 1,\n parseInt(dateSplit[0], 10)\n );\n\n return `${String(date.getDate()).padStart(2, \"0\")} ${months[\n date.getMonth()\n ].initials.toUpperCase()}`;\n};\n\nexport const getDueMonth = (cutDay: number, date: Date): number => {\n const internalDate = new Date(date.getTime());\n if (cutDay >= internalDate.getDate()) {\n internalDate.setDate(cutDay);\n internalDate.setDate(internalDate.getDate() + 11);\n return internalDate.getMonth();\n } else {\n return internalDate.getMonth() + 1;\n }\n};\n\nexport const getStrToDate = (date: string): Date => {\n let split = date.split(\"/\");\n\n return new Date(\n parseInt(split[2], 10),\n parseInt(split[1], 10) - 1,\n parseInt(split[0], 10)\n );\n};\n\nexport const getTypeObj = (\n type: number,\n userStatus: UserStatusType | undefined = undefined\n): InvoiceTypeObj => {\n let title = \"\";\n if (\n userStatus === UserStatusType.IN_DEBT ||\n userStatus === UserStatusType.IN_DEBT_WITH_AGREEMENT\n ) {\n title = \"Fatura pendente!\";\n }\n\n switch (type) {\n case InvoiceType.PENDING:\n return {\n title: title ? title : \"Fatura fechada\",\n buttonLabel: \"Pagar fatura\",\n buttonLabelColor: '#e87e1c',\n textColor: \"#ffc996\",\n valueTextColor: '#ff922d',\n background: `linear-gradient(to right, #e87e1c, #ff922d)`,\n titleTextColor: \"#ffa857\",\n };\n case InvoiceType.CLOSED:\n return {\n title: title ? title : \"Fatura fechada\",\n buttonLabel: \"Pagar fatura\",\n buttonLabelColor: theme.colors.marisaBlack100,\n textColor: theme.colors.marisaBlack100,\n valueTextColor: theme.colors.marisaBlack100,\n background: `linear-gradient(to right, #e87e1c, #ff922d)`,\n titleTextColor: theme.colors.marisaBlack100,\n };\n case InvoiceType.PAID:\n return {\n title: title ? title : \"Fatura fechada\",\n buttonLabel: \"\",\n buttonLabelColor: theme.colors.marisaBlack100,\n textColor: theme.colors.marisaBlack100,\n valueTextColor: theme.colors.marisaBlack100,\n background: `linear-gradient(to right, ${theme.colors.marisaBlack100}, #000)`,\n titleTextColor: theme.colors.marisaBlack100,\n };\n default:\n return {\n title: title ? title : \"Sua fatura atual\",\n buttonLabel: \"Visualizar fatura\",\n buttonLabelColor: theme.colors.mbankSecondary100,\n textColor: theme.colors.marisaPrimary50,\n valueTextColor: theme.colors.mbankSecondary100,\n background: `linear-gradient(to right, ${theme.colors.mbankSecondary100}, ${theme.colors.marisaPrimary50})`,\n titleTextColor: theme.colors.marisaPrimary60,\n };\n }\n};\n\nexport const validateEmail = (email: string): boolean => {\n if (/^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(email)) {\n return true;\n }\n\n return false;\n};\n\nexport const onlyDigits = (str: string): string => {\n return str.replace(/\\D/g, \"\");\n};\n\nexport const onlyNumbers = (str: string): string => {\n return str.replace(/\\D+/g, \"\");\n};\n\nexport const formatDocument = (document: string): string => {\n if (document) {\n let rawDocument = getRawText(document).replace(/\\D/g, \"\");\n const mask =\n rawDocument.length > 11 ? \"**.***.***/****-**\" : \"***.***.***-**\";\n let rawPos = 0;\n let masked = \"\";\n for (let i = 0; i < mask.length; i++) {\n if (!rawDocument[rawPos]) {\n break;\n }\n\n if (mask[i] === \"*\") {\n masked += rawDocument[rawPos];\n rawPos++;\n } else {\n masked += mask[i];\n }\n }\n return masked;\n }\n\n return document;\n};\n\nexport const formatDate = (value: string) => {\n let mask = value.replace(/[^0-9]/g, \"\");\n mask = mask.replace(\"/D/g\", \"\").slice(0, 10);\n\n return `${mask.slice(0, 2)}/${mask.slice(2, 4)}/${mask.slice(4)}`;\n};\n\nexport const hasValueStr = (value: any): boolean => {\n return value !== undefined && String(value).length > 0;\n};\n\nexport const getRawMoney = (value: string): string => {\n return value.replace(\"R$\", \"\").split(\" \").join(\"\");\n};\n\nexport const getUserStatus = (\n user: UserType,\n cardInfo: CardInfoType,\n hasNegotiation: boolean\n): UserStatusType => {\n if (cardInfo.type === InvoiceType.PENDING) {\n return UserStatusType.PENDING;\n } else if (user.cardStatus === CardStatusType.OVERDUE) {\n return hasNegotiation\n ? UserStatusType.IN_DEBT_WITH_AGREEMENT\n : UserStatusType.IN_DEBT;\n }\n\n return UserStatusType.IN_DAY;\n};\n\nexport const validateUrl = (str: string): boolean => {\n var pattern = new RegExp(\n \"^(https?:\\\\/\\\\/)?\" +\n \"((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|\" +\n \"((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))\" +\n \"(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*\" +\n \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" +\n \"(\\\\#[-a-z\\\\d_]*)?$\",\n \"i\"\n );\n\n return !!pattern.test(str);\n};\n\nexport const decodeBarcode = (code: string) => {\n const marisaId = 60347;\n const mult = [9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7];\n\n let sum = 0;\n mult.forEach((value, index) => (sum += parseInt(code[index]) * value));\n\n let digit = (sum * 10) % 11;\n\n if (parseInt(code[code.length - 1]) === digit) {\n return `${marisaId}${code.substring(0, code.length - 1)}`;\n }\n\n return \"\";\n};\n\nexport const getUserStatusMbank = (\n cardStatus: CardStatusType,\n type: number,\n hasNegotiation: boolean\n): UserStatusType => {\n if (type === InvoiceType.PENDING) {\n return UserStatusType.PENDING;\n }\n if (cardStatus === CardStatusType.OVERDUE) {\n return hasNegotiation\n ? UserStatusType.IN_DEBT_WITH_AGREEMENT\n : UserStatusType.IN_DEBT;\n }\n\n return UserStatusType.IN_DAY;\n};\n\nexport const generateGuid = (): string => {\n return nanoid();\n};\n","import axios, { AxiosRequestConfig } from \"axios\";\nimport { defaultBody } from \"../../api\";\n\nconst authApi = axios.create({\n baseURL: process.env.REACT_APP_PSF_AUTH_HOST,\n});\n\nauthApi.interceptors.request.use((config: AxiosRequestConfig) => {\n config.data = {\n ...config.data,\n // ...defaultBody,\n };\n\n return config;\n});\n\nexport default authApi;\n","import { PayloadAuthenticateUser, PayloadNewPasswordDomain, PayloadValidationSendDomain } from '../domain/auth';\n\nexport const marisaNewAcountToNewAcount = (data: MarisaResponseDTO): PayloadNewPasswordDomain => {\n return {\n codeReturn: data.codigoRetorno,\n description: data.descricaoRetorno,\n };\n};\n\nexport const marisaForgotPasswordToForgotPassword = (data: MarisaResponseDTO): PayloadNewPasswordDomain => {\n return {\n codeReturn: data.codigoRetorno,\n description: data.descricaoRetorno,\n };\n};\n\nexport const marisaValidationSendtoValidationSend = (data: MarisaResponseDTO): PayloadValidationSendDomain => {\n return {\n codeReturn: data.codigoRetorno,\n description: data.descricaoRetorno,\n };\n};\n\nexport const marisaAuthToken = (data: AuthTokenResponseDTO): PayloadAuthenticateUser => {\n return {\n codeReturn: data.codigoRetorno,\n token: data.token,\n description: data.descricaoRetorno\n };\n};\n","import axios from \"axios\";\n\nconst positiveValidation = axios.create({\n baseURL: process.env.REACT_APP_PSF_USER_HOST,\n});\n\nexport default positiveValidation;\n","import qs from \"qs\";\nimport { getRawDocument } from \"../../utils\";\nimport { RequestOrigin } from \"../contexts/types\";\nimport { PayloadForgotPasswordDomain } from \"../domain/auth\";\nimport { marisaForgotPasswordToForgotPassword } from \"../mappers/auth\";\nimport positiveValidation from \"../services/positiveValidation\";\n\ninterface ForgotPasswordParams {\n code: string;\n password: string;\n document: string;\n captcha?: string | null;\n token?: string | null;\n origin?: RequestOrigin;\n}\n\nasync function forgotPasswordUseCase({\n code,\n password,\n document,\n captcha = null,\n token = null,\n origin = \"PORTAL_CLIENTE\",\n}: ForgotPasswordParams): Promise {\n const { data } = await positiveValidation.post(\n `/marisa-mobile-services/rest/cartaomarisa/alteracaoSenhaByCpf/esqueci`,\n\n qs.stringify({\n chaveSeguranca: code,\n cpfCliente: getRawDocument(document),\n novaSenha: password,\n origem: origin,\n fluxo: \"ESQUECI_MINHA_SENHA\",\n ...{ captcha },\n }),\n {\n headers: { authorization: `Bearer ${token}` },\n }\n );\n\n return marisaForgotPasswordToForgotPassword(data);\n}\n\nexport default forgotPasswordUseCase;\n","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport {nanoid} from 'nanoid';\nimport { clearUserSession, getUserSession } from '../utils';\nimport { SESSION_EXPIRED } from '../utils/consts';\nimport { DEFAULT_FILIAL } from '../consts';\n\nexport class GlobalVars {\n public static history: any = null;\n}\n\nexport const defaultBody = {\n\tloginUsuario: 'USR_PORTALCLIEN',\n\tipUsuario: '0:0:0:0:0:0:0:1',\n\tfilial: DEFAULT_FILIAL,\n};\n\naxios.interceptors.request.use((config) => {\n if (!config.url?.endsWith('auth/app')) {\n let session = getUserSession();\n if (session && session.token) {\n config.headers.Authorization = session.token;\n config.data.idProcesso = session.sessionId;\n }\n }\n return config;\n});\n\nexport const callApi = (\n params: AxiosRequestConfig,\n onSuccess: (response: AxiosResponse) => void,\n onError: (error: any) => void,\n generateGUID: boolean = true,\n) => {\n if (generateGUID && params.data) {\n\t\tparams.data = { ...params.data, idServico: nanoid() };\n\t}\n\n return axios({\n ...params,\n })\n .then((response) => {\n const errorCodes = [400];\n if (response && response.data && response.data.codigoRetorno && errorCodes.indexOf(response.data.codigoRetorno) > -1) {\n let error = {\n ...response,\n message: response.data.descricaoRetorno,\n status: response.data.codigoRetorno,\n }\n onError(error);\n } else {\n onSuccess(response);\n }\n })\n .catch((error) => {\n const e = error;\n const logoutCodes = [401, 403];\n if (!params.url?.endsWith('auth/app') && error.response && logoutCodes.indexOf(error.response.status) > -1) {\n clearUserSession();\n e.message = SESSION_EXPIRED;\n if (GlobalVars.history) {\n GlobalVars.history.push('/signin');\n }\n } else {\n if (error.response && error.response.data && error.response.data.descricaoRetorno) {\n e.message = error.response.data.descricaoRetorno;\n } else {\n e.message = 'Ocorreu um erro. Tente novamente mais tarde.';\n }\n }\n\n onError(e);\n });\n}\n","export const DEFAULT_FILIAL = '830'","import axios, { AxiosRequestConfig } from \"axios\";\nimport { defaultBody } from \"../../api\";\nimport { getUserSession } from \"../../utils\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_PSF_SERVICES_HOST,\n});\n\napi.interceptors.request.use((config: AxiosRequestConfig) => {\n const session = getUserSession();\n\n config.headers.Authorization = session.token;\n\n config.data = {\n ...config.data,\n ...defaultBody,\n };\n\n return config;\n});\n\nexport default api;\n","import { getUserSession } from '../../utils';\n\nimport api from '../services/api';\n\nexport const getUserInfo = async (): Promise => {\n const session = getUserSession();\n\n if (!session?.document) {\n console.log(\n 'neste caso significa que o usuario não está logado de verá redirecionar para a pagina de login novamente'\n );\n }\n\n try {\n const { data } = await api.post(\n '/psfclientservices/rest/v2/dashboard/searchClient',\n {\n cpfUsuario: session.document,\n modulo: 18,\n rotina: 101,\n service: 'dashboard',\n functionality: 'searchClient',\n search: {\n value: session.document,\n tipo: 'CPF',\n },\n }\n );\n\n return data.objectsReturn.ClientDashboard;\n } catch (err) {\n console.log(err);\n return null;\n // neste caso deverá executar um erro...\n }\n};\n","import qs from \"qs\";\nimport { getRawDocument } from \"../../utils\";\nimport { RequestOrigin } from \"../contexts/types\";\nimport { PayloadNewPasswordDomain } from \"../domain/auth\";\nimport { marisaNewAcountToNewAcount } from \"../mappers/auth\";\nimport positiveValidation from \"../services/positiveValidation\";\nimport { DEFAULT_FILIAL } from \"../../consts\";\n\ninterface NewAccountParams {\n code: string;\n password: string;\n document: string;\n captcha?: string | null;\n token?: string | null;\n origin: RequestOrigin\n}\n\nasync function newAccountUseCase({\n token = null,\n document,\n captcha = null,\n password,\n code,\n origin = 'PORTAL_CLIENTE'\n}: NewAccountParams): Promise {\n const config = {\n headers: { Authorization: `Bearer ${token}` },\n };\n\n let params = qs.stringify({\n chaveSeguranca: code,\n cpfCliente: getRawDocument(document),\n senha: password,\n origem: origin,\n filial: DEFAULT_FILIAL,\n fluxo: \"CADASTRAR\",\n flagReceberNovidades: \"S\",\n loginUsuario: \"USR_PORTALCLIEN\",\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n ...{ captcha },\n });\n\n const { data } = await positiveValidation.post(\n `/marisa-mobile-services/rest/cartaomarisa/usuarios/registrarByCpf`,\n params,\n config\n );\n\n return marisaNewAcountToNewAcount(data);\n}\n\nexport default newAccountUseCase;\n","import axios, { AxiosRequestConfig } from \"axios\";\nimport { defaultBody } from \"../../api\";\n\nconst authValidation = axios.create({\n baseURL: process.env.REACT_APP_PSF_USER_HOST,\n});\n\nauthValidation.interceptors.request.use((config: AxiosRequestConfig) => {\n config.data = {\n ...config.data,\n ...defaultBody,\n };\n\n return config;\n});\n\nexport default authValidation;\n","import { getRawText } from '../../utils';\nimport authValidation from '../services/authValidation';\n\nasync function positiveConsultUseCase(document: string): Promise {\n const documentRaw = getRawText(document);\n\n const { data } = await authValidation.get(\n `/marisa-mobile-services/rest/cartaomarisa/consultaIdentificacaoPositiva/${documentRaw}/0`,\n );\n\n return data;\n}\n\nexport default positiveConsultUseCase;\n","import qs from 'qs';\nimport { PayloadValidationSendDomain } from '../domain/auth';\nimport { marisaValidationSendtoValidationSend } from '../mappers/auth';\nimport positiveValidation from '../services/positiveValidation';\n\nasync function positiveVerifyUseCase(idConsult: string, answers: string): Promise {\n const { data } = await positiveValidation.post(\n `marisa-mobile-services/rest/cartaomarisa/validacaoIdentificacaoPositiva`,\n qs.stringify({ identificadorTransacaoConsulta: idConsult, respostas: answers }),\n {\n headers: {\n 'content-type': 'application/x-www-form-urlencoded;charset=utf-8',\n },\n },\n );\n\n return marisaValidationSendtoValidationSend(data);\n}\n\nexport default positiveVerifyUseCase;\n","import styled from \"styled-components\";\nimport ReactModal from \"react-modal\";\n\nexport const ModalContainer = styled(ReactModal)`\n padding: 20px;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n\n > header {\n position: relative;\n margin-bottom: 2.15rem;\n width: 100%;\n }\n\n h4 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n text-align: center;\n\n margin-bottom: 0;\n }\n\n p {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n text-align: center;\n }\n`;\n\nexport const OverlayContainer = styled.div`\n background-color: rgba(0, 0, 0, 0) !important;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.3s ease-in-out;\n\n z-index: 99;\n\n &.ReactModal__Overlay--after-open {\n background-color: rgba(0, 0, 0, 0.5) !important;\n }\n\n &.ReactModal__Overlay--before-close {\n background-color: rgba(0, 0, 0, 0) !important;\n }\n`;\n\nexport const ContentContainer = styled.div`\n background: #fff;\n border-radius: 6px;\n box-shadow: 0 10px 20px rgba(48, 48, 45, 0.5);\n\n padding: 2.5rem;\n position: relative;\n\n opacity: 0;\n transform: translateY(40px);\n transition: transform 0.3s ease-in-out, opacity 0.4s ease-in-out;\n\n max-width: 30vw;\n\n z-index: 999;\n\n &.ReactModal__Content--after-open {\n opacity: 1;\n transform: translateY(0);\n }\n\n &.ReactModal__Content--before-close {\n opacity: 0;\n transform: translateY(40px);\n }\n`;\n\nexport const IconContainer = styled.div`\n background: ${({ theme }) => theme.colors.mbankPrimary40};\n border-radius: 60px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 120px;\n width: 120px;\n margin-bottom: 2rem;\n`;\n\nexport const EmptyIconContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n\n margin-bottom: 2rem;\n`;\n\nexport const CloseButton = styled.button`\n background: transparent;\n border: 0;\n\n position: absolute;\n top: -1.25rem;\n right: -1.25rem;\n`;\n","import React, { useMemo } from \"react\";\nimport { Props as ReactModalProps } from \"react-modal\";\nimport IconCheck from \"../../../assets/images/check-modal-icon.svg\";\nimport IconClose from \"../../../assets/images/close-modal-icon.svg\";\nimport IconWarning from \"../../../assets/images/warning-modal-icon.svg\";\nimport IconEmpty from \"../../../assets/images/sadface-icon.svg\";\nimport {\n CloseButton,\n ContentContainer,\n IconContainer,\n EmptyIconContainer,\n ModalContainer,\n OverlayContainer,\n} from \"./styles\";\n\ninterface DialogModalProps extends ReactModalProps {\n type?: \"success\" | \"warning\" | \"empty\" | \"info\"; // Vai ser necessário refatorar essa parte, o tipo info, não existe, precisa refatorar o web depois.\n title: string;\n message: string;\n}\n\nconst DialogModal: React.FC = ({\n type,\n title,\n message,\n onRequestClose,\n ...rest\n}) => {\n const Icon = useMemo(() => {\n switch (type) {\n case \"success\":\n return IconCheck;\n case \"empty\":\n return IconEmpty;\n case \"warning\":\n return IconWarning;\n default:\n return null;\n }\n }, [type]);\n\n return (\n (\n {children}\n )}\n contentElement={(props, children) => (\n {children}\n )}\n >\n
\n \n \"Fechar\n \n
\n\n {type === 'empty' && (\n \n \"Icone\"\n \n )}\n\n {Icon !== null && type !== 'empty' && (\n \n \"Icone\"\n \n )}\n\n

{title}

\n

{message}

\n \n );\n};\n\nexport default DialogModal;\n","import React, { createContext, useContext, useCallback, useState } from \"react\";\nimport DialogModal from \"../components/DialogModal\";\n\ninterface DialogContextData {\n openDialog: (params: DialogOptions) => void;\n closeDialog: () => void;\n}\n\ninterface DialogOptions {\n type: 'success' | 'warning' | 'empty' | \"info\";\n title: string;\n message: string;\n onClose?: () => Promise | void;\n}\n\n\nexport const DialogContext = createContext({} as DialogContextData);\n\nexport const DialogProvider: React.FC = ({ children }) => {\n const [isOpen, setIsOpen] = useState(false);\n const [dialogOptions, setDialogOptions] = useState({} as DialogOptions);\n\n const openDialog = useCallback(\n ({ type, title, message, onClose }: DialogOptions) => {\n setDialogOptions({\n type,\n title,\n message,\n onClose,\n });\n setIsOpen(true);\n },\n []\n );\n\n const closeDialog = () => {\n setIsOpen(false);\n if (dialogOptions?.onClose) dialogOptions?.onClose();\n };\n\n return (\n \n {children}\n\n \n \n );\n};\n\nexport const useDialog = () => {\n const context = useContext(DialogContext);\n\n if (!context) {\n throw new Error(\"Dialog Context was not found.\");\n }\n\n return context;\n};\n","import axios from \"axios\";\n\nconst basicApi = axios.create({\n baseURL: process.env.REACT_APP_PSF_SERVICES_HOST,\n});\n\nexport default basicApi;\n","import { DEFAULT_FILIAL } from \"../../consts\";\nimport { generateGuid, getRawCellphone, getRawDocument } from \"../../utils\";\nimport { RequestOrigin } from \"../contexts/types\";\nimport basicApi from \"../services/basicApi\";\n\ninterface SendCodeParams {\n document: string;\n method: \"sms\" | \"email\";\n email: string | undefined;\n cellphone: string | undefined;\n token: string;\n flow: \"signup\" | \"forgot\";\n origin: RequestOrigin;\n}\n\nasync function sendCode({\n cellphone,\n token,\n method,\n document,\n email,\n flow,\n origin = \"PORTAL_CLIENTE\"\n}: SendCodeParams): Promise {\n const number = getRawCellphone(cellphone);\n\n const config = {\n headers: { Authorization: `Bearer ${token}` },\n };\n\n const ddd = method === \"sms\" ? number && number.substring(0, 2) : null;\n const celular = method === \"sms\" ? number && number.substring(2) : null;\n\n const fluxo = flow === \"signup\" ? \"CADASTRO\" : \"ESQUECI_MINHA_SENHA\";\n\n const { data } = await basicApi.post(\n `/trust/api/tokens/generateTokenGeneral`,\n {\n cpfUsuario: \"11111111111\",\n loginUsuario: \"USR_PORTALCLIEN\",\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n service: \"propostacartao\",\n functionality: \"solicitar\",\n filial: DEFAULT_FILIAL,\n cliCpf: getRawDocument(document),\n origem: origin,\n fluxo,\n evento: method.toUpperCase(),\n idProcesso: generateGuid(),\n idServico: generateGuid(),\n ddd,\n celular,\n email: method === \"email\" ? email : null,\n },\n config\n );\n\n return data;\n}\n\nexport default sendCode;\n","import format from \"date-fns/format\";\nimport { DEFAULT_FILIAL } from \"../../consts\";\nimport { getRawDocument } from \"../../utils\";\nimport { PayloadAuthenticateUser } from \"../domain/auth\";\nimport { marisaAuthToken } from \"../mappers/auth\";\nimport auth from \"../services/auth\";\nimport parseISO from \"date-fns/parseISO\";\n\ntype AuthenticateUserUseCaseParams = {\n document: string;\n birthDate: string;\n idProcesso: string;\n idServico: string;\n captcha?: string | null;\n serviceToken?: string | null;\n origin: \"TOTEM\" | \"PORTAL_CLIENTE\";\n};\n\nasync function authenticateUserUseCase({\n document = \"\",\n birthDate = \"\",\n idProcesso = \"\",\n idServico = \"\",\n captcha = \"\",\n serviceToken = \"\",\n origin = \"PORTAL_CLIENTE\",\n}: AuthenticateUserUseCaseParams): Promise {\n const { data } = await auth.post(\n `/security/api/auth/app/nascto`,\n {\n cpfUsuario: getRawDocument(document),\n dataNascimento: format(parseISO(birthDate), \"dd/MM/yyyy\"),\n service: \"auth\",\n functionality: \"app/nascto\",\n idProcesso,\n filial: DEFAULT_FILIAL,\n loginUsuario: \"USR_PORTALCLIEN\",\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n idServico,\n origem: origin,\n fluxo: \"IDENTIFICACAO\",\n ...{ captcha },\n },\n {\n headers: {\n authorization: serviceToken,\n },\n }\n );\n\n return marisaAuthToken(data);\n}\n\nexport default authenticateUserUseCase;\n","import { getRawText } from '../../utils';\nimport basicApi from '../services/basicApi';\n\nasync function getClientDataUseCase(document: string, token: string): Promise {\n const documentRaw = getRawText(document);\n\n const config = {\n headers: { Authorization: `Bearer ${token}` }\n };\n\n const { data } = await basicApi.get(\n `psfclientservices/rest/v3/dashboard/client-data/${documentRaw}`, config,\n );\n\n return data;\n}\n\nexport default getClientDataUseCase;\n","import { DEFAULT_FILIAL } from \"../../consts\";\nimport { generateGuid, getRawDocument } from \"../../utils\";\nimport basicApi from \"../services/basicApi\";\n\nasync function verifyCodeUseCase(\n document: string,\n code: string,\n token?: string,\n method: string,\n origin?: \"signup\" | \"forgot\"\n): Promise<{ chaveSeguranca: string; codigoRetorno: string }> {\n const config = {\n headers: { Authorization: `Bearer ${token}` },\n };\n const fluxo = origin === \"signup\" ? \"CADASTRO\" : \"ESQUECI_MINHA_SENHA\";\n\n const { data } = await basicApi.post<{\n chaveSeguranca: string;\n codigoRetorno: string;\n }>(\n `/trust/api/tokens/validateTokenGeneral`,\n {\n cpfUsuario: \"11111111111\",\n loginUsuario: \"USR_PORTALCLIEN\",\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n service: \"tokens\",\n functionality: \"validateTokenGeneral\",\n filial: DEFAULT_FILIAL,\n cliCpf: getRawDocument(document),\n origem: \"PORTAL_CLIENTE\",\n fluxo,\n idProcesso: generateGuid(),\n idServico: generateGuid(),\n chaveSeguranca: code,\n evento: method.toUpperCase(),\n },\n config\n );\n\n console.log(data);\n\n return data;\n}\n\nexport default verifyCodeUseCase;\n","import { DEFAULT_FILIAL } from \"../../consts\";\nimport { getRawText } from \"../../utils\";\nimport { RequestOrigin } from \"../contexts/types\";\nimport basicApi from \"../services/basicApi\";\n\ninterface GetContactInfoParams {\n document: string;\n token: string;\n origin: RequestOrigin;\n}\n\nexport const getContactInfo = async ({\n document,\n token,\n origin = \"PORTAL_CLIENTE\",\n}: GetContactInfoParams): Promise => {\n if (!token) {\n throw new Error(\"Missing Token\");\n }\n\n const config = {\n headers: { Authorization: `Bearer ${token}` },\n };\n const documentRaw = getRawText(document);\n\n try {\n const { data } = await basicApi.post(\n \"/psfclientservices/rest/v2/dashboard/searchClient\",\n {\n cpfUsuario: documentRaw,\n loginUsuario: \"USR_PORTALCLIEN\",\n filial: DEFAULT_FILIAL,\n modulo: 18,\n rotina: 101,\n service: \"dashboard\",\n functionality: \"searchClient\",\n search: {\n value: documentRaw,\n tipo: \"CPF\",\n },\n origin: origin,\n },\n config\n );\n\n return data.objectsReturn.ClientDashboard;\n } catch (err) {\n return null;\n // neste caso deverá executar um erro...\n }\n};\n","import { addHours } from \"date-fns\";\nimport jwt from \"jsonwebtoken\";\n\nimport HML_KEY from \"./keys/TOTEM_MR_HML.key.pem\";\nimport PROD_KEY from \"./keys/TOTEM_MR.key.pem\";\n\nconst isNotProduction =\n process.env.NODE_ENV === \"development\" || process.env.DEBUG_PROD === \"true\";\nconst SVC_USER = process.env.REACT_APP_TOTEM_SVC_USER;\nconst SVC_TENANT_ID = process.env.REACT_APP_TOTEM_SVC_TENANT_ID;\n\nexport function getKeyPerEnv() {\n if (isNotProduction) return HML_KEY;\n return PROD_KEY;\n}\n\nexport function generateAccountToken() {\n const secret = getKeyPerEnv();\n const now = new Date();\n const currentTimestamp = now.getTime();\n const expiration = addHours(now, 1).getTime();\n\n const payload = {\n sub: SVC_USER,\n aud: \"https://imar.cldmar.com.br\",\n iss: `${SVC_USER}@${SVC_TENANT_ID}.imar.cldmar.com.br`,\n scope: \"*\",\n exp: expiration,\n iat: currentTimestamp,\n };\n\n const token = jwt.sign(payload, secret, {\n algorithm: \"RS256\",\n });\n\n return token;\n}\n","import { nanoid } from \"nanoid\";\nimport authApi from \"../services/auth\";\nimport { DEFAULT_FILIAL } from \"../../consts\";\n\ninterface GetServiceTokenParams {\n document: string;\n serviceAccountToken: string;\n sessionId: string;\n}\n\nexport async function getServiceTokenUseCase({\n document,\n serviceAccountToken,\n sessionId,\n}: GetServiceTokenParams) {\n const { data } = await authApi.post(\"/security/api/auth\", {\n cpfUsuario: document,\n service: \"auth\",\n functionality: \"\",\n idProcesso: sessionId,\n idServico: nanoid(),\n loginUsuario: process.env.REACT_APP_TOTEM_SVC_USER,\n password: process.env.REACT_APP_TOTEM_SVC_PASSWORD,\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n filial: DEFAULT_FILIAL,\n origem: \"TOTEM\",\n fluxo: \"IDENTIFICACAO\",\n serviceAccountToken,\n });\n\n return data;\n}\n","import { nanoid } from \"nanoid\";\nimport authApi from \"../services/auth\";\nimport { DEFAULT_FILIAL } from \"../../consts\";\nimport format from \"date-fns/format\";\nimport parseISO from \"date-fns/parseISO\";\n\nexport async function getTotemTokenUseCase({\n document,\n birthDate,\n sessionId,\n token,\n}: any) {\n const { data } = await authApi.post(\n \"/security/api/auth/app/nascto\",\n {\n cpfUsuario: document,\n dataNascimento: format(parseISO(birthDate), \"dd/MM/yyyy\"),\n service: \"auth\",\n functionality: \"auth/login\",\n idProcesso: sessionId,\n idServico: nanoid(),\n loginUsuario: \"USR_PORTALCLIEN\",\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n filial: DEFAULT_FILIAL,\n origem: \"TOTEM\",\n fluxo: \"IDENTIFICACAO\",\n },\n {\n headers: {\n authorization: `${token}`,\n },\n }\n );\n\n return data;\n}\n","import { nanoid } from \"nanoid\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { storage } from \"../..\";\nimport { getRawText, getUserSession } from \"../../utils\";\nimport { UserSession } from \"../../utils/types\";\nimport { IdentificationQuestions } from \"../domain/auth\";\nimport authApi from \"../services/auth\";\nimport forgotPasswordUseCase from \"../useCases/forgotPasswordUseCase\";\nimport { getUserInfo } from \"../useCases/getUserInfo\";\nimport newAccountUseCase from \"../useCases/newAccountUseCase\";\nimport positiveConsultUseCase from \"../useCases/positiveConsultUseCase\";\nimport positiveVerifyUseCase from \"../useCases/positiveVerifyUseCase\";\nimport { useDialog } from \"./DialogContext\";\nimport { AllHtmlEntities } from \"html-entities\";\nimport sendCode from \"../useCases/sendVerificationCodeUseCase\";\nimport authTokenUserUseCase from \"../useCases/getAuthTokenUseCase\";\nimport getClientDataUseCase from \"../useCases/getClientDataUseCase\";\nimport verifyCodeUseCase from \"../useCases/verifyCodeUseCase\";\nimport { getContactInfo } from \"../useCases/getContactInfo\";\nimport { generateAccountToken } from \"../services/generateAccountToken\";\nimport { getServiceTokenUseCase } from \"../useCases/getServiceTokenUseCase\";\nimport { getTotemTokenUseCase } from \"../useCases/getTotemTokenUseCase\";\nimport {\n CodeValidation,\n GetAuthTokenParams,\n RequestOrigin,\n SendCode,\n SignInParams,\n UpdatePasswordParams,\n} from \"./types\";\nimport { DEFAULT_FILIAL } from \"../../consts\";\nimport format from \"date-fns/format\";\nimport parseISO from \"date-fns/parseISO\";\nexport interface Answers {\n questions: { [key: string]: string }[];\n}\n\nexport type ClientData = {\n celular: string;\n email: string;\n token: string;\n};\n\ninterface AuthContextData {\n session: UserSession;\n isAuthenticated: boolean;\n signIn: (params: SignInParams) => Promise;\n signInWithServiceToken: (params: SignInParams) => Promise;\n validationUser: (\n document: string,\n callback: () => void,\n errorCallback?: () => void,\n captchaToken?: string | undefined | null\n ) => Promise;\n idConsult: string | undefined;\n questionValidate: IdentificationQuestions[] | undefined;\n loadingValidate: boolean;\n loadingPositiveVerify: boolean;\n loadingChangePassword: boolean;\n documentValidation: string;\n captchaToken: string | undefined | null;\n sendValidationCode: (values: SendCode) => void;\n setDocumentValidation: (value: string) => void;\n validateCode: (values: CodeValidation) => void;\n setQuestionValidate: (values: IdentificationQuestions[]) => void;\n positiveVerify: (\n answers: Answers,\n idConsult: string,\n callBack: (data: any) => void,\n goBack: () => void,\n errorCallback?: () => void\n ) => Promise;\n getAuthToken: (params: GetAuthTokenParams) => Promise;\n getClientData: (\n document: string,\n token: string,\n callBack: (data: ClientData) => void,\n goBack?: () => void,\n errorCallback?: () => void\n ) => Promise;\n definePassword: (params: UpdatePasswordParams) => Promise;\n forgotPassword: (params: UpdatePasswordParams) => Promise;\n logout: () => void;\n getServiceToken: () => Promise<{ token: string }>;\n setRequestOrigin: (params: RequestOrigin) => void;\n securityKeyValidated: string | null;\n}\n\nexport const AuthContext = createContext({} as AuthContextData);\n\nexport const AuthProvider: React.FC = ({ children }) => {\n const { openDialog } = useDialog();\n const [_, setUser] = useState(null);\n const [session, setSession] = useState({} as UserSession);\n const [documentValidation, setDocumentValidation] = useState(\"\");\n const [captchaToken, setCaptchaToken] = useState();\n const [requestOrigin, setRequestOrigin] =\n useState(\"PORTAL_CLIENTE\");\n const [loadingSession, setLoadingSession] = useState(true);\n const [loadingValidate, setLoadingValidate] = useState(false);\n const [loadingPositiveVerify, setLoadingPositiveVerify] =\n useState(false);\n const [loadingChangePassword, setLoadingChangePassword] =\n useState(false);\n const [idConsult, setIdConsult] = useState();\n const [questionValidate, setQuestionValidate] = useState<\n IdentificationQuestions[] | undefined\n >();\n const [securityKeyValidated, setSecurityKeyValidated] = useState<\n string | null\n >(null);\n\n const isAuthenticated = !!session.token;\n\n const signIn = async ({\n document,\n birthDate,\n callback,\n captcha,\n }: SignInParams) => {\n try {\n const sessionId = nanoid();\n const documentRaw = getRawText(\n !!documentValidation ? documentValidation : document\n );\n\n const { data } = await authApi.post(\"/security/api/auth/app/nascto\", {\n cpfUsuario: documentRaw,\n dataNascimento: format(parseISO(birthDate), \"dd/MM/yyyy\"),\n ...{ captcha },\n service: \"api\",\n functionality: \"auth/login\",\n idProcesso: sessionId,\n idServico: nanoid(),\n loginUsuario: \"USR_PORTALCLIEN\",\n ipUsuario: \"0:0:0:0:0:0:0:1\",\n filial: DEFAULT_FILIAL,\n origem: \"PORTAL_CLIENTE\",\n fluxo: \"IDENTIFICACAO\",\n });\n\n saveUserSession(documentRaw, data?.token, sessionId);\n await getUserInfo();\n callback();\n } catch (e) {\n const entities = new AllHtmlEntities();\n\n throw new Error(\n entities.decode(\n (e as any)?.response?.data?.descricaoRetorno ||\n \"Ocorreu um erro ao realizar o acesso, tente novamente.\"\n )\n );\n }\n };\n\n const saveUserSession = useCallback(\n (document: string, token: string, sessionId: string) => {\n const userSession: UserSession = {\n token: `Bearer ${token}`,\n document,\n sessionId,\n };\n storage.setItem(\"SESSION\", \"@session\", JSON.stringify(userSession));\n setSession(userSession);\n },\n []\n );\n\n // This service token is used only in Totem\n // This is created with a token denerated locally (generateAccountToken)\n const getServiceToken = useCallback(async () => {\n const sessionId = nanoid();\n const serviceAccountToken = (await generateAccountToken()) as string;\n const documentRaw = getRawText(documentValidation);\n const serviceTokenResponse = await getServiceTokenUseCase({\n document: documentRaw,\n serviceAccountToken,\n sessionId,\n });\n\n return serviceTokenResponse;\n }, [documentValidation]);\n\n // Used in Totem\n const signInWithServiceToken = async ({\n document,\n birthDate,\n callback,\n }: SignInParams) => {\n try {\n const sessionId = nanoid();\n const serviceAccountToken = (await generateAccountToken()) as string;\n const documentRaw = getRawText(\n !!documentValidation ? documentValidation : document\n );\n const serviceTokenResponse = await getServiceTokenUseCase({\n document: documentRaw,\n serviceAccountToken,\n sessionId,\n });\n const authResponse = await getTotemTokenUseCase({\n document: documentRaw,\n birthDate,\n sessionId,\n token: serviceTokenResponse?.token,\n });\n\n saveUserSession(documentRaw, authResponse?.token, sessionId);\n\n storage.setItem(\n \"SESSION\",\n \"@service_token\",\n JSON.stringify(`Bearer ${serviceTokenResponse?.token}`)\n );\n\n await getUserInfo();\n\n callback();\n } catch (e) {\n const entities = new AllHtmlEntities();\n\n throw new Error(\n entities.decode(\n (e as any)?.response?.data?.descricaoRetorno ||\n \"Ocorreu um erro ao realizar o acesso, tente novamente.\"\n )\n );\n }\n };\n\n const validationUser = useCallback(\n async (\n document: string,\n callback: () => void,\n errorCallback?: () => void,\n captcha?: string | null\n ) => {\n setLoadingValidate(true);\n try {\n let result = await positiveConsultUseCase(document);\n setDocumentValidation(document);\n\n if (result.identificadorTransacaoConsulta) {\n setIdConsult(result.identificadorTransacaoConsulta);\n captcha && setCaptchaToken(captcha);\n\n const allQuestions: IdentificationQuestions[] =\n result.perguntasIdentificacaoPositiva?.map((item) => {\n return {\n codeQuestion: item.codigoPergunta,\n question: item.descricaoPergunta.trim(),\n descriptionReturn: \"\",\n };\n }) || [];\n\n setQuestionValidate(allQuestions);\n callback();\n } else {\n setDocumentValidation(\"\");\n const entities = new AllHtmlEntities();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: entities.decode(result.descricaoRetorno),\n });\n\n errorCallback && errorCallback();\n }\n } catch (e) {\n setDocumentValidation(\"\");\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n });\n\n errorCallback && errorCallback();\n } finally {\n setLoadingValidate(false);\n }\n },\n [captchaToken]\n );\n\n const positiveVerify = useCallback(\n async (\n answers: Answers,\n idTransation: string,\n callBack: (data: any) => void,\n goBack?: () => void,\n errorCallback?: () => void\n ) => {\n let answerStr = \"\";\n let birthDate = Object.values(answers.questions[0])[0];\n\n answers.questions.forEach((item, index) => {\n answerStr += `${Object.keys(item)[0]}:${Object.values(item)[0]}${\n index + 1 !== answers.questions.length ? \";\" : \"\"\n }`;\n });\n\n setLoadingPositiveVerify(true);\n try {\n const result = await positiveVerifyUseCase(idTransation, answerStr);\n\n if ([200, 201].includes(result.codeReturn)) {\n callBack(birthDate);\n return;\n }\n\n setDocumentValidation(\"\");\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: result.description,\n });\n\n goBack && goBack();\n errorCallback && errorCallback();\n } catch (e) {\n setDocumentValidation(\"\");\n goBack && goBack();\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n });\n } finally {\n setLoadingPositiveVerify(false);\n }\n },\n []\n );\n\n const getAuthToken = useCallback(\n async (params: GetAuthTokenParams) => {\n setLoadingValidate(true);\n\n setDocumentValidation(params.document);\n let idProcesso = nanoid();\n let idServico = nanoid();\n\n try {\n const result = await authTokenUserUseCase({\n document: params.document,\n birthDate: params.birthDate,\n idProcesso,\n idServico,\n captcha: params.captcha,\n origin: requestOrigin,\n serviceToken: params.serviceToken,\n });\n\n if ([200, 201].includes(result.codeReturn)) {\n params.callBack(params.document, result.token);\n return;\n }\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: result.description,\n });\n\n params.goBack && params.goBack();\n params.errorCallback && params.errorCallback();\n } catch (e) {\n setDocumentValidation(\"\");\n params.goBack && params.goBack();\n params.errorCallback && params.errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n });\n } finally {\n setLoadingValidate(false);\n setLoadingPositiveVerify(false);\n }\n },\n [requestOrigin]\n );\n\n const getClientData = useCallback(\n async (\n document: string,\n token: string,\n callBack: (data: ClientData) => void,\n goBack?: () => void,\n errorCallback?: () => void\n ) => {\n try {\n setLoadingValidate(true);\n\n const result = await getClientDataUseCase(document, token);\n\n if ([200, 201].includes(result.codigoRetorno)) {\n callBack({\n celular: result.objectsReturn.data.celular,\n email: result.objectsReturn.data.email,\n token,\n });\n return;\n }\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: result.descricaoRetorno,\n });\n\n goBack && goBack();\n errorCallback && errorCallback();\n } catch (e) {\n setDocumentValidation(\"\");\n goBack && goBack();\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n });\n } finally {\n setLoadingPositiveVerify(false);\n setLoadingValidate(false);\n }\n },\n []\n );\n\n const verifyAuthentication = useCallback(async () => {\n setLoadingSession(true);\n const userSession = getUserSession();\n const user = await getUserInfo();\n setUser(user);\n setSession(userSession);\n setLoadingSession(false);\n }, []);\n\n const definePassword = useCallback(\n async ({\n password,\n code,\n document,\n token,\n callback,\n captcha,\n errorCallback,\n }: UpdatePasswordParams) => {\n setLoadingChangePassword(true);\n try {\n if (code) {\n let result = await newAccountUseCase({\n code,\n password,\n document,\n captcha,\n token,\n origin: requestOrigin,\n });\n\n if ([200, 201].includes(result.codeReturn)) {\n resetValidationValues();\n callback();\n return;\n }\n resetValidationValues();\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: result.description,\n });\n }\n } catch (e) {\n resetValidationValues();\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n });\n } finally {\n setLoadingChangePassword(false);\n }\n },\n [idConsult, documentValidation, captchaToken, requestOrigin]\n );\n\n const resetValidationValues = useCallback(() => {\n setCaptchaToken(null);\n setDocumentValidation(\"\");\n setSecurityKeyValidated(\"\");\n }, []);\n\n const forgotPassword = useCallback(\n async ({\n password,\n code,\n document,\n token,\n callback,\n captcha,\n errorCallback,\n }: UpdatePasswordParams) => {\n setLoadingChangePassword(true);\n try {\n if (code) {\n let result = await forgotPasswordUseCase({\n code,\n password,\n document,\n captcha,\n token,\n origin: requestOrigin,\n });\n\n if ([200, 201].includes(result.codeReturn)) {\n resetValidationValues();\n callback();\n return;\n }\n resetValidationValues();\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: result.description,\n });\n }\n } catch (e) {\n resetValidationValues();\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n });\n } finally {\n setLoadingChangePassword(false);\n }\n },\n [idConsult, documentValidation, captchaToken, requestOrigin]\n );\n\n const sendValidationCode = useCallback(\n async (params: SendCode) => {\n try {\n setLoadingValidate(true);\n getContactInfo({\n document: params.document,\n token: params.token,\n origin: requestOrigin,\n }).then(async (response) => {\n let sent = await sendCode({\n document: params.document,\n method: params.method,\n email: response?.email,\n cellphone: response?.celular,\n token: params.token,\n flow: params.flow,\n origin: requestOrigin,\n });\n\n if (sent) {\n params.callback({\n sent,\n sendTo: params.method,\n token: params.token,\n flow: params.flow,\n });\n return;\n }\n });\n\n params.errorCallback && params.errorCallback();\n } catch (e) {\n params.errorCallback && params.errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro, tente novamente.\",\n });\n } finally {\n setLoadingChangePassword(false);\n setLoadingValidate(false);\n }\n },\n [idConsult, documentValidation, captchaToken, requestOrigin]\n );\n\n const validateCode = useCallback(\n async ({\n document,\n code,\n token,\n method,\n callback,\n flow,\n errorCallback,\n }: CodeValidation) => {\n try {\n setLoadingValidate(true);\n\n let verified = await verifyCodeUseCase(\n document,\n code,\n token,\n method,\n flow\n );\n\n if (verified.chaveSeguranca === \"Validado\") {\n setSecurityKeyValidated(code);\n callback({\n isValid: true,\n error: false,\n code,\n document,\n flow,\n token,\n });\n return;\n }\n\n errorCallback && errorCallback();\n } catch (e) {\n errorCallback && errorCallback();\n\n openDialog({\n type: \"warning\",\n title: \"Ops!\",\n message: \"Ocorreu um erro, tente novamente.\",\n });\n } finally {\n setLoadingChangePassword(false);\n setLoadingValidate(false);\n }\n },\n [idConsult, documentValidation, captchaToken]\n );\n\n const logout = useCallback(() => {\n setUser(null);\n setSession({} as UserSession);\n }, []);\n\n useEffect(() => {\n verifyAuthentication();\n }, []);\n\n if (loadingSession) {\n return null;\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAuth = (): AuthContextData => {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"AuthContext was not found.\");\n }\n\n return context;\n};\n","import { Moment } from \"moment\";\n\nexport enum NegotiationTypes {\n SEARCH = '@negotiation/SEARCH',\n SEARCH_INSTALLMENTS = '@negotiation/SEARCH_INSTALLMENTS',\n SET_INSTALLMENT = '@negotiation/SET_INSTALLMENT',\n NEGOCIATE = '@negotiation/NEGOCIATE',\n SEARCH_NEGOTIATION = '@negotiation/SEARCH_NEGOTIATION',\n SEND_EMAIL = '@negotiation/SEND_EMAIL',\n CLEAR_OBSERVATION = '@negotiation/CLEAR_OBSERVATION',\n SET_DATE = '@negotiation/SET_DATE',\n}\n\n\nexport interface NegotiationState {\n readonly debtValue: number;\n readonly date: Moment | undefined;\n readonly installmentOffer: InstallmentOffer;\n readonly installmentsOffer: InstallmentOffer[];\n readonly idTax: string;\n readonly hasNegotiation: boolean;\n readonly installments: Installment[];\n readonly broken: boolean;\n readonly observation: string;\n}\n\nexport interface InstallmentOffer {\n quantity: number;\n value: number;\n interestRate: number;\n valueDiscount: number;\n valueTotal: number;\n policyCode: number;\n}\n\nexport interface InstallmentAPI {\n qtdParcelas: number;\n vrParcela: number;\n txJuros: number;\n vrDescontoConcedido: number;\n vrTotalAcordo: number;\n codPolitica: number;\n}\n\nexport interface InstallmentSearchAPI {\n numParcela: number;\n valorParcela: number;\n valorPagamento: number;\n dataVencimento: string;\n dataPagamento: string;\n linhaDigitavel: string;\n situacaoParcela: 'P' | 'D' | 'Q';\n dataVencimentoLimite: string;\n descricaoPlano: string;\n}\n\nexport interface Installment {\n parcelNumber: number;\n value: number;\n paymentValue: number;\n dueDate: Moment;\n paymentDate: Moment | undefined;\n barcode: string;\n situation: 'P' | 'D' | 'Q';\n dueDateLimit: Moment;\n next: boolean;\n}","import styled from 'styled-components';\nimport ReactModal from 'react-modal';\n\nexport const ModalContainer = styled(ReactModal)`\n display: flex;\n flex-direction: column;\n align-items: center;\n\n > header {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n position: relative;\n\n margin-bottom: 2.15rem;\n width: 100%;\n\n h3 {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-size: 2rem;\n font-weight: 400;\n line-height: 2.5rem;\n\n margin-bottom: 0;\n margin-right: 2rem;\n }\n }\n`;\n\nexport const OverlayContainer = styled.div`\n background-color: rgba(0, 0, 0, 0) !important;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.3s ease-in-out;\n\n z-index: 99;\n\n &.ReactModal__Overlay--after-open {\n background-color: rgba(0, 0, 0, 0.5) !important;\n }\n\n &.ReactModal__Overlay--before-close {\n background-color: rgba(0, 0, 0, 0) !important;\n }\n`;\n\nexport const ContentContainer = styled.div`\n background: #FFF;\n border-radius: 6px;\n box-shadow: 0 10px 20px rgba(48, 48, 45, 0.5);\n\n padding: 2.5rem;\n position: relative;\n\n opacity: 0;\n transform: translateY(40px);\n transition: transform 0.3s ease-in-out, opacity 0.4s ease-in-out;\n\n z-index: 999;\n\n &.ReactModal__Content--after-open {\n opacity: 1;\n transform: translateY(0);\n }\n\n &.ReactModal__Content--before-close {\n opacity: 0;\n transform: translateY(40px);\n }\n`;\n\nexport const CloseButton = styled.button`\n background: transparent;\n border: 0;\n\n position: absolute;\n top: -0.625rem;\n right: -0.625rem;\n`;\n","import React from \"react\";\nimport { Props as ReactModalProps } from \"react-modal\";\n\nimport IconClose from \"../../../assets/images/close-modal-icon.svg\";\n\nimport {\n ModalContainer,\n OverlayContainer,\n ContentContainer,\n CloseButton,\n} from \"./styles\";\n\ninterface ModalProps extends ReactModalProps {\n title?: string;\n canClose: boolean;\n}\n\nconst Modal: React.FC = ({\n title,\n canClose,\n children,\n ...rest\n}) => {\n const { onRequestClose } = rest;\n\n return (\n (\n {children}\n )}\n contentElement={(props, children) => (\n {children}\n )}\n >\n
\n {title &&

{title}

}\n\n {canClose && (\n \n \"Fechar\n \n )}\n
\n\n
{children}
\n \n );\n};\n\nexport default Modal;\n","import React, {\n createContext,\n useContext,\n useState,\n useCallback,\n ReactNode,\n} from \"react\";\nimport Modal from \"../components/Modal\";\n\ninterface ModalOptions {\n title?: string;\n canClose?: boolean;\n component: ReactNode;\n onClose?: () => void;\n}\n\ninterface ModalContextData {\n openModal: (options: ModalOptions) => void;\n closeModal: () => void;\n}\n\nexport const ModalContext = createContext({} as ModalContextData);\n\nexport const ModalProvider: React.FC = ({ children }) => {\n const [options, setOptions] = useState({} as ModalOptions);\n const [isOpen, setIsOpen] = useState(false);\n\n const openModal = useCallback(\n (options: ModalOptions) => {\n setOptions(options);\n setIsOpen(true);\n },\n [setOptions, setIsOpen]\n );\n\n const closeModal = useCallback(() => {\n setIsOpen(false);\n options.onClose && options?.onClose();\n }, [options, setIsOpen]);\n\n return (\n \n {children}\n\n \n {options.component}\n \n \n );\n};\n\nexport const useModal = () => {\n const context = useContext(ModalContext);\n\n if (!context) {\n throw new Error(\"Modal Context not found.\");\n }\n\n return context;\n};\n","import React from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { AuthProvider } from \"./AuthContext\";\nimport { DialogProvider } from \"./DialogContext\";\nimport { ModalProvider } from \"./ModalContext\";\n\ninterface SharedProviderProps {\n theme: object;\n}\n\nconst SharedProvider: React.FC = ({ theme, children }) => {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n};\n\nexport default SharedProvider;\n","import { Reducer } from 'redux';\nimport { PSFState, PSFTypes, InvoiceType, CardStatusType } from './types';\nimport { MessageType } from '../../utils/types';\n\nconst initialState: PSFState = {\n cardInfo: {\n client: '',\n email: '',\n finalCard: '',\n creditLimit: '0',\n type: InvoiceType.OPENED,\n order: 0,\n invoiceValue: '0,00',\n dueDay: '',\n dueMonth: '',\n nowMonth: '',\n bestDayOfBuy: 0,\n actualMonth: '',\n nextMonth: '',\n availableLimit: '0',\n limitProgress: 0,\n month: '',\n year: 0,\n closureMonth: '',\n closureMonthDisplay: '',\n closureLabel: '',\n invoiceMonth: '',\n cutDay: 0,\n items: [],\n invoiceDate: null,\n generated: false,\n barcode: '',\n },\n userInfo: {\n firstName: '',\n name: '',\n email: '',\n cityState: '',\n address: '',\n cellphone: '',\n finalCard: '',\n dueDay: 0,\n bestDayOfBuy: 0,\n availableLimit: 0,\n creditLimit: 0,\n cutDay: 0,\n cardStatus: CardStatusType.OK,\n itaucardClient: false,\n },\n cardInfoList: [],\n message: { type: MessageType.NONE, description: '' },\n token: '',\n chartData: [],\n questions: [],\n positiveValidationId: '',\n document: '',\n validated: false,\n answers: {},\n itaucardOffer: {\n hasOffer: false,\n value: 0,\n message: '',\n },\n financeInfo: {\n withdrawalLimit: 0,\n withdrawalLimitCellphone: 0,\n },\n loading: false,\n personalLoan: {\n hasOffer: false,\n value: 0,\n message: '',\n expiration: null,\n },\n clientType: 'web',\n isWaitingVerificationCode: false\n};\n\nconst reducer: Reducer = (state = initialState, action) => {\n switch (action.type) {\n case PSFTypes.SEND_EMAIL:\n return {\n ...state,\n message: action.payload.message,\n };\n case PSFTypes.SEND_SMS:\n return {\n ...state,\n message: action.payload.message,\n };\n case PSFTypes.GET_BARCODE:\n return {\n ...state,\n cardInfo: { ...state.cardInfo, barcode: action.payload.barcode },\n message: action.payload.message,\n };\n case PSFTypes.CLEAR_MESSAGE:\n return {\n ...state,\n message: { type: MessageType.NONE, description: '' },\n };\n case PSFTypes.LOGIN:\n return {\n ...state,\n userInfo: action.payload.userInfo,\n cardInfo: action.payload.cardInfo,\n cardInfoList: action.payload.cardInfoList,\n message: action.payload.message,\n token: action.payload.token,\n chartData: action.payload.chartData,\n itaucardOffer: action.payload.itaucardOffer,\n financeInfo: action.payload.financeInfo,\n personalLoan: action.payload.personalLoan,\n };\n case PSFTypes.GET_DATA:\n return {\n ...state,\n userInfo: action.payload.userInfo,\n cardInfo: action.payload.cardInfo,\n cardInfoList: action.payload.cardInfoList,\n message: action.payload.message,\n token: action.payload.token,\n chartData: action.payload.chartData,\n itaucardOffer: action.payload.itaucardOffer,\n financeInfo: action.payload.financeInfo,\n personalLoan: action.payload.personalLoan,\n };\n case PSFTypes.LOGOUT:\n return { ...initialState };\n case PSFTypes.GET_POSITIVE_VALIDATION_QUESTIONS:\n return {\n ...state,\n questions: action.payload.questions,\n positiveValidationId: action.payload.id,\n userInfo: { ...state.userInfo, itaucardClient: action.payload.itaucardClient },\n };\n case PSFTypes.VALIDATE_ANSWERS:\n return {\n ...state,\n questions: action.payload.questions,\n validated: action.payload.validated,\n answers: action.payload.answers,\n };\n case PSFTypes.SET_DOCUMENT_FORGOT_PASSWORD:\n return { ...state, document: action.payload.document, validated: false, answers: {} };\n case PSFTypes.CHANGE_NEW_PASSWORD:\n return {\n ...state,\n validated: action.payload.clear ? false : state.validated,\n answers: action.payload.clear ? {} : state.answers,\n };\n case PSFTypes.CREATE_NEW_ACCOUNT:\n return {\n ...state,\n validated: action.payload.clear ? false : state.validated,\n answers: action.payload.clear ? {} : state.answers,\n };\n case PSFTypes.SET_LOADING:\n return { ...state, loading: action.payload.loading };\n case PSFTypes.SET_CLIENT_TYPE: {\n return { ...state, clientType: action.payload.clientType };\n }\n case PSFTypes.SET_IS_WAITING_VERIFICATION_CODE: {\n return { ...state, isWaitingVerificationCode: action.payload.isWaitingVerificationCode };\n }\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import { Reducer } from \"redux\";\nimport { NegotiationState, NegotiationTypes } from \"./types\";\n\nconst initialState = {\n debtValue: 0,\n date: undefined,\n installmentOffer: {\n quantity: 0,\n value: 0,\n interestRate: 0,\n valueDiscount: 0,\n valueTotal: 0,\n policyCode: 0,\n },\n installmentsOffer: [],\n idTax: '',\n hasNegotiation: false,\n installments: [],\n broken: false,\n observation: '',\n}\n\nconst reducer: Reducer = (state = initialState, action) => {\n switch(action.type) {\n case NegotiationTypes.SEARCH:\n return {...state, debtValue: action.payload.debtValue, observation: action.payload.observation};\n case NegotiationTypes.SEARCH_INSTALLMENTS:\n return {...state, date: action.payload.date, installmentsOffer: action.payload.installmentsOffer, idTax: action.payload.idTax};\n case NegotiationTypes.SET_INSTALLMENT:\n return {...state, installmentOffer: action.payload.installment};\n case NegotiationTypes.SEARCH_NEGOTIATION:\n return {...state, installments: action.payload.installments, hasNegotiation: action.payload.hasNegotiation, broken: action.payload.broken};\n case NegotiationTypes.NEGOCIATE:\n return {...state, broken: false};\n case NegotiationTypes.CLEAR_OBSERVATION:\n return {...state, observation: ''};\n case NegotiationTypes.SET_DATE:\n return {...state, date: action.payload.date};\n default:\n return state;\n }\n}\n\nexport default reducer;","export enum InvoiceItemStatus {\n DEFAULT = \"DEFAULT\",\n PAID = \"PAID\",\n}\n\nexport enum MessageType {\n NONE = \"none\",\n INFORMATION = \"information\",\n SUCCESS = \"success\",\n ERROR = \"error\",\n WARNING = \"warning\",\n LOADING = \"loading\",\n}\n\nexport interface Message {\n type: MessageType;\n description: string;\n}\n\nexport interface UserSession {\n token: string;\n document: string;\n sessionId: string;\n}\n\nexport interface InvoiceTypeObj {\n title: string;\n buttonLabel: string;\n buttonLabelColor: string;\n textColor: string;\n background: string;\n valueTextColor: string;\n titleTextColor: string;\n}\n\nexport interface SimpleCallback {\n (message: Message): void;\n}\n\nexport interface Callback {\n (): void;\n}\n\nexport interface NegotiationCallback {\n (hasNegotiation: boolean, message: Message): void;\n}\n\nexport enum UserStatusType {\n IN_DAY = \"IN_DAY\",\n PENDING = \"PENDING\",\n IN_DEBT = \"IN_DEBT\",\n IN_DEBT_WITH_AGREEMENT = \"IN_DEBT_WITH_AGREEMENT\",\n}\n","import { combineReducers } from 'redux';\n\nimport psf from 'shared/redux/psf';\nimport negotiation from 'shared/redux/psf/negotiation';\n\nexport default combineReducers({\n psf,\n negotiation,\n});\n","import { Store, createStore, applyMiddleware } from 'redux';\nimport ReduxThunk from 'redux-thunk';\nimport { ApplicationState } from 'shared/redux';\nimport Reducers from '.';\n\nconst store: Store = createStore(\n Reducers,\n applyMiddleware(ReduxThunk),\n);\n\nexport default store;\n","import moment, { Moment } from \"moment\"\nimport { Dispatch } from \"redux\"\nimport { callApi } from \"../../../api\"\nimport { getUserSession } from \"../../../utils\"\nimport { negociate_search, negociate_send_email_search, negociate_url, search_negotiation_offers_url, search_negotiation_url } from \"../../../utils/consts\"\nimport { MessageType, NegotiationCallback, SimpleCallback } from \"../../../utils/types\"\nimport { PSFTypes } from \"../types\"\nimport { InstallmentOffer, InstallmentAPI, InstallmentSearchAPI, NegotiationTypes, Installment } from \"./types\"\nimport { DEFAULT_FILIAL } from \"../../../consts\"\n\nconst defaultBody = {\n cpfUsuario: 2497316813,\n loginUsuario: \"USR_PORTALCLIEN\",\n service: \"acordo-cobranca\",\n functionality: \"consultar\",\n filial: DEFAULT_FILIAL,\n ipUsuario: \"10.10.10.1\",\n}\n\nexport const searchNegotationStatus = (callback: NegotiationCallback) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n const postData = {\n ...defaultBody,\n cliCpf: user.document,\n }\n\n callApi({\n method: 'POST',\n url: negociate_search,\n data: postData,\n },\n async ({data: { codigoRetorno, descricaoRetorno, parcelasAcordo}}) => {\n let message = '';\n let installments: Installment[] = [];\n let broken = false;\n let next = false;\n let nextFound = false;\n if (codigoRetorno === 200) {\n if (parcelasAcordo) {\n parcelasAcordo.forEach((item: InstallmentSearchAPI) => {\n if (item.situacaoParcela === 'Q') {\n broken = true;\n } else if(item.situacaoParcela === 'D' && !nextFound) {\n next = true;\n nextFound = true;\n }\n\n installments.push({\n parcelNumber: item.numParcela,\n value: item.valorParcela,\n paymentValue: item.valorPagamento,\n dueDate: moment(item.dataVencimento, 'DD/MM/YYYY'),\n paymentDate: item.dataPagamento ? moment(item.dataPagamento, 'DD/MM/YYYY') : undefined,\n barcode: item.linhaDigitavel,\n situation: item.situacaoParcela,\n dueDateLimit: moment(item.dataVencimentoLimite, 'DD/MM/YYYY'),\n next: next,\n });\n\n if (nextFound) {\n next = false;\n }\n })\n }\n } else {\n message = descricaoRetorno;\n }\n\n const inNegotiation = await hasNegotiation();\n\n callback(inNegotiation, {type: message ? MessageType.ERROR : MessageType.NONE, description: message});\n\n dispatch({\n type: PSFTypes.SET_LOADING,\n payload: {\n loading: false,\n }\n })\n\n dispatch({\n type: NegotiationTypes.SEARCH_NEGOTIATION,\n payload: {\n hasNegotiation: inNegotiation,\n installments: installments,\n broken: broken,\n }\n });\n },\n (error) => {\n dispatch({\n type: PSFTypes.SET_LOADING,\n payload: {\n loading: false,\n }\n })\n\n callback(false, {type: MessageType.ERROR, description: error.message});\n dispatch({\n type: NegotiationTypes.SEARCH_NEGOTIATION,\n payload: {\n hasNegotiation: false,\n installments: [],\n broken: false,\n }\n });\n });\n }\n}\n\nexport const search = (callback: SimpleCallback) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cliCpf: user.document,\n }\n\n callApi({\n method: 'POST',\n url: search_negotiation_url,\n data: postData,\n },\n ({data}) => {\n let observation = '';\n let message = '';\n let debtValue = 0;\n if (data.codigoRetorno === 200) {\n debtValue = data.vrDividaAtualCompras;\n if (data.observacoes) {\n observation = data.observacoes;\n }\n } else {\n message = data.descricaoRetorno;\n }\n\n callback({type: message ? MessageType.ERROR : MessageType.NONE, description: message});\n dispatch({\n type: NegotiationTypes.SEARCH,\n payload: {\n debtValue: debtValue,\n observation,\n }\n });\n },\n (error) => {\n callback({type: MessageType.ERROR, description: error.message});\n dispatch({\n type: NegotiationTypes.SEARCH,\n payload: {\n debtValue: 0,\n observation: '',\n }\n });\n });\n }\n}\n\nconst hasNegotiation = (): Promise => {\n return new Promise((resolve) => {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cliCpf: user.document,\n }\n\n callApi({\n method: 'POST',\n url: search_negotiation_url,\n data: postData,\n },\n () => {\n resolve(false);\n },\n (error) => {\n let hasNegotiation = false;\n if(error.response && error.response.data) {\n const {codigoRetorno, descricaoRetorno} = error.response.data;\n if (codigoRetorno === 406 && descricaoRetorno === '5 - Cliente com acordo em andamento.') {\n hasNegotiation = true;\n }\n }\n resolve(hasNegotiation);\n });\n })\n}\n\nexport const setInstallmentsDate = (date: Moment | undefined) => {\n return {\n type: NegotiationTypes.SET_DATE,\n payload: {\n date\n }\n }\n}\n\nexport const getInstallments = (date: Moment | undefined, callback: SimpleCallback) => {\n return (dispatch: Dispatch) => {\n if (date) {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cliCpf: user.document,\n dtVencimento: date.format('DD/MM/YYYY'),\n descontoMaximo: \"SIM\"\n }\n\n callApi({\n method: 'POST',\n url: search_negotiation_offers_url,\n data: postData,\n },\n ({data: { codigoRetorno, descricaoRetorno, ofertasAcordo, idTarifa }}) => {\n let message = '';\n let idTax = '';\n let installments: InstallmentOffer[] = [];\n if (codigoRetorno === 200) {\n idTax = idTarifa;\n ofertasAcordo.forEach((item: InstallmentAPI) => installments.push({\n quantity: item.qtdParcelas,\n value: item.vrParcela,\n interestRate: item.txJuros,\n valueDiscount: item.vrDescontoConcedido,\n valueTotal: item.vrTotalAcordo,\n policyCode: item.codPolitica,\n }));\n } else {\n message = descricaoRetorno;\n }\n\n callback({type: message ? MessageType.ERROR : MessageType.NONE, description: message});\n dispatch({\n type: NegotiationTypes.SEARCH_INSTALLMENTS,\n payload: {\n date: date,\n installmentsOffer: installments,\n idTax: idTax,\n }\n });\n },\n (error) => {\n callback({type: MessageType.ERROR, description: error.message});\n dispatch({\n type: NegotiationTypes.SEARCH_INSTALLMENTS,\n payload: {\n date: date,\n installmentsOffer: [],\n idTax: '',\n }\n });\n });\n } else {\n callback({type: MessageType.NONE, description: ''});\n dispatch({\n type: NegotiationTypes.SEARCH_INSTALLMENTS,\n payload: {\n date: undefined,\n installmentsOffer: [],\n idTax: '',\n }\n });\n }\n }\n}\n\nexport const setInstallment = (installment: InstallmentOffer) => {\n return {\n type: NegotiationTypes.SET_INSTALLMENT,\n payload: {\n installment: installment,\n }\n }\n}\n\nexport const negociate = (date: Moment, installmentOffer: InstallmentOffer, idTax: string, callback: SimpleCallback) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n const putData = {\n ...defaultBody,\n cliCpf: user.document,\n dtVencimento: date.format('DD/MM/YYYY'),\n codPolitica: installmentOffer.policyCode,\n idTarifa: idTax,\n acordoTipo: 7,\n vrDescontoConcedido: installmentOffer.valueDiscount,\n vrParcela: installmentOffer.value,\n txJuros: installmentOffer.interestRate,\n qtdParcelas: installmentOffer.quantity\n }\n\n callApi({\n method: 'PUT',\n url: negociate_url,\n data: putData,\n },\n ({data: {codigoRetorno, descricaoRetorno}}) => {\n let message = '';\n if (codigoRetorno !== 200) {\n message = descricaoRetorno;\n }\n\n callback({type: message ? MessageType.ERROR : MessageType.NONE, description: message});\n dispatch({\n type: NegotiationTypes.NEGOCIATE,\n })\n },\n (error) => {\n callback({type: MessageType.ERROR, description: error.message});\n dispatch({\n type: NegotiationTypes.NEGOCIATE,\n })\n });\n }\n}\n\nexport const sendEmail = (email: string, callback: SimpleCallback) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cliCpf: user.document,\n flgPreAcordo: \"NAO\",\n // numFoneCelular: 11988998080, ??\n email: email,\n }\n\n callApi({\n method: 'PUT',\n url: negociate_send_email_search,\n data: postData,\n },\n ({data: {codigoRetorno, descricaoRetorno}}) => {\n let message = codigoRetorno === 200 ? '' : descricaoRetorno;\n\n callback({type: message ? MessageType.ERROR : MessageType.NONE, description: message});\n dispatch({\n type: NegotiationTypes.SEND_EMAIL,\n });\n },\n (error) => {\n callback({type: MessageType.ERROR, description: error.message});\n dispatch({\n type: NegotiationTypes.SEND_EMAIL,\n });\n });\n }\n}\n\nexport const clearObservation = () => {\n return {\n type: NegotiationTypes.CLEAR_OBSERVATION,\n }\n}","import { Dispatch } from \"redux\";\nimport { callApi, defaultBody } from \"../../api\";\nimport {\n auth_url,\n service_url,\n invoices_url,\n months,\n invoice_send_email_url,\n invoice_detail_url,\n user_url,\n user_validation_url,\n user_new_password_url,\n user_new_account_url,\n itaucard_offer_url,\n finance_info_url,\n invoice_send_sms_url,\n} from \"../../utils/consts\";\nimport {\n getRawText,\n formatCellphone,\n setUserSession,\n getUserSession,\n camelCase,\n formatMoney,\n getExtendedDate,\n getDueMonth,\n getStrToDate,\n clearUserSession,\n getRawMoney,\n} from \"../../utils\";\nimport { nanoid } from \"nanoid\";\nimport {\n PSFTypes,\n UserType,\n InvoiceDetailInfoType,\n InvoiceType,\n InvoiceDetailType,\n CardInfoType,\n InvoiceItemType,\n TransactionType,\n MonthItemType,\n CallbackBarcode,\n PSFActions,\n ChartType,\n PositiveQuestion,\n CardStatusType,\n ItaucardOffer,\n FinanceInfo,\n GetQuestionsCallback,\n PersonalLoan,\n ClientType,\n SetClientType,\n SetIsWaitingVerificationCode,\n} from \"./types\";\nimport { addMonths, addDays, differenceInMonths } from \"date-fns\";\nimport { Message, MessageType, SimpleCallback } from \"../../utils/types\";\nimport qs from \"qs\";\nimport { searchNegotationStatus } from \"./negotiation/actions\";\nimport { AllHtmlEntities } from \"html-entities\";\nimport { ApplicationState } from \"..\";\n\nconst initializeCard = (): CardInfoType => {\n return {\n client: \"\",\n email: \"\",\n finalCard: \"\",\n creditLimit: \"0\",\n type: InvoiceType.OPENED,\n order: 0,\n invoiceValue: \"0,00\",\n dueDay: \"\",\n dueMonth: \"\",\n nowMonth: \"\",\n bestDayOfBuy: 0,\n actualMonth: \"\",\n nextMonth: \"\",\n availableLimit: \"0\",\n limitProgress: 0,\n month: \"\",\n year: 0,\n closureMonth: \"\",\n closureMonthDisplay: \"\",\n closureLabel: \"\",\n invoiceMonth: \"\",\n cutDay: 0,\n items: [],\n invoiceDate: null,\n generated: false,\n };\n};\n\nexport const clearMessage = (): PSFActions => {\n return {\n type: PSFTypes.CLEAR_MESSAGE,\n };\n};\n\nconst getCardInfo = (\n clientType: ClientType\n): Promise<{\n userInfo: UserType;\n cardInfo: CardInfoType;\n cardInfoList: MonthItemType[];\n itaucardOffer: ItaucardOffer;\n financeInfo: FinanceInfo;\n message: Message;\n chartData: ChartType[];\n personalLoan: PersonalLoan;\n}> => {\n return new Promise((resolve, reject) => {\n const userCall = getUserInfo();\n const invoiceCall = getInvoiceData();\n const itaucardCall = getItaucardOffer(clientType);\n const financeInfoCall = getFinanceInfo();\n const personalLoanCall = getPersonalLoan(clientType);\n\n Promise.all([\n userCall,\n invoiceCall,\n itaucardCall,\n financeInfoCall,\n personalLoanCall,\n ])\n .then((values) => {\n const cardInfo = getActualInvoice(\n values[0].user,\n values[1].invoiceData as InvoiceDetailInfoType\n );\n const cardHistory = getHistoryCardInfo(\n values[0].user as UserType,\n values[1].invoiceData as InvoiceDetailInfoType\n );\n\n resolve({\n userInfo: values[0].user,\n cardInfo: cardInfo,\n cardInfoList: cardHistory,\n itaucardOffer: {\n hasOffer: values[2].hasOffer,\n value: values[2].value,\n message: values[2].message,\n },\n financeInfo: {\n withdrawalLimit: values[3].withdrawalLimit,\n withdrawalLimitCellphone: values[3].withdrawalLimitCellphone,\n },\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n chartData: getChartData(cardHistory),\n personalLoan: values[4],\n });\n })\n .catch((errors) => {\n reject({\n userInfo: {\n firstName: \"\",\n name: \"\",\n email: \"\",\n cityState: \"\",\n address: \"\",\n cellphone: \"\",\n finalCard: \"\",\n dueDay: 0,\n bestDayOfBuy: 0,\n creditLimit: 0,\n availableLimit: 0,\n cutDay: 0,\n cardStatus: CardStatusType.OK,\n itaucardClient: false,\n },\n cardInfo: initializeCard(),\n cardInfoList: [],\n itaucardOffer: {\n hasOffer: false,\n value: 0,\n message: \"\",\n },\n financeInfo: {\n withdrawalLimit: 0,\n withdrawalLimitCellphone: 0,\n },\n message: errors.message,\n chartData: [],\n personalLoan: {\n hasOffer: false,\n value: 0,\n message: \"\",\n expiration: null,\n },\n });\n });\n });\n};\n\nconst getHistoryCardInfo = (\n cardInfo: UserType,\n invoicesInfo: InvoiceDetailInfoType\n): MonthItemType[] => {\n const invoicesList: MonthItemType[] = [];\n if (\n invoicesInfo.faturaPendentePgto &&\n invoicesInfo.faturaPendentePgto.length > 0\n ) {\n invoicesList.push(\n ...getDetailedInfo(\n InvoiceType.PENDING,\n cardInfo,\n invoicesInfo.faturaPendentePgto\n )\n );\n }\n\n if (invoicesInfo.faturaAtual && invoicesInfo.faturaAtual.length > 0) {\n invoicesList.push(\n ...getDetailedInfo(InvoiceType.OPENED, cardInfo, invoicesInfo.faturaAtual)\n );\n }\n\n if (\n invoicesInfo.faturaLiquidadas &&\n invoicesInfo.faturaLiquidadas.length > 0\n ) {\n invoicesList.push(\n ...getDetailedInfo(\n InvoiceType.PAID,\n cardInfo,\n invoicesInfo.faturaLiquidadas\n )\n );\n }\n\n const actualInvoice = new Date();\n\n if (!hasInvoiceExpiringInDate(invoicesList, actualInvoice)) {\n const dueMonth = getDueMonth(cardInfo.cutDay, actualInvoice);\n\n invoicesList.push(\n ...getDetailedInfo(\n dueMonth !== actualInvoice.getMonth()\n ? InvoiceType.CLOSED\n : InvoiceType.OPENED,\n cardInfo,\n null\n )\n );\n\n if (dueMonth !== actualInvoice.getMonth()) {\n actualInvoice.setMonth(dueMonth);\n\n if (!hasInvoiceExpiringInDate(invoicesList, actualInvoice)) {\n invoicesList.push(\n ...getDetailedInfo(\n dueMonth !== actualInvoice.getMonth()\n ? InvoiceType.CLOSED\n : InvoiceType.OPENED,\n cardInfo,\n null,\n actualInvoice\n )\n );\n }\n }\n }\n\n invoicesList.sort((a, b) => {\n if (a.cardInfo.invoiceDate && b.cardInfo.invoiceDate) {\n return a.cardInfo.invoiceDate > b.cardInfo.invoiceDate ? 1 : -1;\n }\n\n return 0;\n });\n\n return generateEmptyMonths(cardInfo, invoicesList).sort((a, b) => {\n if (a.cardInfo.invoiceDate && b.cardInfo.invoiceDate) {\n return a.cardInfo.invoiceDate > b.cardInfo.invoiceDate ? 1 : -1;\n }\n\n return 0;\n });\n};\n\nconst generateEmptyMonths = (cardInfo: UserType, invoices: MonthItemType[]) => {\n const allMonths: MonthItemType[] = [];\n\n let nextInvoice: MonthItemType;\n invoices.forEach((invoice, index) => {\n if (invoices.length > index + 1) {\n nextInvoice = invoices[index + 1];\n\n if (invoice.cardInfo.invoiceDate && nextInvoice.cardInfo.invoiceDate) {\n const initialDate = new Date(\n invoice.cardInfo.invoiceDate.getFullYear(),\n invoice.cardInfo.invoiceDate.getMonth(),\n 1\n );\n const nextDate = new Date(\n nextInvoice.cardInfo.invoiceDate.getFullYear(),\n nextInvoice.cardInfo.invoiceDate.getMonth(),\n 1\n );\n const monthDiff = differenceInMonths(nextDate, initialDate);\n\n let newMonth: Date = initialDate;\n for (let i = 1; i < monthDiff; i++) {\n newMonth = addMonths(initialDate, i);\n allMonths.push({\n key: 0,\n month: months[newMonth.getMonth()].initials,\n monthDisplay: months[newMonth.getMonth()].initials,\n cardInfo: getEmptyInvoice(\n InvoiceType.CLOSED,\n cardInfo,\n new Date(newMonth.getTime())\n ),\n });\n }\n }\n }\n\n allMonths.push(invoice);\n });\n\n return allMonths;\n};\n\nconst hasInvoiceExpiringInDate = (\n invoicesList: MonthItemType[],\n date: Date\n) => {\n for (const i in invoicesList) {\n if (\n invoicesList[i].cardInfo.invoiceDate?.getFullYear() ===\n date.getFullYear() &&\n invoicesList[i].cardInfo.invoiceDate?.getMonth() === date.getMonth()\n ) {\n return true;\n }\n }\n\n return false;\n};\n\nconst getDetailedInfo = (\n type: InvoiceType,\n cardInfo: UserType,\n invoiceList: InvoiceDetailType[] | null,\n referenceDate = new Date()\n): MonthItemType[] => {\n const monthInvoiceList: MonthItemType[] = [];\n\n if (invoiceList) {\n invoiceList.forEach((invoice) => {\n const data: CardInfoType = getInvoiceObj(\n type,\n invoice,\n cardInfo,\n referenceDate\n );\n\n monthInvoiceList.push({\n key: data.order,\n month: data.closureMonth,\n monthDisplay: data.closureMonthDisplay,\n cardInfo: data,\n });\n });\n } else {\n const data: CardInfoType = getEmptyInvoice(type, cardInfo, referenceDate);\n\n monthInvoiceList.push({\n key: data.order,\n month: data.closureMonth,\n monthDisplay: data.closureMonthDisplay,\n cardInfo: data,\n });\n }\n\n return monthInvoiceList;\n};\n\nconst getEmptyInvoice = (\n type: InvoiceType | undefined,\n cardInfo: UserType,\n referenceDate = new Date()\n): CardInfoType => {\n const data: CardInfoType = initializeCard();\n\n data.client = cardInfo.name;\n\n data.email = cardInfo.email;\n\n data.finalCard = cardInfo.finalCard;\n\n const invoiceMonth = new Date(referenceDate.getTime());\n let closureDate = new Date(referenceDate.getTime());\n data.generated = true;\n const dateInvoice = new Date(referenceDate.getTime());\n\n dateInvoice.setDate(cardInfo.dueDay);\n invoiceMonth.setTime(referenceDate.getTime());\n closureDate = addDays(dateInvoice, -11);\n dateInvoice.setDate(cardInfo.dueDay);\n\n data.invoiceDate = dateInvoice;\n\n data.dueDay = String(dateInvoice.getDate()).padStart(2, \"0\");\n data.dueMonth = months[dateInvoice.getMonth()].initials;\n\n data.availableLimit = formatMoney(\"0\");\n data.cutDay = cardInfo.cutDay;\n\n data.closureMonth = `${months[closureDate.getMonth()].description}`;\n data.closureMonthDisplay = `${months[closureDate.getMonth()].initials}`;\n\n const now = new Date();\n if (invoiceMonth.getFullYear() !== now.getFullYear()) {\n data.closureLabel = `${\n months[data.invoiceDate.getMonth()].initials\n }/${String(invoiceMonth.getFullYear()).substring(2, 4)}`;\n } else {\n data.closureLabel = months[data.invoiceDate.getMonth()].description;\n }\n\n const dateNow = new Date(referenceDate.getTime());\n data.nowMonth = months[dateNow.getMonth()].initials;\n\n data.bestDayOfBuy = cardInfo.bestDayOfBuy;\n data.actualMonth = months[dateNow.getMonth()].description;\n\n dateNow.setMonth(dateNow.getMonth() + 1);\n data.nextMonth = months[dateNow.getMonth()].description;\n\n data.creditLimit = formatMoney(String(cardInfo.creditLimit));\n data.availableLimit = formatMoney(String(cardInfo.availableLimit));\n\n data.limitProgress =\n (cardInfo.availableLimit / cardInfo.creditLimit - 1) * -1;\n\n if (type) {\n data.type = type;\n }\n\n return data;\n};\n\nexport const login = (\n document: string,\n birthDate: string,\n callback: SimpleCallback\n) => {\n return (dispatch: Dispatch, getState: () => ApplicationState) => {\n internalLogin(document, birthDate, getState().psf.clientType).then(\n (userData) => {\n callback(userData.message);\n dispatch({\n type: PSFTypes.LOGIN,\n payload: {\n ...userData.data,\n },\n });\n }\n );\n };\n};\n\nconst getEmptyLoginData = () => ({\n data: {\n userInfo: {\n firstName: \"\",\n name: \"\",\n email: \"\",\n cityState: \"\",\n address: \"\",\n cellphone: \"\",\n finalCard: \"\",\n dueDay: 0,\n bestDayOfBuy: 0,\n creditLimit: 0,\n availableLimit: 0,\n cutDay: 0,\n itaucardClient: false,\n },\n cardInfo: initializeCard(),\n cardInfoList: [],\n itaucardOffer: {\n hasOffer: false,\n value: 0,\n message: \"\",\n },\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n token: \"\",\n },\n message: { type: MessageType.NONE, description: \"\" },\n});\n\nconst internalLogin = (\n document: string,\n birthDate: string,\n clientType: ClientType\n): Promise<{ data: object; message: Message }> => {\n return new Promise((resolve) => {\n const sessionId = nanoid();\n\n console.log(\"birthdate:\", birthDate);\n\n const postData = {\n ...defaultBody,\n cpfUsuario: getRawText(document),\n dataNascimento: birthDate,\n service: \"api\",\n functionality: \"auth/app\",\n idProcesso: sessionId,\n };\n\n callApi(\n {\n method: \"POST\",\n url: auth_url,\n data: postData,\n },\n ({ data }) => {\n if (data && data.codigoRetorno && data.codigoRetorno === 200) {\n const token = data.token;\n setUserSession(getRawText(document), token, sessionId);\n\n getCardInfo(clientType)\n .then((data) => {\n resolve({\n data: {\n userInfo: data.userInfo,\n cardInfo: data.cardInfo,\n cardInfoList: data.cardInfoList,\n message: data.message,\n token: token,\n chartData: data.chartData,\n itaucardOffer: data.itaucardOffer,\n financeInfo: data.financeInfo,\n personalLoan: data.personalLoan,\n },\n message: { type: MessageType.NONE, description: \"\" },\n });\n })\n .catch(() => {\n const info = getEmptyLoginData();\n info.data.message = {\n type: MessageType.ERROR,\n description:\n \"Ocorreu um erro ao buscar seus dados, tente novamente.\",\n };\n (info.message = { type: MessageType.ERROR, description: \"\" }),\n resolve(info);\n });\n } else {\n const info = getEmptyLoginData();\n info.data.message = {\n type: MessageType.ERROR,\n description:\n \"Ocorreu um erro ao realizar o acesso, tente novamente.\",\n };\n (info.message = { type: MessageType.ERROR, description: \"\" }),\n resolve(info);\n }\n },\n (error) => {\n let message = error.message;\n let code = 0;\n\n if (error.response) {\n code = error.response.status;\n }\n\n if (error.data && error.data.descricaoRetorno) {\n message = error.data.descricaoRetorno;\n }\n\n const info = getEmptyLoginData();\n info.data.userInfo.itaucardClient = code === 406;\n info.data.message = {\n type: MessageType.ERROR,\n description: message,\n };\n (info.message = { type: MessageType.ERROR, description: \"\" }),\n resolve(info);\n }\n );\n });\n};\n\nconst getUserInfo = (): Promise<{ user: UserType; message: Message }> => {\n return new Promise((resolve, reject) => {\n let user: UserType = {\n firstName: \"\",\n name: \"\",\n email: \"\",\n cityState: \"\",\n address: \"\",\n cellphone: \"\",\n finalCard: \"\",\n dueDay: 0,\n bestDayOfBuy: 0,\n availableLimit: 0,\n creditLimit: 0,\n cutDay: 0,\n cardStatus: CardStatusType.OK,\n itaucardClient: false,\n };\n\n const session = getUserSession();\n\n const postData = {\n ...defaultBody,\n cpfUsuario: session.document,\n modulo: 18,\n rotina: 101,\n service: \"dashboard\",\n functionality: \"searchClient\",\n search: {\n value: session.document,\n tipo: \"CPF\",\n },\n };\n\n callApi(\n {\n method: \"POST\",\n url: service_url,\n data: postData,\n },\n ({ data }) => {\n const userData = data.objectsReturn.ClientDashboard;\n\n user.firstName = camelCase(\n userData.nome.slice(\n 0,\n userData.nome.indexOf(\" \") > -1\n ? userData.nome.indexOf(\" \")\n : userData.nome.length\n )\n );\n user.name = camelCase(userData.nome);\n user.email = userData.email;\n user.cityState = `${camelCase(userData.cidadeUf).slice(\n 0,\n userData.cidadeUf.indexOf(\"/\")\n )}${userData.cidadeUf\n .slice(userData.cidadeUf.indexOf(\"/\"))\n .toUpperCase()}`;\n user.address = camelCase(userData.endereco);\n user.cellphone = formatCellphone(userData.celular);\n user.finalCard = userData.numeroCartao.slice(12);\n user.dueDay = parseInt(userData.diaVencimento, 10);\n user.bestDayOfBuy = parseInt(userData.melhorDiaCompra, 10);\n user.creditLimit = parseFloat(userData.stats.ultFatTotalLimite);\n user.availableLimit = parseFloat(userData.stats.ultFatSaldoLimite);\n user.cutDay = parseInt(userData.diaCorte, 10);\n user.cardStatus = parseInt(userData.situacaoContaCod, 10);\n\n resolve({\n user: user,\n message: { type: MessageType.NONE, description: \"\" },\n });\n },\n (error) => {\n reject({\n user: user,\n message: {\n type: MessageType.ERROR,\n description: error.message,\n },\n });\n }\n );\n });\n};\n\nconst getInvoiceData = (): Promise<{ message: Message; invoiceData: any }> => {\n return new Promise((resolve, reject) => {\n let user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cpfUsuario: user.document,\n modulo: 18,\n rotina: 101,\n service: \"fatura\",\n functionality: \"v2/getListaFaturas\",\n idProcesso: user.sessionId,\n cliCPF: user.document,\n isHistorico: \"N\",\n };\n\n callApi(\n {\n method: \"post\",\n url: invoices_url,\n data: postData,\n headers: { Accept: \"application/json\" },\n },\n (invoicesResponse) => {\n resolve({\n invoiceData: invoicesResponse.data.objectsReturn.Header,\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n });\n },\n (e) => {\n reject({\n invoiceData: {},\n message: {\n type: MessageType.ERROR,\n description: e.message,\n },\n });\n }\n );\n });\n};\n\nconst getActualInvoice = (\n cardInfo: UserType,\n invoicesInfo: InvoiceDetailInfoType\n) => {\n let invoice = null;\n let type;\n if (\n invoicesInfo.faturaPendentePgto &&\n invoicesInfo.faturaPendentePgto.length > 0\n ) {\n type = InvoiceType.PENDING;\n invoice = invoicesInfo.faturaPendentePgto[0];\n } else if (invoicesInfo.faturaAtual && invoicesInfo.faturaAtual.length > 0) {\n type = InvoiceType.OPENED;\n invoice = invoicesInfo.faturaAtual[0];\n }\n\n return getInvoiceObj(type, invoice, cardInfo);\n};\n\nconst getInvoiceObj = (\n type: InvoiceType | undefined,\n invoice: InvoiceDetailType | null,\n cardInfo: UserType,\n referenceDate = new Date()\n): CardInfoType => {\n const data: CardInfoType = initializeCard();\n\n data.client = cardInfo.name;\n data.email = cardInfo.email;\n\n data.finalCard = cardInfo.finalCard;\n\n const invoiceMonth = new Date(referenceDate.getTime());\n let closureDate = new Date(referenceDate.getTime());\n if (invoice !== null) {\n data.order = invoice.nroFatura;\n\n data.invoiceValue = formatMoney(invoice.valorFatura);\n\n const dateSplit = invoice.dataFatura.split(\"/\");\n const date = new Date(\n parseInt(dateSplit[2], 10),\n parseInt(dateSplit[1], 10) - 1,\n parseInt(dateSplit[0], 10)\n );\n\n data.invoiceDate = date;\n\n data.dueDay = String(date.getDate()).padStart(2, \"0\");\n data.dueMonth = months[date.getMonth()].initials;\n data.month = months[date.getMonth()].description;\n data.year = date.getFullYear();\n\n closureDate.setDate(1);\n closureDate.setFullYear(date.getFullYear());\n closureDate.setMonth(date.getMonth());\n if (cardInfo.cutDay > cardInfo.dueDay) {\n closureDate = addMonths(closureDate, -1);\n }\n\n invoiceMonth.setTime(date.getTime());\n\n if (invoice.itensFaturaList && invoice.itensFaturaList.length > 0) {\n invoice.itensFaturaList.forEach(\n (item: InvoiceItemType, index: number) => {\n if (Object.keys(item).length > 0) {\n let date = getStrToDate(item.data);\n data.items.push({\n key: String(index),\n description: item.descricaoEvento,\n date: getExtendedDate(item.data),\n value: formatMoney(item.valor, true),\n installmentNumber: parseInt(item.nroParcelaAtual, 10),\n installmentsNumber: parseInt(item.qtdeParcelas, 10),\n type:\n item.tipoOperacao === TransactionType.CREDIT\n ? TransactionType.CREDIT\n : TransactionType.DEBIT,\n day: date.getDate(),\n month: months[date.getMonth()].description,\n });\n }\n }\n );\n }\n } else {\n data.generated = true;\n const dateInvoice = new Date(referenceDate.getTime());\n\n invoiceMonth.setTime(referenceDate.getTime());\n if (cardInfo.dueDay > cardInfo.cutDay) {\n closureDate.setMonth(dateInvoice.getMonth() + 1);\n }\n\n dateInvoice.setMonth(getDueMonth(cardInfo.cutDay, dateInvoice));\n dateInvoice.setDate(cardInfo.dueDay);\n\n data.invoiceDate = dateInvoice;\n\n data.dueDay = String(dateInvoice.getDate()).padStart(2, \"0\");\n data.dueMonth = months[dateInvoice.getMonth()].initials;\n\n data.availableLimit = formatMoney(\"0\");\n }\n\n data.cutDay = cardInfo.cutDay;\n\n data.closureMonth = `${months[closureDate.getMonth()].description}`;\n data.closureMonthDisplay = `${months[closureDate.getMonth()].initials}`;\n\n const now = new Date();\n if (invoiceMonth.getFullYear() !== now.getFullYear()) {\n data.closureLabel = `${\n months[data.invoiceDate.getMonth()].initials\n }/${String(invoiceMonth.getFullYear()).substring(2, 4)}`;\n } else {\n data.closureLabel = months[data.invoiceDate.getMonth()].description;\n }\n\n const dateNow = new Date(referenceDate.getTime());\n data.nowMonth = months[dateNow.getMonth()].initials;\n\n data.bestDayOfBuy = cardInfo.bestDayOfBuy;\n data.actualMonth = months[dateNow.getMonth()].description;\n\n dateNow.setMonth(dateNow.getMonth() + 1);\n data.nextMonth = months[dateNow.getMonth()].description;\n\n data.creditLimit = formatMoney(String(cardInfo.creditLimit));\n data.availableLimit = formatMoney(String(cardInfo.availableLimit));\n\n data.limitProgress =\n (cardInfo.availableLimit / cardInfo.creditLimit - 1) * -1 * 100;\n\n if (type) {\n data.type = type;\n }\n\n return data;\n};\n\nexport const sendEmail = (email: string, callback: SimpleCallback) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cpfUsuario: user.document,\n modulo: 18,\n rotina: 101,\n service: \"fatura\",\n functionality: \"v2/getFaturaEmail\",\n idProcesso: user.sessionId,\n cliCPF: user.document,\n emailDestinatario: email,\n };\n\n callApi(\n {\n method: \"POST\",\n url: invoice_send_email_url,\n data: postData,\n },\n () => {\n callback({\n type: MessageType.SUCCESS,\n description: \"A fatura foi enviada para o seu e-mail\",\n });\n dispatch({\n type: PSFTypes.SEND_EMAIL,\n payload: {\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n },\n });\n },\n (error) => {\n callback({\n type: MessageType.ERROR,\n description: \"Ocorreu um erro ao enviar a fatura para o seu e-mail\",\n });\n dispatch({\n type: PSFTypes.SEND_EMAIL,\n payload: {\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n },\n });\n }\n );\n };\n};\n\nexport const sendSMS = (cellphone: string, callback: SimpleCallback) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cpfUsuario: \"11111111111\",\n modulo: 18,\n rotina: 101,\n idProcesso: user.sessionId,\n service: \"fatura\",\n functionality: \"v2/getFaturaSms\",\n cliCPF: user.document,\n celularDestinatario: getRawText(cellphone),\n origem: \"1\",\n };\n\n callApi(\n {\n method: \"POST\",\n url: invoice_send_sms_url,\n data: postData,\n },\n () => {\n callback({ type: MessageType.SUCCESS, description: \"\" });\n dispatch({\n type: PSFTypes.SEND_SMS,\n payload: {\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n },\n });\n },\n (error) => {\n callback({\n type: MessageType.ERROR,\n description: \"Ocorreu um erro ao enviar o SMS para o seu número\",\n });\n dispatch({\n type: PSFTypes.SEND_SMS,\n payload: {\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n },\n });\n }\n );\n };\n};\n\nexport const getBarcode = (order: number, callback: CallbackBarcode) => {\n return (dispatch: Dispatch) => {\n const user = getUserSession();\n\n const postData = {\n ...defaultBody,\n cpfUsuario: user.document,\n modulo: 18,\n rotina: 101,\n service: \"fatura\",\n functionality: \"v2/getFatura\",\n idProcesso: user.sessionId,\n cliCPF: user.document,\n numFatura: String(order),\n };\n\n callApi(\n {\n method: \"POST\",\n url: invoice_detail_url,\n data: postData,\n },\n ({ data }) => {\n callback(data.objectsReturn.fatura.linhaDigitavel, {\n type: MessageType.SUCCESS,\n description: \"Código de barras copiado com sucesso\",\n });\n dispatch({\n type: PSFTypes.GET_BARCODE,\n payload: {\n barcode: data.objectsReturn.fatura.linhaDigitavel,\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n },\n });\n },\n (error) => {\n callback(\"\", {\n type: MessageType.ERROR,\n description: \"Ocorreu um problema ao copiar o código de barras\",\n });\n dispatch({\n type: PSFTypes.GET_BARCODE,\n payload: {\n barcode: \"\",\n message: {\n type: MessageType.NONE,\n description: \"\",\n },\n },\n });\n }\n );\n };\n};\n\nexport const logout = (): PSFActions => {\n clearUserSession();\n return {\n type: PSFTypes.LOGOUT,\n };\n};\n\nexport const getData = (callback?: SimpleCallback) => {\n return (dispatch: Dispatch, getState: () => ApplicationState) => {\n dispatch({\n type: PSFTypes.SET_LOADING,\n payload: {\n loading: true,\n },\n });\n\n getCardInfo(getState().psf.clientType)\n .then((data) => {\n //@ts-ignore\n dispatch(\n searchNegotationStatus(() => {\n if (callback) {\n callback({ type: MessageType.NONE, description: \"\" });\n }\n })\n );\n dispatch({\n type: PSFTypes.LOGIN,\n payload: {\n userInfo: data.userInfo,\n cardInfo: data.cardInfo,\n cardInfoList: data.cardInfoList,\n message: data.message,\n token: getUserSession().token,\n chartData: data.chartData,\n itaucardOffer: data.itaucardOffer,\n financeInfo: data.financeInfo,\n personalLoan: data.personalLoan,\n },\n });\n })\n .catch((e) => {\n if (callback) {\n callback(e.message);\n }\n });\n };\n};\n\nexport const getChartData = (cardInfoList: MonthItemType[]): ChartType[] => {\n let list = [...cardInfoList].reverse();\n\n let chartData: ChartType[] = [];\n for (let i = 1; i < 7; i++) {\n if (list.length > i) {\n let value = 0;\n list[i].cardInfo.items.forEach((item) => {\n value += parseFloat(getRawMoney(item.value));\n });\n\n chartData.push({\n month: list[i].cardInfo.closureLabel,\n purchases: list[i].cardInfo.items.length,\n value: value,\n });\n }\n }\n\n return chartData.reverse();\n};\n\nexport const getPositiveValidationQuestions = (\n document: string,\n callback: GetQuestionsCallback\n) => {\n return (dispatch: Dispatch) => {\n callApi(\n {\n method: \"GET\",\n url: user_url.replace(\"DOCUMENT\", getRawText(document)),\n },\n ({ data }) => {\n const questions: PositiveQuestion[] = [];\n let itaucardClient = false;\n let message = \"\";\n let id = \"\";\n if (data.codigoRetorno === 200) {\n id = data.identificadorTransacaoConsulta;\n data.perguntasIdentificacaoPositiva.forEach((question: any) =>\n questions.push({\n code: question.codigoPergunta,\n question: question.descricaoPergunta,\n })\n );\n } else {\n const entities = new AllHtmlEntities();\n itaucardClient = data.codigoRetorno === 406;\n message = entities.decode(data.descricaoRetorno);\n }\n\n callback(\n {\n type: message ? MessageType.ERROR : MessageType.NONE,\n description: message,\n },\n itaucardClient\n );\n dispatch({\n type: PSFTypes.GET_POSITIVE_VALIDATION_QUESTIONS,\n payload: {\n id: id,\n questions: questions,\n itaucardClient: itaucardClient,\n },\n });\n },\n (error) => {\n callback(\n { type: MessageType.ERROR, description: error.message },\n false\n );\n dispatch({\n type: PSFTypes.GET_POSITIVE_VALIDATION_QUESTIONS,\n payload: {\n id: \"\",\n questions: [],\n itaucardClient: false,\n },\n });\n }\n );\n };\n};\n\nexport const validateAnswers = (\n id: string,\n questions: PositiveQuestion[],\n answers: { [key: string]: string },\n callback: SimpleCallback\n) => {\n return (dispatch: Dispatch) => {\n let answersStr = \"\";\n Object.keys(answers).forEach((item) => {\n answersStr += `${item}:${answers[item]};`;\n });\n\n callApi(\n {\n method: \"POST\",\n url: user_validation_url,\n headers: {\n \"content-type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n },\n data: qs.stringify({\n identificadorTransacaoConsulta: id,\n respostas: answersStr,\n }),\n },\n ({ data }) => {\n const newQuestions: PositiveQuestion[] = [];\n let message = \"\";\n if (data.codigoRetorno !== 200) {\n message = data.descricaoRetorno;\n if (data.respostasIdentificacaoPositiva) {\n data.respostasIdentificacaoPositiva.forEach((question: any) =>\n newQuestions.push({\n code: question.codigoPergunta,\n question: question.descricaoPergunta,\n })\n );\n }\n } else {\n newQuestions.push(...questions);\n }\n\n callback({\n type: message ? MessageType.ERROR : MessageType.NONE,\n description: message,\n });\n dispatch({\n type: PSFTypes.VALIDATE_ANSWERS,\n payload: {\n questions: newQuestions,\n validated: message ? false : true,\n answers: answers,\n },\n });\n },\n (error) => {\n callback({ type: MessageType.ERROR, description: error.message });\n dispatch({\n type: PSFTypes.VALIDATE_ANSWERS,\n payload: {\n questions: [],\n validated: false,\n answers: {},\n },\n });\n },\n false\n );\n };\n};\n\nexport const changeNewPassword = (\n id: string,\n document: string,\n password: string,\n callback: SimpleCallback,\n captchaCode: string\n) => {\n return (dispatch: Dispatch) => {\n callApi(\n {\n method: \"POST\",\n url: user_new_password_url,\n headers: {\n \"content-type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n },\n data: qs.stringify({\n identificadorTransacaoConsulta: id,\n cpfCliente: getRawText(document),\n novaSenha: password,\n captcha: captchaCode,\n }),\n },\n ({ data }) => {\n let message = \"\";\n if (data.codigoRetorno !== 200) {\n message = data.descricaoRetorno;\n }\n\n callback({\n type: message ? MessageType.ERROR : MessageType.NONE,\n description: message,\n });\n dispatch({\n type: PSFTypes.CHANGE_NEW_PASSWORD,\n payload: {\n clear: message ? false : true,\n },\n });\n },\n (error) => {\n callback({ type: MessageType.ERROR, description: error.message });\n dispatch({\n type: PSFTypes.CHANGE_NEW_PASSWORD,\n payload: {\n clear: false,\n },\n });\n },\n false\n );\n };\n};\n\nexport const setDocument = (document: string) => {\n return {\n type: PSFTypes.SET_DOCUMENT_FORGOT_PASSWORD,\n payload: {\n document: document,\n },\n };\n};\n\nexport const createNewAccount = (\n id: string,\n document: string,\n password: string,\n callback: SimpleCallback\n) => {\n return (dispatch: Dispatch) => {\n callApi(\n {\n method: \"POST\",\n url: user_new_account_url,\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: qs.stringify({\n identificadorTransacaoConsulta: id,\n cpfCliente: getRawText(document),\n senha: password,\n flagReceberNovidades: \"S\",\n }),\n },\n ({ data }) => {\n let message = \"\";\n if (data.codigoRetorno !== 201) {\n message = data.descricaoRetorno;\n }\n\n callback({\n type: message ? MessageType.ERROR : MessageType.NONE,\n description: message,\n });\n dispatch({\n type: PSFTypes.CREATE_NEW_ACCOUNT,\n payload: {\n clear: message ? false : true,\n },\n });\n },\n (error) => {\n callback({ type: MessageType.ERROR, description: error.message });\n dispatch({\n type: PSFTypes.CREATE_NEW_ACCOUNT,\n payload: {\n clear: false,\n },\n });\n },\n false\n );\n };\n};\n\nexport const getItaucardOffer = (\n clientType: ClientType\n): Promise<{ hasOffer: boolean; value: number; message: string }> => {\n return new Promise((resolve) => {\n const user = getUserSession();\n const postData = {\n ...defaultBody,\n cpfUsuario: \"11111111111\",\n modulo: 18,\n rotina: 101,\n service: \"ofertas\",\n functionality: \"search\",\n cliCpf: user.document,\n idProcesso: user.sessionId,\n origemOferta: clientType === \"web\" ? \"PW\" : \"TO\",\n tipoOferta: 5,\n };\n\n callApi(\n {\n method: \"POST\",\n url: itaucard_offer_url,\n data: postData,\n },\n ({ data }) => {\n if (data.codigoRetorno === 200) {\n const objects = data.objectsReturn;\n const hasOffer = objects.hasOferta.toUpperCase() === \"S\";\n resolve({\n hasOffer: hasOffer,\n value: hasOffer\n ? parseFloat(objects.oferta.dadosOfertaItau.valorLimite)\n : 0,\n message: hasOffer ? objects.oferta.mensagemTela : \"\",\n });\n } else {\n resolve({\n hasOffer: false,\n value: 0,\n message: \"\",\n });\n }\n },\n () =>\n resolve({\n hasOffer: false,\n value: 0,\n message: \"\",\n })\n );\n });\n};\n\nexport const getFinanceInfo = (): Promise<{\n withdrawalLimit: number;\n withdrawalLimitCellphone: number;\n}> => {\n return new Promise((resolve) => {\n const user = getUserSession();\n const postData = {\n ...defaultBody,\n cpfUsuario: \"11111111111\",\n modulo: 18,\n rotina: 101,\n service: \"infofinanceiras\",\n functionality: \"v2/getInformacoesFinanceiras\",\n cliCPF: user.document,\n idProcesso: user.sessionId,\n };\n\n callApi(\n {\n method: \"POST\",\n url: finance_info_url,\n data: postData,\n },\n ({\n data: {\n codigoRetorno,\n objectsReturn: {\n Header: { informacoesFinanceirasContaVO },\n },\n },\n }) => {\n if (codigoRetorno === 200) {\n resolve({\n withdrawalLimit: parseFloat(\n informacoesFinanceirasContaVO.vrDisponivelSaqueFacil\n ),\n withdrawalLimitCellphone: parseFloat(\n informacoesFinanceirasContaVO.limiteDisponivelCelular\n ),\n });\n } else {\n resolve({\n withdrawalLimit: 0,\n withdrawalLimitCellphone: 0,\n });\n }\n },\n () =>\n resolve({\n withdrawalLimit: 0,\n withdrawalLimitCellphone: 0,\n })\n );\n });\n};\n\nexport const getPersonalLoan = (\n clientType: ClientType\n): Promise => {\n return new Promise((resolve) => {\n const user = getUserSession();\n const postData = {\n ...defaultBody,\n cpfUsuario: \"11111111111\",\n modulo: 18,\n rotina: 101,\n service: \"ofertas\",\n functionality: \"search\",\n cliCpf: user.document,\n idProcesso: user.sessionId,\n origemOferta: clientType === \"web\" ? \"PW\" : \"TO\",\n tipoOferta: 4,\n };\n\n callApi(\n {\n method: \"POST\",\n url: itaucard_offer_url,\n data: postData,\n },\n ({ data }) => {\n if (data.codigoRetorno === 200) {\n const objects = data.objectsReturn;\n const hasOffer = objects.hasOferta.toUpperCase() === \"S\";\n resolve({\n hasOffer: hasOffer,\n value: hasOffer\n ? parseFloat(objects.oferta.dadosOferta.valorLimite)\n : 0,\n message: hasOffer ? objects.oferta.mensagemTela : \"\",\n expiration: hasOffer\n ? new Date(objects.oferta.dadosOferta.dataValidade)\n : null,\n });\n } else {\n resolve({\n hasOffer: false,\n value: 0,\n message: \"\",\n expiration: null,\n });\n }\n },\n () =>\n resolve({\n hasOffer: false,\n value: 0,\n message: \"\",\n expiration: null,\n })\n );\n });\n};\n\nexport const setClientType = (clientType: ClientType): SetClientType => {\n return {\n type: PSFTypes.SET_CLIENT_TYPE,\n payload: {\n clientType,\n },\n };\n};\n\nexport const setIsWaitingVerificationCode = (\n isWaitingVerificationCode: boolean\n): SetIsWaitingVerificationCode => {\n return {\n type: PSFTypes.SET_IS_WAITING_VERIFICATION_CODE,\n payload: {\n isWaitingVerificationCode,\n },\n };\n};\n","import styled, { keyframes } from 'styled-components';\n\ninterface LoadingProps {\n color?: string;\n}\n\nconst animation = keyframes`\n 0%, 100% {\n transform: scale(0);\n }\n\n 50% {\n transform: scale(1);\n }\n`;\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n justify-content: center;\n\n > span {\n background: ${({ theme, color }) => color || theme.colors.marisaBlack0};\n }\n`;\n\nexport const Circle = styled.span`\n border-radius: 4px;\n\n height: 8px;\n width: 8px;\n\n animation: ${animation} 1.5s infinite;\n\n &:nth-child(2) {\n animation-delay: 0.2s;\n }\n\n &:nth-child(3) {\n animation-delay: 0.4s;\n }\n`;\n","import React from 'react';\nimport { Container, Circle } from './styles';\n\nexport interface LoadingProps {\n color?: string;\n}\n\nconst Loading: React.FC = ({ color, ...rest }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default Loading;\n","import styled from 'styled-components';\n\nexport const Container = styled.span`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 2px;\n\n color: ${({ theme }) => theme.colors.mbankError100};\n\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1rem;\n\n margin-top: 0.375rem;\n`;\n","import React from 'react';\nimport IconError from '../../../assets/images/error-icon.svg';\n\nimport { Container } from './styles';\n\ninterface ErrorMessageProps {\n message: string;\n}\n\nconst ErrorMessage: React.FC = ({ message }) => {\n return (\n \n {message}\n {message}\n \n );\n};\n\nexport default ErrorMessage;\n","import React from 'react';\nimport { Controller, Control } from 'react-hook-form';\nimport ReCAPTCHA, { ReCAPTCHAProps } from 'react-google-recaptcha';\nimport ErrorMessage from '../ErrorMessage';\nimport styled from 'styled-components';\n\ninterface CaptchaFormProps extends Omit {\n name: string;\n control: Control;\n error?: string;\n onChange?: (token: string) => void;\n}\n\nconst ResponsiveField = styled.div`\n @media only screen and (max-width: 600px) {\n transform: scale(0.85);\n transform-origin: 0 0;\n }\n`;\n\nconst CaptchaForm: React.FC = ({\n name,\n control,\n error,\n onChange,\n ...rest\n}) => {\n return (\n (\n \n \n\n {error && }\n \n )}\n />)\n};\n\nexport default CaptchaForm;\n","import styled, { css } from 'styled-components';\n\ninterface ButtonProps {\n disabled?: boolean;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport const ButtonContainer = styled.button`\n background: ${({ theme }) => theme.colors.marisaPrimary100};\n border: 0;\n border-radius: 6px;\n\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-size: 12px;\n font-weight: 500;\n text-transform: uppercase;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n\n gap: 1rem;\n\n padding: 0 2rem;\n height: 2.75rem;\n width: 100%;\n\n transition: all 0.2s;\n\n &:hover {\n opacity: 0.9;\n }\n\n ${({ disabled }) =>\n disabled &&\n css`\n background: ${({ theme }) => theme.colors.mbankBlack40};\n pointer-events: none;\n `}\n`;\n","import React, { ButtonHTMLAttributes } from \"react\";\n\nimport { ButtonContainer } from \"./styles\";\n\ninterface ButtonProps extends ButtonHTMLAttributes {\n disabled?: boolean;\n}\n\nconst Button: React.FC = ({ children, disabled, ...rest }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React, { forwardRef } from 'react';\nimport ReactInputMask, { Props } from 'react-input-mask';\n\nconst InputMask = forwardRef(({ ...rest }, ref) => {\n return ;\n});\n\nexport default InputMask;\n","import styled, { css } from 'styled-components';\nimport ReactInputMask from '../InputMask';\n\ninterface InputFieldProps {\n isPassword?: boolean;\n}\n\nexport const Container = styled.label`\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n strong {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1rem;\n\n position: absolute;\n top: 50%;\n left: 0;\n\n transform: translateY(-50%);\n transform-origin: 0 0;\n transition: all 0.2s ease;\n }\n\n input {\n border: 0;\n border-bottom: 1px solid ${({ theme }) => theme.colors.marisaBlack60};\n height: 2rem;\n transition: all 0.15s;\n\n &:focus {\n background: none;\n outline: none;\n\n border-color: ${({ theme }) => theme.colors.marisaBlack90};\n }\n\n &:not(:placeholder-shown) + strong,\n &:focus + strong {\n color: ${({ theme }) => theme.colors.marisaBlack40};\n transform: translateY(-2rem) scale(0.75);\n }\n }\n`;\n\nexport const InputField = styled.input`\n ${({ isPassword }) =>\n isPassword &&\n css`\n letter-spacing: 5px;\n `}\n`;\n\nexport const InputMask = styled(ReactInputMask)`\n ${({ isPassword }) =>\n isPassword &&\n css`\n letter-spacing: 5px;\n `}\n`;\n\nexport const ToggleVisibilityButton = styled.button.attrs({\n type: 'button',\n})`\n background: transparent;\n border: 0;\n\n position: absolute;\n top: 0;\n right: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 20px;\n`;\n\nexport const ValidateIcon = styled.div`\n position: absolute;\n right: 0;\n top: 5px;\n\n height: 16px;\n width: 16px;\n\n background: ${({ theme }) => theme.colors.marisaSuccess100};\n border-radius: 8px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n transition: all 0.4s;\n`;\n","import React, {\n forwardRef,\n InputHTMLAttributes,\n useCallback,\n useState,\n} from 'react';\nimport ReactInputMask from 'react-input-mask';\nimport IconCheck from '../../../assets/images/check-icon.svg';\nimport IconHidden from '../../../assets/images/noSee.svg';\nimport IconVisible from '../../../assets/images/see.svg';\nimport {\n Container,\n InputField,\n InputMask,\n ToggleVisibilityButton,\n ValidateIcon,\n} from './styles';\n\nexport interface InputProps extends InputHTMLAttributes {\n format?: string;\n isValid?: boolean;\n}\n\nconst Input = forwardRef(\n ({ type, placeholder, format, value, isValid = false, ...rest }, ref) => {\n const [inputType, setInputType] = useState(type ?? 'text');\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n const togglePasswordVisibility = useCallback(() => {\n setInputType(isPasswordVisible ? 'password' : 'text');\n setIsPasswordVisible(!isPasswordVisible);\n }, [isPasswordVisible, setIsPasswordVisible]);\n\n const props = {\n type: inputType,\n placeholder: ` `,\n isPassword: type === 'password',\n ...rest,\n };\n\n return (\n \n {isValid && (\n \n \"\"\n \n )}\n\n {format ? (\n \n ) : (\n \n )}\n\n {placeholder}\n\n {type === 'password' && (\n \n \n \n )}\n \n );\n },\n);\n\nexport default Input;\n","import React, { useCallback } from 'react';\nimport { Controller, Control, ControllerRenderProps } from 'react-hook-form';\nimport Input, { InputProps } from '../Input';\nimport ErrorMessage from '../ErrorMessage';\n\ninterface InputFormProps extends InputProps {\n name: string;\n control: Control;\n defaultValue?: string;\n error?: string;\n onFormat?: (value: string) => string;\n}\n\ninterface RenderProps {\n field: ControllerRenderProps;\n}\n\nconst InputForm: React.FC = ({\n name,\n control,\n defaultValue = '',\n error,\n ...rest\n}) => {\n const renderInput = useCallback(\n ({ field }: RenderProps) => {\n return (\n <>\n \n\n {error && }\n \n );\n },\n [rest, error],\n );\n\n return (\n \n );\n};\n\nexport default InputForm;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 328px;\n box-sizing: border-box;\n\n @media only screen and (min-width: 768px) {\n max-width: 456px;\n }\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 22px;\n font-weight: 400;\n line-height: 2rem;\n margin-bottom: 3rem;\n\n @media only screen and (min-width: 768px) {\n font-size: 26px;\n }\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n text-transform: uppercase;\n\n div {\n padding: 0.625rem;\n }\n }\n\n #button-area {\n justify-content: center;\n align-items: center;\n display: flex;\n margin-top: 0.875rem;\n }\n\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1.5rem;\n }\n`;\n\nexport const Form = styled.form``;\n\nexport const Field = styled.div`\n margin-bottom: 2.5rem;\n`;\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport { validate as validateDocument } from 'gerador-validador-cpf';\nimport React, { useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Link, useHistory } from 'react-router-dom';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { onlyNumbers } from 'shared/utils';\nimport * as yup from 'yup';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport Captcha from '~/components/Forms/CaptchaForm';\nimport Button from '../../../components/Button';\nimport InputForm from '../../../components/Forms/InputForm';\nimport { Container, Field, Form } from './styles';\nimport { VerifyParams } from '~/routes/RouteParams';\n\ninterface SignUpFormData {\n document: string;\n birthDate: string;\n captcha: string;\n}\n\nconst schema = yup.object({\n document: yup.string().required('O CPF deve ser informado.'),\n birthDate: yup.string().required('A data de nascimento deve ser preenchida'),\n captcha: yup.string().required('O captcha deve ser preenchido.'),\n});\n\nconst SignUp: React.FC = () => {\n const {\n validationUser, loadingValidate, getAuthToken, getClientData,\n } = useAuth();\n const history = useHistory();\n\n const {\n control,\n handleSubmit,\n watch,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n });\n\n const handleError = () => {\n console.log('error');\n };\n\n const document = watch('document');\n\n const isDocumentValid = useMemo(() => {\n const rawDocument = document ? onlyNumbers(document) : undefined;\n\n if (rawDocument?.length === 11) {\n return validateDocument(document);\n }\n\n return false;\n }, [document]);\n\n const toValidation = useCallback(\n (data) => {\n history.push('/validation/verify', {\n celular: data.celular,\n email: data.email,\n token: data.token,\n flow: 'signup',\n });\n },\n [history],\n );\n\n const getData = useCallback(\n (document: string, token: string) => {\n getClientData(document, token, toValidation);\n },\n [toValidation, validationUser],\n );\n\n const onSubmit = useCallback(\n (data: SignUpFormData) => {\n getAuthToken({\n document: data.document,\n birthDate: data.birthDate,\n callBack: getData,\n captcha: data.captcha,\n });\n },\n [toValidation, validationUser],\n );\n\n return (\n \n

\n Olá, para realizar seu cadastro\n
\n informe os dados abaixo:\n

\n\n
\n \n \n \n\n \n \n \n\n \n setValue('captcha', token)}\n />\n \n\n \n\n
\n \n
Voltar
\n \n
\n \n
\n );\n};\n\nexport default SignUp;\n","const PSF_auth_host = process.env.REACT_APP_PSF_AUTH_HOST;\nconst PSF_services_host = process.env.REACT_APP_PSF_SERVICES_HOST;\nconst PSF_user_host = process.env.REACT_APP_PSF_USER_HOST;\n\n/* PSF */\nexport const auth_url = `https://${PSF_auth_host}/security/api/auth/app`;\n\nexport const service_url = `https://${PSF_services_host}/psfclientservices/rest/v2/dashboard/searchClient`;\n\nexport const user_url = `https://${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/consultaIdentificacaoPositiva/DOCUMENT/0`;\nexport const user_validation_url = `https://${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/validacaoIdentificacaoPositiva`;\nexport const user_new_password_url = `https://${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/alteracaoSenhaByCpf/esqueci`;\nexport const user_new_account_url = `https://${PSF_user_host}/marisa-mobile-services/rest/cartaomarisa/usuarios/registrarByCpf`;\n\nexport const invoices_url = `https://${PSF_services_host}/financialservices/rest/v2/fatura/getListaFaturas`;\nexport const invoice_detail_url = `https://${PSF_services_host}/financialservices/rest/v2/fatura/getFatura`;\nexport const invoice_send_email_url = `https://${PSF_services_host}/financialservices/rest/v2/fatura/getFaturaAtualEmail`;\n\nexport const previous_invoice_pdf_url = `https://${PSF_services_host}/financialservices/rest/v2/fatura/getFaturaPDF`;\n\n// Negotiation\nexport const search_negotiation_url = `https://${PSF_services_host}/acordo/api/cliente/consulta`;\nexport const search_negotiation_offers_url = `https://${PSF_services_host}/acordo/api/acordo/ofertas`;\nexport const negociate_url = `https://${PSF_services_host}/acordo/api/acordo/efetivar`;\nexport const negociate_search = `https://${PSF_services_host}/acordo/api/acordo/consultar`;\nexport const negociate_send_email_search = `https://${PSF_services_host}/acordo/api/cliente/enviaBoleto`;\n\nexport const months = [\n { initials: 'Jan', description: 'Janeiro' },\n { initials: 'Fev', description: 'Fevereiro' },\n { initials: 'Mar', description: 'Março' },\n { initials: 'Abr', description: 'Abril' },\n { initials: 'Mai', description: 'Maio' },\n { initials: 'Jun', description: 'Junho' },\n { initials: 'Jul', description: 'Julho' },\n { initials: 'Ago', description: 'Agosto' },\n { initials: 'Set', description: 'Setembro' },\n { initials: 'Out', description: 'Outubro' },\n { initials: 'Nov', description: 'Novembro' },\n { initials: 'Dez', description: 'Dezembro' },\n];\n\nexport const menu_home = 'Início';\nexport const menu_duplicate = '2ª via da fatura';\nexport const menu_invoiceDetail = 'Detalhamento de faturas';\nexport const menu_negociation = 'Negociação de dívidas';\n\nexport const BREAKPOINT = {\n desktop: 'max-width: 1440px',\n laptop: 'max-width: 1024px',\n tablet: 'max-width: 768px',\n mobileLarge: 'max-width: 425px',\n mobileMedium: 'max-width: 375px',\n mobileSmall: 'max-width: 320px',\n};\n","import styled from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.625rem;\n font-weight: 400;\n line-height: 2rem;\n margin-bottom: 4rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n text-transform: uppercase;\n\n div {\n padding: 0.625rem;\n }\n }\n\n #button-area {\n justify-content: center;\n align-items: center;\n display: flex;\n margin-top: 0.875rem;\n }\n\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n\n gap: 1.5rem;\n }\n\n @media only screen and (min-width: 768px) and (${BREAKPOINT.desktop}) {\n min-width: 328px;\n }\n`;\n\nexport const Form = styled.form``;\n\nexport const Field = styled.div`\n margin-bottom: 2.5rem;\n`;\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport { validate as validateDocument } from 'gerador-validador-cpf';\nimport React, { useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Link, useHistory } from 'react-router-dom';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { onlyNumbers } from 'shared/utils';\nimport * as yup from 'yup';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport Captcha from '~/components/Forms/CaptchaForm';\nimport Button from '../../../components/Button';\nimport InputForm from '../../../components/Forms/InputForm';\nimport { Container, Field, Form } from './styles';\nimport { VerifyParams } from '~/routes/RouteParams';\n\ninterface SignUpFormData {\n document: string;\n birthDate: string;\n captcha: string;\n}\n\nconst schema = yup.object({\n document: yup.string().required('O CPF deve ser informado.'),\n birthDate: yup.string().required('A data de nascimento deve ser preenchida'),\n captcha: yup.string().required('O captcha deve ser preenchido.'),\n});\n\nconst ForgetPassword: React.FC = () => {\n const { validationUser, loadingValidate, getAuthToken, getClientData } =\n useAuth();\n const history = useHistory();\n\n const {\n control,\n handleSubmit,\n watch,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n });\n\n const document = watch('document');\n\n const isDocumentValid = useMemo(() => {\n const rawDocument = document ? onlyNumbers(document) : undefined;\n\n if (rawDocument?.length === 11) {\n return validateDocument(document);\n }\n\n return false;\n }, [document]);\n\n const toValidation = useCallback(\n data => {\n if (data.email || data.celular) {\n history.push('/validation/verify', {\n celular: data.celular,\n email: data.email,\n token: data.token,\n flow: 'forgot',\n });\n } else {\n history.push('/validation/verify-help');\n }\n },\n [history],\n );\n\n const getData = useCallback(\n (document: string, token: string) => {\n getClientData(document, token, toValidation);\n },\n [toValidation, validationUser],\n );\n\n const onSubmit = useCallback(\n (data: SignUpFormData) => {\n getAuthToken({\n document: data.document,\n birthDate: data.birthDate,\n callBack: getData,\n captcha: data.captcha,\n });\n },\n [toValidation, validationUser],\n );\n\n return (\n \n

\n Esqueci minha senha\n

\n\n
\n \n \n \n\n \n \n \n\n \n setValue('captcha', token)}\n />\n \n\n \n\n
\n \n
Voltar
\n \n
\n \n
\n );\n};\n\nexport default ForgetPassword;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 328px;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.625rem;\n font-weight: 400;\n line-height: 2rem;\n margin-bottom: 4rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n text-transform: uppercase;\n }\n\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n\n gap: 1.5rem;\n }\n`;\n\nexport const Form = styled.form`\n margin-bottom: 2rem;\n`;\n\nexport const Field = styled.div`\n margin-bottom: 2.5rem;\n`;\n\nexport const RegisterContainer = styled.span`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-size: 0.6875rem;\n line-height: 0.875rem;\n text-transform: uppercase;\n\n a {\n margin-left: 0.3rem;\n }\n`;\n\nexport const MBankImage = styled.img`\n width: 59.69px;\n height: 45.92px;\n`;\n\nexport const HideIcon = styled.div`\n display: none;\n`;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n text-align: left;\n padding-top: 14px;\n padding-bottom: 19px;\n padding-right: 17px;\n border-radius: 6px;\n`;\n\nexport const MBankImage = styled.img`\n margin-top: 5px;\n margin-left: 10px;\n margin-right: 16px;\n max-width: 59.69px;\n max-height: 45.92px;\n\n @media only screen and (max-device-width: 440px) {\n width: 49.69px;\n height: 35.92px;\n }\n`;\n\nexport const Content = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const ToastDescription = styled.section`\n width: 90%;\n font-family: 'PlutoCond';\n font-weight: 400;\n font-size: 14px;\n line-height: 16px;\n color: '#454242';\n\n @media only screen and (max-device-width: 440px) {\n font-size: 12px;\n }\n`;\n\nexport const PinkLink = styled.a`\n color: rgb(236, 69, 168);\n font-family: 'PlutoCond';\n`;\n","import {\n CardInfoType,\n CardStatusType,\n InvoiceType,\n UserType,\n} from 'shared/redux/psf/types';\nimport { message as messageAntd } from 'antd';\nimport { Message, MessageType, UserStatusType } from './types';\nimport { months } from './consts';\n\nexport const getRawText = (str: string): string => str\n .split('.')\n .join('')\n .split('-')\n .join('')\n .split('/')\n .join('')\n .split('(')\n .join('')\n .split(')')\n .join('')\n .split(' ')\n .join('');\n\nexport const formatCellphone = (cellphone: string): string => `(${cellphone.slice(0, 2)}) ${cellphone.slice(\n 2,\n cellphone.length === 10 ? 6 : 7,\n)}-${cellphone.slice(cellphone.length === 10 ? 6 : 7, 11)}`;\n\nexport const camelCase = (str: string): string => {\n const words = str.trim().split(' ');\n let text = '';\n\n words.forEach(\n (word, index) => (text += `${index === 0 ? '' : ' '}${word[0] ?? ''.toUpperCase()}${word\n .slice(1)\n .toLowerCase()}`),\n );\n\n return text;\n};\n\nexport const formatMoney = (value: string, withUnit = false): string => {\n const money = new Intl.NumberFormat('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n minimumFractionDigits: 2,\n }).format(parseFloat(value));\n\n return withUnit ? money : money.replace('R$', '');\n};\n\nexport const getExtendedDate = (dateStr: string) => {\n const dateSplit = dateStr.split('/');\n const date: Date = new Date(\n parseInt(dateSplit[2], 10),\n parseInt(dateSplit[1], 10) - 1,\n parseInt(dateSplit[0], 10),\n );\n\n return `${String(date.getDate()).padStart(2, '0')} ${months[\n date.getMonth()\n ].initials.toUpperCase()}`;\n};\n\nexport const getDueMonth = (cutDay: number, date: Date): number => {\n const internalDate = new Date(date.getTime());\n if (cutDay >= internalDate.getDate()) {\n internalDate.setDate(cutDay);\n internalDate.setDate(internalDate.getDate() + 11);\n return internalDate.getMonth();\n }\n return internalDate.getMonth() + 1;\n};\n\nexport const getStrToDate = (date: string): Date => {\n const split = date.split('/');\n\n return new Date(\n parseInt(split[2], 10),\n parseInt(split[1], 10) - 1,\n parseInt(split[0], 10),\n );\n};\n\nexport const showMessage = (message: Message): void => {\n switch (message.type) {\n case MessageType.ERROR:\n messageAntd.error(message.description);\n break;\n case MessageType.SUCCESS:\n messageAntd.success(message.description);\n break;\n case MessageType.INFORMATION:\n messageAntd.info(message.description);\n break;\n case MessageType.LOADING:\n messageAntd.loading(message.description);\n break;\n case MessageType.WARNING:\n messageAntd.warning(message.description);\n break;\n }\n};\n\nexport const validateEmail = (email: string): boolean => {\n if (/^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(email)) {\n return true;\n }\n\n return false;\n};\n\nexport const formatDocument = (document: string): string => {\n if (document) {\n const rawDocument = getRawText(document).replace(/\\D/g, '');\n const mask = rawDocument.length > 11 ? '**.***.***/****-**' : '***.***.***-**';\n let rawPos = 0;\n let masked = '';\n for (let i = 0; i < mask.length; i++) {\n if (!rawDocument[rawPos]) {\n break;\n }\n\n if (mask[i] === '*') {\n masked += rawDocument[rawPos];\n rawPos++;\n } else {\n masked += mask[i];\n }\n }\n return masked;\n }\n\n return document;\n};\n\nexport const hasValueStr = (value: any): boolean => value !== undefined && String(value).trim().length > 0;\n\nexport const getRawMoney = (value: string): string => value.replace('R$', '').split(' ').join('');\n\nexport const getUserStatus = (\n user: UserType,\n cardInfo: CardInfoType,\n hasNegotiation: boolean,\n): UserStatusType => {\n if (cardInfo.type === InvoiceType.PENDING) {\n return UserStatusType.PENDING;\n }\n if (user.cardStatus === CardStatusType.OVERDUE) {\n return hasNegotiation\n ? UserStatusType.IN_DEBT_WITH_AGREEMENT\n : UserStatusType.IN_DEBT;\n }\n\n return UserStatusType.IN_DAY;\n};\n\nexport const getUserStatusMbank = (\n cardStatus: CardStatusType,\n type: number,\n hasNegotiation: boolean,\n): UserStatusType => {\n if (type === InvoiceType.PENDING) {\n return UserStatusType.PENDING;\n }\n if (cardStatus === CardStatusType.OVERDUE) {\n return hasNegotiation\n ? UserStatusType.IN_DEBT_WITH_AGREEMENT\n : UserStatusType.IN_DEBT;\n }\n\n return UserStatusType.IN_DAY;\n};\n\nexport const isValidHttpUrl = (str: string): boolean => {\n let url;\n\n try {\n url = new URL(str);\n } catch {\n return false;\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:';\n};\n","var _path;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgQuestion = function SvgQuestion(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n fill: \"none\",\n viewBox: \"0 0 16 16\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BABABA\",\n d: \"M7.159.06C3.559.491.797 3.077.142 6.483c-.818 4.33 1.984 8.557 6.26 9.439.225.041 2.537.267 4.276-.308 2.946-1.149 4.746-3.263 5.278-6.423.02-.061.286-2.647-.778-4.74C13.767 1.558 10.658-.37 7.16.061zm.716 12.866c-.655 0-1.146-.492-1.146-1.129 0-.697.47-1.19 1.146-1.19.675-.02 1.187.493 1.187 1.17 0 .657-.491 1.15-1.187 1.15zm2.537-5.356c-.287.247-.573.472-.88.678-.45.307-.716.78-.716 1.395H6.975c-.082-.657-.041-1.395.552-1.867.348-.267.716-.493 1.003-.78.266-.287.532-.636.654-.985.144-.452-.204-.985-.593-1.129-.573-.205-1.268-.04-1.514.431-.143.267-.225.595-.348.924H5.011c-.184-.924.327-2.052 1.186-2.606 1.187-.74 3.212-.575 4.256.369 1.043.923 1.023 2.647-.041 3.57z\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgQuestion, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/question.5e2b8126.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useMemo } from 'react';\nimport {\n Container,\n MBankImage,\n PinkLink,\n ToastDescription,\n Content\n} from './styles';\nimport Close from '~/assets/images/close.png';\nimport MBankCard from '~/assets/images/mBankCard.png';\nimport { isValidHttpUrl } from '~/util';\n\ntype Props = {\n onClick: () => void;\n description: string;\n}\n\nconst CustomToastContent = ({ onClick, description }: Props) => {\n const formattedDescription = useMemo(() => {\n const words = description.split(' ');\n\n const message = [];\n words.forEach((word) => {\n if (isValidHttpUrl(word) || word.includes('www')) {\n message.push({`${word} `});\n } else {\n message.push(<>{`${word} `});\n }\n });\n\n return message;\n }, [description]);\n\n return (\n \n \n \n \n {formattedDescription}\n \n \n \n \n \n \n )\n}\n\nexport default CustomToastContent;\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport { validate as validateDocument } from 'gerador-validador-cpf';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useDispatch } from 'react-redux';\nimport { Link, useHistory } from 'react-router-dom';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { searchNegotationStatus } from 'shared/redux/psf/negotiation/actions';\nimport { onlyNumbers } from 'shared/utils';\nimport * as yup from 'yup';\nimport { message as toast } from 'antd';\nimport Captcha from '~/components/Forms/CaptchaForm';\nimport Button from '~/components/Button';\nimport InputForm from '~/components/Forms/InputForm';\nimport { Container, Field, Form, HideIcon, RegisterContainer } from './styles';\nimport CustomToastContent from '~/components/CustomToastContent';\n\ninterface SignInFormData {\n document: string;\n birthDate: string;\n captcha: string;\n}\n\nconst schema = yup.object({\n document: yup.string().required('O CPF deve ser informado.'),\n birthDate: yup.string().required('A senha deve ser informada.'),\n captcha: yup.string().required('O captcha deve ser preenchido.'),\n});\n\nconst SignIn: React.FC = () => {\n const { signIn } = useAuth();\n const history = useHistory();\n const dispatch = useDispatch();\n\n const [loading, setLoading] = useState(false);\n\n const {\n control,\n handleSubmit,\n watch,\n reset,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n });\n\n const document = watch('document');\n\n const isDocumentValid = useMemo(() => {\n const rawDocument = document ? onlyNumbers(document) : undefined;\n\n if (rawDocument?.length === 11) {\n return validateDocument(document);\n }\n\n return false;\n }, [document]);\n\n const onSubmit = useCallback(\n async (data: SignInFormData) => {\n const { document, birthDate, captcha } = data;\n\n setLoading(true);\n\n try {\n await signIn({\n document,\n birthDate,\n captcha,\n callback: async () => {\n dispatch(\n searchNegotationStatus(() => {\n setLoading(false);\n reset();\n history.push('/');\n }),\n );\n },\n });\n } catch (err) {\n toast.info({\n key: 'itau-offer',\n icon: ,\n content: (\n toast.destroy('itau-offer')}\n />\n ),\n duration: 5,\n });\n setLoading(false);\n }\n },\n [history, reset, signIn, dispatch],\n );\n\n return (\n \n

\n Entre com o seu CPF\n

\n\n
\n \n \n \n\n \n \n \n\n \n setValue('captcha', token)}\n />\n \n\n \n
\n
\n );\n};\n\nexport default SignIn;\n","import styled from 'styled-components';\nimport AttentionImage from '~/assets/images/attention.png';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n padding: 9.25rem 0;\n\n > header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n margin-bottom: 0.375rem;\n }\n\n @media(${BREAKPOINT.tablet}) {\n padding: 1rem 0;\n }\n`;\n\nexport const Attention = styled.div`\n background-image: url(${AttentionImage});\n background-position: center;\n background-color: ${({ theme }) => theme.colors.mbankPrimary40};\n background-repeat: no-repeat;\n border-radius: 1.87rem;\n height: 3.75rem;\n width: 3.75rem;\n`;\n\nexport const Title = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-family: PlutoSans;\n font-size: 1rem;\n margin-top: 1.5rem;\n`;\n\nexport const Description = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: PlutoSans;\n font-size: 0.875rem;\n margin-top: 1rem;\n text-align: center;\n`;\n\nexport const Tip = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: PlutoSans;\n font-size: 0.75rem;\n margin-top: 1.5rem;\n opacity: 0.66;\n text-align: center;\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport { UserStatusType } from '~/util/types';\nimport { Attention, Container, Description, Title, Tip } from './styles';\n\ninterface InDebtInfoProps {\n type: UserStatusType;\n}\n\nconst InDebtInfo: React.VFC = ({ type }) => {\n\n const description = useMemo(() => {\n if (type === UserStatusType.IN_DEBT) {\n return 'Parece que sua última fatura ainda está pendente, por isso seu cartão foi bloqueado.';\n }\n\n return 'Identificamos que você tem um acordo com a Marisa. No final do período desse acordo você poderá voltar a comprar com o seu Cartão Mbank.';\n }, [type]);\n\n const RenderTip = useCallback(() => {\n if (type === UserStatusType.IN_DEBT) {\n return Para regularizar a sua situação entre em contato conosco.\n }\n\n return null;\n }, [type]);\n\n return (\n \n \n {type === UserStatusType.IN_DEBT ? 'Fatura pendente' : 'Acordo em vigência'}\n\n \n {description}\n \n\n \n \n )\n}\n\nexport default InDebtInfo;\n","import React, {\n useState, useEffect, useRef, useCallback,\n} from 'react';\n\n// @ts-ignore\nimport easyScroll from 'easy-scroll';\nimport ItemCarousel from '../ItemCarousel';\nimport { MenuContainer } from './styles';\n\nexport interface MenuItemType {\n name: string;\n data: any;\n}\n\ninterface Props {\n initialItem?: string;\n items: MenuItemType[];\n style?: React.CSSProperties;\n onSelectItem(data: any): void;\n}\n\nlet slider: any;\nlet isDown = false;\nlet startX: number;\nlet scrollLeft: number;\nlet registerListeners = true;\nlet isScrolling: number | undefined;\nlet initial = true;\nlet scrollDuration = 500;\n\nconst ScrollCarousel: React.FunctionComponent = ({\n initialItem,\n items,\n style,\n onSelectItem,\n}) => {\n const [menuItems, setMenuItems] = useState([]);\n const [marginHorizontal, _setMarginHorizontal] = useState(0);\n const [selectedItem, setSelectedItem] = useState(-1);\n\n const marginHorizontalRef = useRef(marginHorizontal);\n const setMarginHorizontal = (margin: number) => {\n marginHorizontalRef.current = margin;\n _setMarginHorizontal(margin);\n };\n\n const handleSelectItem = useCallback((\n event: React.MouseEvent,\n index: number,\n ) => {\n setSelectedItem(index);\n\n const menuItem = document.getElementById(`${index}-month`);\n if (menuItem) {\n if (event.pageX || scrollDuration === 1) {\n const screenCenter = window.screen.width / 2;\n const x = menuItem.offsetLeft - marginHorizontalRef.current - 26;\n\n const pageX = event.pageX ?? 0;\n\n easyScroll({\n scrollableDomEle: slider,\n direction: pageX > screenCenter ? 'right' : 'left',\n duration: scrollDuration,\n easingPreset: 'easeInQuad',\n scrollAmount:\n pageX > screenCenter\n ? x - slider.scrollLeft\n : slider.scrollLeft - x,\n });\n }\n if (items[index] && items[index].data) {\n onSelectItem(items[index].data);\n }\n }\n }, [items, onSelectItem]);\n\n useEffect(() => {\n setMenuItems(\n items.map((item, index) => (\n \n )),\n );\n }, [selectedItem, marginHorizontal, items, style, handleSelectItem]);\n\n useEffect(() => {\n registerListeners = true;\n initial = true;\n window.addEventListener('resize', () => {\n if (slider) {\n setMarginHorizontal(slider.offsetWidth / 2 - 70);\n }\n });\n }, []);\n\n useEffect(() => {\n if (initialItem && initial) {\n for (const i in items) {\n if (items[i].name === initialItem) {\n const menuItem = document.getElementById(`${i}-month`);\n if (menuItem) {\n scrollDuration = 1;\n menuItem?.click();\n scrollDuration = 500;\n\n initial = false;\n }\n break;\n }\n }\n }\n });\n\n function handleMouseUp(event: React.MouseEvent) {\n isDown = false;\n const index = Math.round(slider.scrollLeft / 100);\n handleSelectItem(event, index);\n }\n\n function handleRef(ref: any) {\n slider = ref;\n\n if (slider && registerListeners) {\n registerListeners = false;\n const margin = slider.offsetWidth / 2 - 60;\n setMarginHorizontal(margin);\n\n slider.addEventListener('mousedown', (e: MouseEvent) => {\n isDown = true;\n startX = e.pageX - slider.offsetLeft;\n scrollLeft = slider.scrollLeft;\n });\n slider.addEventListener('mouseleave', () => (isDown = false));\n slider.addEventListener('mouseup', handleMouseUp);\n slider.addEventListener('mousemove', (e: MouseEvent) => {\n if (!isDown) return;\n\n e.preventDefault();\n const x = e.pageX - slider.offsetLeft;\n const walk = (x - startX) * 2;\n slider.scrollLeft = scrollLeft - walk;\n });\n slider.addEventListener(\n 'scroll',\n (e: React.MouseEvent) => {\n if (isDown) return;\n\n window.clearTimeout(isScrolling);\n\n isScrolling = setTimeout(() => handleMouseUp(e), 66);\n },\n false,\n );\n }\n }\n\n return (\n
\n \n
\n {menuItems}\n
\n \n
\n );\n};\n\nexport default ScrollCarousel;\n","var _path, _path2;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgBarcode = function SvgBarcode(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 9,\n viewBox: \"0 0 22 9\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 1C0 0.447715 0.447715 0 1 0H13C13.5523 0 14 0.447715 14 1C14 1.55228 13.5523 2 13 2H1C0.447715 2 0 1.55228 0 1Z\",\n fill: \"#1B1557\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 8C0 7.44772 0.447715 7 1 7H21C21.5523 7 22 7.44772 22 8C22 8.55228 21.5523 9 21 9H1C0.447715 9 0 8.55228 0 8Z\",\n fill: \"#1B1557\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgBarcode, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/barcode.1d0784f2.svg\";\nexport { ForwardRef as ReactComponent };","import styled, { css } from 'styled-components';\nimport ButtonDefault from '~/components/Button';\nimport { ReactComponent as QuestionSVG } from '~/assets/images/question.svg';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n\n > header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n margin-bottom: 0.375rem;\n }\n\n > h5 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.125rem;\n\n margin-bottom: 1.75rem;\n }\n`;\n\nexport const Label = styled.section`\n display: flex;\n flex-direction: column;\n\n strong {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.25rem;\n font-weight: 400;\n line-height: 1.375rem;\n }\n`;\n\nexport const Title = styled.span`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: PlutoSans;\n font-size: 0.875rem;\n font-weight: normal;\n line-height: 1.125rem;\n\n margin-bottom: 0.5rem;\n`;\n\nexport const MoneySymbol = styled.span`\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 0.75rem;\n font-weight: normal;\n line-height: 1rem;\n margin-right: 0.25rem;\n`;\n\nexport const Bar = styled.div`\n background: ${({ theme }) => theme.colors.marisaBlack5};\n border-radius: 4px;\n height: 8px;\n width: 100%;\n`;\n\ninterface ProgressProp {\n isFull: boolean;\n}\n\nexport const Progress = styled.div`\n background: linear-gradient(\n 87.79deg,\n ${({ theme }) => theme.colors.mbankPrimary100} -1.15%,\n ${({ theme }) => theme.colors.mbankSecondary100} 85.69%\n );\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n\n height: 100%;\n\n ${({ isFull }) => isFull && css`\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n `}\n`;\n\nexport const LabelItem = styled.span`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.081rem;\n`;\n\nexport const Row = styled.section`\n align-items: center;\n border-bottom-color: ${({ theme }) => theme.colors.marisaBlack5};\n border-bottom-style: solid;\n border-bottom-width: 0.063rem;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const DueDate = styled(Row)`\n padding: 0.875rem 0 1rem 0;\n`;\n\nexport const ItemLabel = styled.span`\n font-weight: normal;\n font-size: 0.75rem;\n margin-right: 0.5rem;\n text-transform: uppercase;\n`;\n\nexport const ItemValue = styled.span`\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.25rem;\n font-weight: 400;\n line-height: 1.544rem;\n`;\n\nexport const BestBuyDay = styled(Row)`\n padding: 0.938rem 0 1.438rem 0;\n`;\n\nexport const OthersValuesTitle = styled.h1`\n color: ${({ theme }) => theme.colors.marisaBlack100};\n font-family: PlutoSans;\n font-style: normal;\n font-weight: normal;\n font-size: 0.75rem;\n line-height: 0.938rem;\n margin: 1.928rem 0 0;\n text-transform: uppercase;\n`;\n\nexport const CreditApproved = styled(Row)`\n padding: 1.298rem 0 1.053rem 0;\n`;\n\nexport const QuestionImage = styled(QuestionSVG)`\n cursor: pointer;\n margin-left: 0.5rem;\n transition: all 0.3s ease-in-out;\n\n &:hover {\n opacity: 0.5;\n }\n`;\n\nexport const QuestionContainer = styled.div`\n align-items: center;\n display: flex;\n`;\n\nexport const Loot = styled(Row)`\n padding: 0.838rem 0 0.926rem 0;\n`;\n\nexport const CellphoneLimit = styled(Row)`\n margin: 1rem 0 0;\n border-bottom-width: 0rem;\n`;\n\nexport const Button = styled(ButtonDefault)`\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border: 0.063rem solid ${({ theme }) => theme.colors.mbankSecondary100};\n color: ${({ theme }) => theme.colors.mbankSecondary100};\n margin: auto;\n margin-top: 1.875rem;\n width: auto;\n`;\n\nexport const RightContainer = styled.div`\n align-self: end;\n`;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { useDialog } from 'shared/faceleaf/contexts/DialogContext';\nimport { ApplicationState } from 'shared/redux';\nimport { InvoiceType } from 'shared/redux/psf/types';\nimport { formatMoney, getUserStatusMbank } from '~/util';\nimport { UserStatusType } from '~/util/types';\nimport InDebtInfo from './components/InDebtInfo';\nimport {\n Bar,\n Loot,\n Title,\n Label,\n Button,\n DueDate,\n ItemLabel,\n Container,\n ItemValue,\n LabelItem,\n BestBuyDay,\n MoneySymbol,\n QuestionImage,\n CreditApproved,\n OthersValuesTitle,\n QuestionContainer,\n CellphoneLimit,\n RightContainer,\n Progress,\n} from './styles';\n\nconst LimitInfo: React.FC = () => {\n const [status, setStatus] = useState(null);\n\n const history = useHistory();\n\n const dueDay = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.dueDay,\n );\n\n const bestDayOfBuy = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.bestDayOfBuy,\n );\n\n const creditLimit = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.creditLimit,\n );\n\n const availableLimit = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.availableLimit,\n );\n\n const loanValue = useSelector(\n ({ psf }: ApplicationState) => psf.personalLoan.value,\n );\n\n const lootValue = useSelector(\n ({ psf }: ApplicationState) => psf.financeInfo.withdrawalLimit,\n );\n\n const lootCellphoneValue = useSelector(\n ({ psf }: ApplicationState) => psf.financeInfo.withdrawalLimitCellphone,\n );\n\n const cardStatus = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.cardStatus,\n );\n\n const type = useSelector(({ psf }: ApplicationState) => psf.cardInfo.type);\n\n const limitProgress = useSelector(\n ({ psf }: ApplicationState) => psf.cardInfo.limitProgress,\n );\n\n const hasNegotiation = useSelector(\n ({ negotiation }: ApplicationState) => negotiation.hasNegotiation,\n );\n\n const closureLabel = useSelector(\n ({ psf }: ApplicationState) => psf.cardInfo.closureLabel,\n );\n\n const { openDialog } = useDialog();\n\n const usedValue = useMemo(\n () => creditLimit - availableLimit,\n [availableLimit, creditLimit],\n );\n\n useEffect(() => {\n setStatus(getUserStatusMbank(cardStatus, type, hasNegotiation));\n }, [cardStatus, type, hasNegotiation]);\n\n if (\n [UserStatusType.IN_DEBT, UserStatusType.IN_DEBT_WITH_AGREEMENT].includes(\n status,\n )\n ) {\n return ;\n }\n\n return (\n \n
Limites do Cartão
\n
\n \n\n \n
\n\n \n \n \n\n \n Vencimento\n
\n Dia\n {dueDay}\n
\n
\n\n \n Melhor dia de compra\n
\n Dia\n {bestDayOfBuy}\n
\n
\n\n {(loanValue > 0 || lootValue > 0 || lootCellphoneValue > 0) && (\n <>\n Outros Limites Disponíveis\n\n {loanValue > 0 && (\n \n \n Crédito Pré Aprovado\n openDialog({\n type: 'info',\n title: '',\n message:\n 'Sujeito a análise de crédito e condições no ato da contratação',\n })}\n />\n \n
\n R$\n {formatMoney(String(loanValue))}\n
\n
\n )}\n\n {lootValue > 0 && (\n \n \n Saque\n openDialog({\n type: 'info',\n title: '',\n message:\n 'Sujeito a análise de crédito e condições no ato da contratação',\n })}\n />\n \n
\n R$\n {formatMoney(String(lootValue))}\n
\n
\n )}\n\n {lootCellphoneValue > 0 && (\n \n \n Limite Celular\n openDialog({\n type: 'info',\n title: '',\n message:\n 'Limite exclusivo para compra de aparelhos celulares realizada nas lojas físicas da Marisa',\n })}\n />\n \n
\n R$\n {formatMoney(String(lootCellphoneValue))}\n
\n
\n )}\n \n )}\n\n
\n history.push('/invoice', {\n month: closureLabel,\n openPayment: type === InvoiceType.PENDING,\n })}\n >\n Visualizar Fatura\n \n
\n
\n );\n};\n\nexport default LimitInfo;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n background: ${({ theme }) => theme.colors.marisaBlack0};\n border-radius: 6px;\n box-shadow: 0 10px 20px rgba(197, 197, 197, 0.3);\n\n padding: 1.25rem 1rem;\n`;\n","import React from 'react';\nimport LimitInfo from './LimitInfo';\n\nimport { Container } from './styles';\n\nconst CardInfo: React.FC = () => {\n return (\n \n \n \n );\n};\n\nexport default CardInfo;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n`;\n\nexport const Title = styled.section`\n font-size: 1.5rem;\n max-width: 300px;\n text-align: center;\n margin-bottom: 32px;\n user-select: none;\n`;\n","import React from 'react';\nimport Button from '../Button';\nimport { Container, Title } from './styles';\n\ninterface ErrorProps {\n description: string;\n onRetry: () => void\n}\n\nconst Error: React.FC = ({ description, children, onRetry }) => {\n\n if (description) {\n return (\n \n
\n {description}\n \n
\n
\n )\n }\n\n return (\n <>\n {children}\n \n )\n}\n\nexport default Error;\n","import styled, { css } from 'styled-components';\nimport Button from '~/components/Button';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n display: flex;\n\n grid-template-columns: 1fr 1fr;\n grid-gap: 1.5rem;\n\n @media(${BREAKPOINT.tablet}) {\n flex-direction: column;\n }\n`;\n\ninterface ButtonProps {\n withoutBackground?: boolean;\n}\n\nexport const ButtonStyled = styled(Button)`\n background: ${({ theme }) => theme.colors.marisaBlack0};\n border: 1px solid ${({ theme }) => theme.colors.marisaBlack0};\n color: #720619;\n font-family: PlutoCond;\n font-size: 0.75rem;\n font-weight: medium;\n letter-spacing: 0.0625rem;\n min-width: 11.25rem;\n\n ${({ withoutBackground }) => withoutBackground && css`\n background-color: transparent;\n color: ${({ theme }) => theme.colors.marisaBlack0};\n `}\n\n @media(${BREAKPOINT.laptop}) {\n min-width: auto;\n }\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { ApplicationState } from 'shared/redux';\nimport { ButtonStyled } from './styles';\n\n//TODO: After facelift\n// const ClosedInvoiceHeader = () => {\n// return (\n// \n// \n// Pagar fatura\n// \n\n// \n// Parcelar saldo\n// \n// \n// )\n// }\n\nconst ClosedInvoiceHeader = () => {\n\n const history = useHistory();\n\n const closureLabel = useSelector(({ psf }: ApplicationState) => psf.cardInfo.closureLabel);\n\n return (\n history.push('/installment', { month: closureLabel })}>\n Pagar fatura\n \n )\n}\n\nexport default ClosedInvoiceHeader;\n","import styled from 'styled-components';\nimport Button from '~/components/Button';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const ButtonStyled = styled(Button)`\n background: ${({ theme }) => theme.colors.marisaBlack60};\n border: 1px solid ${({ theme }) => theme.colors.marisaBlack0};\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-family: PlutoCond;\n font-size: 0.75rem;\n font-weight: medium;\n letter-spacing: 0.0625rem;\n min-width: 11.25rem;\n\n @media(${BREAKPOINT.laptop}) {\n min-width: auto;\n }\n`;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { ApplicationState } from 'shared/redux';\nimport { getUserStatusMbank } from '~/util';\nimport { UserStatusType } from '~/util/types';\nimport { ButtonStyled } from './styles';\n\nconst InDebt = () => {\n const [userStatus, setUserStatus] = useState(null);\n\n const cardStatus = useSelector(({ psf }: ApplicationState) => psf.userInfo.cardStatus);\n\n const cardType = useSelector(({ psf }: ApplicationState) => psf.cardInfo.type);\n\n const hasNegotiation = useSelector(({ negotiation }: ApplicationState) => negotiation.hasNegotiation);\n\n const { location, push } = useHistory();\n\n const isRoot = useMemo(() => location.pathname === '/', [location]);\n\n const type = useMemo(() => {\n if (\n userStatus === UserStatusType.IN_DEBT &&\n (location.pathname.indexOf('/negotiation/query') > -1 || isRoot)\n ) {\n return 'aggrement';\n }\n\n if (isRoot && userStatus) {\n if (userStatus === UserStatusType.IN_DEBT_WITH_AGREEMENT) {\n return null;\n } else if (userStatus === UserStatusType.IN_DEBT) {\n return 'pendency';\n }\n }\n\n return null;\n }, [isRoot, userStatus, location]);\n\n const handleClick = useCallback(() => {\n if (type === 'aggrement') {\n push('/negotiation', { newAgreement: true });\n return;\n }\n\n push('/negotiation');\n }, [type, push]);\n\n useEffect(() => {\n setUserStatus(getUserStatusMbank(cardStatus, cardType, hasNegotiation));\n }, [cardStatus, cardType, hasNegotiation]);\n\n if (type === null) {\n return null;\n }\n\n return (\n \n {`Regularizar ${type === 'aggrement' ? ' acordo' : 'pendência'}`}\n \n )\n}\n\nexport default InDebt;\n","import React from 'react';\nimport ClosedInvoiceHeader from '~/components/Header/components/Closed';\nimport InDebt from '~/components/Header/components/InDebt';\nimport theme from 'shared/styles/theme';\n\ninterface Config {\n background: string;\n children?: () => JSX.Element;\n title?: string;\n}\n\ninterface InvoiceConfigType {\n inDebt: Config;\n closed: Config;\n opened: Config;\n pending: Config;\n negotiation: Config;\n paid: Config;\n}\n\nconst invoiceConfig: InvoiceConfigType = {\n inDebt: {\n background: theme.colors.marisaBlack60,\n children: () => ,\n title: 'Fatura pendente',\n },\n closed: {\n background: theme.colors.mbankFaturaFechada100,\n children: () => ,\n title: 'Fatura pendente',\n },\n pending: {\n background: theme.colors.mbankFaturaParcial100,\n children: () => ,\n title: 'Fatura pendente',\n },\n opened: {\n background: theme.colors.mbankPrimary100,\n children: null,\n title: 'Fatura aberta',\n },\n negotiation: {\n background: theme.colors.mbankPrimary80,\n children: null,\n },\n paid: {\n background: theme.colors.mbankFaturaFechada100,\n children: null,\n title: 'Fatura fechada',\n },\n};\n\nexport default invoiceConfig;\n","import styled from 'styled-components';\nimport ReactModal from 'react-modal';\nimport Button from '~/components/Button';\nimport CloseImage from '~/assets/images/close.png';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const ModalContainer = styled(ReactModal)`\n padding: 20px;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n\n > header {\n position: relative;\n margin-bottom: 2.15rem;\n width: 100%;\n }\n\n h4 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n margin-bottom: 0;\n }\n\n p {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n }\n`;\n\nexport const OverlayContainer = styled.div`\n background-color: rgba(0, 0, 0, 0) !important;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.3s ease-in-out;\n\n &.ReactModal__Overlay--after-open {\n background-color: rgba(0, 0, 0, 0.5) !important;\n }\n\n &.ReactModal__Overlay--before-close {\n background-color: rgba(0, 0, 0, 0) !important;\n }\n`;\n\nexport const ContentContainer = styled.div`\n background: ${({ theme }) => theme.colors.marisaBlack0};\n border-radius: 6px;\n box-shadow: 0 10px 20px rgba(48, 48, 45, 0.5);\n\n display: flex;\n align-items: flex-start;\n\n padding: 2rem 1.56rem;\n position: absolute;\n\n right: 7.25rem;\n top: 4.75rem;\n\n opacity: 0;\n transform: translateY(40px);\n transition: transform 0.3s ease-in-out, opacity 0.4s ease-in-out;\n\n &.ReactModal__Content--after-open {\n opacity: 1;\n transform: translateY(0);\n }\n\n &.ReactModal__Content--before-close {\n opacity: 0;\n transform: translateY(40px);\n }\n\n @media(${BREAKPOINT.tablet}) {\n position: relative;\n\n right: auto;\n top: auto;\n }\n`;\n\nexport const Name = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack80};\n font-family: PlutoSans;\n font-size: 1rem;\n margin-top: 15px;\n text-align: center;\n width: 100%;\n\n`;\n\nexport const Email = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack80};\n font-family: PlutoSans;\n font-size: 0.75rem;\n margin: 0.25rem 0 2.25rem 0;\n`;\n\nexport const Label = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: PlutoSans;\n font-size: 0.68rem;\n line-height: 0.875rem;\n`;\n\nexport const Value = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-family: PlutoSans;\n font-size: 0.875rem;\n line-height: 1.125rem;\n margin-top: 0.25rem;\n`;\n\nexport const Row = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: 0.812rem 0 0.25rem;\n width: 100%;\n`;\n\nexport const Separator = styled.div`\n background-color: ${({ theme }) => theme.colors.mbankBlack40};\n height: 1px;\n margin: 1.5rem 0;\n width: 100%;\n`;\n\nexport const InfoTitle = styled.section`\n color: ${({ theme }) => theme.colors.mbankBlack40};\n font-family: PlutoSans;\n font-size: 0.75rem;\n line-height: 0.875rem;\n`;\n\nexport const Info = styled.section`\n color: ${({ theme }) => theme.colors.mbankBlack40};\n font-family: PlutoSans;\n font-size: 0.68rem;\n line-height: 0.875rem;\n width: 17.18rem;\n`;\n\nexport const ButtonStyled = styled(Button)`\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border: 1px solid ${({ theme }) => theme.colors.mbankSecondary100};\n color: ${({ theme }) => theme.colors.mbankSecondary100};\n`;\n\nexport const Close = styled.div`\n background-image: url(${CloseImage});\n background-repeat: no-repeat;\n background-size: contain;\n cursor: pointer;\n height: 1rem;\n position: absolute;\n right: 1.25rem;\n top: 1.25rem;\n width: 1rem;\n`;\n","import React, { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { ApplicationState } from 'shared/redux';\nimport { logout as logoutAction } from 'shared/redux/psf/actions';\nimport {\n ButtonStyled,\n Close,\n ContentContainer,\n Email,\n Info,\n InfoTitle,\n Label,\n ModalContainer,\n Name,\n OverlayContainer,\n Row,\n Separator,\n Value,\n} from './styles';\n\ninterface UserModalProps {\n visible: boolean;\n onClose: () => void;\n}\n\nconst UserModal: React.VFC = ({ visible, onClose }) => {\n const { logout } = useAuth();\n\n const dispatch = useDispatch();\n\n const name = useSelector(({ psf }: ApplicationState) => psf.userInfo.name);\n\n const email = useSelector(({ psf }: ApplicationState) => psf.userInfo.email);\n\n const address = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.address,\n );\n\n const cityState = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.cityState,\n );\n\n const cellphone = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.cellphone,\n );\n\n const handleLogoutClick = useCallback(() => {\n logout();\n dispatch(logoutAction());\n }, [logout, dispatch]);\n\n return (\n (\n {children}\n )}\n contentElement={(props, children) => (\n {children}\n )}\n >\n \n\n
\n Capitais: 4004-2211 (ligação local)\n\n
\n\n Outras localidades: 0800-728-1122\n
\n\n \n\n \n Sair da minha conta\n \n \n );\n};\n\nexport default UserModal;\n","import styled from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex: 1;\n\n @media(${BREAKPOINT.tablet}) {\n justify-content: space-between;\n }\n`;\n\nexport const Name = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-size: 1.25rem;\n line-height: 1.375rem;\n text-align: right;\n user-select: none;\n\n @media(${BREAKPOINT.tablet}) {\n text-align: left;\n }\n`;\n\nexport const Card = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.6;\n user-select: none;\n`;\n\nexport const BallContainer = styled.div`\n cursor: pointer;\n transition: all 0.3s ease-in-out;\n padding: 1rem;\n box-sizing: content-box;\n\n &:hover {\n opacity: 0.6;\n }\n`;\n\nexport const Ball = styled.div`\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border-radius: 2px;\n height: 3px;\n margin: 2px 0;\n width: 3px;\n`;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from 'shared/redux';\nimport UserModal from './components/UserModal';\nimport { Ball, BallContainer, Card, Container, Name } from './styles';\n\nconst User = () => {\n const [visible, setVisible] = useState(false);\n\n const name = useSelector(({psf}: ApplicationState) => psf.userInfo.firstName);\n\n const finalCard = useSelector(({psf}: ApplicationState) => psf.userInfo.finalCard);\n\n return (\n \n
\n {`Oi, ${name}`}\n {`Cartão Final ${finalCard}`}\n
\n\n setVisible(true)} >\n \n \n \n \n\n setVisible(false)} />\n
\n )\n}\n\nexport default User;\n","import styled, { css } from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\ninterface ContainerProps {\n withHeaderChildren: boolean;\n}\n\nexport const Container = styled.div`\n background: ${({ theme }) => theme.colors.mbankPrimary100};\n\n padding: 1.375rem 6.25rem 1.375rem calc(6.25rem - 1rem);\n\n display: grid;\n\n grid-template-columns: 1fr 1fr 1fr;\n\n ${({ withHeaderChildren }) => withHeaderChildren && css`\n grid-template-columns: 1fr 1fr 1fr 1fr;\n `}\n\n @media(${BREAKPOINT.laptop}) {\n padding: 0.937rem;\n }\n\n @media(${BREAKPOINT.tablet}) {\n grid-template-columns: 1fr;\n grid-template-rows: 1fr 1fr 1fr;\n padding: 1.5rem 1.5rem 5rem;\n\n ${({ withHeaderChildren }) => withHeaderChildren && css`\n grid-template-rows: 1fr 1fr 1fr 1fr;\n padding-bottom: 1.5rem;\n `}\n }\n`;\n\nexport const InvoiceTitleContainer = styled.section`\n align-items: center;\n display: flex;\n\n @media(${BREAKPOINT.tablet}) {\n justify-content: center;\n order: 2;\n margin: 2.5rem 0 1rem;\n }\n`;\n\nexport const InvoiceTitle = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-family: PlutoSans;\n font-size: 1.125rem;\n opacity: 0.8;\n justify-content: center;\n`;\n\nexport const Row = styled.div`\n align-items: center;\n display: flex;\n justify-content: flex-start;\n\n @media(${BREAKPOINT.laptop}) {\n justify-content: center;\n }\n\n @media(${BREAKPOINT.tablet}) {\n order: 3;\n }\n`;\n\nexport const ValueLabel = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-size: 1.875rem;\n line-height: 2rem;\n\n @media(${BREAKPOINT.tablet}) {\n font-size: 3rem;\n }\n`;\n\nexport const MoneySymbol = styled.section`\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-family: PlutoSans;\n font-size: 0.875rem;\n opacity: 0.6;\n margin-right: 0.5rem;\n\n @media(${BREAKPOINT.tablet}) {\n font-size: 1rem;\n }\n`;\n\nexport const UserContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n\n @media(${BREAKPOINT.tablet}) {\n order: 1;\n }\n`;\n\nexport const ChildrenContainer = styled.div`\n @media(${BREAKPOINT.tablet}) {\n order: 4;\n margin-top: 1.5rem;\n }\n`;","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { ApplicationState } from 'shared/redux';\nimport { InvoiceType } from 'shared/redux/psf/types';\nimport { getUserStatusMbank } from '~/util';\nimport invoiceConfig from '~/util/invoice';\nimport { UserStatusType } from '~/util/types';\nimport User from './components/User';\nimport {\n ChildrenContainer,\n Container,\n InvoiceTitle,\n InvoiceTitleContainer,\n MoneySymbol,\n Row,\n UserContainer,\n ValueLabel\n} from './styles';\n\nconst InvoiceHeader: React.FC = () => {\n const { location } = useHistory();\n\n const cardStatus = useSelector(({ psf }: ApplicationState) => psf.userInfo.cardStatus);\n\n const type = useSelector(({ psf }: ApplicationState) => psf.cardInfo.type);\n\n const month = useSelector(({ psf }: ApplicationState) => psf.cardInfo.month);\n\n const invoiceValue = useSelector(({ psf }: ApplicationState) => psf.cardInfo.invoiceValue);\n\n const hasNegotiation = useSelector(({ negotiation }: ApplicationState) => negotiation.hasNegotiation);\n\n const userStatus = useMemo(() => getUserStatusMbank(cardStatus, type, hasNegotiation), [cardStatus, type, hasNegotiation]);\n\n const inNegotiation = useMemo(() => location.pathname.indexOf('/negotiation') > -1, [location]);\n\n const config = useMemo(() => {\n if (userStatus && (userStatus === UserStatusType.IN_DEBT || userStatus === UserStatusType.IN_DEBT_WITH_AGREEMENT)) {\n return invoiceConfig['inDebt'];\n }\n\n if (inNegotiation) {\n return invoiceConfig['negotiation'];\n }\n\n switch (type) {\n case InvoiceType.PENDING:\n return invoiceConfig['pending'];\n case InvoiceType.CLOSED:\n return invoiceConfig['closed'];\n case InvoiceType.PAID:\n return invoiceConfig['paid'];\n default:\n return invoiceConfig['opened'];\n }\n }, [userStatus, inNegotiation, type]);\n\n return (\n \n \n {`${config.title} - ${month.toUpperCase()}`}\n \n\n \n R$\n {invoiceValue}\n \n\n {config.children && (\n \n {config.children()}\n \n )}\n\n \n \n \n \n );\n};\n\nexport default InvoiceHeader;\n","import styled from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n box-shadow: 0px 10px 20px rgba(197, 197, 197, 0.32);\n height: 24.75rem;\n padding: 1rem 0;\n margin-bottom: 2rem;\n\n @media(${BREAKPOINT.tablet}) {\n margin-bottom: 3rem;\n }\n`;\n\nexport const Header = styled.div`\n display: flex;\n justify-content: center;\n padding-bottom: 1rem;\n\n section {\n color: ${({ theme }) => theme.colors.marisaBlack80};\n font-family: PlutoSans;\n font-size: 0.875rem;\n line-height: 1rem;\n text-align: center;\n max-width: 10.625rem;\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from 'shared/redux';\nimport { LineChart } from 'react-chartkick';\nimport 'chartkick/chart.js';\nimport { useTheme } from 'styled-components';\nimport { Container, Header } from './styles';\nimport { formatMoney } from '~/util';\n\nconst Chart = () => {\n const [data, setData] = useState({});\n const [chartDescript, setChartDescript] = useState<{\n purchases: number;\n value: number;\n months: number;\n }>({ purchases: 0, value: 0, months: 0 });\n\n const chartData = useSelector(({ psf }: ApplicationState) => psf.chartData);\n const { colors } = useTheme();\n\n useEffect(() => {\n const chart: { [key: string]: number } = {};\n\n let purchases = 0;\n let value = 0;\n let months = 0;\n\n chartData.forEach(item => {\n chart[item.month] = item.value;\n purchases += item.purchases;\n value += item.value;\n months++;\n });\n\n setChartDescript({\n purchases,\n value,\n months,\n });\n\n if (purchases > 0) {\n setData(chart);\n }\n }, [chartData]);\n\n if (Object.keys(data).length > 0) {\n return (\n \n
\n
\n {`Foram ${chartDescript.purchases} compras nos últimos ${chartDescript.months} meses com total de ${formatMoney(String(chartDescript.value), true)}`}\n
\n
\n \n
\n );\n }\n\n return (\n \n
\n
\n {chartData.length === 6\n ? 'Você não possui histórico de faturas nos últimos 6 meses.'\n : 'Você ainda não possui histórico de faturas.'}\n
\n
\n
\n );\n}\n\nexport default Chart;\n","import styled, { css } from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n\ninterface ContentProps {\n inDebt: boolean;\n}\n\nexport const Content = styled.main`\n background: ${({ theme }) => theme.colors.mbankPrimary40};\n display: grid;\n flex: 1;\n grid-template-columns: 330px 1fr;\n grid-gap: 2.5rem;\n padding: 2.5rem 6.25rem 0;\n\n ${({ inDebt }) => inDebt && css`\n grid-template-columns: 330px;\n `}\n\n > section {\n h3 {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-size: 1rem;\n font-weight: 400;\n line-height: 1rem;\n text-transform: uppercase;\n margin-bottom: 2rem;\n }\n }\n\n @media (${BREAKPOINT.desktop}) {\n padding: 2.5rem 2.25rem 0;\n }\n\n @media (${BREAKPOINT.tablet}) {\n grid-template-columns: 1fr;\n padding: 1.5rem;\n }\n\n @media (${BREAKPOINT.mobileSmall}) {\n padding: 1.5rem 0.5rem;\n }\n`;\n\nexport const Card = styled.section`\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n`;\n\ninterface HistoryAndOfferContainerProps {\n hasItaucardOffer: boolean;\n}\n\nexport const HistoryAndOfferContainer = styled.section`\n display: grid;\n grid-template-columns: 1fr 500px;\n flex-grow: 1;\n\n ${({ hasItaucardOffer }) => !hasItaucardOffer && css`\n grid-template-columns: 1fr;\n `}\n\n @media (${BREAKPOINT.desktop}) {\n grid-template-columns: repeat(2, 1fr);\n\n ${({ hasItaucardOffer }) => !hasItaucardOffer\n && css`\n grid-template-columns: 1fr;\n `}\n }\n\n @media (${BREAKPOINT.tablet}) {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(2, 1fr);\n\n ${({ hasItaucardOffer }) => !hasItaucardOffer\n && css`\n grid-template-rows: 1fr;\n `}\n }\n`;\n","import styled, { css } from 'styled-components';\n\ninterface LoadingContainerProps {\n hide: boolean;\n}\n\nexport const LoadingContainer = styled.div`\n background-color: ${({ theme }) => theme.colors.mbankPrimary40};\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n width: 100%;\n transition: all 500ms ease-out;\n\n position: absolute;\n left: 0px;\n top: 0px;\n z-index: 999;\n\n ${({ hide }) =>\n hide &&\n css`\n opacity: 0;\n `}\n`;\n\nexport const LoadingStyled = styled.div`\n height: 5rem;\n width: 5rem;\n`;\n","import React, { useEffect, useState } from 'react';\nimport lottie from 'lottie-web';\nimport { LoadingContainer, LoadingStyled } from './styles';\nimport LoadingAnimation from '~/assets/animation/loading.json';\n\ninterface LoadingProps {\n visible: boolean;\n}\n\nconst Loading: React.FC = ({ visible, children }) => {\n const [state, setState] = useState(visible);\n\n useEffect(() => {\n lottie.loadAnimation({\n container: document.getElementById('loading'),\n renderer: 'svg',\n loop: true,\n autoplay: true,\n animationData: LoadingAnimation,\n });\n\n }, []);\n\n useEffect(() => {\n if (visible) {\n setState(true);\n } else {\n setTimeout(() => setState(false), 500);\n }\n }, [visible]);\n\n return (\n <>\n \n \n \n {children}\n \n );\n}\n\nexport default Loading;\n","import styled from \"styled-components\";\nimport { BREAKPOINT } from \"../../../utils/consts\";\n\nexport const Container = styled.div`\n display: flex;\n\n width: 100%;\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border-radius: 6px;\n align-items: center;\n\n & + div {\n margin-top: 24px;\n }\n\n @media only screen and (${BREAKPOINT.laptop}) {\n margin-top: 8px;\n }\n`;\n\nexport const RowInformations = styled.div`\n display: flex;\n width: 100%;\n flex-direction: row;\n justify-content: space-between;\n padding: 17px 22px 17px 12px;\n`;\n\nexport const TopText = styled.div`\n font-size: 11px;\n background-color: ${({ theme }) => theme.colors.grey};\n line-height: 14px;\n`;\n\nexport const ColumnRight = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n\n > div {\n &:nth-child(2) {\n height: 24px;\n }\n }\n`;\n\nexport const Circle = styled.div`\n width: 41px;\n height: 40px;\n align-items: center;\n justify-content: center;\n border-radius: 100%;\n display: flex;\n background-color: ${({ theme }) => theme.colors.mbankPrimary40};\n margin-left: 18px;\n`;\n","import React, { useEffect, useState } from 'react';\n\ninterface HideValue {\n visible: boolean;\n children: JSX.Element | JSX.Element[];\n}\n\nconst HideValue: React.FC = ({ visible, children }) => {\n const [show, setShow] = useState(true);\n const [layout, setLayout] = useState<{\n defined: boolean;\n height: number;\n width: number;\n }>({\n defined: false,\n height: 0,\n width: 0,\n });\n\n useEffect(() => {\n setShow(visible);\n }, [visible]);\n\n if (show) {\n return (\n {\n if (!layout.defined && ref && ref.clientHeight) {\n setLayout({\n defined: true,\n width: ref?.clientWidth ?? 0,\n height: ref?.clientHeight ?? 0,\n });\n setShow(false);\n }\n }}\n >\n {children}\n
\n );\n }\n\n return (\n \n \n
\n );\n};\n\nexport default HideValue;\n","import React from \"react\";\nimport {\n Container,\n RowInformations,\n TopText,\n ColumnRight,\n Circle,\n} from \"./styles\";\nimport BagIcon from \"shared/assets/images/bag.png\";\nimport HideValue from \"../HideValue\";\nexport interface HistoryItemPurchasesProps {\n day: string;\n month: string;\n description: string;\n order: number;\n orders: number;\n value: string;\n isVisible?: boolean;\n}\n\nconst HistoryItemPurchases: React.FC = ({\n day,\n month,\n description,\n order,\n orders,\n value,\n isVisible = true,\n}) => {\n return (\n \n \n \n \n\n \n
\n {`${day}/${month}`}\n
{description}
\n
\n \n {`${order}/${orders}`}\n\n \n
{value}
\n
\n
\n
\n
\n );\n};\n\nexport default HistoryItemPurchases;\n","import styled from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n\n @media(${BREAKPOINT.tablet}) {\n height: 15rem;\n }\n`;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport HistoryPurchase from 'shared/faceleaf/components/HistoryPurchases';\nimport { ApplicationState } from 'shared/redux';\nimport { CardInfoItemType } from 'shared/redux/psf/types';\nimport { Container } from './styles';\n\nconst ITEM_HEIGHT = 80;\n\nconst History = () => {\n const [items, setItems] = useState([]);\n const [height, setHeight] = useState(0);\n\n const rendered = useRef(false);\n\n const history = useSelector(\n ({ psf }: ApplicationState) => psf.cardInfo.items,\n );\n\n useEffect(() => {\n if (history.length > 0 && height > 0 && !rendered.current) {\n let quantity = Math.trunc(height / ITEM_HEIGHT);\n\n let historyItems = [];\n for (const i in history) {\n if (quantity === 0) {\n break;\n }\n\n quantity--;\n\n historyItems.push(history[i]);\n }\n\n setItems(historyItems);\n rendered.current = true;\n }\n }, [height, history]);\n\n return (\n {\n setHeight(ref?.clientHeight);\n }}\n >\n {items.map(({ day, month, description, installmentNumber, installmentsNumber, value }, index) => (\n \n ))}\n \n );\n};\n\nexport default History;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { ApplicationState } from 'shared/redux';\nimport { getData, logout as logoutAction } from 'shared/redux/psf/actions';\nimport { MessageType } from 'shared/utils/types';\nimport { SESSION_EXPIRED } from 'shared/utils/consts';\nimport CardInfo from '~/components/CardInfo';\nimport Error from '~/components/Error';\nimport InvoiceHeader from '~/components/Header';\nimport { getUserStatusMbank } from '~/util';\nimport Chart from './components/Chart';\nimport { UserStatusType } from '~/util/types';\nimport { Card, Container, Content, HistoryAndOfferContainer } from './styles';\nimport Loading from '~/components/Loading';\nimport History from './components/History';\n\nconst Home: React.FC = () => {\n const [error, setError] = useState('');\n\n const { session, logout } = useAuth();\n\n const dispatch = useDispatch();\n\n const cardStatus = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.cardStatus,\n );\n\n const name = useSelector(({ psf }: ApplicationState) => psf.userInfo.name);\n\n const type = useSelector(({ psf }: ApplicationState) => psf.cardInfo.type);\n\n const hasNegotiation = useSelector(\n ({ negotiation }: ApplicationState) => negotiation.hasNegotiation,\n );\n\n const itaucardOffer = useSelector(\n (state: ApplicationState) => state.psf.itaucardOffer,\n );\n\n const [loading, setLoading] = useState(!name);\n\n const inDebt = useMemo(() => {\n const status = getUserStatusMbank(cardStatus, type, hasNegotiation);\n\n return (\n status === UserStatusType.IN_DEBT ||\n status === UserStatusType.IN_DEBT_WITH_AGREEMENT\n );\n }, [cardStatus, hasNegotiation, type]);\n\n const load = useCallback(() => {\n setLoading(true);\n setError('');\n\n dispatch(\n getData(({ type, description }) => {\n if (type === MessageType.ERROR) {\n setError('Não foi possível buscar os dados, tente novamente.');\n }\n\n if (description === SESSION_EXPIRED) {\n logout();\n dispatch(logoutAction());\n }\n\n setLoading(false);\n }),\n );\n }, [dispatch, logout]);\n\n useEffect(() => {\n if (!!session.token && !name) {\n load();\n }\n }, [name, session, load]);\n\n return (\n \n \n \n \n\n \n \n

Seu cartão Mbank

\n\n \n
\n\n {!inDebt && (\n \n

Seu histórico de gastos

\n\n \n\n

Suas últimas compras

\n\n \n \n \n
\n )}\n
\n
\n
\n
\n );\n};\n\nexport default Home;\n","import { BREAKPOINT } from 'shared/utils/consts';\nimport styled from 'styled-components';\n\nexport const Container = styled.div`\n margin: 0 auto;\n flex-direction: row;\n max-width: 30rem;\n padding: 0px;\n\n @media only screen and (${BREAKPOINT.tablet}) {\n max-width: 100vw;\n }\n`;\n","import Styled from 'styled-components';\n\nexport const calcFontSize = (size: number): number => {\n return size / 16;\n};\n\nexport const FontFaces = `\n@font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondLight.otf') format(\"opentype\");\n font-weight: 300;\n}\n\n@font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondRegular.otf') format(\"opentype\");\n font-weight: 400;\n}\n\n@font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondMedium.otf') format(\"opentype\");\n font-weight: 500;\n}\n\n@font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondBold.otf') format(\"opentype\");\n font-weight: 700;\n}\n`;\n\nconst H1 = Styled.h1`\n line-height: 1;\n font-weight: 700;\n letter-spacing: -1.5;\n font-size: ${calcFontSize(30)}rem;\n`;\n\nconst H2 = Styled.h2`\n line-height: 1;\n font-weight: 700;\n letter-spacing: -0.5;\n font-size: ${calcFontSize(18)}rem;\n`;\n\nconst H3 = Styled.h3`\n font-weight: 400;\n line-height: 1.04;\n letter-spacing: 0;\n font-size: ${calcFontSize(48)}rem;\n`;\n\nconst H4 = Styled.h4`\n font-weight: 400;\n line-height: 1.17;\n letter-spacing: 0.25;\n font-size: ${calcFontSize(34)}rem;\n`;\n\nconst H5 = Styled.h5`\n font-weight: 400;\n line-height: 1.33;\n letter-spacing: 0;\n font-size: ${calcFontSize(24)}rem;\n`;\n\nconst H6 = Styled.h6`\n font-weight: 700;\n line-height: 1.6;\n letter-spacing: 0.15;\n font-size: ${calcFontSize(20)}rem;\n`;\n\nconst Span = Styled.span`\n margin: 0;\n`;\n\nconst P = Styled.p`\n margin: 0;\n font-size: ${calcFontSize(12)}rem;\n`;\n\nconst Label = Styled.label<{\n textColor?: string;\n fontWeight?: string | number;\n center?: boolean;\n fontSize?: number;\n opacity?: number;\n lineHeight?: string;\n}>`\n font-weight: ${props => props.fontWeight || 'normal'};\n font-family: PlutoCond;\n text-align: ${props => (props.center ? 'center' : 'left')};\n font-size: ${props => calcFontSize(props.fontSize || 14)}rem;\n opacity: ${props => (props.opacity ? props.opacity : 1)};\n line-height: ${props => (props.lineHeight ? props.lineHeight : null)};\n`;\n\nexport const Typography = {\n P,\n H1,\n H2,\n H3,\n H4,\n H5,\n H6,\n Span,\n Label,\n // FontFaces,\n calcFontSize,\n};\n","import styled from 'styled-components';\nimport { Typography } from '~/components/atoms/typography';\n\nconst { Label } = Typography;\n\nexport const LabelStyled = styled(Label)`\n color: ${({ theme }) => theme.colors.marisaBlack0};\n cursor: pointer;\n font-size: 1.125rem;\n`;\n\nexport const MenuItemContainer = styled.div`\n min-width: 100px;\n text-align: center;\n cursor: pointer;\n user-select: none;\n`;\n","import React from 'react';\nimport {useTheme} from 'styled-components'\nimport { MenuItemType } from '../ScrollCarousel';\nimport { LabelStyled, MenuItemContainer } from './styles';\n\ninterface MenuItemProps {\n index: number;\n data: MenuItemType;\n selected: boolean;\n style?: React.CSSProperties;\n onSelectItem(\n event: React.MouseEvent,\n key: number,\n ): void;\n}\n\nconst ItemCarousel: React.FunctionComponent = ({\n index,\n data,\n selected,\n onSelectItem,\n}) => {\n const {colors} = useTheme()\n return (\n onSelectItem(e, index)}\n >\n \n {data.name}\n \n \n );\n};\n\nexport default ItemCarousel;\n","import Styled from 'styled-components';\nimport { Typography } from '~/components/atoms/typography';\n\nconst { Label } = Typography;\n\nexport const Container = Styled.div`\n\n`;\n\nexport const LabelStyled = Styled(Label)`\n color: ${({theme:{colors}}) => colors.marisaBlack0};\n cursor: pointer;\n font-size: 1.125rem;\n\n`;\n\nexport const MenuContainer = Styled.div`\n max-height: 35px;\n display: flex;\n overflow-X: auto;\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n ::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport const MenuItemContainer = Styled.div`\n min-width: 100px;\n text-align: center;\n cursor: pointer;\n user-select: none;\n`;\n","import { Col, Row } from 'antd';\nimport React from 'react';\nimport { CardInfoType } from 'shared/redux/psf/types';\nimport { MenuItemType } from '~/components/molecules/menuCarousel';\nimport { Container } from './styles';\nimport ScrollCarousel from './components/ScrollCarousel';\n\ninterface MenuHeaderProps {\n cardInfoList?: MenuItemType[];\n month?: string;\n onSelect(value: CardInfoType): void;\n}\n\nconst Carousel: React.FC = ({\n cardInfoList,\n month,\n onSelect,\n}) => {\n return (\n \n \n \n {\n onSelect(cardInfo as CardInfoType);\n }}\n />\n \n \n \n );\n};\n\nexport default Carousel;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n span {\n display: flex;\n }\n\n #monthText {\n text-transform: uppercase;\n margin-left: 4px;\n }\n\n .titleText {\n font-size: 1.25rem;\n line-height: 1.375rem;\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-family: PlutoCond;\n opacity: 0.8;\n }\n`;\n","import React, { useMemo } from 'react';\nimport { CardInfoType, InvoiceType } from 'shared/redux/psf/types';\n\nimport { Container } from './styles';\n\ninterface MenuHeaderProps {\n cardInfo?: CardInfoType;\n}\n\nconst StatusInvoice: React.FC = ({ cardInfo }) => {\n const statusInvoiceMenuHeader = useMemo(() => {\n switch (cardInfo?.type) {\n case InvoiceType.PENDING:\n return 'Fatura pendente';\n case InvoiceType.CLOSED:\n case InvoiceType.PAID:\n return 'Fatura fechada';\n case InvoiceType.OPENED:\n return 'Fatura aberta';\n }\n }, [cardInfo]);\n\n return (\n \n \n
{statusInvoiceMenuHeader}
\n
\n {'- ' + cardInfo?.month}\n
\n
\n
\n );\n};\n\nexport default StatusInvoice;\n","var _path;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgClose = function SvgClose(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n fill: \"none\",\n viewBox: \"0 0 16 16\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C9C9C9\",\n fillRule: \"evenodd\",\n d: \"M.276 14.218c-.368.378-.368.98 0 1.357.382.392 1.01.392 1.392 0L7.76 9.327l6.092 6.248c.382.392 1.011.392 1.393 0 .368-.377.368-.98 0-1.357L9.117 7.934l6.127-6.283c.368-.378.368-.98 0-1.358-.382-.39-1.011-.39-1.393 0L7.76 6.542 1.668.293c-.381-.39-1.01-.39-1.392 0-.368.378-.368.98 0 1.358l6.127 6.283-6.127 6.284z\",\n clipRule: \"evenodd\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgClose, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/close.592932c3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgMail = function SvgMail(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 14,\n viewBox: \"0 0 21 14\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.62429 0H18.786C19.6804 0 20.4098 0.729966 20.4098 1.62429V12.3336C20.4098 13.2275 19.6804 13.9574 18.786 13.9574H1.62429C0.729966 13.9574 0 13.2275 0 12.3336V1.62429C0 0.729966 0.729966 0 1.62429 0V0ZM1.62382 0.966381L9.52158 9.0982C9.92424 9.51263 10.4865 9.51263 10.8887 9.0982L18.7865 0.966381H18.786H1.62429H1.62382ZM19.4439 1.67186L14.5277 6.73452L19.4439 12.1118V1.67186ZM13.8566 7.4254L11.5791 9.77024C10.796 10.5765 9.61389 10.5765 8.83117 9.77024L6.55368 7.4254L1.47971 12.975C1.52634 12.9859 1.57484 12.9915 1.62429 12.9915H18.786C18.8355 12.9915 18.884 12.9859 18.9301 12.975L13.8566 7.4254ZM5.88258 6.73452L0.966381 1.67186V12.1118L5.88258 6.73452Z\",\n fill: \"#1B1557\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgMail, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/mail.f765f102.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgCorrect = function SvgCorrect(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 9,\n fill: \"none\",\n viewBox: \"0 0 12 9\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M4.595 8.827c-.115.11-.27.173-.433.173-.162 0-.319-.062-.433-.173L.269 5.485c-.359-.347-.359-.91 0-1.256l.433-.418c.36-.347.941-.347 1.3 0l2.16 2.086L9.998.26c.36-.347.941-.347 1.3 0l.433.419c.359.346.359.909 0 1.255L4.595 8.827z\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCorrect, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/correct.79c0e331.svg\";\nexport { ForwardRef as ReactComponent };","import Styled from 'styled-components';\nimport { Typography, calcFontSize } from '../typography';\n\nconst { Label } = Typography;\n\nexport const LabelStyled = Styled(Label)`\n font-size: ${calcFontSize(11)}rem;\n color: ${({theme:{colors}}) => colors.mbankSecondary100};\n font-weight: 500;\n text-transform: uppercase;\n cursor: pointer;\n`;\n","import React from 'react';\nimport * as styles from './styles';\n\ninterface Props {\n label: string;\n style?: React.CSSProperties;\n children?: JSX.Element;\n onClick(): void;\n}\n\nconst ButtonLink: React.FunctionComponent = ({\n label,\n style,\n children,\n onClick,\n}) => {\n return (\n \n {label}\n {children}\n \n );\n};\n\nexport default ButtonLink;\n","import { generateMedia } from 'styled-media-query';\n\nexport const sm = '576px';\nexport const md = '768px';\nexport const lg = '992px';\nexport const dt = '1056px';\nexport const xl = '1200px';\nexport const xxl = '1600px';\n\nexport const breakpoints = {\n sm,\n md,\n lg,\n dt,\n xl,\n xxl,\n};\n\nconst media = generateMedia(breakpoints);\n\nexport default media;\n","import Styled, { css } from 'styled-components';\nimport media from '../atoms/media';\n\nimport { Typography, calcFontSize } from '../atoms/typography';\n\nconst { Label } = Typography;\n\nexport const Container = Styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 11px 20px 11px 20px;\n border-radius: 6px;\n cursor: pointer;\n height: 60px;\n position: relative;\n box-shadow: 0 10px 20px 0 rgba(197, 197, 197, 0.32);\n z-index: 10\n margin-top: 8px;\n ${media.lessThan('lg')`\n padding: 11px 10px 11px 10px;\n `}\n`;\n\nexport const LabelStyled = Styled(Label)<{ isInverted?: boolean }>`\n \n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-family: PlutoCond;\n font-size: 12px\n margin-right: 100px;\n cursor: pointer;\n\n ${({ isInverted }) =>\n isInverted &&\n css`\n font-size: 11px;\n color: ${({ theme }) => theme.colors.marisaBlack60};\n `};\n\n ${media.lessThan('lg')`\n margin-right: 15px;\n font-size: ${calcFontSize(11)}rem;\n `}\n`;\n\nexport const SubtitleStyled = Styled(Label)<{ isInverted?: boolean }>`\n font-size: ${calcFontSize(11)}rem;\n color: ${({theme: {colors}}) => colors.marisaBlack20};\n cursor: pointer;\n\n ${({ isInverted }) =>\n isInverted &&\n css`\n font-size: 11px;\n color: ${({ theme }) => theme.colors.marisaBlack90};\n `};\n`;\n\nexport const LabelContainer = Styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const ImageContainer = Styled.div`\n width: 42px;\n height: 42px;\n background-color: ${({ theme }) => theme.colors.mbankPrimary40};\n border-radius: 42px;\n justify-content: center;\n align-items: center;\n display: flex;\n flex: 1;\n position: absolute;\n top: 8px;\n right: 10px;\n`;\n\nexport const Component = Styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n","import React from 'react';\nimport * as styles from './styles';\nimport { ReactComponent as PaidSVG } from '~/assets/images/correct.svg';\nimport theme from 'shared/styles/theme';\n\nexport interface ButtonProps {\n label: string;\n subtitle?: string;\n style?: React.CSSProperties;\n children?: JSX.Element | JSX.Element[];\n icon: JSX.Element;\n enabled?: boolean;\n isInverted?: boolean;\n onClick(): void;\n}\n\ninterface State {\n clicked: boolean;\n}\n\nclass ButtonAction extends React.Component {\n constructor(props: ButtonProps) {\n super(props);\n\n this.state = {\n clicked: false,\n };\n }\n\n static defaultProps = {\n enabled: true,\n };\n\n resetButton = () => {\n this.setState({ clicked: false });\n };\n\n handleClick = () => {\n if (this.props.enabled) {\n this.setState({ clicked: true });\n this.props.onClick();\n }\n };\n\n RenderIcon = () => {\n if (this.state.clicked) {\n return (\n \n \n \n );\n }\n\n return {this.props.icon};\n };\n\n render() {\n return (\n \n \n \n \n {this.props.label}\n \n {this.props.subtitle && (\n \n {this.props.subtitle}\n \n )}\n \n \n \n {this.props.children}\n \n );\n }\n}\n\nexport default ButtonAction;\n","var _path, _path2, _path3;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgHomeMenuIcon = function SvgHomeMenuIcon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 41,\n viewBox: \"0 0 40 41\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.8281 38.1563H35.2929V21.6355H38.8281C39.3023 21.6355 39.7297 21.3497 39.911 20.9115C40.0922 20.4734 39.9915 19.9691 39.6559 19.6342L20.8278 0.84248C20.3704 0.38584 19.6296 0.38584 19.1722 0.84248L0.344091 19.6342C0.0084669 19.9692 -0.0922361 20.4734 0.0890137 20.9115C0.270263 21.3497 0.697685 21.6355 1.1719 21.6355H4.70705V38.1563H1.1719C0.524716 38.1563 2.94242e-05 38.6809 2.94242e-05 39.3281C2.94242e-05 39.9753 0.524716 40.5 1.1719 40.5C1.48409 40.5 38.4868 40.5 38.828 40.5C39.4752 40.5 39.9999 39.9753 39.9999 39.3281C39.9999 38.6809 39.4753 38.1563 38.8281 38.1563ZM32.9492 20.4636V38.1563H7.0508V20.4636C7.0508 19.8164 6.52611 19.2918 5.87893 19.2918H4.00495L20 3.32763L35.9951 19.2918H34.1211C33.4739 19.2918 32.9492 19.8164 32.9492 20.4636Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 20V38.5H33.5V20H37L20 2.5L2.5 20H7Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 26C15 24.8954 15.8954 24 17 24H23C24.1046 24 25 24.8954 25 26V37H15V26Z\",\n fill: \"#FDFDFD\",\n stroke: \"#FDFDFD\",\n strokeWidth: 2\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgHomeMenuIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/home-menu-icon.7147c6ec.svg\";\nexport { ForwardRef as ReactComponent };","import Styled from 'styled-components';\nimport { Typography, calcFontSize } from '~/components/atoms/typography';\nimport media from '~/components/atoms/media';\nimport Button from '~/components/Button';\n\nconst { Label } = Typography;\n\nexport const Container = Styled.div`\n background-color: ${({ theme: { colors } }) => colors.marisaBlack0};\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative;\n border-radius: 6px;\n padding: 72px 28px 28px;\n ${media.lessThan('lg')`\n width: 100%;\n height: 90%;\n padding-top: 25px;\n `}\n \n`;\n\nexport const Field = Styled.div`\n margin-bottom: 2.5rem;\n`;\n\nexport const Form = Styled.form``;\n\nexport const TitleLabel = Styled(Label)`\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1rem;\n`;\n\nexport const ValueLabel = Styled(Label)`\n font-size: 2.25rem;\n color: ${({ theme }) => theme.colors.mbankPrimary100};\n`;\n\nexport const ValueContainer = Styled.div`\n display: flex;\n align-items: center;\n \n \n`;\n\nexport const DueDateLabel = Styled(Label)`\n color: ${({ theme: { colors } }) => colors.mbankPrimary100};\n font-size: 0.75rem;\n`;\n\nexport const DayTitleLabel = Styled(Label)`\n color: ${({ theme: { colors } }) => colors.marisaBlack100};\n font-size: ${calcFontSize(10)}rem;\n margin-right: 14px;\n`;\n\nexport const DayLabel = Styled(Label)`\n font-size: ${calcFontSize(16)}rem;\n color: ${({ theme }) => theme.colors.mbankPrimary100};\n`;\n\nexport const DueDateContainer = Styled.div`\n display: flex;\n \n justify-content: space-between;\n margin-bottom: 33px;\n margin-top: 3.75rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid ${({ theme: { colors } }) => colors.marisaBlack5};\n\n @media only screen and (min-width: 768px){\n min-width: 328px;\n }\n\n @media only screen and (max-width: 767px){\n width: 100%;\n }\n`;\n\nexport const DueDateLabelContainer = Styled.div`\n flex: 1;\n`;\n\nexport const DueDateDayContainer = Styled.div`\n flex: 1;\n display: flex;\n justify-content: end;\n align-items: center;\n`;\n\nexport const ButtonContainer = Styled.div`\n display: flex;\n \n margin: 0 112px;\n flex-direction: column;\n ${media.lessThan('lg')`\n margin: 15px 25px 0px 25px;\n flex-direction: column;\n \n `}\n\n @media only screen and (min-width: 768px){\n min-width: 328px;\n }\n\n @media only screen and (max-width: 767px){\n width: 100%;\n }\n`;\n\nexport const ButtonLinkContainer = Styled.div`\n margin-top: 12px;\n`;\n\nexport const CloseContainer = Styled.div`\n position: absolute;\n top: 25px;\n right: 25px;\n cursor: pointer;\n\n ${media.lessThan('lg')`\n left: 25px;\n `}\n`;\n\nexport const AlternativeEmailContainer = Styled.div`\n background-color: ${({ theme: { colors } }) => colors.marisaBlack0};\n z-index: 999;\n height: 100%;\n width: 100%;\n position: absolute;\n display: flex;\n flex: 1;\n`;\n\nexport const AlternativeEmail = Styled.div`\n width: 300px;\n height: 100%;\n display: flex;\n justify-content: center;\n flex-direction: column;\n\n ${media.lessThan('lg')`\n display: inline-block;\n margin-top: 25px;\n `}\n`;\n\nexport const AlternativeEmailClose = Styled.div`\n position: absolute;\n right: 25px;\n cursor: pointer;\n display: none;\n\n ${media.lessThan('lg')`\n right: 25px;\n display: inline-block;\n `}\n`;\n\nexport const AlternativeEmailContent = Styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n\n ${media.lessThan('lg')`\n justify-content: flex-start;\n `}\n`;\n\nexport const AlternativeEmailLabel = Styled(Label)`\n font-size: ${calcFontSize(22)}rem;\n color: ${({ theme: { colors } }) => colors.marisaBlack100};\n`;\n\nexport const AlternativeEmailLabelContrast = Styled(Label)`\n font-size: ${calcFontSize(22)}rem;\n font-weight: 500;\n color: ${({ theme: { colors } }) => colors.mbankSecondary100};\n`;\n\nexport const AlternativeEmailLabelSentFinish = Styled(Label)`\n color: ${({ theme }) => theme.colors.marisaBlack80};\n font-size: ${calcFontSize(21)}rem;\n`;\n\nexport const AlternativeEmailLabelSent = Styled(Label)`\n color: ${({ theme }) => theme.colors.marisaBlack80};\n font-size: 0.875rem;\n margin-top: 5px;\n /* text-align: center; */\n`;\n\nexport const AlternativeEmailFinishContainer = Styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-top: 34px;\n\n`;\n\nexport const ButtonSeparator = Styled.div`\n margin-right: 30px;\n\n ${media.lessThan('lg')`\n margin-right: 0px;\n margin-top: 20px;\n `}\n`;\n\nexport const SentEmailCloseContainer = Styled.div`\n position: absolute;\n top: 25px;\n right: 25px;\n cursor: pointer;\n\n ${media.lessThan('lg')`\n right: 25px;\n `}\n`;\n\nexport const ContainerSendEmail = Styled.div`\n margin-top: 20px;\n @media only screen and (min-width: 768px){\n min-width: 328px;\n }\n\n @media only screen and (max-width: 767px){\n width: 100%;\n }\n \n`;\n\nexport const SendEmailTitle = Styled.div`\n font-size: 0.75rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const ButtonCancel = Styled(Button)`\n max-width: 160px;\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border: 1px solid ${({ theme }) => theme.colors.marisaPrimary100};\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n`;\n\nexport const SendRow = Styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const CircleBigCheck = Styled.div`\n border-radius: 100%;\n background-color: ${({ theme }) => theme.colors.mbankPrimary40};\n padding: 2.5rem;\n`;\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport { message as toast } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useMediaPredicate } from 'react-media-hook';\nimport Modal from 'react-modal';\nimport { useDispatch } from 'react-redux';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport {\n ContentContainer,\n OverlayContainer,\n} from 'shared/faceleaf/components/Modal/styles';\nimport { useDialog } from 'shared/faceleaf/contexts/DialogContext';\nimport { getBarcode, sendEmail } from 'shared/redux/psf/actions';\nimport { CardInfoType } from 'shared/redux/psf/types';\nimport { validateEmail } from 'shared/utils';\nimport { MessageType, SimpleCallback } from 'shared/utils/types';\nimport * as yup from 'yup';\nimport {useTheme} from 'styled-components'\nimport { ReactComponent as BarCodeSVG } from '~/assets/images/barcode.svg';\nimport { ReactComponent as CloseSVG } from '~/assets/images/close.svg';\nimport { ReactComponent as MailSVG } from '~/assets/images/mail.svg';\nimport ButtonLink from '~/components/atoms/buttonLink';\nimport { lg } from '~/components/atoms/media';\nimport Button from '~/components/Button';\nimport ButtonAction from '~/components/buttonAction';\nimport InputForm from '~/components/Forms/InputForm';\nimport * as styles from './styles';\n\n\ntype Props = {\n cardInfo: CardInfoType | undefined;\n visible: boolean;\n onClose(): void;\n onSendEmail(email: string, callback: SimpleCallback): void;\n onGetBarcode(): void;\n};\n\ninterface PaymentModalForm {\n email: string;\n}\n\nconst schema = yup.object({\n email: yup.string().required('O email deve ser informado'),\n});\n\nconst PaymentModal: React.FunctionComponent = ({\n cardInfo,\n visible,\n onClose,\n}) => {\n const { colors } = useTheme();\n const [sendEmailEnabled, setSendEmailEnabled] = useState(false);\n const [sendAlternativeEmail, setSendAlternativeEmail] = useState(false);\n const [buttonEnabled, setButtonEnabled] = useState(false);\n const [isSubmitting, setIsSubmiting] = useState(false);\n\n const dispatch = useDispatch();\n\n const { openDialog } = useDialog();\n\n const mediaLg = useMediaPredicate(`(min-width: ${lg})`);\n\n const {\n control,\n handleSubmit,\n reset,\n watch,\n formState: { errors },\n } = useForm({ resolver: yupResolver(schema) });\n\n useEffect(() => {\n if (cardInfo?.email && cardInfo?.email !== '') {\n setSendEmailEnabled(true);\n }\n }, [cardInfo]);\n\n const email = watch('email');\n\n useEffect(() => {\n setButtonEnabled(validateEmail(email));\n }, [email]);\n\n const handleClose = useCallback(() => {\n reset();\n setSendAlternativeEmail(false);\n onClose();\n }, [reset, onClose]);\n\n const onSubmit = useCallback(\n (data: PaymentModalForm) => {\n setIsSubmiting(true);\n\n dispatch(\n sendEmail(data.email, (message) => {\n setIsSubmiting(false);\n\n if (message.type === MessageType.ERROR) {\n toast.error(message.description);\n } else {\n openDialog({\n message: 'E-mail enviado com sucesso',\n title: 'Tudo certo',\n type: 'success',\n });\n\n handleClose();\n }\n }),\n );\n },\n [dispatch, openDialog, handleClose],\n );\n\n return (\n handleClose()}\n style={mediaLg ? style : styleLg}\n shouldCloseOnOverlayClick\n shouldCloseOnEsc\n closeTimeoutMS={380}\n overlayElement={(props, children) => (\n {children}\n )}\n contentElement={(props, children) => (\n {children}\n )}\n >\n \n handleClose()}>\n \n \n Você está pagando\n\n \n \n R$\n {' '}\n {cardInfo?.invoiceValue}\n \n \n \n \n Vencimento\n \n \n \n {`${cardInfo?.dueDay} ${cardInfo?.dueMonth}`}\n \n \n \n\n \n }\n onClick={() => dispatch(\n getBarcode(cardInfo?.order ?? 0, (barcode, message) => {\n copy(barcode);\n }),\n )}\n />\n\n }\n onClick={() => dispatch(\n sendEmail(cardInfo?.email ?? '', (message) => toast.success(message.description)),\n )}\n >\n {!sendAlternativeEmail && (\n \n setSendAlternativeEmail(true)}\n />\n \n )}\n \n \n {sendAlternativeEmail && (\n \n \n DIGITE O E-MAIL DE DESTINO\n \n \n \n \n \n \n {\n setSendAlternativeEmail(false);\n }}\n >\n Cancelar\n \n\n
\n \n {isSubmitting ? : 'Enviar'}\n \n \n \n \n )}\n \n \n );\n};\n\nconst style = {\n content: {\n right: 0,\n top: 0,\n left: 0,\n bottom: 0,\n border: 0,\n borderRadius: 0,\n backgroundColor: 'rgba(95, 78, 78, 0.31)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n};\n\nconst styleLg = {\n content: {\n right: 0,\n top: 0,\n left: 0,\n bottom: 0,\n border: 0,\n borderRadius: 0,\n backgroundColor: 'rgba(95, 78, 78, 0.31)',\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'center',\n margin: 0,\n padding: 0,\n },\n};\n\nexport default PaymentModal;\n","import { BREAKPOINT } from 'shared/utils/consts';\nimport styled, { css } from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n padding-top: 1.625rem;\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-family: 'Pluto Cond';\n flex-direction: column;\n align-items: center;\n background-color: transparent;\n padding-bottom: 32px;\n\n @media only screen and (max-width: 769px) {\n padding-bottom: 24px;\n }\n\n span {\n display: flex;\n }\n`;\n\nexport const Price = styled.div<{ isBig?: boolean }>`\n font-size: 0.875rem;\n flex-direction: row;\n display: flex;\n align-items: center;\n\n font-family: PlutoCond;\n\n ${({ isBig }) =>\n isBig &&\n css`\n font-size: 1.875rem;\n margin-left: 8px;\n opacity: 100% !important;\n\n @media only screen and (${BREAKPOINT.tablet}) {\n font-size: 3rem;\n }\n `};\n`;\n\nexport const Description = styled.div`\n margin-top: 1rem;\n min-width: 22.688rem;\n display: flex;\n flex-direction: column;\n font-family: PlutoCond;\n justify-content: center;\n align-items: center;\n\n @media only screen and (${BREAKPOINT.tablet}) {\n padding: 0 24px;\n width: 100%;\n }\n`;\n\nexport const Row = styled.span<{ withBorder?: boolean }>`\n justify-content: space-between;\n\n padding: 0.5rem 0;\n color: #ffffff;\n\n ${({ withBorder }) =>\n withBorder &&\n css`\n border-bottom: 1px solid #ffffff;\n `};\n\n div {\n font-family: PlutoCond;\n font-size: 12px;\n }\n`;\n\nexport const ButtonPay = styled.button`\n height: 2.75rem;\n margin-top: 1.5rem;\n background-color: transparent;\n border-radius: 6px;\n border: 1px solid #ffffff;\n padding: 0 36px;\n`;\n\nexport const InvoiceStatusText = styled.div`\n margin-bottom: 16px;\n\n @media only screen and (min-width: 769px) {\n display: none;\n }\n`;\n\nexport const ButtonContainer = styled.div`\n display: flex;\n justify-content: center;\n box-sizing: border-box;\n\n flex-direction: column;\n @media only screen and (${BREAKPOINT.tablet}) {\n width: 100%;\n }\n`;\n\nexport const EnvolvedDescription = styled.div`\n width: 100%;\n`;\n","import React, { useState } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { getBarcode, sendEmail } from 'shared/redux/psf/actions';\nimport { CardInfoType, InvoiceType } from 'shared/redux/psf/types';\nimport StatusInvoice from '../StatusInvoice';\nimport PaymentModal from './components/PaymentModal';\nimport {\n ButtonContainer,\n InvoiceStatusText,\n Container,\n Price,\n Description,\n Row,\n ButtonPay,\n EnvolvedDescription,\n} from './styles';\n\ninterface MenuHeaderProps {\n cardInfo: CardInfoType;\n hasMonth: boolean;\n loading: boolean;\n}\n\nconst MenuHeader: React.FC = ({\n cardInfo,\n hasMonth,\n loading,\n}) => {\n const [paymentVisible, setPaymentVisible] = useState(hasMonth);\n\n return (\n \n \n \n \n\n \n R$\n {' '}\n {cardInfo?.invoiceValue}\n \n \n \n \n
Vencimento
\n
{`${cardInfo?.dueDay} ${cardInfo?.dueMonth}`}
\n
\n \n
Fechamento
\n
\n {`${cardInfo?.bestDayOfBuy} ${cardInfo?.closureMonthDisplay}`}\n
\n
\n
\n\n {cardInfo?.type === InvoiceType.PENDING && (\n \n setPaymentVisible(true)}>\n Pagar Fatura\n \n \n )}\n
\n setPaymentVisible(false)}\n onSendEmail={sendEmail}\n onGetBarcode={() => getBarcode(cardInfo?.order ?? 0, (barcode) => {\n copy(barcode);\n })}\n />\n
\n );\n};\n\nexport default MenuHeader;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n width: 100%;\n margin: 32px 0 16px;\n\n #title {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n width: 100%;\n }\n`;\n\nexport const SadFace = styled.div`\n font-size: 41px;\n margin: 40px 0 18px;\n`;\n\nexport const NoHasHistoryContainer = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n\n div {\n text-align: center;\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport HistoryPurchases from 'shared/faceleaf/components/HistoryPurchases';\nimport { InvoiceItemStatus } from 'shared/utils/types';\nimport { CardInfoType } from 'shared/redux/psf/types';\nimport { Container, SadFace, NoHasHistoryContainer } from './styles';\nimport { HistoryItemType } from '~/components/atoms/historyItem';\n\ninterface HistoryProps {\n cardInfo: CardInfoType;\n}\n\nconst History: React.FC = ({ cardInfo }) => {\n const [historyPurchase, setHistoryPurchase] = useState([]);\n\n useEffect(() => {\n const hist: HistoryItemType[] = [];\n if (cardInfo) {\n cardInfo.items.forEach((item) => hist.push({\n day: String(item.day),\n month: item.month,\n description: item.description,\n order: item.installmentNumber,\n orders: item.installmentsNumber,\n value: item.value,\n status: InvoiceItemStatus.DEFAULT,\n }));\n }\n\n setHistoryPurchase(hist);\n }, [cardInfo]);\n\n return (\n \n
SUAS ÚLTIMAS COMPRAS
\n\n {historyPurchase.length > 0 ? (\n historyPurchase?.map((item) => )\n ) : (\n \n \n \n 🙁\n \n \n
Você não realizou nenhuma compra esse mês.
\n
\n )}\n
\n );\n};\n\nexport default History;\n","import { BREAKPOINT } from 'shared/utils/consts';\nimport styled from 'styled-components';\n\nexport const Container = styled.div`\n height: 5.5rem;\n\n background-color: transparent;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n padding: 1.375rem 2.5rem 1.375rem calc(6.4rem - 1rem);\n\n @media only screen and (${BREAKPOINT.tablet}) {\n padding: 0;\n }\n\n span {\n display: flex;\n }\n\n #monthText {\n text-transform: uppercase;\n margin-left: 4px;\n }\n\n .titleText {\n font-size: 1.25rem;\n line-height: 1.375rem;\n color: ${({ theme }) => theme.colors.marisaBlack0};\n font-family: PlutoCond;\n opacity: 0.8;\n }\n`;\n\nexport const ContainerMenuLarge = styled.div`\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n @media only screen and (${BREAKPOINT.tablet}) {\n display: none;\n }\n`;\n\nexport const MenuForDevices = styled.div`\n display: flex;\n width: 100%;\n justify-content: center;\n @media only screen and (min-width: 769px) {\n display: none;\n }\n\n button {\n position: absolute;\n left: 19px;\n top: 22px;\n background-color: transparent;\n padding: 8px;\n border: none;\n }\n\n span {\n font-size: 18px;\n line-height: 28px;\n font-family: PlutoCond;\n color: ${({ theme }) => theme.colors.marisaBlack0};\n }\n`;\n","import React, { useCallback } from 'react';\nimport { CardInfoType } from 'shared/redux/psf/types';\nimport User from '~/components/Header/components/User';\nimport { Container, ContainerMenuLarge, MenuForDevices } from './styles';\nimport WhiteArrow from '~/assets/images/whiteArrow.png';\nimport { useHistory } from 'react-router';\nimport StatusInvoice from '../StatusInvoice';\ninterface MenuHeaderProps {\n cardInfo?: CardInfoType;\n}\n\nconst MenuHeader: React.FC = ({ cardInfo }) => {\n const history = useHistory();\n\n const LargeMenuHeader = useCallback(() => {\n return (\n \n \n \n \n );\n }, [cardInfo]);\n\n return (\n \n \n \n \n Suas faturas\n \n \n );\n};\n\nexport default MenuHeader;\n","import styled, { css } from 'styled-components';\n\nexport const Container = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100vh;\n`;\n\nexport const ContentHistory = styled.div`\n width: 100%;\n justify-content: center;\n overflow-y: scroll;\n padding: 0 24px;\n`;\n\nexport const ContentColor = styled.div<{ bgColor: string }>`\n width: 100%;\n ${({ bgColor }) =>\n bgColor &&\n css`\n background-color: ${bgColor};\n `}\n`;\n\nexport const EnvolvedHistory = styled.div`\n width: 100%;\n max-width: 744px;\n margin: auto;\n`;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { ApplicationState } from 'shared/redux';\nimport { getData, logout as logoutAction } from 'shared/redux/psf/actions';\nimport { CardInfoType, InvoiceType } from 'shared/redux/psf/types';\nimport { SESSION_EXPIRED } from 'shared/utils/consts';\nimport Error from '~/components/Error';\nimport Loading from '~/components/Loading';\nimport { MenuItemType } from '~/components/molecules/menuCarousel';\nimport invoiceConfig from '~/util/invoice';\nimport { MessageType } from '~/util/types';\nimport Carousel from './components/Carousel';\nimport Details from './components/Details';\nimport HistoryContainer from './components/History';\nimport MenuHeader from './components/MenuHeader';\nimport {\n Container,\n ContentColor,\n ContentHistory,\n EnvolvedHistory\n} from './styles';\n\ninterface InvoiceParams {\n month: string;\n openPayment?: boolean;\n}\n\nconst Invoice: React.FC = () => {\n const [menuItems, setMenuItems] = useState([]);\n const [actualItemInvoice, setActualItemInvoice] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState('');\n\n const { isAuthenticated, logout } = useAuth();\n const { state } = useLocation();\n\n const dispatch = useDispatch();\n const cardInfoList = useSelector(\n ({ psf }: ApplicationState) => psf.cardInfoList,\n );\n\n const cardInfo = useSelector(({ psf }: ApplicationState) => psf.cardInfo);\n\n const load = useCallback(() => {\n setLoading(true);\n setError('');\n\n dispatch(\n getData(({ type, description }) => {\n if (type === MessageType.ERROR) {\n setError('Não foi possível buscar os dados, tente novamente.');\n }\n\n if (description === SESSION_EXPIRED) {\n logout();\n dispatch(logoutAction());\n }\n\n setLoading(false);\n }),\n );\n }, [logout, dispatch]);\n\n useEffect(() => {\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = 'auto';\n };\n }, []);\n\n useEffect(() => {\n if (isAuthenticated) {\n load();\n }\n }, [isAuthenticated, load]);\n\n const bgColorMenuHeader = useMemo(() => {\n switch (actualItemInvoice?.type) {\n case InvoiceType.PENDING:\n return invoiceConfig.pending.background;\n case InvoiceType.CLOSED:\n return invoiceConfig.closed.background;\n case InvoiceType.PAID:\n return invoiceConfig.paid.background;\n case InvoiceType.OPENED:\n return invoiceConfig.opened.background;\n default:\n return invoiceConfig.pending.background;\n }\n }, [actualItemInvoice]);\n\n useEffect(() => {\n const months: MenuItemType[] = [];\n cardInfoList.forEach((month) => months.push({\n name: month.cardInfo.closureLabel,\n data: month.cardInfo,\n }));\n\n setMenuItems(months);\n }, [cardInfoList]);\n\n useEffect(() => {\n if (isAuthenticated) {\n load();\n }\n }, [isAuthenticated, load]);\n\n return (\n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Invoice;\n","import styled from 'styled-components';\nimport AuthBackground from '../../../assets/images/auth-bg.png';\nimport AuthBackgroundSmall from '../../../assets/images/auth-bg-small.png';\nimport { BREAKPOINT } from 'shared/utils/consts';\nimport LogoMbank from '../../../assets/images/logoMbankAuth.png';\n\nexport const Container = styled.div`\n background: url(${AuthBackground})\n ${({ theme }) => theme.colors.mbankPrimary100} no-repeat top right;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n width: 100%;\n @media only screen and (${BREAKPOINT.mobileLarge}) {\n background: url(${AuthBackgroundSmall})\n ${({ theme }) => theme.colors.mbankPrimary100} no-repeat top right;\n }\n`;\n\nexport const ImageLogo = styled.img`\n position: absolute;\n top: 64px;\n left: 103px;\n background-image: url(${LogoMbank});\n\n @media only screen and (max-width: 1000px) {\n display: none;\n }\n`;\n\nexport const Content = styled.div`\n background: ${({ theme }) => theme.colors.marisaBlack0};\n box-shadow: 0px 10px 20px rgba(197, 197, 197, 0.3);\n border-radius: 6px;\n padding: 2.5rem;\n box-sizing: border-box;\n\n @media only screen and (max-width: 600px) {\n max-width: 328px;\n padding: 1.8rem;\n }\n\n @media only screen and (${BREAKPOINT.mobileLarge}) {\n max-width: 300px;\n padding: 1.8rem;\n }\n`;\n\nexport const Envolved = styled.div``;\n","import React from 'react';\nimport { Container, Content, ImageLogo } from './styles';\nimport LogoMbank from '~/assets/images/logoMbankAuth.png';\n\nconst AuthLayout: React.FC = ({ children }) => (\n <>\n \n \n {children}\n \n \n);\n\nexport default AuthLayout;\n","import styled from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.aside`\n background: ${({ theme }) => theme.colors.marisaBlack0};\n box-shadow: 6px 44px 51px rgba(0, 0, 0, 0.06);\n\n padding: 2.5rem 0;\n`;\n\ninterface MarkerProps {\n index: number;\n}\n\nconst MARGIN_Y = 40;\nconst MENU_ITEM_HEIGHT = 100;\n\nexport const Marker = styled.div`\n background-color: ${({ theme }) => theme.colors.mbankPrimary100};\n height: ${MENU_ITEM_HEIGHT}px;\n position: absolute;\n top: ${({ index }) => (MARGIN_Y * 2 + MENU_ITEM_HEIGHT) * index + MARGIN_Y}px;\n left: 0;\n width: 6px;\n\n transition: top 500ms;\n\n @media (${BREAKPOINT.laptop}) {\n display: none;\n }\n`;\n\nexport const SadFace = styled.div`\n font-size: 30px;\n margin-bottom: 16px;\n justify-content: center;\n align-items: center;\n display: flex;\n`;\n\nexport const ContainerModal = styled.div`\n padding: 10px 10px;\n display: flex;\n flex-direction: column;\n\n #textModal {\n text-align: center;\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-size: 16px;\n font-family: PlutoCond;\n font-weight: 400px;\n }\n\n button {\n margin-top: 40px;\n\n border: 1px solid ${({ theme }) => theme.colors.marisaPrimary100};\n border-radius: 6px;\n padding: 14px 54px;\n background-color: transparent;\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-family: PlutoCond;\n font-size: 12px;\n text-transform: uppercase;\n }\n`;\n","var _g, _defs;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgInvoiceDetailMenuIcon = function SvgInvoiceDetailMenuIcon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 41,\n viewBox: \"0 0 40 41\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.3332 10.4994V11.8327C34.4358 11.8327 35.3331 12.73 35.3331 13.8327V38.4989L33.7312 37.2989C33.4946 37.1202 33.1685 37.1202 32.9319 37.2989L30.6653 38.9989L28.3986 37.2989C28.162 37.1202 27.836 37.1202 27.5993 37.2989L25.3327 38.9989L23.0661 37.2989C22.8294 37.1202 22.5034 37.1202 22.2668 37.2989L20.0002 38.9989L17.7335 37.2989C17.4969 37.1202 17.1702 37.1202 16.9335 37.2989L15.3335 38.4989V13.8327C15.3335 11.9947 13.8382 10.4994 12.0003 10.4994C10.1623 10.4994 8.667 11.9947 8.667 13.8327V27.1658C8.667 28.2684 7.76966 29.1658 6.66701 29.1658C5.56436 29.1658 4.66702 28.2684 4.66702 27.1658V2.49962L6.26701 3.69962C6.50365 3.87758 6.83037 3.87758 7.06701 3.69962L9.33364 1.99962L11.6003 3.69962C11.8369 3.87758 12.1636 3.87758 12.4003 3.69962L14.6669 1.99962L16.9335 3.69962C17.1702 3.87758 17.4969 3.87758 17.7335 3.69962L20.0002 1.99962L22.2674 3.69962C22.5041 3.87758 22.8301 3.87758 23.0667 3.69962L24.6667 2.49962V11.1661H26V1.16627C26 0.913612 25.8573 0.682909 25.6313 0.569629C25.4053 0.456973 25.1353 0.48166 24.9333 0.632988L22.6667 2.33298L20.4001 0.632988C20.1627 0.45502 19.8367 0.45502 19.6001 0.632988L17.3334 2.33298L15.0668 0.632988C14.8302 0.45502 14.5035 0.45502 14.2668 0.632988L12.0002 2.33298L9.73364 0.632988C9.497 0.45502 9.17028 0.45502 8.93364 0.632988L6.66701 2.33298L4.40038 0.632988C4.19835 0.48166 3.92772 0.456973 3.70241 0.569629C3.4764 0.682988 3.33374 0.913612 3.33374 1.16627V27.1658C3.33374 29.0037 4.82905 30.499 6.66701 30.499C8.50497 30.499 10.0003 29.0037 10.0003 27.1658V13.8327C10.0003 12.73 10.8976 11.8327 12.0003 11.8327C13.1029 11.8327 14.0003 12.73 14.0003 13.8327V39.8321C14.0003 40.0848 14.1429 40.3155 14.3689 40.4288C14.5942 40.5401 14.8649 40.5174 15.0669 40.3654L17.3335 38.6654L19.6002 40.3654C19.8375 40.5441 20.1635 40.5441 20.4002 40.3654L22.6668 38.6654L24.934 40.3654C25.1707 40.5441 25.4967 40.5441 25.7333 40.3654L28 38.6654L30.2672 40.3654C30.5039 40.5441 30.8299 40.5441 31.0665 40.3654L33.3332 38.6654L35.5998 40.3654C35.7171 40.4541 35.8585 40.4988 35.9998 40.4988C36.1018 40.4988 36.2038 40.4754 36.2977 40.4288C36.5238 40.3154 36.6664 40.0848 36.6664 39.8321V13.8327C36.6664 11.9947 35.1711 10.4994 33.3332 10.4994Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.3334 10.5H12.0005V11.8333H33.3334V10.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.6668 29.1665H6.66699V30.4998H14.6668V29.1665Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9996 23.1665H17.9998V24.4998H25.9996V23.1665Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.6664 23.1665H29.9998V24.4998H32.6664V23.1665Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.333 27.166H17.9998V28.4993H23.333V27.166Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.6664 27.166H29.9998V28.4993H32.6664V27.166Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9996 31.166H17.9998V32.4993H25.9996V31.166Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.6664 31.166H29.9998V32.4993H32.6664V31.166Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9996 15.166H17.9998V16.4993H25.9996V15.166Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.6664 15.166H29.9998V16.4993H32.6664V15.166Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.333 19.167H17.9998V20.5003H23.333V19.167Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.6664 19.167H29.9998V20.5003H32.6664V19.167Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.33349 18.4995H7.3335V19.8328H9.33349V18.4995Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.33349 22.5H7.3335V23.8333H9.33349V22.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 10.5H7.3335V11.8333H12V10.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.33349 14.4995H7.3335V15.8328H9.33349V14.4995Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.3333 6.50049H7.3335V7.83376H15.3333V6.50049Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.0001 6.50049H19.3335V7.83376H22.0001V6.50049Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 40,\n height: 40,\n fill: \"white\",\n transform: \"translate(0 0.5)\"\n })))));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgInvoiceDetailMenuIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/invoice-detail-menu-icon.906fa523.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgSecondInstallmentMenuIcon = function SvgSecondInstallmentMenuIcon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 41,\n viewBox: \"0 0 34 41\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.2166 0.0449219H1.3369C0.755497 0.0449219 0.28418 0.516239 0.28418 1.09764V36.1882C0.28665 36.4856 0.413984 36.7683 0.635085 36.9672L3.72305 39.7744C4.12142 40.1351 4.7283 40.1351 5.12667 39.7744L7.50581 37.5918L9.88495 39.7534C10.2846 40.1108 10.889 40.1108 11.2886 39.7534L13.6817 37.5918L16.0749 39.7744C16.4745 40.1319 17.0789 40.1319 17.4785 39.7744L19.8577 37.5918L22.2368 39.7534C22.6364 40.1108 23.2408 40.1108 23.6404 39.7534L26.0336 37.5918L28.4198 39.7534C28.8181 40.114 29.425 40.114 29.8234 39.7534L32.9184 36.9461C33.1342 36.7522 33.261 36.4782 33.2693 36.1882V1.09764C33.2693 0.516239 32.798 0.0449219 32.2166 0.0449219ZM31.1629 35.7256L29.1206 37.5924L26.7415 35.4098C26.3419 35.0524 25.7375 35.0524 25.3379 35.4098L22.9447 37.5924L20.5656 35.4098C20.166 35.0524 19.5616 35.0524 19.162 35.4098L16.7758 37.5924L14.3896 35.4098C13.99 35.0524 13.3856 35.0524 12.986 35.4098L10.5928 37.5924L8.2137 35.4098C7.81409 35.0524 7.20969 35.0524 6.81008 35.4098L4.42393 37.5924L2.38867 35.7466V2.15097H31.1629V35.7256ZM15.7239 7.28801C13.7802 7.30725 12.2147 8.8884 12.2148 10.8322H12.2289C12.2157 11.7812 12.5831 12.6961 13.249 13.3725C13.9149 14.049 14.8238 14.4307 15.773 14.4324H17.7661C18.5335 14.4509 19.1513 15.0687 19.1698 15.8361V15.8992C19.17 16.6803 18.547 17.3189 17.7661 17.3379H13.9693C13.3879 17.3379 12.9166 17.8093 12.9166 18.3907C12.9166 18.9721 13.3879 19.4434 13.9693 19.4434H15.6747V20.7487C15.6747 21.3301 16.1461 21.8015 16.7275 21.8015C17.3089 21.8015 17.7802 21.3301 17.7802 20.7487V19.4364C19.7222 19.4133 21.2855 17.8344 21.2892 15.8922V15.808C21.2665 13.8795 19.7087 12.3217 17.7802 12.2989H15.773C15.0155 12.2461 14.4279 11.6161 14.4279 10.8567C14.4279 10.0973 15.0155 9.46737 15.773 9.41449H18.882C19.4634 9.41449 19.9347 8.94318 19.9347 8.36178C19.9347 7.78038 19.4634 7.30906 18.882 7.30906H17.8293V6.01071C17.8293 5.42931 17.358 4.95799 16.7766 4.95799C16.1952 4.95799 15.7239 5.42931 15.7239 6.01071V7.28801ZM24.6014 25.6614C24.6014 25.08 25.0727 24.6087 25.6541 24.6087H27.17C27.7514 24.6087 28.2227 25.08 28.2227 25.6614C28.2227 26.2428 27.7514 26.7142 27.17 26.7142H25.6541C25.0727 26.7142 24.6014 26.2428 24.6014 25.6614ZM6.38179 24.6087C5.80039 24.6087 5.32907 25.08 5.32907 25.6614C5.32907 26.2428 5.80039 26.7142 6.38179 26.7142H22.0602C22.6416 26.7142 23.113 26.2428 23.113 25.6614C23.113 25.08 22.6416 24.6087 22.0602 24.6087H6.38179ZM24.6014 30.2085C24.6014 29.6271 25.0727 29.1558 25.6541 29.1558H27.17C27.7514 29.1558 28.2227 29.6271 28.2227 30.2085C28.2227 30.7899 27.7514 31.2612 27.17 31.2612H25.6541C25.0808 31.2613 24.6129 30.8027 24.6014 30.2296V30.2085ZM6.38179 29.1558C5.80039 29.1558 5.32907 29.6271 5.32907 30.2085V30.2296C5.34054 30.8027 5.80851 31.2613 6.38179 31.2612H22.0602C22.6416 31.2612 23.113 30.7899 23.113 30.2085C23.113 29.6271 22.6416 29.1558 22.0602 29.1558H6.38179Z\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSecondInstallmentMenuIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/second-installment-menu-icon.21d437b7.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\nimport { NavLink } from 'react-router-dom';\n\nexport const Container = styled(NavLink)`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n margin-bottom: 2.5rem;\n width: 100%;\n\n &:not(:last-child)::after {\n content: '';\n border-bottom: 1px solid ${({ theme }) => theme.colors.mbankBlack40};\n\n display: flex;\n\n position: relative;\n\n margin: 2.5rem 1.75rem 0;\n width: calc(100% - 3.5rem);\n }\n\n > div {\n border-left: 6px solid transparent;\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n padding: 0.375rem 0;\n height: 100px;\n width: 100%;\n\n span {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n\n font-size: 0.625rem;\n font-weight: 500;\n line-height: 0.625rem;\n\n text-align: center;\n text-transform: uppercase;\n padding: 0 1.75rem;\n\n transition: color 0.3s;\n }\n\n svg {\n fill: ${({ theme }) => theme.colors.marisaBlack60};\n\n transition: fill 0.3s;\n }\n }\n\n &.active {\n > div {\n /* border-color: ${({ theme }) => theme.colors.marisaSecondary100}; */\n\n span {\n color: ${({ theme }) => theme.colors.marisaSecondary100};\n transition: color 500ms;\n }\n\n svg {\n fill: ${({ theme }) => theme.colors.marisaSecondary100};\n transition: fill 500ms;\n }\n }\n }\n\n &:not(.active):hover {\n > div {\n span {\n color: ${({ theme }) => theme.colors.marisaBlack80};\n }\n\n svg {\n fill: ${({ theme }) => theme.colors.marisaBlack80};\n }\n }\n }\n`;\n\nexport const IconContainer = styled.div`\n margin-bottom: 1.375rem;\n`;\n","import React, { MouseEvent, ReactElement, useMemo } from 'react';\nimport { NavLinkProps, useLocation } from 'react-router-dom';\nimport { Container, IconContainer } from './styles';\n\nconst menu = [['/'], ['/installment'], ['/invoice']];\n\ninterface MenuLinkProps extends NavLinkProps {\n icon: ReactElement;\n title: string;\n onClickNav?: () => void;\n}\n\nconst MenuLink: React.FC = ({\n icon,\n title,\n onClickNav,\n ...rest\n}) => {\n const { pathname } = useLocation();\n\n const isActive = useMemo(() => {\n const item = menu.find(value => value.find(v => v === pathname));\n\n return item[0] === rest.to;\n }, [pathname, rest.to]);\n\n return (\n {\n if (onClickNav) {\n e.preventDefault();\n onClickNav();\n }\n }}\n >\n
\n {icon}\n {title}\n
\n \n );\n};\n\nexport default MenuLink;\n","import React, { useMemo, useState, useEffect, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { getData } from 'shared/redux/psf/actions';\nimport { useModal } from 'shared/faceleaf/contexts/ModalContext';\nimport { Container, ContainerModal, Marker, SadFace } from './styles';\n\nimport { ApplicationState } from 'shared/redux';\n\nimport { InvoiceType } from 'shared/redux/psf/types';\nimport { getUserStatusMbank } from '~/util';\nimport { UserStatusType } from '~/util/types';\nimport { ReactComponent as IconHome } from '../../../../assets/images/home-menu-icon.svg';\nimport { ReactComponent as IconInvoice } from '../../../../assets/images/invoice-detail-menu-icon.svg';\nimport { ReactComponent as IconNegotiation } from '../../../../assets/images/negotiation-menu-icon.svg';\nimport { ReactComponent as IconInstallment } from '../../../../assets/images/second-installment-menu-icon.svg';\nimport { ReactComponent as IconInstallmentConsultationSelected } from '../../../../assets/images/calendar-installment-icon-dark.svg';\nimport { ReactComponent as IconInstallmentConsultation } from '../../../../assets/images/calendar-installment-icon.svg';\n\nimport MenuLink from './MenuLink';\nimport CustomMenuLink from './CustomMenuLink';\n\nconst Menu: React.FC = () => {\n const { isAuthenticated } = useAuth();\n const cardInfo = useSelector((state: ApplicationState) => state.psf.cardInfo);\n const [hasOnclick, setHasOnclick] = useState(false);\n const dispatch = useDispatch();\n const history = useHistory();\n\n const { openModal, closeModal } = useModal();\n\n const { pathname } = useLocation();\n\n const cardStatus = useSelector(\n ({ psf }: ApplicationState) => psf.userInfo.cardStatus,\n );\n\n const type = useSelector(({ psf }: ApplicationState) => psf.cardInfo.type);\n\n const hasNegotiation = useSelector(\n ({ negotiation }: ApplicationState) => negotiation.hasNegotiation,\n );\n\n const inDebt = useMemo(() => {\n const status = getUserStatusMbank(cardStatus, type, hasNegotiation);\n\n return (\n status === UserStatusType.IN_DEBT ||\n status === UserStatusType.IN_DEBT_WITH_AGREEMENT\n );\n }, [cardStatus, hasNegotiation, type]);\n\n const menu = useMemo(() => {\n if (inDebt) {\n return [['/']];\n }\n\n return [['/'], ['/installment'], ['/invoice']];\n }, [inDebt]);\n\n const index = useMemo(() => {\n return menu.findIndex(value => value.find(v => v === pathname));\n }, [menu, pathname]);\n\n useEffect(() => {\n if (isAuthenticated) {\n dispatch(getData());\n }\n }, [isAuthenticated, dispatch]);\n\n useEffect(() => {\n if (\n cardInfo.type === InvoiceType.PENDING ||\n cardInfo.type === InvoiceType.CLOSED\n ) {\n setHasOnclick(true);\n }\n }, [cardInfo.type]);\n\n const noHaveHistory = useCallback(() => {\n return (\n \n \n \n 🙁\n \n \n
\n Você não realizou nenhuma\n
\n compra esse mês.\n
\n \n
\n );\n }, [closeModal]);\n\n const onClick = useCallback(() => {\n if (hasOnclick) {\n history.push('/installment', { month: cardInfo.closureLabel });\n } else {\n openModal({\n component: noHaveHistory(),\n });\n }\n }, [cardInfo, history, openModal, hasOnclick, noHaveHistory]);\n\n return (\n \n \n\n } />\n {!inDebt && (\n <>\n }\n />\n }\n />\n \n )}\n \n );\n};\n\nexport default Menu;\n","import styled from 'styled-components';\nimport { BREAKPOINT } from '~/util/consts';\n\nexport const Container = styled.div`\n display: grid;\n grid-template-columns: 146px 1fr;\n\n min-height: 100vh;\n width: 100vw;\n\n @media (${BREAKPOINT.tablet}) {\n grid-template-columns: 0 1fr;\n }\n`;\n\nexport const Content = styled.div`\n background: ${({ theme }) => theme.colors.mbankPrimary40};\n`;\n","import React from 'react';\nimport Menu from './Menu';\nimport { Container, Content } from './styles';\n\nconst DefaultLayout: React.FC = ({ children }) => {\n return (\n \n \n {children}\n \n );\n};\n\nexport default DefaultLayout;\n","import React from 'react';\nimport {\n Route,\n RouteProps,\n useHistory,\n useRouteMatch,\n useLocation,\n} from 'react-router-dom';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\n\nimport AuthLayout from '../components/Layouts/AuthLayout';\nimport DefaultLayout from '../components/Layouts/DefaultLayout';\n\ninterface CustomRouteProps extends RouteProps {\n layout?: 'default' | 'auth';\n}\n\nconst CustomRoute: React.FC = ({\n layout = 'default',\n component,\n ...rest\n}) => {\n const { isAuthenticated } = useAuth();\n const history = useHistory();\n const location = useLocation();\n const match = useRouteMatch();\n\n const Layout = layout === 'auth' ? AuthLayout : DefaultLayout;\n const Component = component;\n\n if (layout === 'auth' && isAuthenticated) {\n history.push('/');\n }\n\n if (layout === 'default' && !isAuthenticated) {\n history.push('/signin');\n }\n\n return (\n {\n return (\n \n \n \n );\n }}\n />\n );\n};\n\nexport default CustomRoute;\n","import styled from 'styled-components';\nimport Button from '~/components/Button';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 328px;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.625rem;\n font-weight: 400;\n line-height: 2rem;\n margin-bottom: 3rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n text-transform: uppercase;\n\n div {\n padding: 0.625rem;\n }\n }\n\n #button-area {\n justify-content: center;\n align-items: center;\n display: flex;\n margin-top: 0.875rem;\n }\n\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n\n gap: 1.5rem;\n }\n`;\n\nexport const Form = styled.form``;\n\nexport const Field = styled.div`\n margin-bottom: 2.5rem;\n`;\n\nexport const ButtonWrapper = styled(Button)`\n margin-top: 2.5rem;\n`;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useFieldArray, useForm } from 'react-hook-form';\nimport { Link, useHistory, useLocation } from 'react-router-dom';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport InputForm from '../../../components/Forms/InputForm';\nimport { ButtonWrapper, Container, Form } from './styles';\nimport { ValidationParams } from '~/routes/RouteParams';\n\nconst Validation: React.FC = () => {\n const {\n idConsult,\n questionValidate,\n positiveVerify,\n loadingPositiveVerify,\n getAuthToken,\n documentValidation,\n captchaToken,\n } = useAuth();\n\n const [disabledButton, setDisabledButton] = useState(true);\n\n const history = useHistory();\n\n const { state } = useLocation();\n\n const { control, handleSubmit, watch } = useForm();\n\n const { fields, append } = useFieldArray({\n control,\n name: 'questions',\n });\n\n const watchFieldArray = watch('questions');\n\n const controlledFields = fields.map((field, index) => {\n return {\n ...field,\n ...watchFieldArray[index],\n };\n });\n\n useEffect(() => {\n if (questionValidate) {\n questionValidate.forEach(item => append({ [item.codeQuestion]: '' }));\n }\n }, [questionValidate, append]);\n\n useEffect(() => {\n controlledFields.forEach(item => {\n if (item[Object.keys(item)[0]] === '') {\n setDisabledButton(true);\n return;\n } else {\n setDisabledButton(false);\n }\n });\n }, [controlledFields]);\n\n useEffect(() => {\n if (idConsult === undefined) {\n history.replace('/signUp');\n }\n }, [history, idConsult]);\n\n const toPassword = useCallback(() => {\n history.push('/new-password', { flow: state?.flow });\n }, [history, state]);\n\n const goBack = useCallback(() => {\n if (state?.flow === 'forgot') {\n history.push('/forget-password');\n } else {\n history.push('/signup');\n }\n }, [history, state]);\n\n const authToken = useCallback(\n data => {\n getAuthToken({\n document: documentValidation,\n birthDate: data,\n callBack: toPassword,\n captcha: captchaToken,\n goBack,\n });\n },\n [documentValidation, getAuthToken, toPassword, goBack],\n );\n\n const onSubmit = useCallback(\n data => {\n positiveVerify(data, idConsult, authToken, goBack);\n },\n [idConsult, positiveVerify, goBack],\n );\n\n const InputsQuestions = useCallback(\n () => (\n <>\n {controlledFields.map((item, index) => (\n
\n \n
\n ))}\n \n ),\n // eslint-disable-next-line\n [control, fields, questionValidate],\n );\n\n return (\n \n

\n {state?.flow === 'signup' ? (\n <>\n Olá, para realizar seu cadastro\n
\n informe os dados abaixo:\n \n ) : (\n <>\n Esqueci minha\n senha\n \n )}\n

\n\n \n
\n \n {loadingPositiveVerify ? : 'Próximo'}\n \n\n
\n Voltar\n
\n
\n
\n );\n};\n\nexport default Validation;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.625rem;\n font-weight: 400;\n line-height: 2rem;\n margin-bottom: 4rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n text-transform: uppercase;\n div {\n padding: 0.625rem;\n }\n }\n\n #button-area {\n justify-content: center;\n align-items: center;\n display: flex;\n margin-top: 0.875rem;\n }\n\n footer {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1.5rem;\n }\n`;\n\nexport const Form = styled.form``;\n\nexport const Field = styled.div`\n margin-bottom: 2.5rem;\n`;\n\nexport const InputContainer = styled.div`\n height: 90px;\n`;\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport React, { useCallback, useEffect } from 'react';\nimport Captcha from '~/components/Forms/CaptchaForm';\nimport { useForm, useFormState } from 'react-hook-form';\nimport { Link, useHistory, useLocation } from 'react-router-dom';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { useDialog } from 'shared/faceleaf/contexts/DialogContext';\nimport * as yup from 'yup';\nimport { ValidationParams } from '~/routes/RouteParams';\nimport Button from '../../../components/Button';\nimport InputForm from '../../../components/Forms/InputForm';\nimport { Container, Field, Form, InputContainer } from './styles';\n\ninterface NewPasswordFormData {\n password: string;\n password_confirmation: string;\n captcha: string;\n}\n\nconst schema = yup.object({\n password: yup\n .string()\n .required('A senha deve ser informada')\n .min(6, 'A senha deve ter no mínimo 6 caracteres'),\n password_confirmation: yup\n .string()\n .oneOf([yup.ref('password')], 'As senhas devem ser compatíveis.')\n .required('A confirmação de senha deve ser informada.'),\n captcha: yup.string().required('O captcha deve ser preenchido.'),\n});\n\nconst NewPassword: React.VFC = () => {\n const {\n idConsult,\n definePassword,\n signIn,\n documentValidation: document,\n forgotPassword,\n loadingChangePassword,\n } = useAuth();\n const { openDialog } = useDialog();\n const history = useHistory();\n const { state } = useLocation();\n\n const {\n control,\n handleSubmit,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n mode:\"onChange\"\n });\n\n const { isValid } = useFormState({ control });\n\n console.log(state);\n\n useEffect(() => {\n if (!state.code) {\n history.replace('/signin');\n }\n }, [history, idConsult]);\n\n const callback = useCallback(() => {\n history.push('/');\n }, [history]);\n\n const onSubmit = useCallback(\n (data: NewPasswordFormData) => {\n const { password, captcha } = data;\n\n if (state?.flow === 'signup') {\n definePassword({\n password,\n code: state.code,\n document: state.document,\n captcha,\n token:state.token,\n callback: () => {\n openDialog({\n type: 'success',\n title: 'Pronto!',\n message: 'Conta criada com sucesso!',\n onClose: () => history.replace('/signin'),\n });\n },\n });\n } else {\n forgotPassword({\n password,\n code: state.code,\n document: state.document,\n captcha,\n token:state.token,\n callback: () => {\n openDialog({\n type: 'success',\n title: 'Pronto!',\n message: 'Senha cadastrada com sucesso!',\n onClose: () => history.replace('/signin'),\n });\n },\n });\n }\n },\n [\n document,\n callback,\n definePassword,\n forgotPassword,\n openDialog,\n signIn,\n state,\n ],\n );\n\n return (\n \n

\n Vamos definir sua {state?.flow === 'forgot' && 'nova '}\n senha\n

\n\n
\n \n \n \n \n \n\n \n \n \n \n \n\n \n setValue('captcha', token, { shouldValidate: true })}\n />\n \n\n \n\n
\n \n
VOLTAR
\n \n
\n \n
\n );\n};\n\nexport default NewPassword;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 328px;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n margin-bottom: 2.625rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n h4 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-family: 'PlutoSans';\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1rem;\n text-align: center;\n align-self: center;\n margin-top: 1rem;\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.75rem;\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n div {\n padding: 0.625rem;\n }\n }\n`;\n","import styled, { css } from 'styled-components';\n\ninterface CheckboxFieldProps {\n checked: boolean;\n}\n\nexport const Field = styled.div`\n margin-bottom: 2.5rem;\n`;\n\nexport const Container = styled.div`\n display: flex;\n padding: 15px 20px;\n border-radius: 6px;\n width: 100%;\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n box-shadow: 0 10px 20px 0 rgba(197, 197, 197, 0.32);\n`;\n\nexport const OptionText = styled.p<{ light?: boolean }>`\n font-family: 'PlutoSans';\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 16px;\n font-weight: 400;\n line-height: 18px;\n margin-bottom: 4px;\n\n ${({ light }) =>\n light &&\n css`\n color: ${({ theme }) => theme.colors.marisaBlack60};\n `}\n`;\n\nexport const CheckboxContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const CheckboxField = styled.button.attrs({\n type: \"button\",\n})`\n background: ${({ theme }) => theme.colors.marisaBlack0};\n border: 1px solid ${({ theme }) => theme.colors.mbankBlack40};\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 20px;\n width: 20px;\n border-radius: 10px;\n\n margin-right: 17px;\n\n transition: all 0.3s;\n\n ${({ checked }) =>\n checked &&\n css`\n background: ${({ theme }) => theme.colors.marisaPrimary20};\n border-color: ${({ theme }) => theme.colors.marisaPrimary20};\n `}\n`;\n\nexport const Checkedbox = styled.div`\n background: ${({ theme }) => theme.colors.marisaPrimary100};\n height: 10px;\n width: 10px;\n border-radius: 5px;\n transition: all 0.3s;\n`;\n","import React from 'react';\nimport { Field, OptionText, Container, CheckboxContainer, CheckboxField, Checkedbox } from './styles';\n\ntype Props = {\n title: string;\n content: string;\n selected: boolean;\n type: 'email' | 'sms';\n handleChange: (value: string) => void;\n}\n\nconst ValidationOption = ({\n title,\n content,\n selected,\n type,\n handleChange\n}: Props) => {\n return (\n \n \n \n handleChange(type)}>\n {selected && }\n \n \n
\n \n {title}\n \n \n {content}\n \n
\n
\n \n );\n};\n\nexport default ValidationOption;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport Button from '../../../components/Button';\nimport { Container } from './styles';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport ValidationOption from '~/components/ValidationOption';\nimport { VerificationCodeParams, VerifyParams } from '~/routes/RouteParams';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport Loading from 'shared/faceleaf/components/Loading';\n\nconst ValidationToken: React.FC = () => {\n const [selectedOption, setSelectedOption] = useState();\n const { loadingValidate,documentValidation, sendValidationCode } = useAuth();\n const history = useHistory();\n const { state } = useLocation();\n\n const formatCellphoneNumber = (\n rawNumber: string,\n ): string => {\n const regex = /^([0-9*]{2})([0-9*]{4,5})([0-9*]{4})$/;\n var str = rawNumber.replace(/[^0-9*]/g, \"\").slice(0, 11);\n\n const result = str.replace(regex, \"($1)$2-$3\");\n return result;\n };\n\n const toVefify = useCallback((data) => {\n if (data.sent) {\n history.replace('/validation/verify-code', data)\n }\n }, [history]);\n\n const navigateToCode = () => {\n sendValidationCode({\n document: documentValidation,\n method: selectedOption.sendTo,\n token: state.token,\n flow: state.flow,\n callback: toVefify\n })\n }\n\n const navigateToHelp = () => {\n history.push('/validation/verify-help')\n }\n\n const handleSelectedOption = (value: 'sms' | 'email', contact: string, email: string) => {\n setSelectedOption({ sendTo: value, contact, email, token: state.token })\n }\n\n const renderOptions = useMemo(() => {\n return (\n <>\n {state.email && (\n handleSelectedOption('email', state.celular, state.email)}\n />\n )}\n {state.celular && (\n handleSelectedOption('sms', state.celular, state.email)}\n />\n )}\n \n )\n }, [state, selectedOption])\n\n return (\n \n

\n Agora, escolha como deseja receber seu código de verificação\n

\n {renderOptions}\n \n {loadingValidate ? : 'CONTINUAR'}\n\n \n\n

\n Precisa de ajuda? Acesse aqui para podermos\n te ajudar da forma mais rápida possivel :)\n

\n
\n );\n};\n\nexport default ValidationToken;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 328px;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n margin-bottom: 2rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n h2 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-family: 'PlutoSans';\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.063rem;\n margin-bottom: 0.5rem;\n }\n\n h4 {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: 'PlutoSans';\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.125rem;\n margin-bottom: 1rem;\n }\n\n h5 {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: 'PlutoSans';\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 0.938rem;\n margin-bottom: 0.25rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n h6 {\n color: ${({ theme }) => theme.colors.marisaBlack60};\n font-family: 'PlutoSans';\n font-size: 0.688rem;\n font-weight: 400;\n line-height: 0.875rem;\n }\n\n #button-area {\n justify-content: center;\n align-items: center;\n display: flex;\n margin-top: 1rem;\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n text-transform: uppercase;\n\n div {\n padding: 0.625rem;\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n padding: 16px 21px;\n display: flex;\n flex-direction: row;\n background-color: ${({ theme }) => theme.colors.mbankPrimary40};\n border-radius: 8px;\n margin-top: 16px;\n`;\n\nexport const TextBox = styled.div`\n margin-left: 25px;\n`;\n","import React, { ReactNode } from 'react';\nimport { Container, TextBox } from './styles';\n\ntype Props = {\n icon: any;\n children: ReactNode;\n};\n\nexport const ContactCard = ({ icon, children }: Props) => {\n return (\n \n
\n \n
\n {children}\n
\n );\n};\n","import React from 'react';\nimport { Container } from './styles';\nimport { Link } from 'react-router-dom';\nimport { ContactCard } from '~/components/ContactCard';\nimport MbankMiniCard from '~/assets/images/mbank-mini-card.png'\nimport WhatsappPink from '~/assets/images/whatsapp-pink.png'\n\nconst MBANK_CARD_SAC_CAPITAL = '(11) 4004-2211';\nconst MBANK_CARD_SAC_OTHERS = '0800-728-1122';\n\nconst ValidationTokenHelp: React.FC = () => {\n return (\n \n

\n Precisa de {'ajuda?'}\n

\n\n

\n Aqui podemos te ajudar da forma mais rápida possivel! Em caso de dúvidas,\n entre em contato com nosso Serviço de Atendimento ao Cliente pelos\n telefones abaixo:\n

\n\n \n

SAC Cartões Mbank

\n
Capital: {MBANK_CARD_SAC_CAPITAL}
\n
Demais: {MBANK_CARD_SAC_OTHERS}
\n\n
\n
Segunda a sábado: 08:00 - 22:00
\n
Domingos e feriados: 12:00 - 20:00
\n
\n
\n \n

WhatsApp Mbank

\n
\n {MBANK_CARD_SAC_CAPITAL}\n
\n
\n\n
\n Voltar\n
\n
\n );\n};\n\nexport default ValidationTokenHelp;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 328px;\n\n h1 {\n color: ${({ theme }) => theme.colors.marisaBlack90};\n font-size: 1.375rem;\n font-weight: 400;\n line-height: 1.625rem;\n margin-bottom: 3rem;\n\n span {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n text-transform: lowercase;\n }\n }\n\n h4 {\n color: ${({ theme }) => theme.colors.marisaBlack50};\n font-family: 'PlutoSans';\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.125rem;\n text-align: center;\n width: 80%;\n align-self: center;\n margin-top: 1.5rem;\n margin-bottom: 3.75rem;\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n }\n }\n\n a {\n color: ${({ theme }) => theme.colors.marisaPrimary100};\n font-size: 0.6875rem;\n font-weight: 500;\n line-height: 0.875rem;\n\n text-transform: uppercase;\n\n div {\n padding: 0.625rem;\n }\n }\n`;\n\nexport const InputWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 80%;\n align-self: center;\n`;\n\nexport const InputOutterCircle = styled.div`\n display: flex;\n width: 48px;\n height: 48px;\n border: 1px solid ${({ theme }) => theme.colors.marisaBlack90};\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border-radius: 9999999px;\n align-items: center;\n`;\n\nexport const FakeInput = styled.div<{\n current: boolean;\n}>`\n display: flex;\n cursor: text;\n width: 36px;\n height: 36px;\n border: 1px solid ${({ theme }) => theme.colors.mbankBlack40};\n background-color: ${({ theme }) => theme.colors.marisaBlack0};\n border-radius: 9999999px;\n margin: 0 5px;\n justify-content: center;\n align-items: center;\n`;\n\nexport const CalculationText = styled.p<{ textInput?: boolean }>`\n font-size: 18px;\n font-weight: 400;\n margin-top: 50%;\n font-family: 'Ubuntu';\n color: ${({ theme, textInput }) =>\n textInput ? theme.colors.marisaBlack50 : theme.colors.marisaDarkModeBg100};\n`;\n\nexport const HideInput = styled.input`\n width: 0;\n height: 0;\n border: 0px;\n`;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport Loading from 'shared/faceleaf/components/Loading';\nimport { useAuth } from 'shared/faceleaf/contexts/AuthContext';\nimport { VerificationCodeParams } from '~/routes/RouteParams';\nimport Button from '../../../components/Button';\nimport {\n CalculationText,\n Container,\n FakeInput,\n HideInput,\n InputOutterCircle,\n InputWrapper\n} from './styles';\n\nconst timeLimit = 60;\n\nconst ValidationTokenCode = () => {\n const inputRef = useRef(null);\n const { loadingValidate,validateCode, documentValidation } = useAuth();\n const [attemps, setAttemps] = useState(0);\n const history = useHistory();\n const [value, setValue] = useState('');\n const [isInputFocused, setInputFocused] = useState(false);\n const [timer, setTimer] = useState(timeLimit);\n const { state } = useLocation();\n const [currentChoice, setCurrentChoice] = useState<'sms' | 'email'>(state.sendTo);\n\n useEffect(() => {\n timer > 0 && setTimeout(() => setTimer(timer - 1), 1000);\n }, [timer])\n\n const handleResendCode = () => {\n setTimer(60);\n }\n\n const handleChangeChoice = (choice: 'sms' | 'email') => {\n setCurrentChoice(choice);\n setTimer(60);\n }\n\n const filterTextJustNumber = (\n text: string,\n setText: React.Dispatch>\n ) => {\n setText(text.replace(/\\D/g, ''));\n };\n\n const toPassword = useCallback((verified) => {\n if (verified.isValid) {\n history.push('/new-password', verified);\n }\n }, [history, state]);\n\n const handleConfirmCode = (method: string) => {\n validateCode({\n document: documentValidation,\n code: value.substring(0, 4),\n token: state.token,\n method,\n flow: state.flow,\n callback: toPassword\n })\n }\n\n return (\n \n

\n Insira o código enviado para o\n {currentChoice === 'sms' ? ' número ' : ' e-mail '}\n {currentChoice === 'sms' ? {state.contact} : {state.email}}\n

\n \n inputRef.current?.focus()}>\n \n {value.length > 0 && (\n {value[0]}\n )}\n {value.length === 0 && isInputFocused && '|'}\n \n \n inputRef.current?.focus()}>\n = 1}\n >\n {value.length > 1 && (\n {value[1]}\n )}\n {value.length === 1 && isInputFocused && '|'}\n \n \n inputRef.current?.focus()}>\n \n {value.length > 2 && (\n {value[2]}\n )}\n {value.length === 2 && isInputFocused && '|'}\n \n \n inputRef.current?.focus()}>\n \n {value.length > 3 && (\n {value[3]}\n )}\n {value.length === 3 && isInputFocused && '|'}\n \n \n \n setInputFocused(true)}\n onBlur={() => setInputFocused(false)}\n onChange={(event) => filterTextJustNumber(event.target.value, setValue)}\n />\n\n {timer > 0 ?

Reenviar {currentChoice === 'sms' ? 'SMS' : 'e-mail'} em: {timer} segundos

: Reenviar código}\n \n\n

\n Não recebeu? handleChangeChoice(currentChoice === 'email' ? 'sms' : 'email')}>ENVIE POR {currentChoice === 'email' ? 'SMS' : 'E-MAIL'}\n

\n
\n );\n};\n\nexport default ValidationTokenCode;\n","import React, { useEffect } from 'react';\nimport { Switch } from 'react-router-dom';\n\nimport { useDispatch } from 'react-redux';\nimport { setClientType } from 'shared/redux/psf/actions';\nimport SignUp from '../pages/Auth/SignUp';\nimport ForgetPassword from '../pages/Auth/ForgetPassword';\n\nimport SignIn from '../pages/Auth/SignIn';\nimport Home from '../pages/Home';\nimport Invoice from '../pages/Invoice';\nimport CustomRoute from './CustomRoute';\nimport Validation from '../pages/Auth/Validation';\nimport NewPassword from '../pages/Auth/NewPassword';\nimport Installment from '~/pages/Installment';\nimport ValidationToken from '~/pages/Auth/ValidationToken';\nimport ValidationTokenHelp from '~/pages/Auth/ValidationTokenHelp';\nimport ValidationTokenCode from '~/pages/Auth/ValidationTokenCode';\n\nconst Routes = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(setClientType('web'));\n }, [dispatch]);\n\n return (\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n\n \n \n \n \n );\n};\n\nexport default Routes;\n","import { createGlobalStyle } from 'styled-components';\n\nexport const GlobalStyle = createGlobalStyle`\n @font-face {\n font-family: 'PlutoSans';\n src: local('PlutoSans'), url('/assets/fonts/PlutoSansLight.ttf') format(\"opentype\");\n font-weight: 300;\n }\n\n @font-face {\n font-family: 'PlutoSans';\n src: local('PlutoSans'), url('/assets/fonts/PlutoSansRegular.ttf') format(\"opentype\");\n font-weight: 400;\n }\n\n @font-face {\n font-family: 'PlutoSans';\n src: local('PlutoSans'), url('/assets/fonts/PlutoSansMedium.ttf') format(\"opentype\");\n font-weight: 500;\n }\n\n @font-face {\n font-family: 'PlutoSans';\n src: local('PlutoSans'), url('/assets/fonts/PlutoSansBold.ttf') format(\"opentype\");\n font-weight: 700;\n }\n\n @font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondLight.otf') format(\"opentype\");\n font-weight: 300;\n }\n\n @font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondRegular.otf') format(\"opentype\");\n font-weight: 400;\n }\n\n @font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondMedium.otf') format(\"opentype\");\n font-weight: 500;\n }\n\n @font-face {\n font-family: 'PlutoCond';\n src: local('PlutoCond'), url('/assets/fonts/PlutoCondBold.otf') format(\"opentype\");\n font-weight: 700;\n }\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n @media (max-width: 1080px) {\n html {\n font-size: 93.75%;\n }\n }\n\n @media (max-width: 720px) {\n html {\n font-size: 87.5%;\n }\n }\n\n body {\n background: ${({ theme }) => theme.colors.mbankPrimary40};\n color: ${({ theme }) => theme.colors.marisaBlack80};\n }\n\n body,\n input,\n textarea,\n select,\n button {\n font: 400 1rem \"PlutoCond\", sans-serif;\n }\n\n button {\n cursor: pointer;\n }\n\n a {\n color: inherit;\n text-decoration: none;\n }\n\n .ant-message-notice-content {\n border-radius: 6px;\n max-width: 521px;\n\n @media only screen and (max-device-width: 440px) {\n max-width: 350px;\n }\n }\n`;\n","import { ConfigProvider } from 'antd';\nimport 'antd/dist/antd.css';\nimport ptBR from 'antd/es/locale/pt_BR';\nimport 'moment/locale/pt-br';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { BrowserRouter } from 'react-router-dom';\nimport { ThemeProvider } from 'styled-components';\nimport ReactModal from 'react-modal';\nimport SharedProvider from 'shared/faceleaf/contexts';\nimport store from './redux/store';\nimport Routes from './routes';\nimport theme from 'shared/styles/theme';\nimport { GlobalStyle } from './styles/global';\n\nReactModal.setAppElement('#root');\n\nfunction App(): JSX.Element {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport \"./index.css\";\n\nrequire(\"dotenv\").config();\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}