{"version":3,"sources":["types/enums.ts","api-clients.ts","assets/img/creditcard.svg","assets/img/confetti.svg","assets/img/creditcard-plus-no-ribbon.svg","assets/img/creditcard-tilted.svg","assets/img/creditcard-plus-tilted.svg","assets/img/creditcard-launch.svg","assets/img/creditcard-tilted-trademark.svg","assets/img/creditcard-plus-tilted-trademark.svg","assets/img/creditcard-launch-tilted.svg","assets/img/icon-approved.svg","assets/img/icon-arrival.svg","assets/img/icon-graph.svg","assets/img/icon-creditcard-payment.svg","assets/img/icon-calendar.svg","assets/img/icon-arrival-purple.svg","assets/img/icon-cashback.svg","assets/img/no-annual-fee-purple.svg","assets/img/no-annual-fee-ribbon.svg","assets/img/icon-arrow-white.svg","assets/img/icon-chevron-left.svg","assets/img/icon-arrow-black.svg","assets/img/icon-checkmark.svg","assets/img/icon-checkmark-black.svg","assets/img/icon-checkmark-white.svg","assets/img/icon-closed.svg","assets/img/icon-email.svg","assets/img/icon-credit-card.svg","assets/img/icon-error.svg","assets/img/icon-increase.svg","assets/img/icon-fastdelivery.svg","assets/img/icon-increase-purple.svg","assets/img/icon-lock-gray.svg","assets/img/icon-lock.svg","assets/img/icon-lock-purple.svg","assets/img/icon-mastercard.svg","assets/img/icon-processing.svg","assets/img/icon-question.svg","assets/img/icon-refund.svg","assets/img/icon-visa.svg","assets/img/icon-warning.svg","assets/img/icon-warning-info.svg","assets/img/icon-x-circle-fill.svg","assets/img/logo-opensky.svg","assets/img/logo-opensky-no-padding.png","assets/img/safety.svg","assets/img/menu.svg","assets/img/safety-fill.svg","assets/img/testimonial-user-1.svg","assets/img/testimonial-user-2.svg","assets/img/testimonial-user-3.svg","assets/img/testimonial-user-4.svg","assets/img/testimonial-user-5.svg","assets/img/icon-exclamation-circle.svg","assets/img/icon-circle-checkmark.svg","assets/img/icon-exclamation-error.svg","assets/img/icon-blue-check.svg","assets/img/fdic.svg","assets/img/visa-logo-black.svg","assets/img/affiliate-logos/credit-karma.svg","assets/img/affiliate-logos/experian.svg","assets/img/icon-upload-image.svg","assets/img/creditcard-launch-trademark.svg","assets/img/icon-file.svg","assets/img/icon-x.svg","assets/img/icon-clock-gray.svg","assets/img/icon-clock.svg","assets/img/icon-circle-error.svg","utils/constants.ts","utils/debug.ts","hooks/address-lookup.ts","hooks/breakpoints.ts","store/atoms.ts","hooks/process-response-code.ts","components/application-info-status/index.ts","components/application-info-status/application-info-status.tsx","components/select-dropdown/select-dropdown.tsx","components/form-error-message/index.ts","components/form-error-message/form-error-message.tsx","utils/dates.ts","pages/mailing-address/mailing-address.tsx","utils/validations.ts","components/date-picker/date-picker.tsx","components/help-tray/help-tray.tsx","components/help-tray/index.ts","utils/incentives.ts","components/card-perks/card-perks.tsx","components/card-perks/index.ts","components/modal-page/modal-page.tsx","components/modal-page/index.ts","components/text-input/text-input.tsx","components/text-input/index.ts","components/number-format-input/number-format-input.tsx","components/number-format-input/index.ts","components/intro/intro.tsx","components/intro/index.ts","components/banner/banner.tsx","components/banner/index.ts","components/promotion-specific/promotion-specific.tsx","components/promotion-specific/index.tsx","components/card-info/card-info.tsx","utils/fileConstants.js","components/disclosures/disclosures.tsx","components/card-offer/card-offer.tsx","components/affiliate-logo/index.ts","components/affiliate-logo/affiliate-logo.tsx","components/auto-complete/auto-complete.tsx","components/address-form/constants.ts","components/address-form/address-form.tsx","hooks/debounce.ts","components/photo-document-upload/photo-document-upload.tsx","components/loading/loading.tsx","components/block-code/utils.ts","components/block-code/hooks.ts","components/block-code/block-code.tsx","layouts/application-flow/application-flow.tsx","layouts/landing-page/landing-page.tsx","pages/application-status/api-failed.tsx","pages/application-status/awaiting-for-funds.tsx","pages/application-status/awaiting-refund-of-funds.tsx","pages/application-status/boarded.tsx","pages/application-status/closed.tsx","pages/application-status/declined.tsx","pages/application-status/deposit-approved.tsx","pages/application-status/documents-requested.tsx","pages/application-status/expired-or-incomplete.tsx","pages/application-status/funding-declined.tsx","pages/application-status/funding-fail.tsx","pages/application-status/in-good-funds.tsx","pages/application-status/manual-document-review.tsx","pages/application-status/manual-review.tsx","pages/application-status/submitted.tsx","pages/application-status/withdraw.tsx","utils/hashing.ts","pages/basic-info/basic-info-help.tsx","pages/basic-info/hooks.ts","utils/analytics.ts","utils/product-info.ts","pages/basic-info/basic-info.tsx","pages/basic-info/index.ts","pages/check-application/hooks.ts","pages/check-application/check-application.tsx","pages/check-application/index.ts","pages/credit-line/credit-line-help.tsx","pages/credit-line/credit-line.tsx","pages/credit-line/credit-line-confirm-help.tsx","pages/credit-line/credit-line-confirm.tsx","pages/credit-line/credit-line-custom.tsx","utils/arrays.ts","pages/credit-line/credit-line-fund-later.tsx","pages/credit-line/hooks.ts","pages/credit-line/credit-line-switch.tsx","pages/debt-to-income/hooks.ts","pages/debt-to-income/debt-to-income-help.tsx","pages/debt-to-income/index.tsx","pages/debt-to-income/debt-to-income.tsx","store/selectors.ts","pages/document-selection/hooks.ts","pages/document-selection/document-upload-fail.tsx","pages/document-selection/documents-submitted.tsx","pages/document-selection/document-upload.tsx","pages/document-selection/document-selection.tsx","pages/error-page/index.ts","pages/error-page/error-page.tsx","pages/funding-source/hooks.ts","pages/funding-source/funding-source-help.tsx","pages/funding-source/partial-payment.tsx","pages/funding-source/payment-processing.tsx","pages/funding-source/variations/funding-error.tsx","pages/funding-source/variations/funding-error-alert.tsx","pages/funding-source/variations/funding-header.tsx","pages/funding-source/variations/partial-funding.tsx","pages/funding-source/funding-source.tsx","pages/funding-source/index.tsx","pages/identity-verification/identity-verification-help.tsx","pages/identity-verification/identity-verification.tsx","pages/identity-verification/identity-confirm.tsx","pages/identity-verification/index.tsx","pages/intro/intro-generic.tsx","pages/intro/intro-basic.tsx","pages/intro/intro-plus.tsx","pages/intro/intro-launch.tsx","pages/lexis-miskey/hooks.ts","pages/lexis-miskey/lexis-miskey.tsx","pages/lexis-miskey/index.tsx","pages/mailing-address/mailing-address-help.tsx","pages/mailing-address/index.tsx","utils/phone-numbers.ts","pages/otp-check/otp-check.tsx","pages/otp-check/hooks.ts","hooks/interval.ts","pages/otp-check/index.ts","pages/process-application/process-application.tsx","pages/submit-application/hooks.ts","pages/submit-application/submit-application.tsx","pages/submit-application/invalid-email.tsx","pages/terms-conditions/disclosure-viewer.tsx","pages/terms-conditions/terms-conditions.tsx","pages/withdraw-application/hooks.ts","pages/withdraw-application/withdraw-application.tsx","pages/withdraw-application/index.ts","pages/view-application/hooks.ts","pages/view-application/view-application.tsx","pages/funding-source/funding-payment.tsx","pages/downsell/index.tsx","pages/downsell/downsell.tsx","app-routes.tsx","pages/session-timeout/timeout-warning.tsx","app.tsx","reportWebVitals.ts","scrollToTop.ts","axios-interceptor.tsx","index.tsx","mocks/calculate-income.ts","mocks/create-lead.ts","mocks/get-applications-status.ts","mocks/make-payment.ts","mocks/resend-otp.ts","mocks/send-check-app-status-otp.ts","mocks/start-session.ts","mocks/submit-application.ts","mocks/submit-miskey.ts","mocks/upload-documents.ts","mocks/verify-otp.ts","mocks/withdraw-application.ts","mocks/configuration.ts","mocks/update-product.ts","mocks/browser-worker.ts"],"names":["BreakPoints","YesNo","PrimaryPhoneTypes","OtpMethods","ApplicationStatusType","ResponseCodes","IncentiveFeatures","ProductTypePrns","microserviceClient","axios","create","baseURL","process","smartyAutocompleteClient","CardTypes","EMPTY_VALUE","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","KEYLIST","DELETE","BACK_SPACE","breakpointSizes","xs","sm","md","lg","xl","xxl","queryKeys","debuglog","window","debug","console","log","fetchAddressLookup","search","get","res","suggestions","data","breakpoints","breakpoint","value","getWindowDimensions","width","innerWidth","height","innerHeight","orderBy","item","useWindowDimensions","useState","windowDimensions","setWindowDimensions","useEffect","handleResize","addEventListener","removeEventListener","applicationState","atom","key","default","primaryPhoneType","cardType","responseCodeState","undefined","selectedApplicationIdState","createLeadResponseState","decisionsResponseState","sendCheckAppStatusOtpRequestState","sendCheckAppStatusOtpResponseState","timeoutExpiredState","checkAppState","paymentSucceededState","configurationResponseState","utmSourceNameState","cardTypeState","emailAddressState","launchCardTunerdOnState","firstNameState","nidState","gaDataLayerState","user_id","app_started","NID_","SID_","step_name","card_selected","est_housing_payment","total_yearly_outcome","credit_line_amount","credit_line_type","card_fund_selection","card_fund_result","applicationBeforeDownsellState","downsellState","downsellSourcesState","productIdBeforeDownsellState","useProcessResponseCode","responseCode","history","useHistory","decisionsResponse","useRecoilValue","adjustedResponseCode","includes","APIConnectivityError","ApplicationInDocumentRequest","push","routeHashes","ApplicationInWaitingForFunds","ApplicationInGoodFunds","ApplicationHasBeenApproved","ApplicationClosed","ApplicationExpiredOrIncomplete","ApplicationDeclined","ApplicationWithdrawn","ApplicationApprovedAndAccountBoarded","DecisionsNotAccessible","MiskeyDOBAndZIP","MiskeyDOB","MiskeyZIP","ApplicationInManualReview","ApplicationInManualDocumentReview","ApplicationInSecurityDepositRefund","FundFailure","FundFailureFinal","InvalidEmail","ExceededDailyPaymentTransactions","replace","title","message","buttonText","navigateTo","error","ApplicationInfoStatus","onNext","props","handleNext","fullHeight","setFullHeight","Math","max","screen","document","body","scrollHeight","documentElement","offsetHeight","clientHeight","appPromo","appStatusType","Row","Alert","variant","className","alt","src","appStatusIcon","role","style","paddingLeft","appStatus","appHeaderGradientBorder","appIcon","Col","appMessage","appMessageAdditionalClasses","appMessageLine2","appGradientMessage","appMessageAdditionalGradiantClasses","appDetailMessage","appDetailAdditionalClasses","appDetailMessageLine2","appNotificationMessage","appAdditionalContent","Button","disabled","onClick","promoFundButtons","appGradientButton","SelectDropdown","id","label","initialValue","onChange","options","register","name","setValue","selectedValue","setSelectedValue","registerOnChange","restRegisterProps","FloatingLabel","controlId","Form","Select","event","target","map","option","index","FormErrorMessage","errors","render","Text","currentYear","Date","getFullYear","maxBirthdate","setFullYear","MailToType","monthNames","daysInMonth","year","monthIndex","parseInt","getDate","phonePattern","rawPhonePattern","combinedSsnItinPattern","isNotPOBoxPattern","isPOBoxRRPattern","zipCodePattern","namePattern","isValidName","test","invalidNameCharacters","invalidAddressCharacters","DatePicker","isBirthday","minYear","maxYear","onDateChange","onValidDateChange","trigger","setYear","setMonthIndex","day","setDay","hasValidDateBeenSet","setHasValidDateBeenSet","calculatedMaxYear","min","months","Array","from","length","_","i","toLocaleString","month","days","years","hasErrors","split","reduce","p","prop","initialDate","toString","getMonth","date","dateMonth","dateYear","dateDay","Number","isValidDate","selectedDate","classnames","Object","assign","paddingBottom","iconQuestion","children","Header","borderBottom","paddingTop","marginBottom","fontFamily","fontSize","fontWeight","lineHeight","Section","SectionTitle","fontStyle","SectionText","HelpTray","isIncentiveFeatureActive","incentiveFeature","prn","config","activeProduct","securedProducts","find","Any","incentives","getIncentiveDetail","getIncentive","activeIncentives","filter","incentive","incentiveDetails","some","activeIncentive","incentiveTypeName","getDetailFromIncentive","getPrn","productShortName","toLocaleLowerCase","Basic","Plus","Launch","Unknown","CardPerks","showFundToggle","showFundText","amount","configurationResponse","application","fundToday","setFundToday","showBasedOnCardType","Card","border","Body","incentiveFeatureName","DepositReductionAmount","appliedIncentive","creditcardPlusNoRibbon","creditcardLaunch","creditcard","getCreditCardImage","marginLeft","MinimumDepositAmount","showIfPromoNotActive","arrivalPurple","iconCashback","increasePurple","iconLockPurple","noAnnualFeePurple","Footer","Group","flexGrow","Check","inline","type","defaultChecked","e","checked","ModalPage","showModal","setShowModal","Modal","show","TextInput","inputGroupClassName","inputGroupTypingClassName","instructionText","maxLength","noMaterialStyle","onBlur","onKeyDown","onEditClicked","onFocus","placeholder","prefixText","registerOptions","showEdit","secure","showErrorsOnLoad","subtitleText","rest","onSecuredClicked","onBlurRegister","onChangeRegister","restRegister","showErrors","setShowErrors","isFocused","setIsFocused","errorsForName","Label","htmlFor","InputGroup","String","focused","iconError","Control","prefixed","iconLockGray","NumberFormatInput","whiteSpace","customInput","setValueAs","decimalScale","round","parseFloat","fixedDecimalScale","Intro","annualFeeText","annualFee","cardBadge","noAnnualFeeRibbon","toLowerCase","minimumDeposit","buttonClick","apr","href","tclink","Banner","PromotionSpecific","setPromoValue","setPromoEndDate","getPrnFromCardType","featureName","None","incentiveOverride","incentiveDetail","promoEndDate","endDateUtc","promoValue","CardInfo","creditLimit","files","electronicDisclosure","currentBasicCardHolderAgreement","currentBasicTermsConditions","currentCardHolderAgreement","currentTermsConditions","privacyNotice","currentPlusCardHolderAgreement","currentPlusTermsConditions","currentLaunchCardHolderAgreement","currentLaunchTermsConditions","privacyPolicy","currentRewardsTermsConditions","Files","BasicEligibleDisclosure","listIndexSymbol","listStyle","PlusEligibleDisclosure","PreApprovedDisclosure","AlternateEligibleDisclosure","TestimonialDisclosure","IncreaseLimitDisclosure","RewardsDisclosure","GetFiles","LaunchAnnualFeeDisclosure","CardOffer","getMinimumDepositBasedOnIncentives","onAcceptOffer","iconArrowWhite","onClose","rel","AffiliateLogo","imageLogo","source","creditKarmaLogo","experianLogo","visaLogoBlack","AutoComplete","floatingLabel","items","enableClear","showMenuToggleButton","openMenuOnKeypress","initialInputValue","itemToString","onInputValueChange","onSelectChange","DropdownFooter","useCombobox","stateReducer","state","actionAndChanges","changes","stateChangeTypes","ItemClick","selectedItem","shouldNotChangeInputValue","onSelect","isOpen","onSelectedItemChange","inputValue","setInputValue","setHighlightedIndex","getLabelProps","getComboboxProps","getInputProps","getToggleButtonProps","getMenuProps","getItemProps","openMenu","reset","highlightedIndex","iconXCircleFill","display","usStates","abbreviation","MANUAL_ENTRY_OPTION","AddressForm","labels","initialAddress","validPattern","isManualEntryForm","setIsManualEntryForm","selectedAddress","setSelectedAddress","address","setAddress","fullAddress","setFullAddress","debouncedFullAddress","delay","debouncedValue","setDebouncedValue","handler","setTimeout","clearTimeout","useDebounce","keepPreviousData","useQuery","staleTime","Infinity","cacheTime","retry","enabled","useAddressLookup","handleChange","manualEntrySelectItem","color","textDecoration","addressString","street_line","city","zipcode","handleManualEntryAddressChange","newAddress","parsedAddress","addressSplit","stateZipSplit","trim","addressLine1","addressLine2","zipCode","parseFullAddress","addressLine1Label","addressLine2Label","cityLabel","stateLabel","zipCodeLabel","addressLookupLabel","addressLookupFloatingLabel","ACCEPTED_FILE_TYPES","UploadPreview","fileType","objectUrl","fileName","iconFile","PhotoDocumentUpload","fileInputRef","initialFile","onClear","file","setFile","setObjectUrl","URL","createObjectURL","revokeObjectURL","onRegisterChange","registerRef","ref","iconX","Event","dispatchEvent","hidden","click","iconUploadImage","accept","join","eventTarget","size","alert","node","Loading","isLoading","headerText","bodyText","BlockCodeUtils","maxInputs","prefix","random","substring","match","RegExp","DEFAULT_INPUT_PROPS","BlockCode","onValuesChange","onValidateBeforeChange","onInputChange","onComplete","inputProps","autoFocus","InputProps","ids","useMemo","Utils","initState","fill","initActiveIndex","activeIndex","setActiveIndex","values","setValues","refs","useRef","onResetValues","useCallback","onReset","onEnoughData","maxValueLength","raw","onCheckValue","onCallback","onAddValue","forIndex","onSetValueAtIndex","onAfterAddingValue","onCreateRef","current","prevState","newState","onSetActiveIndex","nextActiveIndex","onNextFocusAfterChangingValue","onInput","currentTarget","onPaste","preventDefault","navigator","clipboard","readText","originaltext","chunk","shift","isInKeyList","isDelete","onCreateInputProps","element","focus","select","useBlockCode","webVersion","versionInfo","buildVersionMajor","buildMinorVersion","buildRevision","ApplicationFlowLayout","showBackButton","showHelpNow","showBasicInfoFooter","onHelpTrayClosed","HelpComponent","progress","currentStep","backgroundImage","footerBasicEligibleDisclosure","promo","standaloneBasicEligibleDisclosure","footerPlusEligibleDisclosure","standalonePlusEligibleDisclosure","footerPreApprovedDisclosure","standalonePreApprovedDisclosure","footerRewardsDisclosure","standaloneRewardsDisclosure","footerAlternateEligibleDisclosure","standaloneAlternateEligibleDisclosure","footerTestimonialDisclosure","standaloneTestimonialDisclosure","footerIncreaseLimitDisclosure","standaloneIncreaseLimitDisclosure","promoBasicEligibleDisclosureIndex","promoPlusEligibleDisclosureIndex","promoPreApprovedDisclosureIndex","promoAlternateEligibleDisclosureIndex","promoTestimonialDisclosureIndex","promoIncreaseLimitDisclosureIndex","promoRewardsDisclosureIndex","hideCardTypeNameInHeader","dimensions","showHelpTray","setShowHelpTray","showChildren","setShowChildren","timeoutExpired","utmSourceName","replaceAll","minHeight","goBack","iconChevronLeft","logoOpenskyNoPadding","background","marginTop","fdic","LandingPageLayout","showDisclosures","showWithdrawal","showFDIC","showPrivacyPolicy","showBasicEligibleDisclosure","showPlusEligibleDisclosure","showPreApprovedDisclosure","showAlternateEligibleDisclosure","showIncreaseLimitDisclosure","showTestimonialDisclosure","showRewardsDisclosure","showLaunchAnnualFeeDisclosure","promoLaunchAnnualFeeDisclosureIndex","logoOpensky","to","ApplicationApiFailed","applicationEmail","applicationProcessing","location","ApplicationApprovedWaitingForFunds","selectedApplicationId","selectedApplication","checkAppResponseList","app","applicationID","getCardTypeByPrn","incentiveName","incentiveId","incentiveActive","applicationApproved","responseObjects","ApplicationClosedAwaitingRefund","applicationRefund","applicationClosed","ApplicationBoarded","firstName","creditcardLaunchTilted","creditcardPlusTilted","creditcardTilted","getCardImageByCardType","textTransform","textAlign","iconCalendar","iconCreditcardPayment","iconGraph","ApplicationDenied","ApplicationDepositApproved","emailAddress","ApplicationDocumenstRequested","iconExclamationCircle","ApplicationFundingDeclined","ApplicationFundingFail","ApplicationManualDocumentReview","ApplicationManualReview","ApplicationSubmitted","generateSHA256Hash","input","hash","crypto","createHash","update","digest","BasicInfoHelp","createLead","payload","post","pushToDataLayer","dataLayer","warn","currentCardInfo","products","cardInfo","cardPrn","product","minimumCreditLimit","maximumCreditLimit","annualPercentageRate","offerCode","productId","chaDocumentPath","termsAndConditionsDocumentPath","BasicInfo","cardSelected","isSubmitted","setIsSubmitted","useRecoilState","setApplication","setCreateLeadResponse","setEmailAddress","setFirstName","promoValueMinimumAmount","setPromoValueMinimumAmount","promoValueDepositReduction","setPromoValueDepositReduction","gaDataLayer","setGADataLayer","setProductIdBeforeDownsell","nid","createLeadMutation","useMutation","onError","err","variables","context","validationSchema","Yup","shape","required","lastName","this","parent","email","primaryPhone","matches","oneOf","Mobile","otpMethod","Email","phoneConsent","when","is","then","formOptions","resolver","yupResolver","useForm","defaultValues","getDefault","mode","handleSubmit","watch","formState","isValid","onSubmit","instanceId","FullStory","leadId","curCard","mutate","onSuccess","response","productName","otpData","isAppStatusCheck","otpSentTime","isInitialOtp","updateDataLayer","otpPhoneOption","setOtpPhoneOption","otpEmailOption","setOtpEmailOption","otpOptions","setOtpOptions","selectedOtpOption","setSelectedOtpOption","indexOfAt","indexOf","dots","floor","remainingChars","maskedEmail","repeat","maskedPhoneNumber","iconBlueCheck","format","opt","Spinner","animation","sendCheckAppStatusOtp","CheckApplication","sendCheckAppStatusOtpRequest","sendCheckAppStatusOtpResponse","checkApplicationStatusRequest","setCheckApplicationStatusRequest","isCheckApp","setIsCheckApp","submittedEmailAddress","setSubmittedEmailAddress","dateOfBirth","last4SSN","sendStatusOtpResponse","isErrorResponse","isError","handleCheckApplicationStatus","help","onCopy","CreditLineHelp","CreditLine","setGaDataLayer","getAmountsBasedOnPromotionIfAny","depositAmounts","isNaN","amounts","recommendedAmount","defaultCreditLimit","selectedAmount","setSelectedAmount","programFee","securityDeposit","padding","s","CreditLineConfirmHelp","CreditLineConfirm","arrival","increase","unlock","CreditLineCustom","formattedMaximumCreditLimit","Intl","NumberFormat","promotionAdjustedMinimumDepositAmount","typeError","enteredAmount","thousandSeparator","decimalSeparator","rotatedArray","arr","rotateCount","slice","concat","testimonials","avatarImage","testimonialUser1","identity","testimonial","testimonialUser2","testimonialUser3","testimonialUser4","testimonialUser5","CreditLineFundLater","carouselIndex","setCarouselIndex","x","avatars","setAvatars","minimumDepositPromo","Carousel","slide","fade","controls","Item","postProductUpdate","CreditLineSwitch","basicCardInfo","plusCardInfo","iconWarningInfo","maxHeight","Tab","Container","defaultActiveKey","Nav","Link","eventKey","Content","Pane","gradientBorder","calculateIncome","monthlyHousingPayment","calculatedIncome","DebtToIncomeHelp","DebtToIncome","nextEnabled","setNextEnabled","housingPayment","housingPaymentToCalculate","setHousingPaymentToCalculate","setShowHelpNow","lessThan","annualIncome","moreThan","control","getValues","useWatch","minimumIncomeAmount","handleBlur","okToNavigate","resetForm","defaultState","annualIncomeValidated","keys","forEach","handleEnter","blur","minimumIncome","autoComplete","suffix","onKeyPress","selectedApplicationResponse","selector","applicationId","uploadDocuments","documentSelections","formData","FormData","append","counter","documentSelection","category","headers","DocumentUploadFail","resetDocumentUpload","iconWarning","DocumentsSubmitted","DocumentUpload","isSuccess","setIsSuccess","isFail","setIsFail","uploadDocumentsMutation","DocumentSelection","setDocumentSelections","showUploadStatus","setShowUploadStatus","requiredDocumentOptions","setRequiredDocumentOptions","applicationResponse","docsRequired","doC_AddressYN","documentTypeOptions","doC_SsnYN","doC_DobYN","doC_IncomeYN","doC_NameYN","doC_ItinYN","of","fileList","watchDropdowns","nameTokens","handleFileClear","leadID","handleSelectChange","ErrorPage","navigationState","errorIcon","startsWith","makePayment","useMakePayment","getApplicationsPaymentStatus","useGetApplicationsPaymentStatus","FundingSourceHelp","iconVisa","iconMastercard","PartialPayment","paymentAmount","partialAmount","remainder","daysToFund","iconCircleCheckMark","PaymentProcessing","FundingError","FundingErrorAlert","FundWithoutDebit","FundWithDebit","daysLeft","FundLaunch","FundingHeader","fundWithDebit","changeFundTodayStatus","showSlider","downsell","getPromotionValueDepositReduction","depositReductionIncentive","calculatedValue","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","PartialFundingVariation","fullyFund","received","onValueChange","fundingClass","setFundingClass","FundingSource","toggleForm","setToggleForm","setIsError","setFundWithDebit","setRemainder","setPartialAmount","setAmount","daysLeftToFund","setDaysLeftToFund","responseCodeToProcess","setResponseCodeToProcess","fundingResponse","setFundingResponse","fundingAmount","setFundingAmount","paymentSucceeded","setPaymentSucceeded","debounceActive","setDebounceActive","debitCardRef","showCardValidationError","setShowCardValidationError","downsellSources","paymentFailureResponseCodes","makePaymentMutation","a","showPartialPaymentInput","showPartialPaymentSummary","cardHolderFirstName","cardHolderLastName","cardNumber","valid","number","card","cardExpiration","expirationDate","cardSecurityCode","cvv","bankingAddress","zipCodeValue","amountWatch","isErrorResponseCode","scrollIntoView","behavior","fundingHistory","selectedAppCreditLimit","done","funded","amountReceived","total","currentBalance","incentiveAddOn","incentiveValue","onToggleFundToday","newValue","expirationDateMMYY","billingAddress","line1","zip","attemptNumber","isFullyFunded","checkForUnauthorized","paymentResponse","approvedAmount","balance","amt","defaultValue","IdentityVerificationHelp","IdentityVerification","ssn","ssnOrItin","padStart","ssnConfirm","homeAddress","IdentityConfirm","onGood","onNeedsChange","one","two","few","other","PluralRules","evnt","IntroGeneric","useSetRecoilState","launchCardTunedOn","launchCardInfo","IntroBasic","IntroPlus","IntroLaunch","submitMiskey","zipCodeResponseCodes","dateOfBirthResponseCodes","LexisMiskey","setResponseCode","setDecisionsResponse","submitMiskeyMutation","hasDateOfBirth","hasZipCode","newZIPCode","newDOB","toISOString","MailingAddressHelp","MailingAddress","showAddressLookup","setShowAddressLookup","showCaution","setShowCaution","mailToType","mailingAddress","POBox","safety","formatPhone","phone","isValidRawPhone","slugs","ResendCode","onResendCodeClicked","seconds","hasBeenResent","minutes","remainingSeconds","formatted","OtpCheck","resendOtpMutation","endpoint","useResendOtpCode","verifyOtpMutation","useVerifyOtpCode","formattedPhone","contactIdentifier","setHasBeenResent","setSeconds","codeValue","setCodeValue","startTime","setStartTime","callback","triggerOnChange","savedCallback","tick","setInterval","clearInterval","useInterval","expirationTime","getTime","expirationMins","now","newSeconds","ceil","otpCode","ProcessApplication","submitApplication","SubmitApplication","setApplicationId","submitApplicationMutation","ifFundToday","updateDataLayerAndPush","dobMonth","dobDay","isEmailVerified","ignoreEmailVerificationErrors","submitPayment","ignorePaymentErrors","downsellFrom","basicInfo","dti","income","minimumEligibility","Yes","incomeConfirmation","creditLine","payment","debitCardNumber","debitCvv2CvcCode","debitExpirationMonth","debitExpirationYear","debitAmount","debitFirstName","debitLastName","fundingType","debitTransId","debitAuthCode","debitAuthorizedFlag","debitSettleFlag","debitAuthApprovedAmount","debitAuthorizationCode","debitAuthRefTransId","debitAuthRequestedAmount","debitAvsResponse","debitCavResponse","terms","esignConsent","eSignConsent","termsConsent","termsAndConditions","mailingAptSuite","mailingCity","mailingState","mailingZip","aptSuite","debitAddress","debitAptSuite","debitCity","debitState","debitZip","pii","status","DisclosureViewer","disclosures","origDisclosures","tab","link","basicDisclosures","plusDisclosures","launchDisclosures","useLocation","Tabs","justify","disclosure","TermsConditions","rateDisclosuresLink","termsAndConditionsTab","cardholderAgreementTab","pathname","borderTop","safetyFill","withdrawApplication","reasonsForWithdrawal","WithdrawApplication","withdrawApplicationMutation","reason","withdrawReason","getApplicationsStatus","StatusMessage","icon","paddingRight","ApplicationStatusView","isSelected","parsedDate","submittedDateUtc","borderColor","borderThickness","cursor","selected","Title","toLocaleDateString","toLocaleTimeString","language","hour","minute","Subtitle","ViewApplication","setSelectedApplicationId","applications","setApplications","setSelectedApplication","setCardtype","applicationsStatus","handleApplicationSelected","applicationResponses","FundingPayment","revalidateForm","formValues","formFields","isArray","getElementById","y","xy","activeCardType","psIncentiveValue","psCurrentBalance","psDaysLeftToFund","Downsell","launch","applicationBeforeDownsell","setApplicationBeforeDownsell","setDownsell","productIdBeforeDownsell","handleClose","contentClassName","onHide","backdrop","closeButton","plus","entryPoints","uuidv4","AppRoutes","exact","path","component","ApplicationDocumentsRequested","TimeoutWarningPage","showPrompt","remaining","setRemaining","useIdleTimerContext","activate","getRemainingTime","formattedMinutes","interval","iconClockGray","App","orgId","queryString","URLSearchParams","setTimeoutExpired","setConfigurationResponse","showTimeoutWarning","setShowTimeoutWarning","setNid","setDownsellSources","cardTypesByPrn","basic","pathNameLower","urlHref","urlHrefParams","configUrlParams","searchParams","set","has","Nid","Sid","Aid","Bid","Cid","Pid","utmKeyMapper","sid","bid","utmSource","utmMedium","utmContent","utmCampaign","utmData","filteredObj","fromEntries","entries","queryParams","pathName","catch","lookupNidsAndUpdateUrl","loaded","domainBaseUrl","finally","detail","getDownsellSources","sessionRefresh","sessionTokenRefreshMinutes","timeout","sessionTimeoutMinutes","promptBeforeIdle","promptBeforeIdleMinutes","throttle","onPrompt","onIdle","iconCircleError","onActive","stopOnIdle","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","withRouter","unlisten","listen","action","scrollTo","AxiosInterceptor","isInitialized","setIsInitialized","interceptor","interceptors","use","Promise","reject","eject","REACT_APP_USE_MOCK_API","require","worker","start","onUnhandledRequest","baseUrl","getElementsByTagName","getAttribute","rootElement","ReactDOM","StrictMode","basename","client","QueryClient","initialIsOpen","position","req","ctx","json","r","doC_BankOwnershipYN","productTypeId","productTypeName","startDateUtc","isActive","incentiveTypeId","numberOfAttempts","errorMessage","goodFundsDate","exceededDailyTransaction","isResponseTimeout","params","resendOtp","startSession","responses","throw400WithResponseCode","all","counterLead","counterCheck","verifyOtp","defaultResponse","storageAccountBaseUrl","electronicDisclosureDocumentPath","privacyPolicyDocumentPath","privacyNoticeDocumentPath","productType","system","description","chaCode","downsellResponse","featureFlags","isEnabled","code","incentiveType","operator","unit","configuration","url","setupWorker"],"mappings":"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","file":"static/js/main.4d717f03.chunk.js","sourcesContent":["export enum BreakPoints {\r\n xs = 0,\r\n sm = 1,\r\n md = 2,\r\n lg = 4,\r\n xl = 5,\r\n xxl = 6\r\n};\r\n\r\nexport enum YesNo {\r\n Yes = 'Yes',\r\n No = 'No'\r\n}\r\n\r\nexport enum PrimaryPhoneTypes {\r\n Mobile = 'C',\r\n Home = 'H'\r\n}\r\n\r\nexport enum OtpMethods {\r\n Mobile = 'Mobile',\r\n Email = 'Email'\r\n}\r\n\r\nexport enum ApplicationStatusType {\r\n Processing,\r\n Error,\r\n InfoRequired,\r\n FundingRequired,\r\n Approved,\r\n Closed\r\n}\r\n\r\nexport enum ResponseCodes {\r\n // Decisions Response Codes\r\n ApplicationInDocumentRequest = 'WT_DOC',\r\n ApplicationInWaitingForFunds = 'WT_FND',\r\n ApplicationInGoodFunds = 'WT_FRE',\r\n ApplicationHasBeenApproved = 'WT_FIS',\r\n UploadToBlobStorageSuccessful = 'FL_SUC',\r\n UploadToBlobStorageNotSuccessful = 'FL_UNC',\r\n ApplicationClosed = 'END_CLS',\r\n ApplicationExpiredOrIncomplete = 'END_EXP',\r\n ApplicationDeclined = 'END_DCL',\r\n ApplicationWithdrawn = 'END_WDR',\r\n ApplicationApprovedAndAccountBoarded = 'END_BRD',\r\n CheckAppStatusMultipleMatches = 'END_EMY',\r\n CheckAppStatusNoMatches = 'END_EMN',\r\n CheckAppStatusError = 'END_ERR',\r\n DuplicateLeadId = 'END_DUPELEAD',\r\n DuplicateApplicationId = 'END_DUPEAPP',\r\n DuplicateApplicationIdAndLeadId = 'END_APPANDLEAD',\r\n OneTimePasscodeIncorrect = 'CB_OTP',\r\n DecisionsNotAccessible = 'CB_CACHE',\r\n APIConnectivityError = 'API_ERR',\r\n MiskeyDOBAndZIP = 'WT_MSK',\r\n MiskeyDOB = 'WT_M83',\r\n MiskeyZIP = 'WT_MZI',\r\n ApplicationInManualReview = 'UI_MRV',\r\n ApplicationInManualDocumentReview = 'UI_MDR',\r\n ApplicationInSecurityDepositRefund = 'UI_SDR',\r\n\r\n // UnprocessableResults Response Codes\r\n FundFailure = 'FundFailure',\r\n FundFailureFinal = 'FundFailureFinal',\r\n GenericError = 'GenericError',\r\n InvalidModel = 'InvalidModel',\r\n InvalidLead = 'InvalidLead',\r\n InvalidApplication = 'InvalidApplication',\r\n InvalidEmail = 'InvalidEmail',\r\n CheckApplicationStatusesSuccess = 'CheckApplicationStatusesSuccess',\r\n InvalidRequest = 'InvalidRequest',\r\n ExceededDailyPaymentTransactions = 'ExceededDailyPaymentTransactions',\r\n MinimumPaymentNotValid = 'MinimumPaymentNotValid',\r\n PaymentExceedsBalance = 'PaymentExceedsBalance',\r\n GenericDecisionsError = 'GenericDecisionsError',\r\n VoidPaymentError = 'VoidPaymentError', \r\n}\r\n\r\nexport enum IncentiveFeatures {\r\n Any = 'Any',\r\n None = '',\r\n DepositReductionAmount = 'DepositReductionAmount',\r\n MinimumDepositAmount = 'MinimumDepositAmount'\r\n}\r\n\r\nexport enum ProductTypePrns {\r\n Unknown = 'UNKNOWN',\r\n Basic = '1000',\r\n Plus = '9000',\r\n Launch = '6100'\r\n}\r\n","import axios from 'axios';\r\n\r\nconst createMicroserviceInstance = () => {\r\n const instance = axios.create({\r\n baseURL: process.env.REACT_APP_DEFAULT_API_BASE_URL,\r\n });\r\n\r\n return instance;\r\n};\r\n\r\nconst createSmartyInstance = () => {\r\n const instance = axios.create({\r\n baseURL: process.env.REACT_APP_SMARTY_API_BASE_URL,\r\n });\r\n\r\n return instance;\r\n};\r\n\r\nexport const microserviceClient = createMicroserviceInstance();\r\nexport const smartyAutocompleteClient = createSmartyInstance();\r\n","export default __webpack_public_path__ + \"static/media/creditcard.248bca91.svg\";","export default __webpack_public_path__ + \"static/media/confetti.b50bc8ae.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-plus-no-ribbon.85d13a0a.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-tilted.f43b6115.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-plus-tilted.a23a43a0.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-launch.bd8f4754.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-tilted-trademark.22116cb5.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-plus-tilted-trademark.9536924e.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-launch-tilted.d32b3685.svg\";","export default __webpack_public_path__ + \"static/media/icon-approved.0557d3a0.svg\";","export default __webpack_public_path__ + \"static/media/icon-arrival.78450e7e.svg\";","export default __webpack_public_path__ + \"static/media/icon-graph.0362db33.svg\";","export default __webpack_public_path__ + \"static/media/icon-creditcard-payment.df446a36.svg\";","export default __webpack_public_path__ + \"static/media/icon-calendar.7eb7ded7.svg\";","export default __webpack_public_path__ + \"static/media/icon-arrival-purple.f4483893.svg\";","export default __webpack_public_path__ + \"static/media/icon-cashback.b028b840.svg\";","export default __webpack_public_path__ + \"static/media/no-annual-fee-purple.4bfa7b82.svg\";","export default __webpack_public_path__ + \"static/media/no-annual-fee-ribbon.88846ff8.svg\";","export default __webpack_public_path__ + \"static/media/icon-arrow-white.62602091.svg\";","export default __webpack_public_path__ + \"static/media/icon-chevron-left.eb683502.svg\";","export default __webpack_public_path__ + \"static/media/icon-arrow-black.04663079.svg\";","export default __webpack_public_path__ + \"static/media/icon-checkmark.59c7a4ab.svg\";","export default __webpack_public_path__ + \"static/media/icon-checkmark-black.d62ddc6f.svg\";","export default __webpack_public_path__ + \"static/media/icon-checkmark-white.04d188e9.svg\";","export default __webpack_public_path__ + \"static/media/icon-closed.46c92f23.svg\";","export default __webpack_public_path__ + \"static/media/icon-email.282ad32f.svg\";","export default __webpack_public_path__ + \"static/media/icon-credit-card.127e6104.svg\";","export default __webpack_public_path__ + \"static/media/icon-error.0e7db01f.svg\";","export default __webpack_public_path__ + \"static/media/icon-increase.341f2dc0.svg\";","export default __webpack_public_path__ + \"static/media/icon-fastdelivery.ffd4cc39.svg\";","export default __webpack_public_path__ + \"static/media/icon-increase-purple.518006f8.svg\";","export default __webpack_public_path__ + \"static/media/icon-lock-gray.632f9c15.svg\";","export default __webpack_public_path__ + \"static/media/icon-lock.253fc28d.svg\";","export default __webpack_public_path__ + \"static/media/icon-lock-purple.19984603.svg\";","export default __webpack_public_path__ + \"static/media/icon-mastercard.f1d5ee59.svg\";","export default __webpack_public_path__ + \"static/media/icon-processing.cce9dda2.svg\";","export default __webpack_public_path__ + \"static/media/icon-question.37bedfd5.svg\";","export default __webpack_public_path__ + \"static/media/icon-refund.e1f30875.svg\";","export default __webpack_public_path__ + \"static/media/icon-visa.e89df2a9.svg\";","export default __webpack_public_path__ + \"static/media/icon-warning.5aafbe06.svg\";","export default __webpack_public_path__ + \"static/media/icon-warning-info.6d0d296f.svg\";","export default __webpack_public_path__ + \"static/media/icon-x-circle-fill.8c233449.svg\";","export default __webpack_public_path__ + \"static/media/logo-opensky.038f0f04.svg\";","export default __webpack_public_path__ + \"static/media/logo-opensky-no-padding.4950b709.png\";","export default __webpack_public_path__ + \"static/media/safety.427e6d44.svg\";","export default __webpack_public_path__ + \"static/media/menu.66ea58a0.svg\";","export default __webpack_public_path__ + \"static/media/safety-fill.4fcf9e4e.svg\";","export default __webpack_public_path__ + \"static/media/testimonial-user-1.d8e8300f.svg\";","export default __webpack_public_path__ + \"static/media/testimonial-user-2.61496036.svg\";","export default __webpack_public_path__ + \"static/media/testimonial-user-3.32a99c95.svg\";","export default __webpack_public_path__ + \"static/media/testimonial-user-4.afa95a18.svg\";","export default __webpack_public_path__ + \"static/media/testimonial-user-5.90171cf4.svg\";","export default __webpack_public_path__ + \"static/media/icon-exclamation-circle.8a1d92b1.svg\";","export default __webpack_public_path__ + \"static/media/icon-circle-checkmark.f61d0ebb.svg\";","export default __webpack_public_path__ + \"static/media/icon-exclamation-error.9cb346be.svg\";","export default __webpack_public_path__ + \"static/media/icon-blue-check.9706fdce.svg\";","export default __webpack_public_path__ + \"static/media/fdic.81846545.svg\";","export default __webpack_public_path__ + \"static/media/visa-logo-black.5bce739d.svg\";","export default __webpack_public_path__ + \"static/media/credit-karma.6e1d6d54.svg\";","export default __webpack_public_path__ + \"static/media/experian.f13eaa4c.svg\";","export default __webpack_public_path__ + \"static/media/icon-upload-image.469ced87.svg\";","export default __webpack_public_path__ + \"static/media/creditcard-launch-trademark.c20ade66.svg\";","export default __webpack_public_path__ + \"static/media/icon-file.7ce14df2.svg\";","export default __webpack_public_path__ + \"static/media/icon-x.04ce85fb.svg\";","export default __webpack_public_path__ + \"static/media/icon-clock-gray.43ef0851.svg\";","export default __webpack_public_path__ + \"static/media/icon-clock.44a14fbd.svg\";","export default __webpack_public_path__ + \"static/media/icon-circle-error.d839a3cc.svg\";","import { BreakPoints } from '../types';\r\n\r\nconst EMPTY_VALUE = ''\r\n\r\nconst DELETE = 'Delete'\r\nconst BACK_SPACE = 'Backspace'\r\nconst ARROW_LEFT = 'ArrowLeft'\r\nconst ARROW_RIGHT = 'ArrowRight'\r\nconst ARROW_UP = 'ArrowUp'\r\nconst ARROW_DOWN = 'ArrowDown'\r\n\r\nconst KEYLIST = {\r\n DELETE,\r\n BACK_SPACE,\r\n ARROW_LEFT,\r\n ARROW_RIGHT,\r\n ARROW_UP,\r\n ARROW_DOWN\r\n}\r\n\r\nconst ARROWS = {\r\n ARROW_DOWN,\r\n ARROW_LEFT,\r\n ARROW_RIGHT,\r\n ARROW_UP\r\n}\r\n\r\nexport { EMPTY_VALUE, KEYLIST, ARROWS };\r\n\r\nexport const breakpointSizes = {\r\n [BreakPoints.xs]: 0,\r\n [BreakPoints.sm]: 576,\r\n [BreakPoints.md]: 768,\r\n [BreakPoints.lg]: 992,\r\n [BreakPoints.xl]: 1200,\r\n [BreakPoints.xxl]: 1400,\r\n}\r\n\r\nexport const queryKeys = {\r\n addressLookup: ['addressLookup'],\r\n calculateIncome: ['calculateIncome'],\r\n getApplicationsStatus: ['getApplicationsStatus'],\r\n sendCheckAppStatusOtp: ['sendCheckAppStatusOtp'],\r\n getApplicationPaymentStatus: ['getApplicationPaymentStatus'],\r\n};\r\n\r\nexport enum CardTypes {\r\n basic = 'basic',\r\n plus = 'plus',\r\n launch = 'launch'\r\n}","\r\nexport const debuglog = (...args: any[]): void => {\r\n if ((window as any).debug) {\r\n console.log(...args); \r\n } \r\n};","import { useQuery } from \"react-query\";\r\nimport { smartyAutocompleteClient } from '../api-clients';\r\nimport { queryKeys } from '../utils/constants';\r\nimport { debuglog } from '../utils/debug';\r\n\r\n\r\ntype Address = {\r\n street_line: string,\r\n secondary: string,\r\n city: string,\r\n state: string,\r\n zipcode: string,\r\n entries: number,\r\n}\r\n\r\ntype AddressLookupData = {\r\n suggestions: Address[],\r\n};\r\n\r\nconst smartyApiKey = process.env.REACT_APP_SMARTY_API_KEY;\r\n\r\nconst fetchAddressLookup = async (search?: string): Promise => {\r\n debuglog('fetching address...');\r\n const res = await smartyAutocompleteClient.get(`/lookup?key=${smartyApiKey}&search=${search}`);\r\n debuglog('res', res);\r\n \r\n const suggestions = res.data.suggestions;\r\n\r\n return { suggestions };\r\n};\r\n\r\nexport const useAddressLookup = (search?: string, validPattern?: RegExp) => {\r\n let keepPreviousData;\r\n if (search && validPattern && !validPattern.test(search)) {\r\n search = '';\r\n keepPreviousData = false;\r\n } else {\r\n keepPreviousData = true;\r\n }\r\n\r\n return useQuery(\r\n [...queryKeys.addressLookup, search],\r\n () => fetchAddressLookup(search),\r\n {\r\n staleTime: Infinity,\r\n cacheTime: Infinity,\r\n retry: false,\r\n keepPreviousData: keepPreviousData,\r\n enabled: !!search\r\n }\r\n );\r\n};\r\n","import { useState, useEffect } from 'react';\r\nimport orderBy from 'lodash/orderBy';\r\nimport { BreakPoints } from '../types';\r\nimport { breakpointSizes } from '../utils/constants';\r\n\r\nexport { BreakPoints, breakpointSizes };\r\n\r\nexport type WindowDimensions = {\r\n width: number,\r\n height: number,\r\n breakpoint: BreakPoints,\r\n};\r\n\r\nconst breakpoints = [\r\n { breakpoint: BreakPoints.xs, value: breakpointSizes[BreakPoints.xs] },\r\n { breakpoint: BreakPoints.sm, value: breakpointSizes[BreakPoints.sm] },\r\n { breakpoint: BreakPoints.md, value: breakpointSizes[BreakPoints.md] },\r\n { breakpoint: BreakPoints.lg, value: breakpointSizes[BreakPoints.lg] },\r\n { breakpoint: BreakPoints.xl, value: breakpointSizes[BreakPoints.xl] },\r\n { breakpoint: BreakPoints.xxl, value: breakpointSizes[BreakPoints.xxl] },\r\n];\r\n\r\nconst getWindowDimensions = (): WindowDimensions => {\r\n const { innerWidth: width, innerHeight: height } = window;\r\n\r\n let breakpoint = BreakPoints.xxl;\r\n for (const item of orderBy(breakpoints, ['value'], ['desc'])) {\r\n if (width >= item.value) {\r\n breakpoint = item.breakpoint;\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n width,\r\n height,\r\n breakpoint,\r\n };\r\n};\r\n\r\nexport const useWindowDimensions = () => {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWindowDimensions(getWindowDimensions());\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return windowDimensions;\r\n};\r\n","import { atom } from 'recoil';\r\nimport {\r\n ApplicationModel,\r\n ConfigurationResponse,\r\n CreateLeadResponse,\r\n DecisionsResponse,\r\n SendCheckAppStatusOtpRequest,\r\n SendCheckAppStatusOtpResponse,\r\n GADataLayerModel\r\n} from '../types';\r\nimport { CardTypes } from '../utils/constants';\r\n\r\nexport const applicationState = atom({\r\n key: 'applicationState',\r\n default: {\r\n primaryPhoneType: 'C',\r\n cardType: 'basic',\r\n },\r\n});\r\n\r\nexport const responseCodeState = atom({\r\n key: 'responseCodeState',\r\n default: undefined,\r\n});\r\n\r\nexport const selectedApplicationIdState = atom({\r\n key: 'selectedApplicationIdState',\r\n default: undefined,\r\n});\r\n\r\nexport const createLeadResponseState = atom({\r\n key: 'createLeadResponseState',\r\n default: undefined,\r\n});\r\n\r\nexport const decisionsResponseState = atom({\r\n key: 'decisionsResponseState',\r\n default: undefined,\r\n});\r\n\r\nexport const sendCheckAppStatusOtpRequestState = atom({\r\n key: 'sendCheckAppStatusOtpRequestState',\r\n default: undefined,\r\n});\r\n\r\nexport const sendCheckAppStatusOtpResponseState = atom({\r\n key: 'sendCheckAppStatusOtpResponseState',\r\n default: undefined,\r\n});\r\n\r\nexport const timeoutExpiredState = atom({\r\n key: 'timeoutExpiredState',\r\n default: false,\r\n});\r\n\r\nexport const checkAppState = atom({\r\n key: 'checkAppState',\r\n default: false,\r\n});\r\n\r\nexport const paymentSucceededState = atom({\r\n key: 'paymentSucceededState',\r\n default: false,\r\n});\r\n\r\nexport const configurationResponseState = atom({\r\n key: 'configurationResponseState',\r\n default: undefined,\r\n});\r\n\r\nexport const utmSourceNameState = atom({\r\n key: 'utmSourceName',\r\n default: ''\r\n});\r\n\r\nexport const cardTypeState = atom({\r\n key: 'cardTypeState',\r\n default: 'basic'\r\n});\r\n\r\nexport const emailAddressState = atom({\r\n key: 'emailAddress',\r\n default: ''\r\n});\r\n\r\nexport const launchCardTunerdOnState = atom({\r\n key: 'launchCardTunerdOn',\r\n default: true\r\n});\r\n\r\nexport const firstNameState = atom({\r\n key: 'firstName',\r\n default: ''\r\n});\r\n\r\nexport const userIdState = atom({\r\n key: 'userId',\r\n default: ''\r\n});\r\n\r\nexport const nidState = atom({\r\n key: 'nid',\r\n default: ''\r\n});\r\n\r\nexport const gaDataLayerState = atom({\r\n key: 'gaDataLayer',\r\n default: {\r\n user_id: '',\r\n app_started: true,\r\n NID_: undefined,\r\n SID_: undefined,\r\n step_name: undefined,\r\n card_selected: undefined,\r\n est_housing_payment: undefined,\r\n total_yearly_outcome: undefined,\r\n credit_line_amount: undefined,\r\n credit_line_type: undefined,\r\n card_fund_selection: undefined,\r\n card_fund_result: undefined,\r\n }\r\n});\r\n\r\nexport const applicationBeforeDownsellState = atom({\r\n key: 'applicationBeforeDownsell',\r\n default: null\r\n})\r\n\r\nexport const downsellState = atom({\r\n key: 'downsell',\r\n default: false\r\n})\r\n\r\nexport const downsellSourcesState = atom({\r\n key: 'downsellSources',\r\n default: []\r\n})\r\n\r\nexport const productIdBeforeDownsellState = atom({\r\n key: 'productIdBeforeDownsell',\r\n default: ''\r\n})","import { useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { ResponseCodes, ErrorPageProps } from '../types';\r\nimport { decisionsResponseState } from '../store/atoms';\r\nimport { routeHashes } from '../app-routes';\r\n\r\nexport const useProcessResponseCode = (responseCode?: string) => {\r\n const history = useHistory();\r\n const decisionsResponse = useRecoilValue(decisionsResponseState);\r\n\r\n useEffect(() => {\r\n if (responseCode) {\r\n // adjust to api error code when response code is present but\r\n // expected decisions response is not there\r\n let adjustedResponseCode = responseCode;\r\n if ([\"WT_DOC\"].includes(responseCode) && !decisionsResponse) {\r\n adjustedResponseCode = ResponseCodes.APIConnectivityError;\r\n }\r\n\r\n // redirect based on (adjusted) response code\r\n switch (adjustedResponseCode) {\r\n // Decisions Response Codes\r\n case ResponseCodes.ApplicationInDocumentRequest:\r\n history.push(routeHashes[\"/documents-requested\"]);\r\n break;\r\n case ResponseCodes.ApplicationInWaitingForFunds:\r\n history.push(routeHashes[\"/app-approved-waiting-for-funds\"]);\r\n break;\r\n case ResponseCodes.ApplicationInGoodFunds:\r\n history.push(routeHashes[\"/app-approved-in-good-funds\"]);\r\n break;\r\n case ResponseCodes.ApplicationHasBeenApproved:\r\n history.push(routeHashes[\"/app-approved-deposit-approved\"]);\r\n break;\r\n case ResponseCodes.ApplicationClosed:\r\n history.push(routeHashes[\"/app-closed\"]);\r\n break;\r\n case ResponseCodes.ApplicationExpiredOrIncomplete:\r\n history.push(routeHashes[\"/app-closed-expired-or-incomplete\"]);\r\n break;\r\n case ResponseCodes.ApplicationDeclined:\r\n history.push(routeHashes[\"/app-denied\"]);\r\n break;\r\n case ResponseCodes.ApplicationWithdrawn:\r\n history.push(routeHashes[\"/app-closed-withdrawn\"]);\r\n break;\r\n case ResponseCodes.ApplicationApprovedAndAccountBoarded:\r\n history.push(routeHashes[\"/app-approved-boarded\"]);\r\n break;\r\n case ResponseCodes.DecisionsNotAccessible:\r\n history.push(routeHashes[\"/app-pending-api-failed\"]);\r\n break;\r\n case ResponseCodes.APIConnectivityError:\r\n history.push(routeHashes[\"/app-pending-api-failed\"]);\r\n break;\r\n case ResponseCodes.MiskeyDOBAndZIP:\r\n history.push(routeHashes[\"/field-corrections\"]);\r\n break;\r\n case ResponseCodes.MiskeyDOB:\r\n history.push(routeHashes[\"/field-corrections\"]);\r\n break;\r\n case ResponseCodes.MiskeyZIP:\r\n history.push(routeHashes[\"/field-corrections\"]);\r\n break;\r\n case ResponseCodes.ApplicationInManualReview:\r\n history.push(routeHashes[\"/app-pending-manual-review\"]);\r\n break;\r\n case ResponseCodes.ApplicationInManualDocumentReview:\r\n history.push(routeHashes[\"/app-pending-manual-document-review\"]);\r\n break;\r\n case ResponseCodes.ApplicationInSecurityDepositRefund:\r\n history.push(routeHashes[\"/app-closed-waiting-on-refund\"]);\r\n break;\r\n\r\n // UnprocessableResults Response Codes\r\n case ResponseCodes.FundFailure:\r\n history.push(routeHashes[\"/funding-source\"]);\r\n break;\r\n case ResponseCodes.FundFailureFinal:\r\n history.push(routeHashes[\"/app-funding-fail\"]);\r\n break;\r\n case ResponseCodes.InvalidEmail:\r\n history.push(routeHashes[\"/invalid-email\"]);\r\n break;\r\n case ResponseCodes.ExceededDailyPaymentTransactions:\r\n history.replace(routeHashes['/error'], {\r\n title: 'An error occurred with your payment.',\r\n message: 'You have exceeded the maximum number of transactions in a single day. Return as soon as tomorrow to make another payment.',\r\n buttonText: 'Ok, Got it',\r\n navigateTo: 'https://www.openskycc.com',\r\n } as ErrorPageProps);\r\n break;\r\n\r\n // Placeholder for future code(s) to come for funding declined\r\n // case 'FundingDeclined':\r\n // history.push(routeHashes['/app-funding-declined']);\r\n // break;\r\n\r\n default:\r\n // log to console and send to standard API Error screen\r\n console.error(`Unexpected/unhandled response code ${adjustedResponseCode}`);\r\n history.replace(routeHashes[\"/app-pending-api-failed\"]);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [responseCode]);\r\n};\r\n","import ApplicationInfoStatus from \"./application-info-status\";\r\n\r\nexport default ApplicationInfoStatus;\r\n","import React, { ReactElement, useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Alert, Button, Col, Row } from 'react-bootstrap';\r\nimport Confetti from 'react-confetti';\r\nimport { useWindowDimensions } from '../../hooks';\r\nimport { routeHashes } from '../../app-routes';\r\n\r\nexport type ApplicationStatusType = 'info' | 'error' | 'approved' | 'closed' | 'docrequest';\r\n\r\nexport type ApplicationInfoStatusProps = {\r\n appIcon?: string;\r\n appStatus: string;\r\n appStatusType: ApplicationStatusType;\r\n appStatusIcon: string;\r\n appMessage?: string | React.ReactNode;\r\n appMessageLine2?: string;\r\n appMessageAdditionalClasses?: string;\r\n appMessageAdditionalGradiantClasses?: string;\r\n appDetailMessage?: string;\r\n appDetailMessageLine2?: string;\r\n appDetailAdditionalClasses?: string;\r\n appGradientMessage?: string;\r\n appHeaderGradientBorder?: boolean;\r\n appGradientButton?: boolean;\r\n appPromo?: boolean;\r\n appNotificationMessage?: ReactElement;\r\n appAdditionalContent?: ReactElement;\r\n buttonText?: string;\r\n onNext?: () => void;\r\n promoFundButtons?: boolean;\r\n};\r\n\r\nconst ApplicationInfoStatus: React.FC = ({\r\n buttonText = 'Ok, Got it',\r\n onNext,\r\n ...props\r\n}) => {\r\n const history = useHistory();\r\n const handleNext = () => {\r\n // go to the next page\r\n onNext && onNext();\r\n };\r\n const handleFundToday = () => {\r\n history.push(routeHashes['/funding-source'])\r\n }\r\n const handleFundLater = () => {\r\n /* TODO: where does this go? */\r\n //history.push(routeHashes['/funding-source'])\r\n }\r\n\r\n const windowDimensions = useWindowDimensions();\r\n const [fullHeight, setFullHeight] = useState(0);\r\n useEffect(() => {\r\n setFullHeight(\r\n Math.max(\r\n window.screen.height,\r\n document.body.scrollHeight,\r\n document.documentElement.scrollHeight,\r\n document.body.offsetHeight,\r\n document.documentElement.offsetHeight,\r\n document.body.clientHeight,\r\n document.documentElement.clientHeight\r\n )\r\n );\r\n }, []);\r\n\r\n if (props.appPromo) {\r\n return (\r\n <>\r\n {\r\n props.appStatusType === 'approved' &&\r\n \r\n }\r\n \r\n \r\n \"\"\r\n {props.appStatus}\r\n \r\n \r\n
\r\n \r\n {props.appIcon && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {props.appMessage && (\r\n \r\n \r\n \r\n {props.appMessage}\r\n {props.appMessageLine2 && (\r\n <>\r\n
{props.appMessageLine2}\r\n \r\n )}\r\n \r\n {props.appGradientMessage && (\r\n

\r\n {props.appGradientMessage}\r\n

\r\n )}\r\n \r\n
\r\n )}\r\n {props.appDetailMessage && (\r\n \r\n \r\n

\r\n {props.appDetailMessage}\r\n {props.appDetailMessageLine2 && (<>
{props.appDetailMessageLine2})}\r\n

\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n {props.appNotificationMessage && (\r\n \r\n \r\n
\r\n
\r\n {props.appNotificationMessage}\r\n
\r\n
\r\n \r\n
\r\n )}\r\n {props.appAdditionalContent && (\r\n \r\n \r\n {props.appAdditionalContent}\r\n \r\n \r\n )}\r\n {onNext && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {props.promoFundButtons && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n )\r\n }\r\n \r\n return (\r\n <>\r\n {\r\n props.appStatusType === 'approved' &&\r\n \r\n }\r\n \r\n \r\n \"\"\r\n {props.appStatus}\r\n \r\n \r\n
\r\n \r\n {props.appIcon && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {props.appMessage && (\r\n \r\n \r\n \r\n {props.appMessage}\r\n {props.appMessageLine2 && (\r\n <>\r\n
{props.appMessageLine2}\r\n \r\n )}\r\n \r\n \r\n
\r\n )}\r\n {props.appDetailMessage && (\r\n \r\n \r\n

\r\n {props.appDetailMessage}\r\n {props.appDetailMessageLine2 && (<>
{props.appDetailMessageLine2})}\r\n

\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n {props.appNotificationMessage && (\r\n \r\n \r\n
\r\n
\r\n {props.appNotificationMessage}\r\n
\r\n
\r\n \r\n
\r\n )}\r\n {props.appAdditionalContent && (\r\n \r\n \r\n {props.appAdditionalContent}\r\n \r\n \r\n )}\r\n {onNext && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ApplicationInfoStatus;","import React, { FC, useState, useEffect } from 'react';\r\nimport { Form, FloatingLabel } from 'react-bootstrap';\r\nimport { SelectOptions } from './types';\r\nimport {\r\n FieldErrorsImpl,\r\n UseFormRegister,\r\n UseFormSetValue,\r\n} from 'react-hook-form';\r\n\r\ntype SelectDropdownProps = {\r\n id?: string;\r\n label?: string;\r\n initialValue?: string;\r\n onChange?: (value: string) => void; // ((value?:string) => void);\r\n options?: SelectOptions[];\r\n className?: string;\r\n value?: string;\r\n register?: UseFormRegister;\r\n errors?: FieldErrorsImpl;\r\n name?: string;\r\n setValue?: UseFormSetValue;\r\n};\r\n\r\nconst SelectDropdown: FC = ({\r\n id,\r\n label,\r\n initialValue,\r\n onChange,\r\n options,\r\n className,\r\n value,\r\n register,\r\n name,\r\n setValue\r\n}) => {\r\n const [selectedValue, setSelectedValue] = useState(\r\n initialValue || value\r\n );\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n const { value } = event.target;\r\n setSelectedValue(value);\r\n onChange && onChange(value);\r\n registerOnChange && registerOnChange(event);\r\n // console.log('changing select value', value);\r\n // name && setValue?.(name, value);\r\n };\r\n\r\n useEffect(() => {\r\n setSelectedValue(value);\r\n }, [value]);\r\n\r\n const { onChange: registerOnChange, ...restRegisterProps } =\r\n (register && register(name || '')) || {};\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {(options || []).map((option, index) => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SelectDropdown;\r\n","import FormErrorMessage from './form-error-message';\r\n\r\nexport default FormErrorMessage;\r\n","import React from 'react';\r\nimport { ErrorMessage } from '@hookform/error-message';\r\nimport { Form } from 'react-bootstrap';\r\n\r\ntype FormErrorMessageProps = {\r\n name: string,\r\n errors?: any,\r\n};\r\n\r\nconst FormErrorMessage: React.FC = ({ name, errors }) => {\r\n const errorMessage = (data: { message: string, messages?: any }) => (\r\n \r\n {data.message}\r\n \r\n );\r\n return (\r\n <>\r\n {errors && }\r\n \r\n );\r\n};\r\n\r\nexport default FormErrorMessage;\r\n","const currentYear = new Date().getFullYear();\r\n\r\nconst maxBirthdate = new Date();\r\nmaxBirthdate.setFullYear(maxBirthdate.getFullYear() - 18);\r\n\r\nconst monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n];\r\n\r\nconst daysInMonth = (year?: string, monthIndex?: string) => {\r\n if (!monthIndex) {\r\n return 31;\r\n }\r\n if (!year) {\r\n // use a leap year to make sure Feb offers 29 days if no year selected\r\n return new Date(2020, parseInt(monthIndex, 10) + 1, 0).getDate();\r\n }\r\n return new Date(parseInt(year, 10), parseInt(monthIndex, 10) + 1, 0).getDate();\r\n}\r\n\r\nexport {\r\n currentYear,\r\n daysInMonth,\r\n maxBirthdate,\r\n monthNames,\r\n};\r\n","import { yupResolver } from '@hookform/resolvers/yup';\r\nimport React, { useState } from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useHistory } from 'react-router';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport * as Yup from 'yup';\r\nimport { safety } from '../../assets/img';\r\nimport { AddressForm } from '../../components';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { applicationState, configurationResponseState, gaDataLayerState } from '../../store/atoms';\r\nimport { IncentiveFeatures, MailingAddressModel } from '../../types';\r\nimport { isPOBoxRRPattern, zipCodePattern } from '../../utils/validations';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport MailingAddressHelp from './mailing-address-help';\r\nimport { ModalPage } from '../../components';\r\nimport { useWindowDimensions } from '../../hooks';\r\nimport { routeHashes } from '../../app-routes';\r\nimport './mailing-address.scss';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\nenum MailToType {\r\n Home = 'home',\r\n POBox = 'pobox',\r\n};\r\n\r\nconst MailingAddress = () => {\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const [showAddressLookup, setShowAddressLookup] = useState(false);\r\n const [showCaution, setShowCaution] = useState(false);\r\n let [gaDataLayer, setGADataLayer] = useRecoilState(gaDataLayerState);\r\n const history = useHistory();\r\n const dimensions = useWindowDimensions();\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n\r\n const validationSchema = Yup.object().shape({\r\n mailToType: Yup.string()\r\n .oneOf(Object.values(MailToType))\r\n .required()\r\n .default(() => application.mailToType),\r\n mailingAddress: Yup.object()\r\n .when('mailToType', {\r\n is: MailToType.POBox,\r\n then: Yup.object()\r\n .shape({\r\n addressLine1: Yup.string()\r\n .required('Please enter your street address')\r\n .matches(/^(PO Box|RR)/ , 'Addresses must start with PO Box or RR.')\r\n .matches(isPOBoxRRPattern , 'Addresses must start with PO Box or RR.')\r\n .max(50, 'Total Exceeds Maximum Characters')\r\n .default(() => application.homeAddress?.addressLine1 || ''),\r\n city: Yup.string()\r\n .required('City is required')\r\n .matches(/^[A-Za-z0-9 -,.]+$/ , 'Must contain only letters and numbers')\r\n .max(18, 'Total Exceeds Maximum Characters')\r\n .default(() => application.homeAddress?.city || ''),\r\n state: Yup.string()\r\n .required('State is required')\r\n .matches(/^[A-Za-z]+$/ , 'Must contain only letters')\r\n .max(2, 'Total Exceeds Maximum Characters')\r\n .default(() => application.homeAddress?.state || ''),\r\n zipCode: Yup.string()\r\n .required('Zip Code is required')\r\n .min(5, 'Zip Code is required')\r\n .max(10, 'Zip Code is required')\r\n .test(\r\n 'zipcode',\r\n 'Zip Code is required',\r\n (value) => value !== ''\r\n )\r\n .matches(zipCodePattern, 'Must be a U.S. Zip Code')\r\n .test('first-five-valid-range', 'Must be a U.S. Zip Code', \r\n (value) => { \r\n let zipCodeValue = parseInt((value ?? '0').substring(0,5)); \r\n return zipCodeValue > 500 && zipCodeValue < 99951; \r\n })\r\n .default(() => application.homeAddress?.zipCode || ''),\r\n addressLine2: Yup.string().default(\r\n () => application.homeAddress?.addressLine2 || ''\r\n ),\r\n })\r\n }),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const {\r\n handleSubmit,\r\n setValue,\r\n register,\r\n trigger,\r\n formState: { isValid, errors },\r\n } = useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all',\r\n });\r\n\r\n const onSubmit = async (event: MailingAddressModel) => {\r\n const mailingAddress = event.mailToType === MailToType.POBox\r\n ? event.mailingAddress\r\n : undefined;\r\n const mailToType = event.mailToType;\r\n\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('SendCardNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_SendCardNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_SendCardNext', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('SendCardNext', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Mailing Address',\r\n };\r\n setGADataLayer(updateDataLayer);\r\n pushToDataLayer(\"application_step_6\", updateDataLayer);\r\n\r\n setApplication((current) => ({\r\n ...current,\r\n mailingAddress,\r\n mailToType,\r\n }));\r\n //Forward Credit-Line-Confirm & funding section to end of process\r\n history.push(routeHashes['/funding-source']);\r\n };\r\n\r\n const handleEditHomeAddress = () => {\r\n history.replace(routeHashes['/identity-verification']);\r\n };\r\n\r\n const handleCloseCaution = () => {\r\n setShowCaution(false);\r\n };\r\n\r\n return (\r\n \r\n {!showCaution && \r\n \r\n \r\n
\r\n

Where should we send your card?

\r\n

\r\n We will use this address to send all OpenSky mail, such\r\n as cards, statements and documents.\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {application.firstName}{' '}\r\n {application.lastName}{' '}\r\n setShowCaution(true)}\r\n >\r\n Edit\r\n \r\n
\r\n {application.homeAddress?.addressLine1}\r\n
\r\n {!!application.homeAddress\r\n ?.addressLine2 && (\r\n <>\r\n {\r\n application.homeAddress\r\n ?.addressLine2\r\n }\r\n
\r\n \r\n )}\r\n {application.homeAddress?.city},{' '}\r\n {application.homeAddress?.state}{' '}\r\n {application.homeAddress?.zipCode}\r\n

\r\n }\r\n value=\"home\"\r\n id=\"homeAddress\"\r\n name=\"mailToType\"\r\n onClick={() => setShowAddressLookup(false)}\r\n />\r\n
\r\n setShowAddressLookup(true)}\r\n />\r\n\r\n {/* */}\r\n
\r\n {showAddressLookup && (\r\n
\r\n \r\n P.O. Box / R.R. Route Address Only\r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Next\r\n \r\n \r\n \r\n \r\n
}\r\n {showCaution && (\r\n \r\n \r\n \r\n 0 ? \"center\": \"safety-uncentered\"}`} alt=\"safety\" src={safety} />\r\n
\r\n

\r\n For your security and safety, we only send your card to\r\n a Home Address, P.O. Box or Rural Route Address that is registered to\r\n you.\r\n

\r\n
\r\n

\r\n To edit your mailing address please update the home\r\n address you provided on the verification information\r\n page.\r\n

\r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MailingAddress;\r\n","/* eslint-disable no-useless-escape */\r\nexport const isNumeric = (value: string) => /^\\d+$/.test(value);\r\n\r\nexport const emailPattern =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\nexport const isValidEmail = (email: string) => emailPattern.test(email);\r\n\r\nexport const phonePattern = /^(?!(.)\\1{9,})[2-9]\\d{9}$/;\r\nexport const isValidPhone = (phone: string) => phonePattern.test(phone);\r\n\r\nexport const rawPhonePattern = /^(\\d{3})(\\d{3})(\\d{4})$/;\r\nexport const isValidRawPhone = (phone: string | undefined) =>\r\n !!phone ? rawPhonePattern.test(phone) : false;\r\n\r\n\r\nexport const combinedSsnItinPattern = /\\d{3}[- ]{0,1}\\d{2}[- ]{0,1}\\d{4}$/;\r\nexport const isValidSSNorITIN = (ssnOrItin: string) => { \r\n\r\n if (!ssnOrItin.includes('-') && ssnOrItin.length < 9) {\r\n ssnOrItin = ssnOrItin.padStart(9, '0');\r\n }\r\n return combinedSsnItinPattern.test(ssnOrItin); \r\n}\r\n\r\nexport const isNotPOBoxPattern = /^(?!P\\.?O\\.?\\sBox)/i;\r\nexport const isPOBoxRRPattern = /^(P\\.?O\\.?\\sBox|R\\.?R\\.?)/i;\r\n\r\nexport const zipCodePattern = /^[0-9]{5}(?:-[0-9]{4})?$/;\r\nexport const isValidZipCode = (zipCode?: string) => zipCodePattern.test(zipCode || '');\r\n\r\nexport const namePattern = /^[a-zA-Z\\ \\.\\-]{1,20}$/;\r\n\r\nexport const isValidName = (name?: string) => namePattern.test(name || '');\r\n\r\nexport const invalidNameCharacters = /[^a-zA-Z\\ \\.\\-]/gi;\r\nexport const invalidAddressCharacters = /[^a-zA-Z0-9 \\.\\-\\\\\\/\\&]/gi;\r\n\r\nexport const isValidDate = (\r\n year?: string,\r\n monthIndex?: string,\r\n day?: string\r\n): boolean => {\r\n if (\r\n day !== undefined &&\r\n monthIndex !== undefined &&\r\n year !== undefined\r\n ) {\r\n // @ts-ignore\r\n const date = new Date(year, monthIndex, day);\r\n const dateMonth = date.getMonth();\r\n const dateYear = date.getFullYear();\r\n const dateDay = date.getDate();\r\n return (\r\n dateMonth === Number(monthIndex) &&\r\n dateYear === Number(year) &&\r\n dateDay === Number(day)\r\n );\r\n }\r\n return false;\r\n};\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport classnames from 'classnames';\r\nimport SelectDropdown from '../select-dropdown';\r\nimport {\r\n FieldErrorsImpl,\r\n UseFormSetValue,\r\n UseFormTrigger,\r\n} from 'react-hook-form';\r\nimport { SelectOptions } from '../select-dropdown/types';\r\nimport FormErrorMessage from '../form-error-message';\r\nimport { currentYear, daysInMonth, maxBirthdate } from '../../utils/dates';\r\nimport { isValidDate } from '../../utils/validations';\r\nimport './date-picker.scss';\r\n\r\nexport type DatePickerProps = {\r\n id?: string;\r\n name?: string;\r\n initialValue?: string | Date;\r\n isBirthday?: boolean;\r\n minYear?: number;\r\n maxYear?: number;\r\n onValidDateChange?: (date: Date) => void;\r\n onDateChange?: (date?: Date) => void;\r\n errors?: FieldErrorsImpl;\r\n setValue?: UseFormSetValue;\r\n trigger?: UseFormTrigger;\r\n};\r\n\r\nconst DatePicker: FC = ({\r\n id,\r\n name,\r\n initialValue,\r\n isBirthday,\r\n minYear = 1900,\r\n maxYear = currentYear,\r\n onDateChange,\r\n onValidDateChange,\r\n errors,\r\n setValue,\r\n trigger,\r\n}) => {\r\n const [year, setYear] = useState();\r\n const [monthIndex, setMonthIndex] = useState();\r\n const [day, setDay] = useState();\r\n const [hasValidDateBeenSet, setHasValidDateBeenSet] = useState();\r\n\r\n const calculatedMaxYear = isBirthday\r\n ? Math.min(maxYear, maxBirthdate.getFullYear())\r\n : maxYear;\r\n\r\n const months: SelectOptions[] = Array.from({ length: 12 }, (_, i) => ({\r\n value: `${i}`,\r\n label: new Date(2022, i, 1).toLocaleString('default', { month: 'long' })\r\n }));\r\n \r\n const days: SelectOptions[] = Array.from({ length: daysInMonth(year, monthIndex) }, (_, i) => ({\r\n value: `${(i + 1)}`,\r\n }));\r\n\r\n const years: SelectOptions[] = Array.from({ length: calculatedMaxYear - minYear + 1 }, (_, i) => ({\r\n value: `${calculatedMaxYear - i}`,\r\n }));\r\n\r\n const hasErrors = (monthIndex || day || year) && errors && name && name.split('.').reduce((p, prop) => p && (p as unknown as any)[prop], errors);\r\n\r\n useEffect(() => {\r\n if (initialValue) {\r\n const initialDate = new Date(initialValue);\r\n setYear(initialDate.getFullYear().toString());\r\n setMonthIndex(initialDate.getMonth().toString());\r\n setDay(initialDate.getDate().toString());\r\n }\r\n }, [initialValue]);\r\n\r\n useEffect(() => {\r\n if (isValidDate(year, monthIndex, day)) {\r\n const selectedDate = new Date(\r\n parseInt(year!, 10),\r\n parseInt(monthIndex!, 10),\r\n parseInt(day!, 10)\r\n ); \r\n setValue && name && setValue(name, selectedDate);\r\n onValidDateChange && onValidDateChange(selectedDate);\r\n onDateChange && onDateChange(selectedDate);\r\n setHasValidDateBeenSet(true);\r\n trigger && trigger();\r\n } else {\r\n setValue && name && setValue(name, undefined);\r\n onDateChange && onDateChange(undefined);\r\n if (hasValidDateBeenSet) {\r\n trigger && trigger();\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [monthIndex, day, year]);\r\n\r\n return (\r\n <>\r\n
\r\n setMonthIndex(value)}\r\n options={months}\r\n name={`${name}.month`}\r\n id={id && `${id}-month`}\r\n className={classnames('date-picker-month', { error: hasErrors })}\r\n />\r\n setDay(value)}\r\n options={days}\r\n id={id && `${id}-day`}\r\n name={`${name}.day`}\r\n className={classnames('date-picker-day', { error: hasErrors })}\r\n />\r\n setYear(value)}\r\n options={years}\r\n id={id && `${id}-year`}\r\n name={`${name}.year`}\r\n className={classnames('date-picker-year', { error: hasErrors })}\r\n />\r\n
\r\n {hasErrors && }\r\n \r\n );\r\n};\r\n\r\nexport default DatePicker;\r\n","import React, { FC } from 'react';\r\nimport { iconQuestion } from '../../assets/img';\r\n\r\nconst Header: FC = (props) => (\r\n \r\n {props.children}\r\n \r\n)\r\n\r\nconst Section: FC = (props) => (\r\n
\r\n {props.children}\r\n
\r\n)\r\n\r\nconst SectionTitle: FC = (props) => (\r\n \r\n {props.children}\r\n \r\n)\r\n\r\nconst SectionText: FC = (props) => (\r\n \r\n {props.children}\r\n

\r\n)\r\n\r\nconst HelpTray: FC = (props) => (\r\n \r\n \r\n {props.children}\r\n \r\n);\r\n\r\nexport default Object.assign(HelpTray, {\r\n Header,\r\n Section,\r\n SectionTitle,\r\n SectionText,\r\n});\r\n","import HelpTray from './help-tray';\r\n\r\nexport default HelpTray;\r\n","import { IncentiveFeatures, IncentiveDetailResponse, IncentiveResponse, ProductTypePrns, ConfigurationResponse } from '../types';\r\n\r\nexport const getIfIncentiveFeatureActive = (incentiveFeature: IncentiveFeatures, prn: ProductTypePrns, config: ConfigurationResponse | undefined, valueToGet: any, defaultValue?: any): any => {\r\n if (isIncentiveFeatureActive(incentiveFeature, prn, config)) {\r\n return valueToGet;\r\n }\r\n\r\n return defaultValue;\r\n}\r\n\r\nexport const isIncentiveFeatureActive = (incentiveFeature: IncentiveFeatures, prn: ProductTypePrns, config: ConfigurationResponse | undefined): boolean => { \r\n const activeProduct = config?.securedProducts?.find(p => p.prn === prn); \r\n\r\n if (IncentiveFeatures.Any === incentiveFeature) { \r\n return ((activeProduct?.incentives?.length) ?? 0) > 0;\r\n } else {\r\n const activeIncentive = getIncentiveDetail(incentiveFeature, prn, config);\r\n \r\n return (!!activeIncentive);\r\n }\r\n}\r\n\r\nexport const getIncentive = (incentiveFeature: IncentiveFeatures, prn: ProductTypePrns, config: ConfigurationResponse | undefined): IncentiveResponse | null => { \r\n // console.log('Looking for Incentive:', incentiveFeature);\r\n // console.log('on product:', prn);\r\n // console.log('with a config:', config);\r\n\r\n const activeProduct = config?.securedProducts?.find(p => p.prn === prn);\r\n //console.log('getIncentive activeProduct:', activeProduct);\r\n if (incentiveFeature === IncentiveFeatures.Any) {\r\n return (activeProduct?.incentives) ? (activeProduct?.incentives[0] ?? null) : null;\r\n }\r\n\r\n\r\n const activeIncentives = activeProduct?.incentives?.filter(incentive => \r\n incentive.incentiveDetails?.some(activeIncentive => activeIncentive.incentiveTypeName === incentiveFeature)\r\n ); \r\n \r\n return activeIncentives?.[0] ?? null;\r\n}\r\n\r\n\r\nexport const getIncentiveDetail = (incentiveFeature: IncentiveFeatures, prn: ProductTypePrns, config: ConfigurationResponse | undefined): IncentiveDetailResponse | null => { \r\n\r\n const activeIncentive = getIncentive(incentiveFeature, prn, config);\r\n \r\n return activeIncentive?.incentiveDetails?.find(activeIncentive => activeIncentive.incentiveTypeName === incentiveFeature) ?? null;\r\n}\r\n\r\nexport const getDetailFromIncentive = (incentiveFeature: IncentiveFeatures, incentive: IncentiveResponse | undefined): IncentiveDetailResponse | null => {\r\n if (incentiveFeature === IncentiveFeatures.Any) {\r\n return incentive?.incentiveDetails[0] ?? null;\r\n }\r\n return incentive?.incentiveDetails.find(activeIncentive => activeIncentive.incentiveTypeName === incentiveFeature) ?? null;\r\n}\r\n\r\nexport const getPrn = (productShortName: string | undefined): ProductTypePrns => {\r\n if (!productShortName) {\r\n console.log('WARNING: prn not defined');\r\n return ProductTypePrns.Unknown;\r\n }\r\n if (productShortName.toLocaleLowerCase() === 'secured' || productShortName.toLocaleLowerCase() === 'basic')\r\n return ProductTypePrns.Basic;\r\n if (productShortName.toLocaleLowerCase() === 'plus')\r\n return ProductTypePrns.Plus;\r\n if (productShortName.toLocaleLowerCase() === 'launch')\r\n return ProductTypePrns.Launch;\r\n\r\n console.log('WARNING: unable to find matching product');\r\n return ProductTypePrns.Unknown; \r\n}\r\n\r\n\r\n","import React, { useState } from 'react';\r\nimport { Card, Form } from 'react-bootstrap';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { applicationState, configurationResponseState, } from '../../store/atoms';\r\nimport {\r\n arrivalPurple,\r\n creditcard,\r\n creditcardPlusNoRibbon,\r\n creditcardLaunch,\r\n iconCashback,\r\n increasePurple,\r\n iconLockPurple,\r\n noAnnualFeePurple,\r\n} from '../../assets/img';\r\nimport { IncentiveFeatures, IncentiveResponse } from '../../types';\r\nimport { PromotionSpecific } from '../../components';\r\nimport { getDetailFromIncentive } from '../../utils/incentives';\r\nimport { debuglog } from '../../utils/debug';\r\n\r\ntype CardPerksOptions = {\r\n showFundText?: boolean;\r\n showFundToggle?: boolean;\r\n amount?: number;\r\n activeIncentive?: IncentiveResponse;\r\n cardType?: string;\r\n};\r\n\r\nconst CardPerks: React.FC = ({\r\n showFundToggle,\r\n showFundText,\r\n amount,\r\n activeIncentive,\r\n cardType,\r\n}) => {\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const application = useRecoilValue(applicationState);\r\n const [fundToday, setFundToday] = useState(application.fundToday ?? true);\r\n const showBasedOnCardType = cardType ?? 'none';\r\n\r\n debuglog('card-perks->amount', amount);\r\n debuglog('card-perks->cardType', showBasedOnCardType);\r\n const toggleFundToday = (e: React.ChangeEvent) => {\r\n setFundToday(!!e.target.checked);\r\n };\r\n\r\n // const isIncentiveActive = (incentiveFeature: IncentiveFeatures, incentive: IncentiveResponse) => { \r\n // return (getDetailFromIncentive(incentiveFeature, incentive)?.incentiveTypeName);\r\n // }\r\n\r\n // const getFundingHeaderCardClass = (incentive: IncentiveResponse) => {\r\n // debuglog('getFundingHeaderCardClass incentive', incentive);\r\n // if (isIncentiveActive(IncentiveFeatures.DepositReductionAmount, incentive)) {\r\n // return 'promo-border payment';\r\n // } \r\n // else {\r\n // return 'gradient-border payment';\r\n // }\r\n // };\r\n\r\n // const getPromotionValueDepositReduction = (incentive: IncentiveResponse, amount: number) => {\r\n // debuglog('Application amount:', amount);\r\n // const depositReductionIncentive = getDetailFromIncentive(IncentiveFeatures.DepositReductionAmount, incentive);\r\n // debuglog('depositReductionIncentive', depositReductionIncentive);\r\n \r\n // let calculatedValue = (amount - Number(depositReductionIncentive?.value));\r\n // debuglog('calculatedValue', calculatedValue);\r\n\r\n // return calculatedValue.toString();\r\n // }\r\n\r\n const getCreditCardImage = () => {\r\n switch(showBasedOnCardType){\r\n case 'plus':\r\n return creditcardPlusNoRibbon;\r\n case 'launch':\r\n return creditcardLaunch;\r\n default:\r\n return creditcard;\r\n }\r\n }\r\n \r\n debuglog('card-perks, activeIncentive', activeIncentive);\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n
\r\n Save ${getDetailFromIncentive(IncentiveFeatures.DepositReductionAmount, activeIncentive)?.value}**\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n ${amount}\r\n \r\n Credit Line\r\n
\r\n
\r\n
\r\n \r\n
\r\n With a refundable security deposit of ${(amount! - \r\n Number(getDetailFromIncentive(IncentiveFeatures.DepositReductionAmount, \r\n activeIncentive)?.value ?? '0')).toString()}\r\n
\r\n \r\n \r\n
\r\n With a refundable security deposit of ${amount}\r\n
\r\n \r\n \r\n
\r\n With a refundable security deposit of ${amount}\r\n
\r\n \r\n
\r\n
\r\n \r\n {/*\r\n \r\n \r\n
Save ${promoValueDepositReduction}*
\r\n \r\n \r\n \"\"\r\n
\r\n

${amount ?? 0}

\r\n

Credit Line

\r\n
\r\n
\r\n {(isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(showBasedOnCardType), configurationResponse) && (\r\n <>\r\n \r\n \r\n
With a refundable security deposit of ${(application.amount! - Number(promoValueDepositReduction)).toString()}
\r\n \r\n \r\n
With a refundable security deposit of ${application.amount!}
\r\n \r\n
\r\n \r\n )\r\n )}\r\n \r\n */}\r\n {showBasedOnCardType === 'basic' ? (\r\n
    \r\n
  • \r\n \r\n \r\n \r\n \r\n Build credit on arrival\r\n \r\n Start building credit as soon as your card arrives,\r\n just activate and spend responsibly\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n Earn cash back rewards*\r\n \r\n Earn up to 10% cash back on purchases at\r\n 40,000+ merchants with OpenSky Rewards\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n Get considered for a credit line increase\r\n \r\n After 6 months, you may be considered for a credit limit increase\r\n with no additional deposit required{activeIncentive ? '***' : '**'}\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n Get considered for unsecured\r\n \r\n In as few as 6 months, you may be considered for the \r\n unsecured OpenSky Visa® Gold Credit Card**\r\n \r\n \r\n
  • \r\n
\r\n ) : (\r\n
    \r\n {showBasedOnCardType !== 'launch' && (\r\n
  • \r\n \r\n \r\n \r\n \r\n No annual fee\r\n \r\n Focus on your financial future without\r\n the worry of an annual fee\r\n \r\n \r\n
  • \r\n )}\r\n
  • \r\n \r\n \r\n \r\n \r\n Build credit on arrival\r\n \r\n Start building credit as soon as your card arrives,\r\n just activate and spend responsibly\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n Earn cash back rewards*\r\n \r\n Earn up to 10% cash back on purchases at\r\n 40,000+ merchants with OpenSky Rewards\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n Get considered for a credit line increase\r\n \r\n After 6 months, you may be considered for a limit increase\r\n with no additional deposit required**\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n Get considered for unsecured\r\n \r\n In as few as 6 months, you may be considered for the\r\n OpenSky Gold Unsecured Card*\r\n \r\n \r\n
  • \r\n
\r\n )}\r\n {showFundText &&\r\n
\r\n
\r\n
\r\n Easily fund today with debit card\r\n
\r\n
\r\n }\r\n \r\n {showFundToggle &&\r\n \r\n \r\n
\r\n I'm ready to fully fund my card today\r\n
\r\n \r\n
\r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CardPerks;\r\n","import CardPerks from './card-perks';\r\n\r\nexport default CardPerks;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { BreakPoints } from '../../types';\r\n\r\ntype ModalToPageProps = {\r\n breakpoint: BreakPoints\r\n};\r\n\r\nconst ModalPage: FC = (props) => {\r\n const [showModal, setShowModal] = useState(true);\r\n\r\n useEffect(() => {\r\n setShowModal(props.breakpoint < BreakPoints.sm);\r\n\r\n return () => {\r\n setShowModal(false);\r\n };\r\n }, [props.breakpoint]);\r\n\r\n if (showModal) {\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default ModalPage;\r\n","import ModalPage from './modal-page';\r\n\r\nexport default ModalPage;\r\n","import classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport { Form, InputGroup } from 'react-bootstrap';\r\nimport { iconError, iconLockGray } from '../../assets/img';\r\nimport { ValidatedInputProps } from '../../types';\r\nimport FormErrorMessage from '../form-error-message';\r\n\r\n\r\nexport type TextInputProps = Omit & {\r\n onEditClicked?: () => void;\r\n inputGroupClassName?: string;\r\n inputGroupTypingClassName?: string;\r\n instructionText?: string;\r\n noMaterialStyle?: boolean;\r\n prefixText?: string;\r\n registerOptions?: any;\r\n showEdit?: boolean;\r\n secure?: boolean;\r\n showErrorsOnLoad?: boolean;\r\n subtitleText?: string | React.ReactNode;\r\n onSecuredClicked?: () => void;\r\n}; \r\n\r\nconst TextInput: React.FC = (props) => {\r\n const {\r\n disabled,\r\n errors,\r\n inputGroupClassName,\r\n inputGroupTypingClassName,\r\n instructionText,\r\n label,\r\n maxLength,\r\n name,\r\n noMaterialStyle,\r\n onBlur,\r\n onChange,\r\n onKeyDown,\r\n onEditClicked,\r\n onFocus,\r\n placeholder,\r\n prefixText,\r\n register,\r\n registerOptions,\r\n showEdit,\r\n secure,\r\n showErrorsOnLoad,\r\n subtitleText,\r\n type,\r\n onSecuredClicked,\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n onBlur: onBlurRegister,\r\n onChange: onChangeRegister,\r\n ...restRegister\r\n } = (register && register(name, registerOptions)) || {};\r\n\r\n const [showErrors, setShowErrors] = useState(showErrorsOnLoad);\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n const errorsForName = errors && name && name.split('.').reduce((p, prop) => p && (p as unknown as any)[prop], errors);\r\n const hasErrors = !!(showErrors && errors && errorsForName);\r\n // debuglog('inputGroupClassName', inputGroupClassName);\r\n // debuglog('hasErrors', hasErrors);\r\n // debuglog('isFocused', isFocused);\r\n\r\n return (\r\n \r\n {noMaterialStyle && (\r\n \r\n {label}\r\n \r\n )}\r\n {subtitleText &&
{subtitleText}
}\r\n\r\n \r\n {hasErrors && (\r\n \r\n \r\n \r\n )}\r\n {\r\n onBlur && onBlur(e);\r\n onBlurRegister && onBlurRegister(e);\r\n setShowErrors(true);\r\n setIsFocused(false);\r\n }}\r\n onChange={(e) => {\r\n onChange && onChange(e);\r\n onChangeRegister && onChangeRegister(e);\r\n }}\r\n onKeyDown={(e) => {\r\n onKeyDown && onKeyDown(e); \r\n }}\r\n onFocus={(e) => {\r\n onFocus && onFocus(e);\r\n setIsFocused(true);\r\n }}\r\n maxLength={maxLength}\r\n placeholder={noMaterialStyle ? placeholder : label}\r\n className={classnames({\r\n error: hasErrors,\r\n prefixed: prefixText,\r\n 'icon-right': secure || showEdit,\r\n })}\r\n disabled={disabled}\r\n {...restRegister}\r\n {...rest}\r\n />\r\n {showEdit &&\r\n \r\n \r\n Edit\r\n \r\n \r\n }\r\n {secure &&\r\n \r\n \r\n \r\n }\r\n {prefixText &&\r\n \r\n {prefixText}\r\n \r\n }\r\n {!noMaterialStyle && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n {instructionText && !hasErrors && (\r\n
\r\n {instructionText}\r\n
\r\n )}\r\n {showErrors && }\r\n \r\n );\r\n};\r\n\r\nexport default TextInput;\r\n","import TextInput from './text-input';\r\n\r\nexport default TextInput;\r\n","import React from 'react';\r\nimport NumberFormat, { NumberFormatProps } from 'react-number-format';\r\nimport { ValidatedInputProps } from '../../types';\r\nimport TextInput from '../text-input';\r\n\r\nexport type NumberFormatInputProps = Omit & NumberFormatProps;\r\n\r\nconst NumberFormatInput: React.FC = (props) => (\r\n
\r\n {\r\n if (props.decimalScale && props.decimalScale > 0) {\r\n return value?.replace && \r\n Math.round(parseFloat(value.replace(/[^0-9.]+/g, '')) * (10 * props.decimalScale)) / (10 * props.decimalScale);\r\n } else if (props.fixedDecimalScale) { \r\n return value?.replace && Math.round(parseFloat(value.replace(/[^0-9.]+/g, '')));\r\n } else {\r\n return value?.replace && value.replace(/[^0-9]+/g, '');\r\n }\r\n }\r\n\r\n\r\n }}\r\n {...props}\r\n />\r\n
\r\n);\r\n\r\nexport default NumberFormatInput;\r\n","import NumberFormatInput from './number-format-input';\r\n\r\nexport default NumberFormatInput;","import React from 'react';\r\nimport { Button, Card } from 'react-bootstrap';\r\nimport {\r\n creditcard,\r\n creditcardLaunch,\r\n creditcardPlusNoRibbon,\r\n noAnnualFeeRibbon\r\n} from '../../assets/img';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { PromotionSpecific } from '../../components';\r\nimport { configurationResponseState } from '../../store/atoms';\r\nimport { isIncentiveFeatureActive, getPrn, getIncentiveDetail } from '../../utils/incentives';\r\nimport { IncentiveFeatures } from '../../types';\r\nimport { debuglog } from '../../utils/debug';\r\nimport './intro.scss';\r\n\r\ntype IntroProps = {\r\n cardType: string,\r\n gradientBorder?: boolean,\r\n cardBadge?: boolean,\r\n annualFee?: any,\r\n programFee?: any,\r\n minimumDeposit: number,\r\n apr: string,\r\n buttonClick: any,\r\n buttonText: string,\r\n promo?: boolean,\r\n tclink?: string,\r\n};\r\n\r\nconst Intro = (props: IntroProps) => {\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n debuglog('Intro Card Args', props);\r\n\r\n const annualFeeText = props.annualFee && props.annualFee !== '0' ? '$' + props.annualFee + ' annual fee' : 'No annual fee';\r\n\r\n return (\r\n <>\r\n
\r\n
Current Card
\r\n \r\n \r\n
\r\n {props.cardType === 'plus' && \"no}\r\n
\r\n
\r\n {\r\n props.cardType.toLowerCase() === 'basic' ? 'OpenSky\\n Secured Visa®' :\r\n props.cardType.toLowerCase() === 'plus' ? 'OpenSky Plus Secured Visa®':\r\n 'OpenSky\\n Launch Visa®'\r\n }\r\n \r\n {props.cardType.toLowerCase() === 'launch' ? '' : annualFeeText}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {isIncentiveFeatureActive(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n <> \r\n Get a $200 Credit Line for ${200 - \r\n (Number(\r\n getIncentiveDetail(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase())\r\n , configurationResponse)?.value ?? 0) ?? 0)} \r\n \r\n )}\r\n {isIncentiveFeatureActive(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n <> \r\n Minimum deposit $300 ${ \r\n (getIncentiveDetail(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase())\r\n , configurationResponse)?.value ?? 'N/A')} \r\n \r\n )}\r\n
When you apply and fund.
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
    \r\n {isIncentiveFeatureActive(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n <> \r\n
  • Minimum security deposit required\r\n ${(props.minimumDeposit) - \r\n (Number(\r\n getIncentiveDetail(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase())\r\n , configurationResponse)?.value ?? 0) ?? 0)}
  • \r\n \r\n )}\r\n {isIncentiveFeatureActive(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n <> \r\n
  • Minimum security deposit required\r\n ${props.minimumDeposit}\r\n ${ \r\n (getIncentiveDetail(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase())\r\n , configurationResponse)?.value ?? 'N/A')}
  • \r\n \r\n )}\r\n {!isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n <> \r\n
  • Minimum security deposit required\r\n ${props.minimumDeposit}
  • \r\n \r\n )}\r\n {props.cardType.toLowerCase() === 'launch' ? (\r\n
  • Monthly Fee**$2
  • \r\n ) : (\r\n
  • Annual Fee${props.annualFee}
  • \r\n )}\r\n
  • Up to 10% cash back rewards*
  • \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {props.buttonText} \r\n \r\n
\r\n
\r\n
{props.apr}% Annual percentage rate
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Intro;\r\n","import Intro from './intro'\r\n\r\nexport default Intro;\r\n","import React from 'react';\r\nimport './banner.scss';\r\n\r\ntype BannerProps = {\r\n cardType: string,\r\n}\r\n\r\nconst Banner = (props: BannerProps) => {\r\n return (\r\n <>\r\n
\r\n
\r\n
{\r\n props.cardType === 'basic' ? 'OpenSky Secured Card' : \r\n props.cardType === 'plus' ? 'OpenSky Plus' :\r\n 'OpenSky Launch Visa®'\r\n }
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Banner;\r\n","import Banner from './banner'\r\n\r\nexport default Banner;\r\n","import React, { FC } from 'react';\r\nimport { getIncentive } from '../../utils/incentives';\r\nimport './promotion-specific.scss';\r\nimport { IncentiveFeatures, ProductTypePrns, ConfigurationResponse, IncentiveResponse } from '../../types';\r\nimport { debuglog } from '../../utils/debug';\r\n\r\n\r\ntype PromotionSpecificProps = {\r\n className?: string | undefined,\r\n cardType?: string | undefined, // current card type determines the product used\r\n config?: ConfigurationResponse | undefined, // contains the active list of products, incentives, and incentive features\r\n appliedIncentive?: IncentiveResponse | undefined, // if incentive is already applied, passes it in use that instead\r\n incentiveFeatureName?: string | undefined, // name of the incentive this instance of the component is representing \r\n // TODO: Do Not assume that there is only ever one incentive to a product\r\n showIfPromoNotActive?: boolean | undefined, \r\n setPromoValue?: (promoValue: string) => void,\r\n setPromoEndDate?: (promoEndDate: string) => void, \r\n children: React.ReactNode\r\n};\r\n\r\nconst PromotionSpecific: FC = ({className, cardType, incentiveFeatureName, config, appliedIncentive, showIfPromoNotActive, setPromoValue, setPromoEndDate, children}) => { \r\n debuglog('');\r\n //debuglog('Promotion Specific:');\r\n \r\n debuglog('promotionSpecific incentiveFeatureName', incentiveFeatureName);\r\n debuglog('promotionSpecific show if NOT active:', showIfPromoNotActive);\r\n debuglog('promotionSpecific className', className);\r\n\r\n const getPrnFromCardType = (cardType: string | undefined) => {\r\n if (cardType?.toLowerCase() === 'basic') {\r\n return ProductTypePrns.Basic;\r\n } else if (cardType?.toLowerCase() === 'plus') {\r\n return ProductTypePrns.Plus;\r\n } else {\r\n return ProductTypePrns.Launch;\r\n }\r\n }\r\n const getFeatureName = (featureName: string | undefined) => {\r\n if (!featureName) {\r\n return IncentiveFeatures.None;\r\n } \r\n debuglog(featureName +' featureName lookup', IncentiveFeatures[featureName as keyof typeof IncentiveFeatures]);\r\n return IncentiveFeatures[featureName as keyof typeof IncentiveFeatures];\r\n }\r\n debuglog('appliedIncentive - promotion specific:', appliedIncentive);\r\n \r\n let incentive: IncentiveResponse | null = getIncentive(getFeatureName(incentiveFeatureName), getPrnFromCardType(cardType), config);\r\n debuglog('promotionSpecific-incentive-from-config:', incentive); \r\n if (appliedIncentive && appliedIncentive.incentiveDetails) {\r\n let incentiveOverride = appliedIncentive?.incentiveDetails.find(activeIncentive => activeIncentive.incentiveTypeName === incentiveFeatureName \r\n || activeIncentive.incentiveTypeName === IncentiveFeatures.None\r\n || activeIncentive.incentiveTypeName === IncentiveFeatures.Any) ?? null;\r\n if (incentiveOverride) {\r\n debuglog('applying incentive override from config: ', incentiveOverride);\r\n incentive = appliedIncentive;\r\n }\r\n }\r\n \r\n \r\n debuglog('promo-specific-class', className);\r\n debuglog('incentiveFeatureName', incentiveFeatureName);\r\n debuglog(`promotion specific card type (${cardType}):`, getPrnFromCardType(cardType));\r\n debuglog('incentive', incentive);\r\n\r\n if (!incentive && showIfPromoNotActive && !appliedIncentive) {\r\n debuglog('displaying NO incentive block');\r\n debuglog('End Promo Specific NONE ACTIVE, Show Content');\r\n return(<> \r\n
\r\n
\r\n <>\r\n {/*children({promoEndDate: promoEndDate, promoValue: promoValue})*/}\r\n {children}\r\n \r\n
\r\n
\r\n ); \r\n } else if (incentive && showIfPromoNotActive) {\r\n debuglog('promo is active on no promo section');\r\n debuglog('End Promo Specific - Promo is Active, Hide Content');\r\n return(<>);\r\n }\r\n\r\n\r\n if (!incentiveFeatureName || !incentive) {\r\n debuglog('no promo');\r\n debuglog('End Promo Specific - No Promo Exists, Hide Content');\r\n return(<>);\r\n }\r\n\r\n debuglog('Incentive Any:', incentive);\r\n debuglog('incentiveFeatureName', incentiveFeatureName);\r\n debuglog('Any:', IncentiveFeatures.Any);\r\n if (incentive && incentiveFeatureName === IncentiveFeatures.Any) {\r\n debuglog('displaying any incentive block');\r\n debuglog('End Promo Specific - ANY PROMO, Show Content');\r\n return(<> \r\n
\r\n
\r\n <>\r\n {/*children({promoEndDate: promoEndDate, promoValue: promoValue})*/}\r\n {children}\r\n \r\n
\r\n
\r\n );\r\n }\r\n \r\n\r\n // TODO: Remove assumption that there is only one incentive detail for a promotion.\r\n const incentiveDetail = incentive.incentiveDetails.find(id => id.incentiveTypeName === incentiveFeatureName) ??\r\n incentive?.incentiveDetails[0];\r\n //debuglog('promotionSpecific Incentive Returned', incentiveDetail);\r\n const promoEndDate = incentive.endDateUtc;\r\n \r\n const promoValue = incentiveDetail.value;\r\n\r\n if (setPromoValue) {\r\n setPromoValue(promoValue);\r\n }\r\n\r\n if (setPromoEndDate) {\r\n setPromoEndDate(promoEndDate);\r\n }\r\n\r\n debuglog('Returning incentive content for incentive', incentiveDetail);\r\n debuglog('End Promo Specific Standard Promo, Show Content');\r\n return(<> \r\n
\r\n
\r\n <>\r\n {/*children({promoEndDate: promoEndDate, promoValue: promoValue})*/}\r\n {children}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PromotionSpecific;\r\n","import PromotionSpecific from './promotion-specific'\r\n\r\nexport default PromotionSpecific;\r\n","import React from 'react';\r\nimport { Card } from 'react-bootstrap';\r\nimport {\r\n creditcard,\r\n creditcardLaunch,\r\n creditcardPlusNoRibbon,\r\n} from '../../assets/img';\r\nimport './index.scss';\r\n\r\ntype BalanceInfoOptions = {\r\n balanceDue?: string,\r\n programFee?: string,\r\n securityDeposit?: string,\r\n}\r\n\r\ntype CardInfoOptions = {\r\n cardType?: string,\r\n creditLimit?: string,\r\n balanceDue?: string,\r\n programFee?: string,\r\n securityDeposit?: string,\r\n};\r\n\r\nexport const BalanceInfo= (props: BalanceInfoOptions) => {\r\n return (\r\n <>\r\n
\r\n
\r\n Balance due${props.balanceDue}\r\n
\r\n
\r\n
\r\n Program fee*${props.programFee}\r\n
\r\n
\r\n Refundable security deposit${props.securityDeposit}\r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport const CardInfo = (props: CardInfoOptions) => {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n ${props.creditLimit}\r\n
\r\n
\r\n Credit Limit\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n","const files = {\r\n electronicDisclosure: ['/files/electronic_disclosure_consent_statement.pdf'],\r\n currentBasicCardHolderAgreement: ['/files/ca-o-067.pdf'],\r\n currentBasicTermsConditions: ['/files/tc-sky1-067.pdf'], \r\n currentCardHolderAgreement: ['/files/ca-o-067.pdf'],\r\n currentTermsConditions: ['/files/tc-sky1-067.pdf'], \r\n privacyNotice: ['/files/Capital-Bank-Online-Privacy-Policy-rev-01-2018_final.pdf'],\r\n\r\n currentPlusCardHolderAgreement: ['/files/ca-p-012.pdf'],\r\n currentPlusTermsConditions: ['/files/tc-sky1p-012.pdf'],\r\n \r\n currentLaunchCardHolderAgreement: ['/files/ca-l-006.pdf'],\r\n currentLaunchTermsConditions: ['/files/tc-sky1l-006.pdf'],\r\n \r\n privacyPolicy: ['/files/Privacy-Notice-Disclosure-2024-October.pdf'],\r\n\r\n currentRewardsTermsConditions: ['/files/OpenSky_Rewards_TermsandConditions.pdf'],\r\n};\r\n// NOTE: delete currentCardHolderAgreement and currentTermsConditions after SecuredPlus feature flag is removed\r\n\r\nexport class Files {\r\n static GetFiles() {\r\n return files;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Files } from '../../utils/fileConstants';\r\n\r\n\r\ntype PromoDisclosureOptions = {\r\n listIndexSymbol?: string; \r\n};\r\n\r\n\r\nexport const BasicEligibleDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}This offer is eligible to applicants who apply, are approved and fully fund their security deposit between February 22, 2024 and April 15, 2024. OpenSky will contribute a one-time promotional security deposit of $50 following the customer's application, approval and funding on each OpenSky Secured Visa Credit Card obtained. If approved, customer must fund the entire amount of the security deposit based on the customer's approved credit line, less $50 in order to be eligible for the promotional security deposit offer. Please see Terms and Conditions for additional information.\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const PlusEligibleDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}To be eligible for this offer, applicants must apply, be approved, and fully fund their security deposit between February 22nd, 2024 & March 31st, 2024. The minimum credit line and security deposit for the OpenSky Plus Secured Visa Credit Card is reduced to $200 from $300 for a limited time only.\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const PreApprovedDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}Pre-Approved means that you have met the initial criteria for this credit card; however, your application may be rejected if any of the following apply: You are a non-United States resident; the social security number you provide is invalid or we are unable to verify your identity under federal law; you are under 18 years old; your monthly expenses are greater than your monthly income; you lack sufficient income or assets to pay the monthly payment required for this card; you have two or more open credit card accounts with Capital Bank; or your account history on any current or previous relationship with Capital Bank is not in good standing.\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const AlternateEligibleDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}This offer is eligible to applicants who apply, are approved and fully fund their security deposit between February 22, 2024 and April 15, 2024. OpenSky will contribute a one-time promotional security deposit of $50 following the customer's application, approval and funding on each OpenSky Secured Visa Credit Card obtained. If approved, customer must fund the entire amount of the security deposit based on the customer's approved credit line, less $50 in order to be eligible for the promotional security deposit offer. Please see Terms and Conditions for additional information.\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const TestimonialDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}Customer testimonials are solicited by OpenSky - a division of Capital Bank N.A.\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const IncreaseLimitDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}Getting considered for a limit increase and/or the OpenSky Gold Unsecured Card is subject to approval\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const RewardsDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}OpenSky Rewards Terms and Conditions.\r\n
  • \r\n \r\n );\r\n}\r\n\r\nexport const LaunchAnnualFeeDisclosure: React.FC = ({listIndexSymbol}) => {\r\n return (\r\n <>\r\n
  • \r\n {listIndexSymbol ?? '*'}The OpenSky Launch Secured Visa Credit Card requires a monthly fee. The monthly fee is billed at a rate of $2 per month, annualized at $24 for the first 12 months. Beginning year two and for as long as the account remains open, the monthly fee is billed at a rate of $3 per month, annualized at $36.\r\n
  • \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getIncentiveDetail, getPrn, isIncentiveFeatureActive } from \"../../utils/incentives\";\r\nimport { IncentiveFeatures } from \"../../types/enums\";\r\nimport { configurationResponseState } from \"../../store/atoms\";\r\nimport { useRecoilValue } from \"recoil\";\r\nimport { Card } from \"react-bootstrap\";\r\nimport { creditcardLaunch, iconArrowWhite } from \"../../assets/img\";\r\nimport { CardTypes } from \"../../utils/constants\";\r\nimport './card-offer.scss';\r\n\r\ninterface CardOfferProps {\r\n minimumDeposit: number;\r\n apr: number;\r\n tclink: string;\r\n annualFee: number;\r\n cardType: CardTypes;\r\n onAcceptOffer: () => void;\r\n onClose: () => void;\r\n}\r\n\r\nconst CardOffer = (props: CardOfferProps) => {\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n\r\n const getMinimumDepositBasedOnIncentives = () => {\r\n if(isIncentiveFeatureActive(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase()), configurationResponse)){\r\n return getIncentiveDetail(IncentiveFeatures.DepositReductionAmount,\r\n getPrn(props.cardType.toLowerCase()),\r\n configurationResponse)?.value;\r\n }\r\n else if(isIncentiveFeatureActive(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase()), configurationResponse)){\r\n return getIncentiveDetail(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase()), configurationResponse)?.value\r\n }\r\n else {\r\n return props.minimumDeposit\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \"launch\r\n
    \r\n

    OpenSky
    Launch Visa®

    \r\n

    Secured Visa® Credit Card

    \r\n
    \r\n
    \r\n
    \r\n

    Fund ${getMinimumDepositBasedOnIncentives()} to get started on your
    credit building journey. \r\n First year
    annual fee of ${props.annualFee} billed monthly at
    $2 a month.*

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {isIncentiveFeatureActive(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase()), configurationResponse) && ( \r\n
    \r\n Minimum security deposit\r\n \r\n ${(props.minimumDeposit) - \r\n (Number(\r\n getIncentiveDetail(IncentiveFeatures.DepositReductionAmount, getPrn(props.cardType.toLowerCase())\r\n , configurationResponse)?.value ?? 0) ?? 0)}\r\n \r\n
    \r\n )}\r\n {isIncentiveFeatureActive(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n
    \r\n Minimum security deposit\r\n \r\n ${props.minimumDeposit}\r\n \r\n ${(getIncentiveDetail(IncentiveFeatures.MinimumDepositAmount, getPrn(props.cardType.toLowerCase()),\r\n configurationResponse)?.value ?? 'N/A')}\r\n \r\n \r\n
    \r\n )}\r\n {!isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(props.cardType.toLowerCase()), configurationResponse) && (\r\n <>\r\n
    \r\n Minimum security deposit\r\n ${props.minimumDeposit}\r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n Monthly fee*\r\n $2\r\n
    \r\n
    \r\n
    \r\n No credit check to apply\r\n
    \r\n
    \r\n
    \r\n

    {props.apr}% Annual percentage rate

    \r\n +See terms and conditions\r\n
    \r\n \r\n );\r\n}\r\n \r\nexport default CardOffer;","import AffiliateLogo from './affiliate-logo';\r\n\r\nexport default AffiliateLogo;","import React from \"react\";\r\nimport { creditKarmaLogo, experianLogo, visaLogoBlack } from \"../../assets/img\";\r\nimport './affiliate-logo.scss';\r\n\r\ntype AffiliateLogoOptions = {\r\n source?: string\r\n}\r\n\r\nconst AffiliateLogo: React.FC = ({ source }) => {\r\n let imageLogo;\r\n\r\n switch(source?.toLowerCase().replace(/ /g, '')){\r\n case 'creditkarma': \r\n imageLogo = creditKarmaLogo;\r\n break;\r\n case 'experian':\r\n imageLogo = experianLogo;\r\n break;\r\n default:\r\n imageLogo = visaLogoBlack;\r\n }\r\n\r\n return (\r\n <>\r\n {imageLogo\r\n )\r\n}\r\n\r\nexport default AffiliateLogo;","import React, { useEffect } from 'react';\r\nimport classnames from 'classnames';\r\nimport {\r\n useCombobox,\r\n UseComboboxState,\r\n UseComboboxStateChange,\r\n UseComboboxStateChangeOptions,\r\n} from 'downshift';\r\nimport { iconXCircleFill } from '../../assets/img';\r\nimport { Item } from './types';\r\nimport './auto-complete.scss';\r\n\r\ntype AutoCompleteProps = {\r\n label?: string;\r\n floatingLabel?: string;\r\n placeholder?: string;\r\n items?: T[];\r\n enableClear?: boolean;\r\n showMenuToggleButton?: boolean;\r\n openMenuOnKeypress?: boolean;\r\n initialInputValue?: string;\r\n // value to display when selected:\r\n itemToString?: (item: T | null) => string;\r\n onInputValueChange?: (changes: UseComboboxStateChange) => void;\r\n onSelectChange?: (item?: T | null) => void;\r\n getToggleMenuButton?: (isOpen: boolean) => JSX.Element;\r\n DropdownFooter?: () => JSX.Element;\r\n}\r\n\r\nconst AutoComplete = ({\r\n label,\r\n floatingLabel,\r\n placeholder = \" \",\r\n items=[],\r\n enableClear = true,\r\n showMenuToggleButton = false,\r\n openMenuOnKeypress = false,\r\n initialInputValue,\r\n itemToString = (item) => item?.label || item?.value || \"\",\r\n onInputValueChange,\r\n onSelectChange,\r\n DropdownFooter\r\n}: AutoCompleteProps) => {\r\n // const [dropdownItems, setDropdownItems] = useState(items);\r\n\r\n const stateReducer: ((\r\n state: UseComboboxState,\r\n actionAndChanges: UseComboboxStateChangeOptions\r\n ) => Partial>) = (state, actionAndChanges) => {\r\n const { type, changes } = actionAndChanges;\r\n\r\n switch (type) {\r\n case useCombobox.stateChangeTypes.ItemClick:\r\n if (changes.selectedItem?.shouldNotChangeInputValue) {\r\n changes.selectedItem?.onSelect?.();\r\n return {\r\n ...state,\r\n isOpen: false\r\n };\r\n }\r\n return changes;\r\n default:\r\n return changes;\r\n }\r\n }\r\n\r\n const handleSelectedItemChange = (changes: UseComboboxStateChange) => {\r\n const { selectedItem } = changes\r\n if (selectedItem?.onSelect) {\r\n selectedItem?.onSelect()\r\n } else {\r\n onSelectChange?.(selectedItem);\r\n }\r\n }\r\n\r\n const {\r\n isOpen,\r\n inputValue,\r\n setInputValue,\r\n setHighlightedIndex,\r\n getLabelProps,\r\n getComboboxProps,\r\n getInputProps,\r\n getToggleButtonProps,\r\n getMenuProps,\r\n getItemProps,\r\n openMenu,\r\n // closeMenu,\r\n // selectedItem,\r\n reset,\r\n highlightedIndex\r\n } = useCombobox({\r\n items,\r\n itemToString,\r\n stateReducer,\r\n onInputValueChange: (changes: UseComboboxStateChange) => {\r\n // TODO: add filter? depending on results from api call\r\n onInputValueChange && onInputValueChange(changes);\r\n },\r\n // onStateChange,\r\n onSelectedItemChange: handleSelectedItemChange\r\n });\r\n\r\n const clearSearch = () => {\r\n setInputValue('');\r\n setHighlightedIndex(-1);\r\n reset();\r\n }\r\n\r\n // const toggleMenuButtonIcon = (isOpen) => {\r\n //TODO: if we need toggle menu button... need more work here\r\n // }\r\n\r\n useEffect(() => {\r\n setInputValue(initialInputValue || \"\")\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [initialInputValue])\r\n return (\r\n
    \r\n \r\n {} : openMenu }\r\n onKeyDown={ (openMenuOnKeypress) ? openMenu : () => {} }\r\n // onBlur={closeMenu}\r\n // onchange={(e) => setInputValue(e.target.value)}\r\n />\r\n {label?.length &&\r\n \r\n {/* {label} */}\r\n \r\n }\r\n {enableClear && !!inputValue?.length &&\r\n \r\n }\r\n {showMenuToggleButton &&\r\n \r\n {isOpen ? <>↑ : <>↓}\r\n \r\n }\r\n
    \r\n {isOpen &&\r\n
    \r\n
      \r\n {items.map((item, index) => (\r\n \r\n {item.display}\r\n \r\n ))}\r\n
    \r\n {DropdownFooter &&\r\n
    { console.log(\"clicked\") }} className='auto-complete-dropdown-footer-container'>\r\n \r\n
    \r\n }\r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nexport default AutoComplete;\r\n","export const usStates = [\r\n { name: 'ALABAMA', abbreviation: 'AL'},\r\n { name: 'ALASKA', abbreviation: 'AK'},\r\n { name: 'AMERICAN SAMOA', abbreviation: 'AS'},\r\n { name: 'ARIZONA', abbreviation: 'AZ'},\r\n { name: 'ARKANSAS', abbreviation: 'AR'},\r\n { name: 'CALIFORNIA', abbreviation: 'CA'},\r\n { name: 'COLORADO', abbreviation: 'CO'},\r\n { name: 'CONNECTICUT', abbreviation: 'CT'},\r\n { name: 'DELAWARE', abbreviation: 'DE'},\r\n { name: 'DISTRICT OF COLUMBIA', abbreviation: 'DC'},\r\n { name: 'FEDERATED STATES OF MICRONESIA', abbreviation: 'FM'},\r\n { name: 'FLORIDA', abbreviation: 'FL'},\r\n { name: 'GEORGIA', abbreviation: 'GA'},\r\n { name: 'GUAM', abbreviation: 'GU'},\r\n { name: 'HAWAII', abbreviation: 'HI'},\r\n { name: 'IDAHO', abbreviation: 'ID'},\r\n { name: 'ILLINOIS', abbreviation: 'IL'},\r\n { name: 'INDIANA', abbreviation: 'IN'},\r\n { name: 'IOWA', abbreviation: 'IA'},\r\n { name: 'KANSAS', abbreviation: 'KS'},\r\n { name: 'KENTUCKY', abbreviation: 'KY'},\r\n { name: 'LOUISIANA', abbreviation: 'LA'},\r\n { name: 'MAINE', abbreviation: 'ME'},\r\n { name: 'MARSHALL ISLANDS', abbreviation: 'MH'},\r\n { name: 'MARYLAND', abbreviation: 'MD'},\r\n { name: 'MASSACHUSETTS', abbreviation: 'MA'},\r\n { name: 'MICHIGAN', abbreviation: 'MI'},\r\n { name: 'MINNESOTA', abbreviation: 'MN'},\r\n { name: 'MISSISSIPPI', abbreviation: 'MS'},\r\n { name: 'MISSOURI', abbreviation: 'MO'},\r\n { name: 'MONTANA', abbreviation: 'MT'},\r\n { name: 'NEBRASKA', abbreviation: 'NE'},\r\n { name: 'NEVADA', abbreviation: 'NV'},\r\n { name: 'NEW HAMPSHIRE', abbreviation: 'NH'},\r\n { name: 'NEW JERSEY', abbreviation: 'NJ'},\r\n { name: 'NEW MEXICO', abbreviation: 'NM'},\r\n { name: 'NEW YORK', abbreviation: 'NY'},\r\n { name: 'NORTH CAROLINA', abbreviation: 'NC'},\r\n { name: 'NORTH DAKOTA', abbreviation: 'ND'},\r\n { name: 'NORTHERN MARIANA ISLANDS', abbreviation: 'MP'},\r\n { name: 'OHIO', abbreviation: 'OH'},\r\n { name: 'OKLAHOMA', abbreviation: 'OK'},\r\n { name: 'OREGON', abbreviation: 'OR'},\r\n { name: 'PALAU', abbreviation: 'PW'},\r\n { name: 'PENNSYLVANIA', abbreviation: 'PA'},\r\n { name: 'PUERTO RICO', abbreviation: 'PR'},\r\n { name: 'RHODE ISLAND', abbreviation: 'RI'},\r\n { name: 'SOUTH CAROLINA', abbreviation: 'SC'},\r\n { name: 'SOUTH DAKOTA', abbreviation: 'SD'},\r\n { name: 'TENNESSEE', abbreviation: 'TN'},\r\n { name: 'TEXAS', abbreviation: 'TX'},\r\n { name: 'UTAH', abbreviation: 'UT'},\r\n { name: 'VERMONT', abbreviation: 'VT'},\r\n { name: 'VIRGIN ISLANDS', abbreviation: 'VI'},\r\n { name: 'VIRGINIA', abbreviation: 'VA'},\r\n { name: 'WASHINGTON', abbreviation: 'WA'},\r\n { name: 'WEST VIRGINIA', abbreviation: 'WV'},\r\n { name: 'WISCONSIN', abbreviation: 'WI'},\r\n { name: 'WYOMING', abbreviation: 'WY' }\r\n]","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { UseComboboxStateChange } from 'downshift';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport {\r\n FieldErrorsImpl,\r\n Path,\r\n UseFormRegister,\r\n UseFormSetValue,\r\n UseFormTrigger,\r\n} from 'react-hook-form';\r\nimport { useAddressLookup, useDebounce } from '../../hooks';\r\nimport {\r\n FundingSourceModel,\r\n IdentityVerificationModel,\r\n MailingAddressModel,\r\n} from '../../types';\r\nimport AutoComplete from '../auto-complete';\r\nimport { Item } from '../auto-complete/types';\r\nimport SelectDropdown from '../select-dropdown';\r\nimport TextInput from '../text-input';\r\nimport './address-form.scss';\r\nimport { usStates } from './constants';\r\nimport { Address } from '../../types';\r\nimport { invalidAddressCharacters } from '../../utils/validations';\r\n\r\ntype AddressItem = Address & Item;\r\n\r\ntype AddressLabels = {\r\n addressLookupLabel?: string;\r\n addressLookupFloatingLabel?: string;\r\n addressLine1Label?: string;\r\n addressLine2Label?: string;\r\n cityLabel?: string;\r\n stateLabel?: string;\r\n zipCodeLabel?: string;\r\n};\r\n\r\ntype AddressFormProps = {\r\n name?: Path<\r\n IdentityVerificationModel | MailingAddressModel | FundingSourceModel\r\n >;\r\n register?: UseFormRegister;\r\n trigger?: UseFormTrigger;\r\n labels?: AddressLabels;\r\n errors?: FieldErrorsImpl;\r\n initialAddress?: Address;\r\n onChange?: () => void;\r\n setValue?: UseFormSetValue;\r\n validPattern?: RegExp;\r\n};\r\n\r\nconst MANUAL_ENTRY_OPTION = 'MANUAL_ENTRY_OPTION';\r\n\r\nconst AddressForm: FC = ({\r\n labels,\r\n name,\r\n register,\r\n trigger,\r\n errors,\r\n initialAddress,\r\n onChange,\r\n setValue,\r\n validPattern,\r\n}) => {\r\n const [isManualEntryForm, setIsManualEntryForm] = useState(false);\r\n const [selectedAddress, setSelectedAddress] =\r\n useState();\r\n const [address, setAddress] = useState
    ({});\r\n\r\n const [fullAddress, setFullAddress] = useState('');\r\n const debouncedFullAddress = useDebounce(fullAddress, 500);\r\n\r\n const { data } = useAddressLookup(debouncedFullAddress, validPattern);\r\n\r\n const handleManualEntrySelect = () => {\r\n setFullAddress('');\r\n setSelectedAddress(manualEntrySelectItem);\r\n };\r\n\r\n const handleChange = () => {\r\n onChange && onChange();\r\n };\r\n\r\n // const { onChange: registerOnChange, ...restRegisterProps } =\r\n // (register && register(name || '')) || {};\r\n\r\n const manualEntrySelectItem: Item = {\r\n value: MANUAL_ENTRY_OPTION,\r\n display: (\r\n I don't see my address\r\n ),\r\n onSelect: handleManualEntrySelect,\r\n shouldNotChangeInputValue: true,\r\n };\r\n\r\n const items: Item[] = [\r\n ...(data?.suggestions || []).map((value) => {\r\n const addressString = `${value.street_line}, ${value.city}, ${value.state} ${value.zipcode}`;\r\n return {\r\n value: addressString,\r\n display: {addressString},\r\n };\r\n }),\r\n manualEntrySelectItem,\r\n ];\r\n\r\n /**\r\n *\r\n * @param value\r\n * @returns Address object with items parsed out\r\n */\r\n const parseFullAddress = (value: string) => {\r\n // Since we are parsing a set format we can use this\r\n // If we want to parse what the user types into the search, we will have to do some extra work:\r\n // TODO: depending on values we get back from google api or any other address lookup api change this parse function\r\n const addressSplit = value.split(',');\r\n if (addressSplit.length === 4) {\r\n const stateZipSplit = addressSplit[3].trim().split(' ');\r\n return {\r\n addressLine1: addressSplit[0].trim(),\r\n addressLine2: addressSplit[1].trim(),\r\n city: addressSplit[2].trim(),\r\n state: stateZipSplit[0],\r\n zipCode: stateZipSplit[1],\r\n };\r\n } else if (addressSplit.length === 3) {\r\n const stateZipSplit = addressSplit[2].trim().split(' ');\r\n return {\r\n addressLine1: addressSplit[0].trim(),\r\n addressLine2: undefined,\r\n city: addressSplit[1].trim(),\r\n state: stateZipSplit[0],\r\n zipCode: stateZipSplit[1],\r\n };\r\n } else {\r\n return {\r\n addressLine1: value,\r\n };\r\n }\r\n };\r\n\r\n const handleFullAddressChange = (\r\n changes: UseComboboxStateChange\r\n ) => {\r\n setFullAddress(changes?.inputValue || '');\r\n };\r\n\r\n const handleSelect = (item?: AddressItem | null) => {\r\n setSelectedAddress(item); \r\n };\r\n\r\n const handleManualEntryAddressChange = (newAddress: Address | null) => {\r\n setAddress({\r\n ...address,\r\n ...newAddress,\r\n });\r\n handleChange();\r\n };\r\n\r\n const handleSwitchToAddressLookup = () => {\r\n // TODO: if we want to change full based on manual entry form we need more work\r\n setFullAddress('');\r\n setSelectedAddress(undefined);\r\n setAddress({});\r\n };\r\n // Because of a race condition between address changes and rerendering of the autocomplete component\r\n // we need to change forms after the selectedAddress changes:\r\n useEffect(() => {\r\n if (selectedAddress) {\r\n setIsManualEntryForm(true);\r\n } else {\r\n if (name && setValue) {\r\n setValue(`${name}.addressLine1`, '');\r\n setValue(`${name}.addressLine2`, '');\r\n setValue(`${name}.city`, '');\r\n setValue(`${name}.state`, '');\r\n setValue(`${name}.zipCode`, '');\r\n }\r\n setIsManualEntryForm(false);\r\n }\r\n }, [selectedAddress]);\r\n\r\n // And then after switching forms we set address values:\r\n useEffect(() => {\r\n if (isManualEntryForm) {\r\n if (\r\n selectedAddress &&\r\n selectedAddress?.value !== MANUAL_ENTRY_OPTION\r\n ) {\r\n const parsedAddress = parseFullAddress(selectedAddress.value);\r\n setAddress(parsedAddress);\r\n name && setValue && setValue(name, parsedAddress);\r\n } else {\r\n setAddress({});\r\n name && setValue && setValue(name, {});\r\n }\r\n } else {\r\n setAddress({});\r\n }\r\n\r\n // switching between form/autocomplete does not trigger react-hook-form updates, so we need to force it\r\n trigger && trigger();\r\n handleChange();\r\n // we dont want this useEffect to run every time selectedAddress changes and we want the value\r\n // of selectedAddress at the time that we switch to the manual entry form\r\n // so we can disable eslint:\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isManualEntryForm]);\r\n\r\n useEffect(() => {\r\n if (initialAddress) {\r\n // @ts-ignore\r\n setSelectedAddress({\r\n value: `${initialAddress.addressLine1}, \r\n ${initialAddress.addressLine2 ? `${initialAddress.addressLine2},` : ''} \r\n ${initialAddress.city}, ${initialAddress.state} ${\r\n initialAddress.zipCode\r\n }`,\r\n });\r\n }\r\n }, [initialAddress]);\r\n\r\n return (\r\n
    \r\n {isManualEntryForm ? (\r\n <>\r\n \r\n handleManualEntryAddressChange({\r\n addressLine1: event.target.value.replace(invalidAddressCharacters, \"\"),\r\n })\r\n }\r\n register={register}\r\n errors={errors}\r\n showErrorsOnLoad={true}\r\n value={address?.addressLine1 || ''}\r\n maxLength=\"50\"\r\n />\r\n \r\n handleManualEntryAddressChange({\r\n addressLine2: event.target.value.replace(invalidAddressCharacters, \"\"),\r\n })\r\n }\r\n register={register}\r\n errors={errors}\r\n showErrorsOnLoad={true}\r\n value={address?.addressLine2 || ''}\r\n maxLength=\"10\"\r\n />\r\n \r\n handleManualEntryAddressChange({\r\n city: event.target.value.replace(invalidAddressCharacters, \"\"),\r\n })\r\n }\r\n register={register}\r\n errors={errors}\r\n showErrorsOnLoad={true}\r\n value={address?.city || ''}\r\n maxLength=\"18\"\r\n />\r\n ({\r\n value: state.abbreviation,\r\n }))}\r\n value={address?.state || ''}\r\n register={register}\r\n />\r\n \r\n handleManualEntryAddressChange({\r\n zipCode: event.target.value.replace(/[^0-9-]/gi, \"\"),\r\n })\r\n }\r\n register={register}\r\n errors={errors}\r\n showErrorsOnLoad={true}\r\n value={address?.zipCode || ''}\r\n maxLength=\"10\"\r\n />\r\n
    \r\n \r\n Not your address? Try again\r\n \r\n
    \r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default AddressForm;\r\n","import { useEffect, useState } from 'react';\r\n\r\nexport const useDebounce = (value: any, delay: number) => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n useEffect(\r\n () => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n \r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n },\r\n [value, delay]\r\n );\r\n return debouncedValue;\r\n }\r\n","import classnames from 'classnames';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { FieldErrorsImpl, UseFormRegister } from 'react-hook-form';\r\nimport { iconFile, iconUploadImage, iconX } from '../../assets/img';\r\nimport './photo-document-upload.scss';\r\n\r\ntype PhotoDocumentUploadProps = {\r\n name: string;\r\n register?: UseFormRegister;\r\n initialFile?: File;\r\n errors?: FieldErrorsImpl;\r\n onClear: () => void;\r\n};\r\n\r\nconst ACCEPTED_FILE_TYPES = [\r\n 'image/jpeg',\r\n 'image/gif',\r\n 'image/png',\r\n 'application/pdf',\r\n 'application/doc',\r\n 'application/docx',\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n];\r\n\r\nconst PhotoDocumentUpload: FC = ({\r\n name,\r\n register,\r\n initialFile,\r\n errors,\r\n onClear,\r\n}) => {\r\n const [file, setFile] = useState(initialFile);\r\n const [objectUrl, setObjectUrl] = useState();\r\n let fileInputRef: HTMLInputElement | null;\r\n\r\n const handleFileChange = (event: React.SyntheticEvent) => {\r\n const eventTarget = event.target as HTMLInputElement;\r\n const file = eventTarget?.files?.[0];\r\n\r\n if (file?.size && file?.size > 10485760) {\r\n alert('File is too big!');\r\n if (eventTarget) {\r\n eventTarget.value = '';\r\n setFile(undefined);\r\n }\r\n } else if ((file?.type || file?.type === '') && !ACCEPTED_FILE_TYPES.includes(file?.type)) {\r\n alert('Wrong file type');\r\n setFile(undefined);\r\n } else if (file) {\r\n setFile(file);\r\n // setObjectUrl(URL.createObjectURL(file));\r\n } else {\r\n setFile(undefined);\r\n }\r\n\r\n onRegisterChange && onRegisterChange(event);\r\n };\r\n\r\n const handleAddPhotoClick = () => {\r\n console.log('handleAddPhotoClick');\r\n fileInputRef && fileInputRef.click();\r\n };\r\n\r\n const handleClearFileUpload = () => {\r\n if (fileInputRef) {\r\n fileInputRef.value = '';\r\n\r\n const event = new Event('input');\r\n fileInputRef?.dispatchEvent(event);\r\n }\r\n setFile(undefined);\r\n onClear && onClear();\r\n };\r\n\r\n useEffect(() => {\r\n if (file) {\r\n const objectUrl = URL.createObjectURL(file);\r\n setObjectUrl(objectUrl);\r\n\r\n return () => {\r\n URL.revokeObjectURL(objectUrl);\r\n };\r\n } else {\r\n setObjectUrl(undefined);\r\n }\r\n }, [file]);\r\n\r\n useEffect(() => {\r\n setFile(initialFile);\r\n }, [initialFile]);\r\n\r\n const {\r\n onChange: onRegisterChange,\r\n ref: registerRef,\r\n ...restRegisterProps\r\n } = (register && register(name)) || {};\r\n\r\n const refCallback = (node: HTMLInputElement) => {\r\n registerRef && registerRef(node);\r\n fileInputRef = node;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {file && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \"Upload\r\n Add photo/choose file\r\n \r\n \r\n \r\n
    \r\n {!file && (\r\n <>\r\n The file must be either a .jpg, .png, .tif, .pdf, .doc or .docx. Files\r\n must be no larger than 10MB in size.\r\n \r\n )}\r\n\r\n {/* {!!errors && !!errors[name] && (\r\n \r\n \r\n \r\n )} */}\r\n
    \r\n );\r\n};\r\n\r\ntype UploadPreviewProps = {\r\n fileType: string;\r\n objectUrl?: string;\r\n fileName: string;\r\n};\r\n\r\nconst UploadPreview: FC = ({\r\n fileType,\r\n objectUrl,\r\n fileName,\r\n}) => {\r\n switch (fileType) {\r\n case 'image/jpeg':\r\n case 'image/gif':\r\n case 'image/png':\r\n return (\r\n <>\r\n \r\n {fileName}\r\n \r\n );\r\n // case 'application/pdf':\r\n // return (\r\n // \r\n // \r\n // \r\n // );\r\n default:\r\n return (\r\n <>\r\n \r\n {fileName}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default PhotoDocumentUpload;\r\n","import React, { FC } from 'react';\r\nimport './loading.scss';\r\n\r\ntype LoadingProps = {\r\n isLoading: boolean;\r\n headerText: string;\r\n bodyText: string;\r\n};\r\n\r\nconst Loading: FC = ({\r\n isLoading,\r\n headerText,\r\n bodyText,\r\n children,\r\n}) => {\r\n return (\r\n <>\r\n {isLoading ? (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {headerText}

    \r\n

    {bodyText}

    \r\n
    \r\n ) : (\r\n children\r\n )}\r\n \r\n );\r\n};\r\nexport default Loading;\r\n","export const BlockCodeUtils = {\r\n findIndex: (\r\n index: number,\r\n length: number,\r\n maxLength: number,\r\n maxInputs: number\r\n ) => {\r\n if (length === maxLength && index < maxInputs) {\r\n ++index\r\n } else if (length === 0 && index > 0) {\r\n --index\r\n }\r\n\r\n return index\r\n },\r\n\r\n createId: (prefix = 'block-code') =>\r\n `${prefix}-${Math.random().toString(36).substring(2, 9)}`,\r\n\r\n createChunk: (value: string, length: number) =>\r\n value.match(new RegExp('.{1,' + length + '}', 'g'))\r\n}\r\n","import {\r\n ClipboardEvent,\r\n FormEvent,\r\n KeyboardEvent,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'react'\r\nimport { EMPTY_VALUE, KEYLIST } from '../../utils/constants';\r\nimport {\r\n CompleteValue,\r\n OnValidateBeforeChangeData,\r\n UseBlockCodeProps,\r\n InputFormEvent,\r\n InputProps,\r\n OnChange,\r\n} from './types';\r\nimport { BlockCodeUtils as Utils } from './utils';\r\n\r\nconst DEFAULT_INPUT_PROPS: InputProps = {\r\n maxLength: 1,\r\n className: 'input'\r\n}\r\n\r\nexport const useBlockCode = (props: UseBlockCodeProps = {}) => {\r\n const {\r\n onValuesChange,\r\n onValidateBeforeChange,\r\n onInputChange,\r\n onComplete,\r\n maxInputs = 6,\r\n inputProps,\r\n autoFocus = true\r\n } = props\r\n\r\n const InputProps = Object.assign({}, DEFAULT_INPUT_PROPS, inputProps)\r\n\r\n /**\r\n * Declare default values\r\n */\r\n const ids = useMemo(\r\n () => [...Array(maxInputs)].map(Utils.createId),\r\n [maxInputs]\r\n )\r\n const initState = useMemo(\r\n () => Array(maxInputs).fill(EMPTY_VALUE),\r\n [maxInputs]\r\n )\r\n const initActiveIndex = useMemo(() => (autoFocus ? 0 : -1), [autoFocus])\r\n\r\n /**\r\n * Declare states\r\n */\r\n const [activeIndex, setActiveIndex] = useState(initActiveIndex)\r\n const [values, setValues] = useState(initState)\r\n\r\n const refs = useRef([])\r\n\r\n /**\r\n * Reset values to initState which is empty\r\n */\r\n const onResetValues = useCallback(() => {\r\n setValues(initState)\r\n }, [initState])\r\n\r\n /**\r\n * Reset the state. It will reset:\r\n *\r\n * @values to initState\r\n * @index to 0\r\n */\r\n const onReset = useCallback(() => {\r\n onResetValues()\r\n setActiveIndex(0)\r\n }, [onResetValues])\r\n\r\n /**\r\n * Check if data is enough then call `onComplete`\r\n */\r\n const onEnoughData = useCallback(() => {\r\n const { maxLength } = InputProps\r\n\r\n if (maxLength) {\r\n const maxValueLength = maxInputs * maxLength\r\n const raw = values.filter(data => data)\r\n const value = raw.join(EMPTY_VALUE)\r\n const isEnoughData = value.length === maxValueLength\r\n\r\n if (isEnoughData && onComplete) {\r\n const completeData: CompleteValue = {\r\n value,\r\n raw,\r\n onReset\r\n }\r\n\r\n onComplete(completeData)\r\n }\r\n }\r\n }, [InputProps, maxInputs, onComplete, onReset, values])\r\n\r\n /**\r\n * Check the data if valid\r\n *\r\n * @param data Value which wants to be added into the state\r\n * @param onCallback Callback will be called after passing conditions\r\n */\r\n const onCheckValue = async (\r\n data: OnValidateBeforeChangeData,\r\n onCallback: VoidFunction\r\n ) => {\r\n if (onValidateBeforeChange) {\r\n const isValid = await onValidateBeforeChange(data)\r\n\r\n isValid && onCallback()\r\n } else {\r\n onCallback()\r\n }\r\n }\r\n\r\n /**\r\n * Add a new data to the state, however it must fits the condition from `onValidateBeforeChange`\r\n *\r\n * @param data Data which wants to be added into the state\r\n * @param forIndex The index we want to set value for\r\n * @param onCallback Callback will be called after adding value\r\n */\r\n const onAddValue = (\r\n data: OnValidateBeforeChangeData,\r\n forIndex: number,\r\n onCallback?: VoidFunction\r\n ) => {\r\n onCheckValue(data, () => {\r\n onSetValueAtIndex(data.value, forIndex)\r\n onCallback && onCallback()\r\n })\r\n }\r\n\r\n /**\r\n * Trigger `onInputChange` to the user\r\n *\r\n * @param event The event which makes values got changed\r\n */\r\n const onAfterAddingValue = (event: InputFormEvent) => {\r\n onInputChange && onInputChange(event)\r\n }\r\n\r\n /**\r\n * Add ref to the refs array so we can control later\r\n *\r\n * @param index Index of the input\r\n * @param ref Ref of the input\r\n */\r\n const onCreateRef = (index: number, ref: HTMLInputElement) => {\r\n refs.current[index] = ref\r\n }\r\n\r\n /**\r\n * Update state values\r\n * @param value A new value of the input\r\n * @param forIndex The index we want to set value for\r\n */\r\n const onSetValueAtIndex = (value: string, forIndex: number) => {\r\n setValues(prevState => {\r\n const newState = [...prevState]\r\n newState[forIndex] = value\r\n return newState\r\n })\r\n }\r\n\r\n /**\r\n * Check if the index is valid, not smaller than 0 and greater than `maxInputs`\r\n *\r\n * If fits the condition then call `setActiveIndex`\r\n */\r\n const onSetActiveIndex = useCallback(\r\n (index: number) => {\r\n const nextActiveIndex = Math.max(Math.min(maxInputs - 1, index), 0)\r\n setActiveIndex(nextActiveIndex)\r\n },\r\n [maxInputs]\r\n )\r\n\r\n /**\r\n * Focus to the next input\r\n */\r\n const onNextFocusAfterChangingValue = useCallback(\r\n (value: string) => {\r\n const { maxLength } = InputProps\r\n const { length } = value\r\n\r\n if (maxLength) {\r\n const index = Utils.findIndex(activeIndex, length, maxLength, maxInputs)\r\n onSetActiveIndex(index)\r\n }\r\n },\r\n [InputProps, activeIndex, maxInputs, onSetActiveIndex]\r\n )\r\n\r\n /**\r\n * Detect the user change values\r\n * @param event FormEvent\r\n */\r\n const onInput: OnChange> = event => {\r\n const { value } = event.currentTarget\r\n\r\n onAddValue({ value, event }, activeIndex, () => {\r\n onNextFocusAfterChangingValue(value)\r\n onAfterAddingValue(event)\r\n })\r\n }\r\n\r\n /**\r\n * Detect the user paste values into the input\r\n * @param event ClipboardEvent\r\n */\r\n const onPaste: OnChange> = async event => {\r\n event.preventDefault()\r\n const { maxLength } = InputProps\r\n\r\n if (maxLength) {\r\n const originaltext = await navigator.clipboard.readText()\r\n const trim = originaltext.trim()\r\n const chunk = Utils.createChunk(trim, maxLength)\r\n\r\n if (chunk) {\r\n let index = activeIndex\r\n\r\n for (let i = activeIndex; i < maxInputs; i++) {\r\n const value = chunk.shift()\r\n\r\n if (value) {\r\n onAddValue({ value, event }, i)\r\n index = i\r\n }\r\n }\r\n\r\n onSetActiveIndex(index)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Detect the user press a key\r\n * @param event KeyboardEvent\r\n */\r\n const onKeyDown: OnChange> = event => {\r\n let index = activeIndex\r\n const { key } = event\r\n const isInKeyList = Object.values(KEYLIST).includes(key)\r\n const isDelete = [KEYLIST.BACK_SPACE, KEYLIST.DELETE].includes(key)\r\n\r\n if (isInKeyList) event.preventDefault()\r\n\r\n if (isDelete) {\r\n onSetValueAtIndex(EMPTY_VALUE, activeIndex)\r\n onAfterAddingValue(event)\r\n }\r\n\r\n switch (key) {\r\n case KEYLIST.BACK_SPACE:\r\n case KEYLIST.DELETE:\r\n case KEYLIST.ARROW_LEFT:\r\n --index\r\n break\r\n case KEYLIST.ARROW_RIGHT:\r\n ++index\r\n break\r\n }\r\n\r\n if (isInKeyList) onSetActiveIndex(index)\r\n }\r\n\r\n /**\r\n * A helper function to generate input props\r\n *\r\n * @param index Index of the input\r\n * @returns Input props\r\n */\r\n const onCreateInputProps = (index: number): InputProps => {\r\n return {\r\n value: values[index],\r\n ref: ref => ref && onCreateRef(index, ref),\r\n onFocus: () => onSetActiveIndex(index),\r\n onKeyDown,\r\n onInput,\r\n onPaste,\r\n ...InputProps\r\n }\r\n }\r\n\r\n /**\r\n * When values got changed, we need to check if the data is enough?\r\n * If it's enough and fits all the condition\r\n * We'll call `onComplete` event\r\n */\r\n useEffect(() => {\r\n onEnoughData()\r\n }, [onEnoughData, values])\r\n\r\n /**\r\n * When `values` got changed, send it to the user\r\n */\r\n useEffect(() => {\r\n onValuesChange?.(values)\r\n }, [onValuesChange, values])\r\n\r\n /**\r\n * When `activeIndex` got changed, check and focus to the next input\r\n */\r\n useEffect(() => {\r\n const element = refs.current[activeIndex]\r\n\r\n if (element) {\r\n element.focus()\r\n element.select()\r\n }\r\n }, [activeIndex])\r\n\r\n return {\r\n values,\r\n setValues,\r\n setActiveIndex,\r\n refs,\r\n onSetValueAtIndex,\r\n onSetActiveIndex,\r\n onResetValues,\r\n onReset,\r\n onPaste,\r\n onNextFocusAfterChangingValue,\r\n onKeyDown,\r\n onInput,\r\n onEnoughData,\r\n onCreateRef,\r\n onCreateInputProps,\r\n onCheckValue,\r\n onAfterAddingValue,\r\n onAddValue,\r\n initState,\r\n initActiveIndex,\r\n ids,\r\n activeIndex\r\n }\r\n}\r\n","import React, { VFC } from 'react'\r\nimport { useBlockCode } from './hooks';\r\nimport { UseBlockCodeProps } from './types';\r\nimport './block-code.scss'\r\n\r\nexport interface BlockCodeProps extends UseBlockCodeProps {\r\n variant?: 'default' | 'circular' | 'underline'\r\n}\r\n\r\nexport const BlockCode: VFC = props => {\r\n const { variant = '', ...restProps } = props\r\n const { ids, onCreateInputProps } = useBlockCode(restProps)\r\n\r\n return (\r\n
    \r\n {ids.map((id, index) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { Button } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { iconChevronLeft } from '../../assets/img';\r\nimport { \r\n Banner,\r\n ModalPage,\r\n BasicEligibleDisclosure,\r\n PlusEligibleDisclosure,\r\n PreApprovedDisclosure,\r\n AlternateEligibleDisclosure,\r\n TestimonialDisclosure,\r\n IncreaseLimitDisclosure,\r\n RewardsDisclosure,\r\n AffiliateLogo,\r\n} from '../../components';\r\nimport { useWindowDimensions } from '../../hooks';\r\nimport { BreakPoints, ProgressUnits, ErrorPageProps } from '../../types';\r\nimport { timeoutExpiredState, utmSourceNameState } from '../../store/atoms'\r\nimport { routeHashes } from '../../app-routes';\r\nimport { fdic, logoOpenskyNoPadding } from '../../assets/img';\r\nimport './application-flow.scss';\r\nimport { debuglog } from '../../utils/debug';\r\nimport versionInfo from '../../buildVersion.json';\r\n\r\nconst webVersion: string = (versionInfo) ? `${versionInfo.buildVersionMajor}.${versionInfo.buildMinorVersion}.${versionInfo.buildRevision}` : \"1-0-350\";\r\n\r\nexport type ApplicationFlowLayoutProps = {\r\n showBackButton?: boolean;\r\n showHelpNow?: boolean;\r\n showBasicInfoFooter?: boolean;\r\n footerBasicEligibleDisclosure?: boolean;\r\n standaloneBasicEligibleDisclosure?: boolean;\r\n footerPlusEligibleDisclosure?: boolean;\r\n standalonePlusEligibleDisclosure?: boolean;\r\n footerPreApprovedDisclosure?: boolean;\r\n standalonePreApprovedDisclosure?: boolean;\r\n footerRewardsDisclosure?: boolean;\r\n standaloneRewardsDisclosure?: boolean;\r\n footerAlternateEligibleDisclosure?: boolean;\r\n standaloneAlternateEligibleDisclosure?: boolean;\r\n footerTestimonialDisclosure?: boolean;\r\n standaloneTestimonialDisclosure?: boolean;\r\n footerIncreaseLimitDisclosure?: boolean;\r\n standaloneIncreaseLimitDisclosure?: boolean;\r\n onHelpTrayClosed?: () => void;\r\n HelpComponent?: React.ComponentType;\r\n progress?: ProgressUnits;\r\n currentStep?: string;\r\n backgroundImage?: string;\r\n cardType?: string;\r\n promo?: boolean;\r\n promoBasicEligibleDisclosureIndex?: string;\r\n promoPlusEligibleDisclosureIndex?: string;\r\n promoPreApprovedDisclosureIndex?: string;\r\n promoRewardsDisclosureIndex?: string;\r\n promoAlternateEligibleDisclosureIndex?: string;\r\n promoTestimonialDisclosureIndex?: string;\r\n promoIncreaseLimitDisclosureIndex?: string;\r\n hideCardTypeNameInHeader?: boolean;\r\n};\r\n\r\nconst ApplicationFlowLayout: React.FC = ({\r\n showBackButton,\r\n showHelpNow,\r\n showBasicInfoFooter,\r\n onHelpTrayClosed,\r\n HelpComponent,\r\n progress,\r\n cardType,\r\n currentStep,\r\n children,\r\n backgroundImage,\r\n promo,\r\n footerBasicEligibleDisclosure,\r\n standaloneBasicEligibleDisclosure,\r\n footerPlusEligibleDisclosure,\r\n standalonePlusEligibleDisclosure,\r\n footerPreApprovedDisclosure,\r\n standalonePreApprovedDisclosure,\r\n footerRewardsDisclosure,\r\n standaloneRewardsDisclosure,\r\n footerAlternateEligibleDisclosure,\r\n standaloneAlternateEligibleDisclosure,\r\n footerTestimonialDisclosure,\r\n standaloneTestimonialDisclosure,\r\n footerIncreaseLimitDisclosure,\r\n standaloneIncreaseLimitDisclosure,\r\n promoBasicEligibleDisclosureIndex,\r\n promoPlusEligibleDisclosureIndex,\r\n promoPreApprovedDisclosureIndex,\r\n promoAlternateEligibleDisclosureIndex,\r\n promoTestimonialDisclosureIndex,\r\n promoIncreaseLimitDisclosureIndex,\r\n promoRewardsDisclosureIndex,\r\n hideCardTypeNameInHeader,\r\n}) => {\r\n \r\n \r\n const history = useHistory();\r\n const dimensions = useWindowDimensions();\r\n\r\n const [showHelpTray, setShowHelpTray] = useState(false);\r\n const [showChildren, setShowChildren] = useState(true);\r\n\r\n const timeoutExpired = useRecoilValue(timeoutExpiredState); \r\n const utmSourceName = useRecoilValue(utmSourceNameState);\r\n\r\n useEffect(() => {\r\n console.log(\"Version:\", webVersion);\r\n debuglog('page-flow:', {\r\n currentStep: currentStep,\r\n progress: progress,\r\n footerBasicEligibleDisclosure: footerBasicEligibleDisclosure,\r\n standaloneBasicEligibleDisclosure: standaloneBasicEligibleDisclosure,\r\n footerPlusEligibleDisclosure: footerPlusEligibleDisclosure,\r\n standalonePlusEligibleDisclosure: standalonePlusEligibleDisclosure,\r\n footerAlternateEligibleDisclosure: footerAlternateEligibleDisclosure,\r\n standaloneAlternateEligibleDisclosure: standaloneAlternateEligibleDisclosure,\r\n footerPreApprovedDisclosure: footerPreApprovedDisclosure,\r\n standalonePreApprovedDisclosure: standalonePreApprovedDisclosure,\r\n footerIncreaseLimitDisclosure: footerIncreaseLimitDisclosure,\r\n standaloneIncreaseLimitDisclosure: standaloneIncreaseLimitDisclosure,\r\n footerTestimonialDisclosure: footerTestimonialDisclosure,\r\n standaloneTestimonialDisclosure: standaloneTestimonialDisclosure,\r\n promoBasicEligibleDisclosureIndex: promoBasicEligibleDisclosureIndex,\r\n promoPlusEligibleDisclosureIndex: promoPlusEligibleDisclosureIndex,\r\n promoAlternateEligibleDisclosureIndex: promoAlternateEligibleDisclosureIndex,\r\n promoPreApprovedDisclosureIndex: promoPreApprovedDisclosureIndex,\r\n promoIncreaseLimitDisclosureIndex: promoIncreaseLimitDisclosureIndex,\r\n promoTestimonialDisclosureIndex: promoTestimonialDisclosureIndex,\r\n });\r\n debuglog()\r\n setShowChildren(\r\n !showHelpTray || dimensions.breakpoint < BreakPoints.sm\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dimensions.breakpoint, showHelpTray]);\r\n\r\n useEffect(() => {\r\n setShowHelpTray(!!showHelpNow);\r\n }, [showHelpNow]);\r\n\r\n useEffect(() => {\r\n if (timeoutExpired) {\r\n history.replace(routeHashes['/error'], {\r\n title: 'For security reasons, your session with OpenSky has expired.',\r\n buttonText: 'Ok, Got it',\r\n navigateTo: process.env.REACT_APP_HOMEPAGE_URL,\r\n } as ErrorPageProps);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [timeoutExpired]);\r\n\r\n\r\n const closeHelpTray = () => {\r\n setShowHelpTray(false);\r\n onHelpTrayClosed && onHelpTrayClosed();\r\n }\r\n\r\n const goBack = () => {\r\n history.goBack();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {showBackButton ? (\r\n \r\n ) : (\r\n  \r\n )}\r\n
    \r\n \"OpenSky\"\r\n
      
    \r\n \r\n
    \r\n {!!currentStep ? (\r\n {currentStep} of 9\r\n ) : (\r\n  \r\n )}\r\n
    \r\n \r\n
    \r\n {showChildren && children}\r\n {showHelpTray && (\r\n \r\n {HelpComponent && }\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n {!showHelpTray && HelpComponent && (\r\n setShowHelpTray(!showHelpTray)}\r\n >\r\n Help\r\n \r\n )} \r\n
    \r\n {showBasicInfoFooter && (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n {footerPreApprovedDisclosure && (\r\n \r\n )}\r\n {footerRewardsDisclosure && (\r\n \r\n )}\r\n {footerBasicEligibleDisclosure && (\r\n \r\n )}\r\n {footerPlusEligibleDisclosure && (\r\n \r\n )}\r\n {footerAlternateEligibleDisclosure && (\r\n \r\n )}\r\n {footerIncreaseLimitDisclosure && (\r\n \r\n )}\r\n {footerTestimonialDisclosure && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n © {new Date().getFullYear()} OpenSky is a division of Capital Bank, N.A. All rights reserved.\r\n
    \r\n \"\"\r\n
    \r\n
    \r\n )}\r\n {standalonePreApprovedDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {standaloneRewardsDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {standaloneBasicEligibleDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {standalonePlusEligibleDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {standaloneAlternateEligibleDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {standaloneIncreaseLimitDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {standaloneTestimonialDisclosure && (\r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n )\r\n};\r\n\r\nexport default ApplicationFlowLayout;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { fdic, logoOpensky } from '../../assets/img';\r\nimport {\r\n BasicEligibleDisclosure,\r\n PlusEligibleDisclosure,\r\n PreApprovedDisclosure,\r\n AlternateEligibleDisclosure,\r\n TestimonialDisclosure,\r\n IncreaseLimitDisclosure,\r\n RewardsDisclosure,\r\n LaunchAnnualFeeDisclosure,\r\n} from '../../components';\r\nimport './landing-page.scss';\r\n\r\nexport type LandingPageLayoutProps = {\r\n showDisclosures?: boolean;\r\n showWithdrawal?: boolean;\r\n showFDIC?: boolean;\r\n showPrivacyPolicy?: boolean;\r\n showBasicEligibleDisclosure?: boolean;\r\n showPlusEligibleDisclosure?: boolean;\r\n showPreApprovedDisclosure?: boolean;\r\n showAlternateEligibleDisclosure?: boolean;\r\n showIncreaseLimitDisclosure?: boolean;\r\n showTestimonialDisclosure?: boolean;\r\n showRewardsDisclosure?: boolean;\r\n showLaunchAnnualFeeDisclosure?: boolean;\r\n promoBasicEligibleDisclosureIndex?: string; \r\n promoPlusEligibleDisclosureIndex?: string; \r\n promoAlternateEligibleDisclosureIndex?: string; \r\n promoPreApprovedDisclosureIndex?: string; \r\n promoIncreaseLimitDisclosureIndex?: string; \r\n promoTestimonialDisclosureIndex?: string; \r\n promoRewardsDisclosureIndex?: string; \r\n promoLaunchAnnualFeeDisclosureIndex?: string; \r\n};\r\n \r\nconst LandingPageLayout: React.FC = ({\r\n showDisclosures,\r\n showWithdrawal,\r\n showFDIC,\r\n showPrivacyPolicy,\r\n showBasicEligibleDisclosure,\r\n showPlusEligibleDisclosure,\r\n showPreApprovedDisclosure,\r\n showAlternateEligibleDisclosure,\r\n showIncreaseLimitDisclosure,\r\n showTestimonialDisclosure,\r\n showRewardsDisclosure,\r\n showLaunchAnnualFeeDisclosure,\r\n promoBasicEligibleDisclosureIndex,\r\n promoPlusEligibleDisclosureIndex,\r\n promoAlternateEligibleDisclosureIndex,\r\n promoPreApprovedDisclosureIndex,\r\n promoIncreaseLimitDisclosureIndex,\r\n promoTestimonialDisclosureIndex,\r\n promoRewardsDisclosureIndex,\r\n promoLaunchAnnualFeeDisclosureIndex,\r\n children,\r\n}) => (\r\n <>\r\n
    \r\n \r\n \"OpenSky\"\r\n \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n
    \r\n {showDisclosures &&\r\n <>\r\n

    \r\n *Getting considered for a limit increase and/or the OpenSky\r\n Gold Unsecured Card is subject to approval\r\n

    \r\n

    \r\n Not ready to fund via debit card?\r\n
    \r\n Keep an eye out for emails from OpenSky.\r\n

    \r\n

    \r\n We cannot send your card until you fund.\r\n
    \r\n You have 60 days left to fund.\r\n

    \r\n \r\n }\r\n {showPreApprovedDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showRewardsDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showLaunchAnnualFeeDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showBasicEligibleDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showPlusEligibleDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showAlternateEligibleDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showIncreaseLimitDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showTestimonialDisclosure && (\r\n

    \r\n \r\n

    \r\n )}\r\n {showWithdrawal &&\r\n

    \r\n If you would like to withdraw your application, we will stop\r\n all processing and mark your application closed at your\r\n request.\r\n
    \r\n Click here to withdraw your application\r\n

    \r\n }\r\n {showFDIC && (\r\n <>\r\n

    \r\n © {new Date().getFullYear()} OpenSky is a division of Capital Bank, N.A. All rights reserved.\r\n

    \r\n \"\"\r\n \r\n )}\r\n {showPrivacyPolicy && (\r\n <>\r\n

    \r\n © Copyright {new Date().getFullYear()}. Capital Bank, N.A.
    \r\n Capital Bank, N.A. Privacy Policy\r\n

    \r\n \"\"\r\n \r\n )}\r\n
    \r\n \r\n);\r\n\r\nexport default LandingPageLayout;\r\n","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationApiFailed = () => {\r\n return (\r\n \r\n \r\n

    \r\n Thank you for applying to OpenSky!\r\n

    \r\n

    \r\n We may need additional information and ask that you\r\n respond promptly to help us process your application\r\n faster.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationApiFailed;\r\n","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { applicationApproved } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { CardPerks } from '../../components';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { decisionsResponseState, selectedApplicationIdState, applicationState } from '../../store/atoms';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { ProductTypePrns } from '../../types';\r\nimport { debuglog } from '../../utils/debug';\r\n\r\n\r\nconst ApplicationApprovedWaitingForFunds = () => {\r\n const history = useHistory();\r\n const decisionsResponse = useRecoilValue(decisionsResponseState);\r\n const selectedApplicationId = useRecoilValue(selectedApplicationIdState); \r\n const application = useRecoilValue(applicationState);\r\n\r\n const selectedApplication = decisionsResponse?.checkAppResponseList?.filter(app => app.applicationID === selectedApplicationId).shift();\r\n\r\n const getCardTypeByPrn = (prn: string | null | undefined) => {\r\n switch(prn){\r\n case ProductTypePrns.Plus:\r\n return 'plus';\r\n case ProductTypePrns.Launch:\r\n return 'launch';\r\n default:\r\n return 'basic';\r\n }\r\n }\r\n\r\n const cardType = getCardTypeByPrn(selectedApplication?.prn);\r\n\r\n debuglog('awaiting-for-funds->cardType', cardType);\r\n debuglog('awaiting-for-funds->application.cardType', application?.cardType);\r\n debuglog('app', application);\r\n debuglog('decisionResponse', decisionsResponse);\r\n debuglog('decisionResponse-IncentiveName', decisionsResponse?.checkAppResponseList?.find(app => !!app.incentiveName));\r\n debuglog('decisionResponse-IncentiveId', decisionsResponse?.checkAppResponseList?.find(app => !!app.incentiveId));\r\n //console.log('selectedApplication', selectedApplication);\r\n const incentiveActive = (selectedApplication?.incentiveName !== undefined && selectedApplication?.incentiveName !== '' && selectedApplication?.incentiveName !== null);\r\n\r\n return (\r\n \r\n \r\n }\r\n //promoFundButtons={true}\r\n onNext={() => history.push(routeHashes['/funding-payment'])}\r\n buttonText=\"Fund my card\"\r\n />\r\n \r\n )\r\n};\r\n\r\nexport default ApplicationApprovedWaitingForFunds;\r\n","import React from 'react';\r\nimport { applicationClosed, applicationRefund } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationClosedAwaitingRefund = () => {\r\n return (\r\n \r\n \r\n

    \r\n We're sorry to see you go!\r\n

    \r\n

    \r\n Your application was closed for one of the following\r\n reasons:\r\n

      \r\n
    • Application withdrawn
    • \r\n
    • Application expired
    • \r\n
    \r\n

    \r\n

    \r\n Please look out for an email from OpenSky for more\r\n information.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationClosedAwaitingRefund;\r\n","import React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { useRecoilValue } from 'recoil';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport {\r\n cardTypeState,\r\n decisionsResponseState,\r\n firstNameState,\r\n} from '../../store/atoms';\r\nimport {\r\n applicationApproved,\r\n creditcardTilted,\r\n creditcardPlusTilted,\r\n creditcardLaunchTilted,\r\n iconCalendar,\r\n iconCreditcardPayment,\r\n iconGraph,\r\n} from '../../assets/img';\r\n\r\nconst ApplicationBoarded = () => {\r\n const decisionsResponse = useRecoilValue(decisionsResponseState);\r\n const firstName = useRecoilValue(firstNameState);\r\n const cardType = useRecoilValue(cardTypeState);\r\n\r\n const getCardImageByCardType = () => {\r\n switch(cardType){\r\n case 'launch':\r\n return \"\"\r\n case 'plus':\r\n return \"\"\r\n default:\r\n return \"\"\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {getCardImageByCardType()}\r\n

    Congrats, {firstName}!

    \r\n

    You're officially part of the

    \r\n

    OpenSky family.

    \r\n

    Your card will be mailed soon, however this
    \r\n process can take up to 4 days. Don't worry — we'll
    \r\n give you a heads up when it ships.

    \r\n

    What's next?

    \r\n
      \r\n
    • Your card should arrive in 12-14 business days.
    • \r\n
    • Look for an unmarked, white envelope.
    • \r\n
    • If you haven't received your card after 12-14 business days, please call customer service
      \r\n for assisstance.
    • \r\n
    • Activate your card as soon as it arrives to
      \r\n start building credit!
    • \r\n
    \r\n

    What is a secured card?

    \r\n

    Secured cards are a type of credit card that are
    \r\n backed by a cash deposit, but otherwise work
    \r\n just like unsecured cards. The refundable deposit
    \r\n used to fund your OpenSky card is equal to your
    \r\n spending limit. Using it for everyday purchases
    \r\n and making on-time monthly payments helps to
    \r\n grow and improve your score over time.

    \r\n window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}/know-your-card`}>\r\n Learn more\r\n \r\n
    \r\n

    Quick Tips to Build
    Credit Fast

    \r\n
    \r\n \"calendarMake on-time monthly
    payments.
    \r\n
    \r\n
    \r\n \"paymentUse less than 30% of your
    available credit.
    \r\n
    \r\n
    \r\n \"graphOpt-in on your OpenSky
    account to track your FICO
    score for free.
    \r\n
    \r\n
    \r\n
    \r\n }\r\n appMessageAdditionalClasses=\"force-text-left\"\r\n appMessageAdditionalGradiantClasses=\"force-text-left\"\r\n appDetailAdditionalClasses=\"force-text-left\"\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default ApplicationBoarded;\r\n","import React from 'react';\r\nimport { applicationClosed, applicationRefund } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationClosed = () => {\r\n return (\r\n \r\n \r\n

    \r\n We're sorry to see you go!\r\n

    \r\n

    \r\n Your application has been processed and is now closed.\r\n Please look out for an email from OpenSky for more\r\n information.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationClosed;\r\n","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationDenied = () => {\r\n return (\r\n \r\n \r\n

    \r\n Thank you for applying to OpenSky!\r\n

    \r\n

    \r\n We appreciate your interest and thank you for choosing\r\n our card.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationDenied;\r\n","import React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { useRecoilValue } from 'recoil';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport {\r\n decisionsResponseState,\r\n emailAddressState,\r\n cardTypeState,\r\n firstNameState\r\n} from '../../store/atoms';\r\nimport {\r\n applicationApproved,\r\n creditcardTilted,\r\n creditcardPlusTilted,\r\n iconCalendar,\r\n iconCreditcardPayment,\r\n iconGraph,\r\n creditcardLaunchTilted\r\n} from '../../assets/img';\r\nimport './index.scss';\r\n\r\nconst ApplicationDepositApproved = () => {\r\n const decisionsResponse = useRecoilValue(decisionsResponseState);\r\n const emailAddress = useRecoilValue(emailAddressState);\r\n const firstName = useRecoilValue(firstNameState);\r\n const cardType = useRecoilValue(cardTypeState);\r\n\r\n const getCardImageByCardType = () => {\r\n switch(cardType){\r\n case 'launch':\r\n return \"\"\r\n case 'plus':\r\n return \"\"\r\n default:\r\n return \"\"\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {getCardImageByCardType()}\r\n

    Congrats, {firstName},

    \r\n

    you're approved!

    \r\n

    We've received your security deposit and have
    \r\n opened an OpenSky account just for you.

    \r\n

    You'll receive an email at {emailAddress} from OpenSky letting you\r\n know when to look out for your new card.

    \r\n

    What is a secured card?

    \r\n

    Secured cards are a type of credit card that are
    \r\n backed by a cash deposit, but otherwise work
    \r\n just like unsecured cards. The refundable deposit
    \r\n used to fund your OpenSky card is equal to your
    \r\n spending limit. Using it for everyday purchases
    \r\n and making on-time monthly payments helps to
    \r\n grow and improve your score over time.

    \r\n window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}/know-your-card`}>\r\n Learn more\r\n \r\n
    \r\n

    Quick Tips to Build
    Credit Fast

    \r\n
    \r\n \"calendarMake on-time monthly
    payments.
    \r\n
    \r\n
    \r\n \"paymentUse less than 30% of your
    available credit.
    \r\n
    \r\n
    \r\n \"graphOpt-in on your OpenSky
    account to track your FICO
    score for free.
    \r\n
    \r\n
    \r\n \r\n }\r\n appMessageAdditionalClasses=\"force-text-left\"\r\n appMessageAdditionalGradiantClasses=\"force-text-left\"\r\n appDetailAdditionalClasses=\"force-text-left\"\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationDepositApproved;\r\n","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { iconExclamationCircle } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { routeHashes } from '../../app-routes';\r\n\r\nconst ApplicationDocumenstRequested = () => {\r\n const history = useHistory();\r\n\r\n const handleNext = () => {\r\n history.push(routeHashes['/document-selection']);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ApplicationDocumenstRequested;\r\n","import React from 'react';\r\nimport { applicationClosed, applicationRefund } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationExpiredOrIncomplete = () => {\r\n return (\r\n \r\n \r\n

    \r\n We're sorry to see you go!\r\n

    \r\n

    \r\n Your application was closed for one of the following\r\n reasons:\r\n

      \r\n
    • \r\n We needed additional information to verify your\r\n identity\r\n
    • \r\n
    • \r\n We didn't receive your required security deposit\r\n
    • \r\n
    \r\n

    \r\n

    \r\n The good news is you can reapply at any time at  \r\n openskycc.com. The\r\n OpenSky Secured Visa Credit Card is a great tool to help\r\n you build or rebuild solid credit history!\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationExpiredOrIncomplete;\r\n","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationFundingDeclined = () => {\r\n return (\r\n \r\n \r\n

    \r\n Oops! We were unable to process your payment at this time.\r\n

    \r\n

    \r\n We will send you a funding instuctions email upon approval.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationFundingDeclined;\r\n","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationFundingFail = () => {\r\n return (\r\n \r\n \r\n

    \r\n Oops! We were unable to process your payment at this time.\r\n

    \r\n

    \r\n Remember to respond promptly to any requests for additional information\r\n as it will help us process your card faster.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationFundingFail;\r\n","import React from 'react';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { applicationApproved } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport {\r\n emailAddressState,\r\n cardTypeState,\r\n firstNameState\r\n} from '../../store/atoms';\r\nimport {\r\n creditcardTilted,\r\n creditcardPlusTilted,\r\n creditcardLaunchTilted\r\n} from '../../assets/img';\r\nimport './index.scss';\r\n\r\nconst ApplicationInGoodFunds = () => {\r\n const emailAddress = useRecoilValue(emailAddressState);\r\n const firstName = useRecoilValue(firstNameState);\r\n const cardType = useRecoilValue(cardTypeState);\r\n\r\n const getCardImageByCardType = () => {\r\n switch(cardType){\r\n case 'launch':\r\n return \"\"\r\n case 'plus':\r\n return \"\"\r\n default:\r\n return \"\"\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n {getCardImageByCardType()}\r\n
    \r\n

    Congrats, {firstName},

    \r\n

    you're approved!

    \r\n

    \r\n Good news! We've received your deposit!
    \r\n

    \r\n

    \r\n After your deposit has cleared, we'll open your OpenSky account, create your credit card, and prepare it for mailing.
    \r\n

    \r\n

    \r\n We will email you at {emailAddress} with updates letting you know when your card is on the way.\r\n

    \r\n
    \r\n
    \r\n \r\n }\r\n appStatus=\"You've been approved!!!\"\r\n appStatusType=\"approved\"\r\n appStatusIcon={applicationApproved}\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationInGoodFunds;","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationManualDocumentReview = () => {\r\n return (\r\n \r\n \r\n

    \r\n Thank you for applying to OpenSky!\r\n

    \r\n

    \r\n Your application is a priority to us and currently being\r\n reviewed by our team. You will receive an email fron\r\n OpenSky once our review is complete.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationManualDocumentReview;\r\n","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationManualReview = () => {\r\n return (\r\n \r\n \r\n

    \r\n Thank you for applying to OpenSky!\r\n

    \r\n

    \r\n Your application is a priority to us and currently being\r\n processed. You will receive an email from OpenSky once\r\n our review is complete.\r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationManualReview;\r\n","import React from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationSubmitted = () => {\r\n return (\r\n \r\n \r\n

    \r\n Thank you for applying to OpenSky!\r\n

    \r\n

    \r\n We've successfully received your documents and will\r\n resume processing your application.\r\n

    \r\n \r\n }\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationSubmitted;\r\n","import React from 'react';\r\nimport { applicationClosed, applicationRefund } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst ApplicationWithdrawn = () => {\r\n return (\r\n \r\n \r\n

    \r\n We're sorry to see you go!\r\n

    \r\n

    \r\n Your request to withdraw your application has been\r\n received and your application has been withdrawn.\r\n

    \r\n

    \r\n

    \r\n If you made your security deposit via debit card:\r\n
    \r\n

    \r\n The full refund of your deposit will be returned to\r\n your account in as little as 5 business days.\r\n

    \r\n

    \r\n

    \r\n

    If you paid by any other means:
    \r\n

    \r\n Your refund will be sent via Standard U.S. Mail. You\r\n should receive it within 10 business days from when\r\n we processed your request to withdraw your\r\n application. (Please refer to your local United\r\n States Postal Service timelines for delivery\r\n schedules).\r\n

    \r\n

    \r\n \r\n }\r\n onNext={() => window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`}\r\n buttonText=\"Ok, Got it\"\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default ApplicationWithdrawn;\r\n","import crypto from 'crypto';\r\n\r\nexport const generateSHA256Hash = (input: string) => {\r\n if (input === '') {\r\n return undefined;\r\n }\r\n const hash = crypto.createHash('sha256');\r\n hash.update(input);\r\n return hash.digest('hex');\r\n}\r\n","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\n\r\nconst BasicInfoHelp = () => {\r\n return (\r\n \r\n \r\n Basic Information Help\r\n \r\n \r\n First and Last Name\r\n \r\n The total number of characters entered in the First Name and Last Name\r\n fields cannot exceed 26 characters.\r\n \r\n \r\n \r\n Email Address\r\n \r\n A valid email address is required to complete this application as it is\r\n the primary method by which we will contact you.\r\n \r\n \r\n \r\n Mobile Phone Number\r\n \r\n By giving us a mobile number or a number later converted to a mobile number,\r\n you agree that we or our service providers can contact you at the number by\r\n text message, pre-recorded, autodialed or artificial voice calls. Msg&Data\r\n Rates May Apply. Message frequency may vary. Text HELP for help, STOP to cancel.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default BasicInfoHelp;\r\n","import { useMutation } from \"react-query\";\r\nimport { microserviceClient } from '../../api-clients';\r\nimport { CreateLeadRequest, CreateLeadResponse } from '../../types';\r\n\r\nconst createLead = (payload: CreateLeadRequest) =>\r\n microserviceClient.post('/api/application/createLead', payload);\r\n\r\nexport const useCreateLead = () => { \r\n return useMutation(\r\n createLead,\r\n {\r\n onError: (err, variables, context) => {\r\n console.error('Error creating lead: ', err);\r\n },\r\n }\r\n );\r\n};\r\n","import { GADataLayerModel, WindowWithDataLayer } from \"../types/analytics\";\r\n\r\ndeclare const window: WindowWithDataLayer;\r\n\r\nexport const pushToDataLayer = (event: string, data: GADataLayerModel) => {\r\n if(window.dataLayer){\r\n window.dataLayer.push({\r\n event: event,\r\n ...data\r\n });\r\n } else {\r\n console.warn(\"dataLayer is not initilized\");\r\n }\r\n}\r\n","import { CardProductResponse } from '../types'\r\n\r\ntype CardInfo = {\r\n prn?: string;\r\n cardType?: string;\r\n annualPercentageRate?: any;\r\n minimumDeposit?: any;\r\n minimumCreditLimit?: any;\r\n maximumCreditLimit?: any;\r\n productId?: number | undefined;\r\n currentCardHolderAgreement?: any;\r\n currentTermsConditions?: any;\r\n}\r\n\r\nexport const currentCardInfo = (cardType: string, products: CardProductResponse[] | undefined) => {\r\n let cardInfo: CardInfo = {};\r\n if (products === undefined) {\r\n return cardInfo;\r\n }\r\n\r\n let cardPrn = cardType.toLowerCase() === 'basic' ? '1000' :\r\n cardType.toLowerCase() === 'plus'? '9000' :\r\n '6100';\r\n \r\n for (let product of products) {\r\n \r\n if (product?.prn === cardPrn) {\r\n cardInfo = {\r\n prn: product?.prn,\r\n cardType: cardType,\r\n minimumDeposit: product?.minimumDeposit,\r\n minimumCreditLimit: product?.minimumCreditLimit,\r\n maximumCreditLimit: product?.maximumCreditLimit,\r\n annualPercentageRate: product?.offerCode?.annualPercentageRate,\r\n productId: product?.id,\r\n currentCardHolderAgreement: product?.offerCode?.chaDocumentPath,\r\n currentTermsConditions: product?.offerCode?.termsAndConditionsDocumentPath,\r\n };\r\n \r\n return cardInfo;\r\n }\r\n }\r\n\r\n return cardInfo;\r\n}\r\n","import { yupResolver } from '@hookform/resolvers/yup';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport * as Yup from 'yup';\r\nimport { NumberFormatInput, SelectDropdown, TextInput, PromotionSpecific } from '../../components';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport {\r\n applicationState,\r\n createLeadResponseState,\r\n configurationResponseState,\r\n emailAddressState,\r\n firstNameState,\r\n gaDataLayerState,\r\n nidState,\r\n productIdBeforeDownsellState,\r\n} from '../../store/atoms';\r\nimport {\r\n ApplicationModel,\r\n BasicInfoModel,\r\n CreateLeadRequest,\r\n OtpCheckProps,\r\n OtpMethods,\r\n PrimaryPhoneTypes,\r\n IncentiveFeatures,\r\n} from '../../types';\r\nimport { isValidName, phonePattern, invalidNameCharacters } from '../../utils/validations';\r\nimport { isIncentiveFeatureActive, getPrn, getIncentive } from '../../utils/incentives';\r\nimport { generateSHA256Hash } from '../../utils/hashing';\r\nimport BasicInfoHelp from './basic-info-help';\r\nimport { useCreateLead } from './hooks';\r\nimport { routeHashes } from '../../app-routes';\r\nimport * as FullStory from '@fullstory/browser';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport { currentCardInfo } from '../../utils/product-info';\r\nimport { SelectOptions } from '../../components/select-dropdown/types';\r\nimport { \r\n creditcard,\r\n creditcardLaunch,\r\n creditcardPlusNoRibbon,\r\n iconBlueCheck\r\n} from '../../assets/img';\r\nimport { debuglog } from '../../utils/debug';\r\nimport './index.scss';\r\n\r\nconst BasicInfo = () => {\r\n const [isSubmitted, setIsSubmitted] = useState(false);\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const [, setCreateLeadResponse] = useRecoilState(createLeadResponseState);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const [, setEmailAddress] = useRecoilState(emailAddressState);\r\n const [, setFirstName] = useRecoilState(firstNameState);\r\n //const [, setUserId] = useRecoilState(userIdState);\r\n const [promoValueMinimumAmount, setPromoValueMinimumAmount] = useState();\r\n const [promoValueDepositReduction, setPromoValueDepositReduction] = useState();\r\n //const [incentiveName, setIncentiveName] = useState();\r\n let [gaDataLayer, setGADataLayer] = useRecoilState(gaDataLayerState);\r\n const [, setProductIdBeforeDownsell] = useRecoilState(productIdBeforeDownsellState);\r\n let nid = useRecoilValue(nidState);\r\n let cardSelected;\r\n\r\n const history = useHistory();\r\n const createLeadMutation = useCreateLead();\r\n debuglog('Basic-Info-Application', application);\r\n\r\n const validationSchema = Yup.object().shape({\r\n firstName: Yup.string()\r\n .required('First Name is required.')\r\n .test(\r\n 'contains-alpha-characters-firstname',\r\n `First Name should only contain alphabetical characters.`,\r\n (value) => isValidName(value)\r\n )\r\n .default(() => application.firstName),\r\n lastName: Yup.string()\r\n .required('Last Name is required.')\r\n .test(\r\n 'contains-alpha-characters-lastname',\r\n `Last Name should only contain alphabetical characters.`,\r\n (value) => isValidName(value)\r\n )\r\n .test(\r\n 'firstLastMaxLength',\r\n 'First Name and Last Name combined exceeds maximum characters.',\r\n function (item) {\r\n return (this.parent.firstName.length + this.parent.lastName.length) < 27\r\n }\r\n )\r\n .default(() => application.lastName),\r\n emailAddress: Yup.string()\r\n .email('Invalid Email Address!')\r\n .required('Email Address is required.')\r\n .default(() => application.emailAddress),\r\n primaryPhone: Yup.string()\r\n .matches(phonePattern, 'Invalid Phone Number!')\r\n .required('Phone is required.')\r\n .default(() => application.primaryPhone),\r\n primaryPhoneType: Yup.string()\r\n .oneOf([PrimaryPhoneTypes.Mobile])\r\n .required()\r\n .default(\r\n () => PrimaryPhoneTypes.Mobile\r\n ),\r\n otpMethod: Yup.string()\r\n .oneOf([OtpMethods.Mobile, OtpMethods.Email])\r\n .required('Verification method is required.')\r\n .default(\r\n () => application.otpMethod ?? OtpMethods.Mobile\r\n ),\r\n phoneConsent: Yup.bool()\r\n .when(\"otpMethod\", {\r\n is: OtpMethods.Mobile,\r\n then: Yup.bool().oneOf([true])\r\n })\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const {\r\n handleSubmit,\r\n watch,\r\n register,\r\n formState: { errors, isValid },\r\n } = useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all',\r\n });\r\n\r\n const onSubmit = async (event: BasicInfoModel) => {\r\n setEmailAddress(event.emailAddress ?? '');\r\n setFirstName(event.firstName ?? '');\r\n\r\n event.instanceId = Math.round(2000000000 * Math.random());\r\n\r\n /* TODO: include Launch */\r\n //BasicInfoNext Full Story Event \r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('BasicInfoNext', { leadId: application.leadId, productId: application.productId });\r\n cardSelected = 'Legacy';\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_BasicInfoNext', { leadId: application.leadId, productId: application.productId });\r\n cardSelected = 'Plus';\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_BasicInfoNext', { leadId: application.leadId });\r\n cardSelected = 'Launch';\r\n break;\r\n }\r\n default: {\r\n FullStory.event('BasicInfoNext', { leadId: application.leadId, productId: application.productId });\r\n cardSelected = 'Legacy';\r\n break;\r\n }\r\n }\r\n\r\n // Set the event's product id based on the card type chosen\r\n let curCard = currentCardInfo((application?.cardType ?? \"basic\"), configurationResponse?.securedProducts);\r\n event.productId = curCard.productId;\r\n\r\n if(event.productId){\r\n setProductIdBeforeDownsell(event.productId?.toString());\r\n }\r\n\r\n const incentive = getIncentive(IncentiveFeatures.Any, getPrn(application.cardType), configurationResponse);\r\n\r\n \r\n\r\n setIsSubmitted(true);\r\n\r\n setApplication((current: ApplicationModel) => ({\r\n ...current,\r\n ...event,\r\n incentiveName: incentive?.name,\r\n incentiveId: incentive?.id,\r\n }));\r\n\r\n\r\n createLeadMutation.mutate(event as CreateLeadRequest, {\r\n onSuccess: (response) => {\r\n setApplication((current: ApplicationModel) => ({\r\n ...current,\r\n leadId: response.data.id,\r\n instanceId: event.instanceId,\r\n }));\r\n\r\n /* TODO: include Launch card productId */\r\n // Add LeadId and ProductName to FS\r\n let productName = \"\";\r\n if (event.productId === 1) {\r\n productName = \"Secured\";\r\n }\r\n else if (event.productId === 5) {\r\n productName = \"Secured Plus\";\r\n }\r\n FullStory.identify(response.data.id, {\r\n productName: productName\r\n })\r\n\r\n setCreateLeadResponse(response.data);\r\n history.push(routeHashes['/otp-check'], {\r\n navigateTo: routeHashes['/debt-to-income'],\r\n otpData: {\r\n id: response.data.id,\r\n isAppStatusCheck: false,\r\n firstName: event.firstName,\r\n emailAddress: event.emailAddress,\r\n primaryPhone: event.primaryPhone,\r\n otpMethod: response.data.otpMethod as OtpMethods,\r\n },\r\n otpSentTime: new Date(),\r\n isInitialOtp: true,\r\n } as OtpCheckProps);\r\n },\r\n });\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'user_id': generateSHA256Hash(event?.emailAddress ?? ''),\r\n 'NID_': nid,\r\n 'step_name': 'About Me',\r\n 'card_selected': cardSelected\r\n };\r\n\r\n setGADataLayer(updateDataLayer);\r\n pushToDataLayer(\"application_step_0\", updateDataLayer);\r\n };\r\n\r\n const primaryPhoneType = watch('primaryPhoneType');\r\n const primaryPhone = watch('primaryPhone');\r\n const emailAddress = watch('emailAddress');\r\n\r\n const [otpPhoneOption, setOtpPhoneOption] = useState({ value: OtpMethods.Mobile, label: '' });\r\n const [otpEmailOption, setOtpEmailOption] = useState({ value: OtpMethods.Email, label: '' });\r\n const [otpOptions, setOtpOptions] = useState([otpPhoneOption, otpEmailOption]);\r\n const [selectedOtpOption, setSelectedOtpOption] = useState(otpPhoneOption);\r\n\r\n // useEffect(() => {\r\n // const incentiveDetail = getIncentiveDetail(IncentiveFeatures.Any, getPrn(application.cardType), configurationResponse);\r\n // if (incentiveDetail?.incentiveTypeName == IncentiveFeatures.DepositReductionAmount) {\r\n // setPromoValueDepositReduction(incentiveDetail.value);\r\n // }\r\n // if (incentiveDetail?.incentiveTypeName == IncentiveFeatures.MinimumDepositAmount) {\r\n // setPromoValueMinimumAmount(incentiveDetail.value);\r\n // }\r\n \r\n // // console.log('Setting Incentive:', incentiveDetail); \r\n // // console.log(incentiveDetail?.incentiveTypeName);\r\n // // setIncentiveName(incentiveDetail?.incentiveTypeName);\r\n // }, [incentiveName]);\r\n\r\n useEffect(() => {\r\n const indexOfAt = emailAddress?.indexOf('@') ?? 0;\r\n const dots = Math.floor(indexOfAt * .5);\r\n const remainingChars = indexOfAt - 1 - dots;\r\n \r\n const maskedEmail = `${emailAddress?.substring(0, 1)}${'•'.repeat(emailAddress?.substring(1, indexOfAt > 0 ? dots + 1 : emailAddress?.length).length ?? 0)}${emailAddress?.substring(indexOfAt > 0 ? indexOfAt - remainingChars : emailAddress?.length)}`\r\n setOtpEmailOption({ value: OtpMethods.Email, label: maskedEmail });\r\n }, [emailAddress]);\r\n\r\n useEffect(() => {\r\n const maskedPhoneNumber = `+1 ${'•'.repeat(primaryPhone?.substring(0, 3).length ?? 0)} ${'•'.repeat(primaryPhone?.substring(3, 6).length ?? 0)} ${primaryPhone?.substring(6, 10)}`\r\n setOtpPhoneOption({ value: OtpMethods.Mobile, label: maskedPhoneNumber });\r\n }, [primaryPhone]);\r\n\r\n useEffect(() => {\r\n const options = [otpPhoneOption, otpEmailOption];\r\n setOtpOptions(options);\r\n }, [otpEmailOption, otpPhoneOption]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
    \r\n

    You’re Pre-Approved*

    \r\n

    \"\"/ No credit check to apply.

    \r\n {application.cardType === 'plus' && (\r\n

    \"\"/ No annual fee.

    \r\n )}\r\n {application.cardType !== 'launch' && (\r\n

    \"\"/ Up to 10% cash back rewards**

    \r\n )}\r\n
    \r\n
    \r\n \"\"\r\n
    \r\n {application.cardType === 'launch' && (\r\n <>\r\n
    OpenSky Launch Visa®
    \r\n \r\n )}\r\n \r\n <> \r\n
    \r\n \r\n
    \r\n $300 ${promoValueMinimumAmount} Minimum deposit\r\n
    Apply and fund today.
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n <> \r\n
    \r\n \r\n
    \r\n Get a $200 Credit Line for ${(200 - Number(promoValueDepositReduction))}.\r\n
    Apply and fund today.
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Personal information\r\n \r\n event.target.value = event.target.value.replace(invalidNameCharacters, \"\")\r\n }\r\n />\r\n \r\n event.target.value = event.target.value.replace(invalidNameCharacters, \"\")\r\n }\r\n />\r\n \r\n \r\n
    \r\n
    \r\n How should we verify your account?\r\n setSelectedOtpOption(otpOptions?.find(opt => opt.value === value))}\r\n errors={errors}\r\n />\r\n \r\n \r\n By clicking \"Next\" below, I expressly consent to allow Capital Bank, directly or by third parties acting on its behalf,\r\n to send me marketing and promotional messages via text at the mobile number provided (Msg & Data rates may apply)\r\n or at the email address provided, about OpenSky products that I am applying for, and any other financial products offered by Capital Bank.\r\n I understand that my consent is not a condition of application and that I can opt out of promotional text messages and/or emails at any time.\r\n Message frequency may vary.\r\n \r\n }\r\n name='phoneConsent'\r\n id='phoneConsent'\r\n defaultChecked={false}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n {!isSubmitted ? (\r\n \r\n \r\n Next\r\n \r\n \r\n ) : (\r\n \r\n \r\n Processing...\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BasicInfo;\r\n","import BasicInfo from './basic-info';\r\n\r\nexport default BasicInfo;\r\n\r\nexport {\r\n BasicInfo,\r\n};\r\n","import { useQuery } from \"react-query\";\r\nimport { microserviceClient } from '../../api-clients';\r\nimport {\r\n SendCheckAppStatusOtpRequest,\r\n SendCheckAppStatusOtpResponse,\r\n\r\n} from '../../types';\r\nimport { queryKeys } from '../../utils/constants';\r\n\r\nconst sendCheckAppStatusOtp = async (payload: SendCheckAppStatusOtpRequest): Promise => {\r\n const res = await microserviceClient.post('/api/security/sendCheckAppStatusOtp', payload);\r\n return res.data;\r\n}\r\n\r\nexport const useSendCheckAppStatusOtp = (payload?: SendCheckAppStatusOtpRequest) => {\r\n return useQuery(\r\n [...queryKeys.sendCheckAppStatusOtp, payload],\r\n () => sendCheckAppStatusOtp(payload!),\r\n {\r\n staleTime: Infinity,\r\n cacheTime: Infinity,\r\n retry: false,\r\n enabled: !!(payload?.last4SSN && payload.dateOfBirth && payload.emailAddress),\r\n }\r\n )\r\n}\r\n","import { yupResolver } from '@hookform/resolvers/yup';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport { Button, Col, Form, Row, Spinner } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState } from 'recoil';\r\nimport * as Yup from 'yup';\r\nimport { creditcard } from '../../assets/img';\r\nimport { NumberFormatInput, TextInput } from '../../components';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { ErrorPageProps, OtpCheckProps, OtpMethods, SendCheckAppStatusOtpRequest } from '../../types';\r\nimport { useSendCheckAppStatusOtp } from './hooks';\r\nimport { sendCheckAppStatusOtpRequestState, sendCheckAppStatusOtpResponseState, checkAppState, emailAddressState } from '../../store/atoms';\r\nimport { routeHashes } from '../../app-routes';\r\n\r\nconst CheckApplication: FC = () => {\r\n const history = useHistory();\r\n const [, sendCheckAppStatusOtpRequest] = useRecoilState(sendCheckAppStatusOtpRequestState);\r\n const [, sendCheckAppStatusOtpResponse] = useRecoilState(sendCheckAppStatusOtpResponseState);\r\n const [checkApplicationStatusRequest, setCheckApplicationStatusRequest] = useState();\r\n const [isCheckApp, setIsCheckApp] = useRecoilState(checkAppState);\r\n const [submittedEmailAddress, setSubmittedEmailAddress] = useRecoilState(emailAddressState);\r\n\r\n const validationSchema = Yup.object().shape({\r\n emailAddress: Yup.string()\r\n .email('Invalid Email Address!')\r\n .required('Email Address is required'),\r\n dateOfBirth: Yup.string()\r\n .matches(/\\d{8}/, 'Date of Birth is required')\r\n .required('Date of Birth is required'),\r\n last4SSN: Yup.string()\r\n .matches(/\\d{4}/, 'SSN or ITIN is required')\r\n .required('SSN or ITIN is required'),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { handleSubmit, register, formState: { errors, isValid } } =\r\n useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all'\r\n });\r\n \r\n const { data: sendStatusOtpResponse, isError: isErrorResponse } = useSendCheckAppStatusOtp(checkApplicationStatusRequest);\r\n\r\n const handleCheckApplicationStatus = async (event: SendCheckAppStatusOtpRequest) => {\r\n setIsCheckApp(true); \r\n setSubmittedEmailAddress(event.emailAddress);\r\n setCheckApplicationStatusRequest({\r\n ...event,\r\n // format mmddyyyy as mm/dd/yyyy\r\n dateOfBirth: event.dateOfBirth.replace(/^(\\d{2})(\\d{2})(\\d{4})$/, '$1/$2/$3'),\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (isErrorResponse) {\r\n history.replace(routeHashes['/error'], {\r\n title: `Sorry, please try again`,\r\n message: 'It looks like you may have entered something incorrectly. The information you entered does not match our records. Please close your browser and try again.',\r\n help: 'Still experiencing an issue? Please contact Customer Service at 855-763-6736 for assistance.',\r\n buttonText: 'Ok, Got it',\r\n navigateTo: routeHashes['/check-application-status'],\r\n } as ErrorPageProps);\r\n } else if(sendStatusOtpResponse) {\r\n sendCheckAppStatusOtpRequest(checkApplicationStatusRequest);\r\n sendCheckAppStatusOtpResponse(sendStatusOtpResponse);\r\n history.push(routeHashes['/otp-check'], {\r\n otpData: {\r\n isAppStatusCheck: true,\r\n emailAddress: submittedEmailAddress,\r\n primaryPhone: sendStatusOtpResponse.primaryPhone,\r\n otpMethod: sendStatusOtpResponse.otpMethod as OtpMethods,\r\n },\r\n navigateTo: routeHashes['/view-application'],\r\n otpSentTime: new Date(),\r\n isInitialOtp: true, \r\n } as OtpCheckProps);\r\n } else {\r\n setIsCheckApp(false);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isErrorResponse, sendStatusOtpResponse]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n

    \r\n Let's check on your application status\r\n

    \r\n

    \r\n Please fill in the form below to check the status of\r\n your application.\r\n

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n { \r\n event.preventDefault();\r\n return false;\r\n }}\r\n onPaste={(event) => { \r\n event.preventDefault();\r\n return false;\r\n }}\r\n />\r\n \r\n \r\n
    \r\n \r\n \r\n {!isCheckApp ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n Processing...\r\n \r\n \r\n )}\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CheckApplication;\r\n","import CheckApplication from './check-application';\r\n\r\nexport default CheckApplication;\r\n\r\nexport {\r\n CheckApplication,\r\n};\r\n","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\n\r\nconst CreditLineHelp = () => {\r\n return (\r\n \r\n \r\n Credit Line Help\r\n \r\n \r\n \r\n Your credit line is determined by your security deposit. This amount determines how much you are \r\n able to spend with your OpenSky Secured Visa Credit Card.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CreditLineHelp;\r\n","import classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport { Button, Card, Col, Form, Row } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router';\r\nimport { useRecoilState } from 'recoil';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { applicationState, configurationResponseState, gaDataLayerState } from '../../store/atoms';\r\nimport CreditLineHelp from './credit-line-help';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { useRecoilValue } from 'recoil';\r\n//import { currentCardInfo } from '../../utils/product-info';\r\nimport { isIncentiveFeatureActive, getIncentiveDetail, getPrn } from '../../utils/incentives';\r\nimport { CardInfo, PromotionSpecific } from '../../components';\r\nimport { IncentiveFeatures } from '../../types';\r\nimport * as FullStory from '@fullstory/browser';\r\nimport './index.scss';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\n\r\n\r\nconst CreditLine = () => {\r\n const [application, setApplication] = useRecoilState(applicationState); \r\n const [promoValueMinimumAmount, setPromoValueMinimumAmount] = useState();\r\n const [promoValueDepositReduction, setPromoValueDepositReduction] = useState();\r\n const [gaDataLayer, setGaDataLayer] = useRecoilState(gaDataLayerState);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n\r\n /* NOTE: what is the best default value here? */\r\n // let balanceDue = 19.95;\r\n // if (application?.cardType === 'launch' && application.creditLimit && application.programFee) {\r\n // balanceDue = application.creditLimit + application.programFee;\r\n // }\r\n \r\n const getAmountsBasedOnPromotionIfAny = () => {\r\n let depositAmounts = (application.cardType === 'plus') ? [300, 500, 1000] : [200, 300, 500];\r\n\r\n let incentiveDetail = getIncentiveDetail(IncentiveFeatures.MinimumDepositAmount, \r\n getPrn(application.cardType), configurationResponse);\r\n \r\n //console.log('getAmountsBasedOnPromotionIfAny incentiveDetail', incentiveDetail);\r\n \r\n if (incentiveDetail && !isNaN(Number(incentiveDetail.value))) { \r\n depositAmounts[0] = Number(incentiveDetail.value); \r\n }\r\n\r\n //console.log('getAmountsBasedOnPromotionIfAny depositAmounts', depositAmounts);\r\n\r\n return depositAmounts; \r\n }\r\n\r\n const getRecommendedAmountBasedOnPromotionIfAny = () => { \r\n if (isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(application.cardType), configurationResponse)) \r\n {\r\n return getAmountsBasedOnPromotionIfAny()[0];\r\n }\r\n\r\n return recommendedAmount;\r\n }\r\n\r\n const amounts = getAmountsBasedOnPromotionIfAny();\r\n\r\n const recommendedAmount = application.defaultCreditLimit;\r\n\r\n const [selectedAmount, setSelectedAmount] = useState(\r\n application.amount || getRecommendedAmountBasedOnPromotionIfAny()\r\n );\r\n \r\n //const plusCardInfo = currentCardInfo('plus', configurationResponse?.securedProducts);\r\n\r\n const history = useHistory();\r\n\r\n const handleConfirm = () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('CreditLineSelectConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_CreditLineSelectConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_CreditLineSelectConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('CreditLineSelectConfirm', { leadId: application.leadId });\r\n break;\r\n } }\r\n \r\n setApplication((current) => ({\r\n ...current,\r\n ...{ amount: selectedAmount },\r\n }));\r\n\r\n if(!gaDataLayer.credit_line_amount){\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Credit Line Selection',\r\n 'credit_line_amount': selectedAmount,\r\n 'credit_line_type': 'pre-defined'\r\n }\r\n \r\n setGaDataLayer(updateDataLayer);\r\n pushToDataLayer('application_step_3', updateDataLayer);\r\n }\r\n else{\r\n pushToDataLayer('application_step_3', gaDataLayer);\r\n }\r\n\r\n // if (!!plusCardInfo && application.cardType === 'plus' && selectedAmount < plusCardInfo.minimumDeposit) {\r\n // history.push(routeHashes['/credit-line-switch']);\r\n // return;\r\n // }\r\n //Forward Credit-Line-Confirm & funding section to end of process\r\n history.push(routeHashes['/identity-verification']);\r\n };\r\n\r\n const handleCustom = () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('CreditLineSelectChooseCustom', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_CreditLineSelectChooseCustom', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_CreditLineSelectChooseCustom', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('CreditLineSelectChooseCustom', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n\r\n setApplication((current) => ({\r\n ...current,\r\n ...{ amount: undefined },\r\n }));\r\n history.push(routeHashes['/credit-line-custom']);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {application.cardType === 'launch' ? (\r\n <>\r\n \r\n \r\n
    \r\n

    You're pre-approved*
    for a ${application.amount ? application.amount : application.defaultCreditLimit} credit line

    \r\n \r\n
    \r\n \r\n
    \r\n \r\n ) : (\r\n \r\n \r\n
    \r\n

    Let's choose your credit line.

    \r\n \r\n <> \r\n \r\n \r\n \r\n \r\n Save ${promoValueDepositReduction} on your refundable \r\n security deposit for your credit line when you make \r\n your deposit today. \r\n \r\n \r\n \r\n \r\n \r\n <> \r\n \r\n \r\n
    \r\n ${recommendedAmount} ${promoValueMinimumAmount} Minimum deposit\r\n
    Enjoy a lowered minimum deposit and no annual fee when you apply and fund.
    \r\n\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
      \r\n {amounts.map((s) => (\r\n
    • \r\n {\r\n setSelectedAmount(s);\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Credit Line Selection',\r\n 'credit_line_amount': s,\r\n 'credit_line_type': 'pre-defined'\r\n }\r\n \r\n setGaDataLayer(updateDataLayer);\r\n }}\r\n data-testid={`button-${s}`}\r\n >\r\n
      \r\n ${s} Credit Line \r\n \r\n for ${(s - Number(promoValueDepositReduction)).toString()}\r\n \r\n
      \r\n {(application.cardType === 'plus') && (\r\n <>\r\n
      No annual fee
      \r\n \r\n )} \r\n \r\n
    • \r\n ))}\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n \r\n \r\n \r\n Choose custom credit line amount\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Confirm\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default CreditLine;\r\n","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\n\r\nconst CreditLineConfirmHelp = () => {\r\n return (\r\n \r\n \r\n Credit Line Confirmation Help\r\n \r\n \r\n \r\n By submitting your application you are authorizing OpenSky to process the full security deposit, \r\n placing an immediate hold on the funds selected as your credit line. If your application is not \r\n approved, your funds will be posted back to your account within 5 days.\r\n \r\n \r\n \r\n Fund my card at a later date\r\n \r\n Not a problem - you can still complete this application, but your Secured Visa card will only be sent \r\n to you after you pay your security deposit.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CreditLineConfirmHelp;\r\n","import React, { useState } from 'react';\r\nimport { Button, Card, Col, Form, Row } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState } from 'recoil';\r\nimport { arrival, creditcard, creditcardPlusNoRibbon, increase, unlock } from '../../assets/img';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { applicationState } from '../../store/atoms';\r\nimport { ApplicationModel } from '../../types';\r\nimport CreditLineConfirmHelp from './credit-line-confirm-help';\r\nimport { routeHashes } from '../../app-routes';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\nconst CreditLineConfirm = () => {\r\n const history = useHistory();\r\n \r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const [fundToday, setFundToday] = useState(application.fundToday ?? true);\r\n\r\n const toggleFundToday = (e: React.ChangeEvent) => {\r\n setFundToday(!!e.target.checked);\r\n };\r\n\r\n const handleNext = () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('CrediltLineConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_CrediltLineConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_CrediltLineConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('CrediltLineConfirm', { leadId: application.leadId });\r\n break;\r\n }\r\n } \r\n\r\n setApplication((current: ApplicationModel) => ({\r\n ...current,\r\n fundToday,\r\n }));\r\n if (fundToday) {\r\n history.push(routeHashes['/funding-source']);\r\n } else {\r\n history.push(routeHashes['/credit-line-fund-later']);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n

    Just to confirm...

    \r\n

    Here's an overview of your account credit line.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {application.cardType === 'basic' ? 'OpenSky' : 'OpenSky Plus'}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Credit Line\r\n \r\n ${application.amount}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n \r\n \r\n Build credit on arrival\r\n \r\n Start building credit as soon as your card arrives, \r\n just activate and spend responsibly\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n \r\n \r\n \r\n Get considered for a credit line increase\r\n \r\n After 6 months, you can get considered for a limit increase \r\n with no additional deposit required*\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n \r\n \r\n \r\n Get considered for unsecured\r\n \r\n In as few as 6 months, you can get considered for the \r\n OpenSky Gold Unsecured Card*\r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n I'm ready to fully fund my card today\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n By moving forward, upon application completion your OpenSky Securd Credit Card will be funded today.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n *Getting considered for a limit increase and/or the OpenSky Gold Unsecured Card is subject to approval\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreditLineConfirm;\r\n","import React, { useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport { Button, Card, Col, Form, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { applicationState, gaDataLayerState } from '../../store/atoms';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { NumberFormatInput } from '../../components';\r\nimport CreditLineHelp from './credit-line-help';\r\nimport { PromotionSpecific } from '../../components';\r\nimport { IncentiveFeatures, CreditLineModel } from '../../types';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { configurationResponseState } from '../../store/atoms'\r\nimport { currentCardInfo } from '../../utils/product-info';\r\nimport * as FullStory from '@fullstory/browser';\r\nimport { debuglog } from '../../utils/debug';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\n\r\nconst CreditLineCustom = () => {\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const history = useHistory();\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n\r\n const cardInfo = currentCardInfo(application.cardType as string, configurationResponse?.securedProducts);\r\n const formattedMaximumCreditLimit = new Intl.NumberFormat('en-US').format(cardInfo.maximumCreditLimit);\r\n\r\n const [promoValueMinimumAmount, setPromoValueMinimumAmount] = useState();\r\n const [promoValueDepositReduction, setPromoValueDepositReduction] = useState();\r\n\r\n const [gaDataLayer, setGaDataLayer] = useRecoilState(gaDataLayerState);\r\n \r\n const handleNext = () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('CustomCreditLineContinue', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_CustomCreditLineContinue', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_CustomCreditLineContinue', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('CustomCreditLineContinue', { leadId: application.leadId });\r\n break;\r\n }\r\n } \r\n \r\n if (typeof amount === 'string') {\r\n amount = parseInt(amount);\r\n }\r\n\r\n setApplication(current => ({ ...current, amount }));\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Credit Line Selection',\r\n 'credit_line_amount': amount,\r\n 'credit_line_type': 'custom'\r\n }\r\n\r\n setGaDataLayer(updateDataLayer);\r\n\r\n if(application.cardType !== 'launch'){\r\n pushToDataLayer('application_step_3', updateDataLayer);\r\n }\r\n\r\n // if (application.cardType === 'plus' && amount && amount < minimumDeposit) {\r\n // history.push(routeHashes['/credit-line-switch']);\r\n // return;\r\n // }\r\n\r\n //Forward Credit-Line-Confirm & funding section to end of process\r\n history.push(application.cardType === 'launch' ? routeHashes['/credit-line'] : routeHashes['/identity-verification']);\r\n };\r\n\r\n /* NOTE: what is the best default value here? */\r\n //const PROGRAM_FEE = 19.95;\r\n\r\n // const [balanceDue, setBalanceDue] = useState(PROGRAM_FEE.toString());\r\n\r\n //const handleBalanceChange = (value: string) => {\r\n // const cleanedValue = value.replace(/,/g, '');\r\n // const numericValue = Number(cleanedValue);\r\n // if (!Number.isNaN(numericValue)) {\r\n // const newBalance = numericValue + (application?.programFee ?? PROGRAM_FEE);\r\n // const formattedBalance = new Intl.NumberFormat('en-US', {\r\n // minimumFractionDigits: 2,\r\n // maximumFractionDigits: 2,\r\n // }).format(newBalance);\r\n // setBalanceDue(formattedBalance);\r\n // } else {\r\n // setBalanceDue(\"0.00\");\r\n // }\r\n //};\r\n\r\n //const securityDeposit = useMemo(() => {\r\n // const cleanedValue = balanceDue.replace(/,/g, '');\r\n // const numericValue = Number(cleanedValue);\r\n // return Math.max(numericValue, MINIMUM_DEPOSIT_LAUNCH) === numericValue ? balanceDue : application.securityDeposit;\r\n //}, [balanceDue]);\r\n\r\n const promotionAdjustedMinimumDepositAmount = () => {\r\n if (!!promoValueMinimumAmount && Number(promoValueMinimumAmount) > 0) {\r\n return Number(promoValueMinimumAmount);\r\n }\r\n return cardInfo.minimumDeposit;\r\n };\r\n\r\n const validationSchema = Yup.object().shape({\r\n amount: Yup.number()\r\n .required('Credit line amount is required')\r\n .typeError('You must specify a numeric value')\r\n .min(promotionAdjustedMinimumDepositAmount(), `Amount must be above $${promotionAdjustedMinimumDepositAmount()}.00`)\r\n .max(cardInfo.maximumCreditLimit, `Amount must be below $${formattedMaximumCreditLimit}.00`)\r\n .default(() => application.amount),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { register, watch, formState: { errors, isValid } } =\r\n useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all'\r\n });\r\n\r\n let amount = watch('amount');\r\n debuglog('errors', errors);\r\n\r\n const refundableSecurityDepositAmount = (enteredAmount: number | undefined) => {\r\n debuglog('refundableSecurityDepositAmount promoValueDepositReduction', promoValueDepositReduction);\r\n debuglog('explain this:', !!enteredAmount, !Number.isNaN(promoValueDepositReduction), (Number(enteredAmount) >= cardInfo.minimumDeposit));\r\n if (!!enteredAmount && !!promoValueDepositReduction \r\n && !Number.isNaN(promoValueDepositReduction) && Number(enteredAmount) >= cardInfo.minimumDeposit) {\r\n return '$' + (Number(enteredAmount) - Number(promoValueDepositReduction)).toString() + '*';\r\n }\r\n if (!enteredAmount) {\r\n return 'the amount entered.';\r\n }\r\n debuglog('defaulted refundableSecurityDepositAmount: ', enteredAmount, Number.isNaN(promoValueDepositReduction), cardInfo.minimumDeposit);\r\n return '$' + enteredAmount;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
    \r\n {application.cardType === \"launch\" ? (\r\n

    Choose your credit line

    \r\n ) : (\r\n

    Let's choose your credit line.

    \r\n )}\r\n \r\n <> \r\n \r\n \r\n \r\n \r\n Save ${promoValueDepositReduction} on your refundable \r\n security deposit for your credit line when you make \r\n your deposit today. \r\n \r\n \r\n \r\n \r\n \r\n <> \r\n \r\n \r\n
    \r\n ${cardInfo.minimumDeposit} ${promoValueMinimumAmount} Minimum deposit\r\n
    Enjoy a lowered minimum deposit and no annual fee when you apply and fund.
    \r\n\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default CreditLineCustom;\r\n","export const rotatedArray = (arr: any[], rotateCount: number = 1) => {\r\n return arr\r\n .slice(rotateCount % arr.length, arr.length)\r\n .concat(arr.slice(0, rotateCount % arr.length));\r\n}\r\n","import React, { useState } from 'react';\r\nimport { Button, Carousel, Col, Row } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport {\r\n iconQuestion,\r\n testimonialUser1,\r\n testimonialUser2,\r\n testimonialUser3,\r\n testimonialUser4,\r\n testimonialUser5,\r\n} from '../../assets/img';\r\nimport { ModalPage } from '../../components';\r\nimport { useWindowDimensions } from '../../hooks';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { IncentiveFeatures } from '../../types';\r\nimport { rotatedArray } from '../../utils/arrays';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { useRecoilValue, useRecoilState } from 'recoil';\r\nimport { applicationState, configurationResponseState } from '../../store/atoms';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\ntype Testimonial = {\r\n avatarImage: string;\r\n name: string;\r\n identity: string;\r\n testimonial: string;\r\n};\r\n\r\nconst testimonials: Testimonial[] = [\r\n {\r\n avatarImage: testimonialUser1,\r\n name: 'Michael B.',\r\n identity: 'OpenSky Cardholder',\r\n testimonial: 'I started with $200, made my payments on time...I had a 400 credit score and now my score is 680.',\r\n },\r\n {\r\n avatarImage: testimonialUser2,\r\n name: 'Donna N.',\r\n identity: 'OpenSky Cardholder',\r\n testimonial: 'In one year, OpenSky doubled my credit limit. ... I\\'m in a very good place now with my car and home paid off.',\r\n },\r\n {\r\n avatarImage: testimonialUser3,\r\n name: 'Juan T.',\r\n identity: 'OpenSky Cardholder',\r\n testimonial: 'Whenever I needed it the most, OpenSky was there for me to help me build my credit. Thank you, OpenSky.',\r\n },\r\n {\r\n avatarImage: testimonialUser4,\r\n name: 'Lashae K.',\r\n identity: 'OpenSky Cardholder',\r\n testimonial: 'Through the knowledge and tools, you can become a success story. I went from 545 to 700 in just under two years.',\r\n },\r\n {\r\n avatarImage: testimonialUser5,\r\n name: 'Lance T.',\r\n identity: 'OpenSky Cardholder',\r\n testimonial: 'OpenSky was the stepping stone...if you\\'re trying to repair your credit, this is what you need to do.',\r\n },\r\n];\r\n\r\nconst CreditLineFundLater = () => { \r\n const focusedIndexRotation = 3;\r\n const history = useHistory();\r\n const dimensions = useWindowDimensions();\r\n const [carouselIndex, setCarouselIndex] = useState(0);\r\n const [avatars, setAvatars] = useState(rotatedArray(testimonials.map(x => x.avatarImage), focusedIndexRotation));\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n\r\n const handleCarouselSelection = (index: number) => {\r\n setCarouselIndex(index);\r\n setAvatars(rotatedArray(testimonials.map(x => x.avatarImage), index + focusedIndexRotation));\r\n };\r\n\r\n const handleFundToday = () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('FundToday', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_FundToday', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_FundToday', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('FundToday', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n setApplication((current) => ({\r\n ...current,\r\n ...{ fundToday: true },\r\n }));\r\n \r\n history.push(routeHashes['/funding-source']);\r\n };\r\n\r\n const handleFundLater = () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('FundAfterApproval', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_FundAfterApproval', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('FundAfterApproval', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n \r\n //Forward Credit-Line-Confirm & funding section to end of process\r\n history.push(routeHashes['/terms-and-conditions']);\r\n };\r\n const minimumDepositPromo = isIncentiveFeatureActive(IncentiveFeatures.MinimumDepositAmount, getPrn(application.cardType), configurationResponse);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n

    \r\n {minimumDepositPromo && (<>\r\n Are you sure you're not interested in building your credit with a lower \r\n minimum deposit and no annual fee?*\r\n )}\r\n {!minimumDepositPromo && (<>\r\n Are you sure you do not want to fund your card\r\n today?{isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(application.cardType), configurationResponse) ? '*' : ''}\r\n )}\r\n \r\n

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n {avatars.map((x, i) => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n

    \r\n {testimonials[carouselIndex].name}\r\n

    \r\n

    \r\n {testimonials[carouselIndex].identity}\r\n {isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(application.cardType), configurationResponse) ? '**' : '*'}\r\n

    \r\n \r\n {testimonials.map((x, i) => (\r\n \r\n \r\n

    \r\n \"{x.testimonial}\"\r\n

    \r\n \r\n
    \r\n ))}\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Fund Later\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CreditLineFundLater;\r\n","import { microserviceClient } from '../../api-clients';\r\n\r\nexport const postProductUpdate = async (leadId: string|undefined, productId: string): Promise => {\r\n microserviceClient.post(\r\n `${process.env.REACT_APP_DEFAULT_API_BASE_URL}/api/application/lead/${leadId}/updateProduct`, {\r\n 'productId': productId,\r\n }\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Alert, Col, Nav, Row, Tab } from 'react-bootstrap';\r\nimport { ModalPage } from '../../components';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { useWindowDimensions } from '../../hooks';\r\nimport { iconWarningInfo } from '../../assets/img';\r\nimport { Intro } from '../../components';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport { applicationState } from '../../store/atoms';\r\nimport { configurationResponseState } from '../../store/atoms'\r\nimport { currentCardInfo } from '../../utils/product-info';\r\nimport { postProductUpdate } from './hooks';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\nconst CreditLineSwitch = () => {\r\n const dimensions = useWindowDimensions();\r\n const history = useHistory();\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const basicCardInfo = currentCardInfo('basic', configurationResponse?.securedProducts);\r\n const plusCardInfo = currentCardInfo('plus', configurationResponse?.securedProducts);\r\n\r\n const basicCardButton = () => {\r\n setApplication((current) => ({\r\n ...current,\r\n ...{ cardType: 'basic' },\r\n }));\r\n postProductUpdate(application?.leadId, basicCardInfo?.productId?.toString() ?? '0');\r\n FullStory.event('CreditLineSwitch', { leadId: application.leadId });\r\n history.push(routeHashes['/identity-verification']);\r\n };\r\n const plusCardButton = () => {\r\n setApplication((current) => ({\r\n ...current,\r\n ...{ cardType: 'plus' },\r\n }));\r\n FullStory.event('Plus_CreditLineSwitch', { leadId: application.leadId });\r\n history.push(routeHashes['/credit-line']);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n For a ${application.amount} credit line please choose the OpenSky card.\r\n \r\n \r\n
    \r\n

    Do you want to switch cards?

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CreditLineSwitch;\r\n","import { useQuery } from \"react-query\";\r\nimport { microserviceClient } from '../../api-clients';\r\nimport { queryKeys } from '../../utils/constants';\r\n\r\ntype CalculateIncomeDto = {\r\n monthlyHousingPayment: number,\r\n};\r\n\r\ntype CalculatedIncomeDto = {\r\n calculatedIncome: number,\r\n};\r\n\r\nconst calculateIncome = async (monthlyHousingPayment?: number): Promise => {\r\n const res = await microserviceClient.post('/api/application/calculateIncome', {\r\n monthlyHousingPayment\r\n } as CalculateIncomeDto);\r\n \r\n return res.data.calculatedIncome;\r\n};\r\n\r\nexport const useCalculateIncome = (monthlyHousingPayment?: number) => {\r\n return useQuery(\r\n [...queryKeys.calculateIncome, monthlyHousingPayment],\r\n () => calculateIncome(monthlyHousingPayment),\r\n {\r\n staleTime: Infinity,\r\n cacheTime: Infinity,\r\n retry: false,\r\n enabled: !!monthlyHousingPayment,\r\n }\r\n );\r\n};\r\n","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\n\r\nconst DebtToIncomeHelp = () => {\r\n return (\r\n \r\n \r\n Financial Information Help\r\n \r\n \r\n Monthly Housing/Rent Payment\r\n \r\n This is your combined monthly payment(s) for where you currently reside. If you \r\n share a housing payment, enter the amount that you are personally responsible for.\r\n \r\n \r\n \r\n Yearly Income\r\n \r\n Your “total yearly income” is the amount you grossed/earned or reasonably expect to earn \r\n in a calendar year.\r\n \r\n \r\n You may include personal income, which is income you have earned, including full-time, part-time, \r\n or seasonal jobs, salary, wages, shared income that is regularly deposited in to an account you \r\n can access. If you are 21 and older, you can include income that you can reasonably access to \r\n pay your bills. You may also include alimony, child support or separate maintenance income, but \r\n it need not be revealed if you do not wish to have it considered as a basis for repaying this\r\n obligation.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default DebtToIncomeHelp;\r\n","import DebtToIncome from './debt-to-income';\r\n\r\nexport default DebtToIncome;\r\n\r\nexport {\r\n DebtToIncome\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Alert, Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport { useForm, useWatch } from 'react-hook-form';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { applicationState, configurationResponseState, gaDataLayerState } from '../../store/atoms';\r\nimport { DebtToIncomeModel, IncentiveFeatures } from '../../types';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { NumberFormatInput } from '../../components';\r\nimport { useCalculateIncome } from './hooks';\r\nimport DebtToIncomeHelp from './debt-to-income-help';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { iconError } from '../../assets/img';\r\nimport * as FullStory from '@fullstory/browser';\r\nimport './index.scss';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\n\r\nconst DebtToIncome = () => {\r\n const history = useHistory();\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const [nextEnabled, setNextEnabled] = useState(false);\r\n const [housingPaymentToCalculate, setHousingPaymentToCalculate] = useState(application.housingPayment || 0);\r\n const [showHelpNow, setShowHelpNow] = useState(false); \r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const [gaDataLayer, setGaDataLayer] = useRecoilState(gaDataLayerState);\r\n\r\n const validationSchema = Yup.object().shape({\r\n housingPayment: Yup.number()\r\n .required('Monthly Housing Payment is required')\r\n .typeError('You must specify a numeric value')\r\n .lessThan(1000000, 'Monthly Housing Payment must be less than $1,000,000')\r\n .default(() => application.housingPayment),\r\n annualIncome: Yup.number()\r\n .required('Annual Income is required')\r\n .typeError('You must specify a numeric value')\r\n .moreThan(0, \"Must be greater than $0.00\")\r\n .lessThan(1000000, 'Annual Income must be less than $1,000,000')\r\n .default(() => application.annualIncome),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { control, getValues, register, reset, setValue, formState: { errors, isValid } } =\r\n useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all'\r\n });\r\n\r\n const housingPayment = useWatch({ control, name: 'housingPayment' });\r\n const annualIncome = useWatch({ control, name: 'annualIncome' });\r\n const annualIncomeValidated = true; \r\n const { data: minimumIncomeAmount } = useCalculateIncome(housingPaymentToCalculate);\r\n\r\n const handleBlur = () => {\r\n const data: DebtToIncomeModel = getValues();\r\n \r\n setHousingPaymentToCalculate(housingPayment ?? 0);\r\n\r\n setApplication(current => ({\r\n ...current,\r\n ...data,\r\n }));\r\n }\r\n\r\n const handleNext = () => {\r\n const data: DebtToIncomeModel = getValues();\r\n\r\n if (data.annualIncome && data.housingPayment) {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('IncomeNext', { leadId: application.leadId });\r\n FullStory.event('HousingRentNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_IncomeNext', { leadId: application.leadId });\r\n FullStory.event('Plus_HousingRentNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_IncomeNext', { leadId: application.leadId });\r\n FullStory.event('Launch_HousingRentNext', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('IncomeNext', { leadId: application.leadId });\r\n FullStory.event('HousingRentNext', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (data.housingPayment) {\r\n setHousingPaymentToCalculate(data.housingPayment); \r\n }\r\n\r\n setApplication(current => ({\r\n ...current,\r\n ...data,\r\n }));\r\n\r\n const okToNavigate = isValid && data.housingPayment //&& data.minimumIncome \r\n && data.annualIncome;\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Get Options',\r\n 'est_housing_payment': data.housingPayment,\r\n 'total_yearly_income': data.annualIncome\r\n }\r\n\r\n setGaDataLayer(updateDataLayer);\r\n pushToDataLayer('application_step_2', updateDataLayer);\r\n \r\n if (okToNavigate) {\r\n history.push(routeHashes['/credit-line']);\r\n }\r\n }\r\n\r\n const resetForm = () => {\r\n const defaultState: DebtToIncomeModel = {\r\n housingPayment: undefined,\r\n annualIncome: undefined,\r\n annualIncomeValidated: false,\r\n };\r\n\r\n // @ts-ignore\r\n Object.keys(defaultState).forEach((x: any) => setValue(x, defaultState[x]));\r\n // need both this reset call and the setValue calls above\r\n reset(defaultState); \r\n\r\n // hack to run this after setValue(s) have propagated\r\n setTimeout(() => setApplication(current => ({\r\n ...current,\r\n ...defaultState,\r\n })), 100);\r\n }\r\n\r\n const handleEnter = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Enter')\r\n { \r\n // force validation for the control\r\n event.currentTarget.blur();\r\n \r\n event.preventDefault();\r\n }\r\n } \r\n\r\n useEffect(() => {\r\n \r\n if (!!application.housingPayment && application.housingPayment > 0 &&\r\n !!application.annualIncome && application.annualIncome > 0 &&\r\n !(!!errors.annualIncome || !!errors.annualIncomeValidated)) {\r\n setNextEnabled(true);\r\n } else {\r\n setNextEnabled(false);\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n annualIncome,\r\n annualIncomeValidated,\r\n housingPayment,\r\n application.housingPayment,\r\n errors.annualIncome,\r\n errors.annualIncomeValidated,\r\n errors.housingPayment,\r\n errors.minimumIncome,\r\n \r\n ]);\r\n\r\n if (isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(application.cardType), configurationResponse)) {\r\n return (\r\n <>\r\n setShowHelpNow(false)}\r\n HelpComponent={DebtToIncomeHelp}\r\n progress='30%'\r\n cardType={application.cardType}\r\n currentStep=\"3\"\r\n promo={true}\r\n showBasicInfoFooter={true}\r\n >\r\n \r\n \r\n
    \r\n
    \r\n

    Let's find your
    credit options.

    \r\n

    We need a little bit of financial information to give you our credit line recommendations.

    \r\n
    \r\n
    \r\n
    event.preventDefault()}>\r\n handleBlur()}\r\n onKeyPress={handleEnter}\r\n />\r\n {//application.housingPayment !== undefined && \r\n <> \r\n {//minimumIncomeAmount &&\r\n <>\r\n \r\n Please include all types of income, in addition to wages. \r\n
    \r\n setShowHelpNow(true)}\r\n >\r\n Learn More\r\n \r\n
    \r\n \r\n }\r\n aria-label='Yearly Income'\r\n value={annualIncome || ''}\r\n onChange={() => setValue('annualIncomeValidated', true)}\r\n onBlur={() => handleBlur()}\r\n onKeyDown={handleEnter}\r\n errors={errors}\r\n register={register}\r\n />\r\n {(!!minimumIncomeAmount && minimumIncomeAmount > 0 && \r\n !!annualIncome && annualIncome < minimumIncomeAmount) &&\r\n <>\r\n
    \r\n \r\n error\r\n Oops! It looks like you might be forgetting some of your Total Yearly Income \r\n \r\n
    \r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } \r\n else \r\n {\r\n return (\r\n setShowHelpNow(false)}\r\n HelpComponent={DebtToIncomeHelp}\r\n progress='30%'\r\n cardType={application.cardType}\r\n currentStep=\"3\"\r\n showBasicInfoFooter={true}\r\n >\r\n \r\n \r\n
    \r\n

    Let's find your available options.

    \r\n

    We need a little bit of financial information to give you our best credit line recommendations.

    \r\n
    \r\n
    event.preventDefault()}>\r\n handleBlur()}\r\n onKeyPress={handleEnter}\r\n />\r\n {//application.housingPayment !== undefined && \r\n <> \r\n {//minimumIncomeAmount &&\r\n <>\r\n \r\n Please include all types of income, in addition to wages. \r\n
    \r\n setShowHelpNow(true)}\r\n >\r\n Learn More\r\n \r\n
    \r\n \r\n }\r\n aria-label='Yearly Income'\r\n value={annualIncome || ''}\r\n onChange={() => setValue('annualIncomeValidated', true)}\r\n onBlur={() => handleBlur()}\r\n onKeyDown={handleEnter}\r\n errors={errors}\r\n register={register}\r\n />\r\n {(!!minimumIncomeAmount && minimumIncomeAmount > 0 && \r\n !!annualIncome && annualIncome < minimumIncomeAmount) &&\r\n <>\r\n
    \r\n \r\n error\r\n Oops! It looks like you might be forgetting some of your Total Yearly Income \r\n \r\n
    \r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n};\r\n\r\nexport default DebtToIncome;\r\n","import { selector } from 'recoil';\r\nimport { CheckApplicationResponse, ConfigurationResponse } from '../types';\r\nimport {\r\n applicationState,\r\n decisionsResponseState,\r\n responseCodeState,\r\n selectedApplicationIdState,\r\n configurationResponseState\r\n} from './atoms';\r\n\r\nexport const configurationResponse = selector({\r\n key: 'configurationResponse' ,\r\n get: ({ get }) => {\r\n const configurationResponse = get(configurationResponseState);\r\n return configurationResponse;\r\n }\r\n});\r\n\r\nexport const isLeadSubmitted = selector({\r\n key: 'isLeadSubmitted',\r\n get: ({ get }) => {\r\n const decisionsResponse = get(decisionsResponseState);\r\n const applicationId = get(selectedApplicationIdState);\r\n const responseCode = get(responseCodeState);\r\n\r\n return !!(applicationId || decisionsResponse || responseCode);\r\n }\r\n});\r\n\r\nexport const selectedApplicationResponse = selector({\r\n key: 'selectedApplication',\r\n get: ({ get }) => {\r\n const decisionsResponse = get(decisionsResponseState);\r\n const applicationId = get(selectedApplicationIdState);\r\n return decisionsResponse?.checkAppResponseList?.find(x => x.applicationID === applicationId);\r\n }\r\n});\r\n\r\nexport const emailExists = selector({\r\n key: 'emailExists',\r\n get: ({ get }) => {\r\n return !!get(applicationState).emailAddress;\r\n }\r\n});\r\n","import { useMutation } from 'react-query';\r\nimport { microserviceClient } from '../../api-clients';\r\nimport { DocumentSelection, GetApplicationsStatusResponse } from '../../types';\r\n\r\nexport type UploadDocumentsArgs = {\r\n leadId: string;\r\n applicationId: string;\r\n documentSelections: DocumentSelection[];\r\n};\r\n\r\nconst uploadDocuments = ({ leadId, applicationId, documentSelections }: UploadDocumentsArgs) => {\r\n const formData = new FormData();\r\n formData.append('ApplicationId', applicationId);\r\n formData.append('LeadId', leadId);\r\n \r\n let counter: number = 0;\r\n\r\n for (const documentSelection of documentSelections) { \r\n formData.append(`files[${counter}].Category`, documentSelection.category);\r\n formData.append(`files[${counter}].Name`, documentSelection.type);\r\n formData.append(`files[${counter}].File`, documentSelection.file!);\r\n counter++; \r\n } \r\n \r\n\r\n return microserviceClient.post(`/api/application/uploaddocuments`, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n};\r\n\r\nexport const useUploadDocuments = () => {\r\n return useMutation(\r\n uploadDocuments,\r\n {\r\n onError: (err, variables, context) => {\r\n console.log('Error uploading documents', err);\r\n },\r\n }\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { iconWarning } from '../../assets/img';\r\nimport './document-upload-fail.scss';\r\n\r\ntype DocumentUploadFailProps = {\r\n resetDocumentUpload: Function;\r\n};\r\n\r\nexport const DocumentUploadFail: FC = ({ resetDocumentUpload }) => {\r\n const onSubmit = () => {\r\n resetDocumentUpload();\r\n };\r\n\r\n return (\r\n
    \r\n {/* TODO: should all of these elements be centered/wrapped in the header div? */}\r\n \"warning\"\r\n
    \r\n

    Document upload was unsuccessful, please try again

    \r\n

    \r\n The file must be in the following formats and no larger than\r\n 10mb in size: .jpg, .jpeg, .png, .tif, or pdf\r\n

    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { applicationEmail, applicationProcessing } from '../../assets/img';\r\nimport ApplicationInfoStatus from '../../components/application-info-status';\r\n\r\nexport const DocumentsSubmitted: FC = () => {\r\n const onSubmit = () => {\r\n window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`;\r\n };\r\n\r\n return (\r\n \r\n

    \r\n Thank you for applying to OpenSky!\r\n

    \r\n

    \r\n We've successfully received your documents and will\r\n resume processing your application.\r\n

    \r\n \r\n }\r\n onNext={onSubmit}\r\n />\r\n );\r\n};\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { Loading } from '../../components';\r\nimport { DocumentSelection } from '../../types';\r\nimport { useUploadDocuments } from './hooks';\r\nimport { DocumentUploadFail } from './document-upload-fail';\r\nimport { DocumentsSubmitted } from './documents-submitted';\r\n\r\ntype DocumentUploadProps = {\r\n leadId: string;\r\n applicationId: string;\r\n documentSelections: DocumentSelection[];\r\n resetDocumentUpload: Function;\r\n};\r\n\r\nexport const DocumentUpload: FC = ({ leadId, applicationId, documentSelections, resetDocumentUpload }) => {\r\n const [isSuccess, setIsSuccess] = useState();\r\n const [isFail, setIsFail] = useState();\r\n\r\n const uploadDocumentsMutation = useUploadDocuments();\r\n\r\n useEffect(() => {\r\n uploadDocumentsMutation.mutate({ leadId, applicationId, documentSelections }, {\r\n onSuccess: (response) => {\r\n setIsSuccess(true);\r\n },\r\n onError: (error: any) => {\r\n setIsFail(true);\r\n },\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [documentSelections]);\r\n\r\n /* TODO: should this Loading element be centered? */\r\n return ( \r\n \r\n {isSuccess && }\r\n\r\n {isFail &&\r\n \r\n }\r\n \r\n );\r\n};\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { Button, Form } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport { selectedApplicationResponse } from '../../store/selectors';\r\nimport { PhotoDocumentUpload, SelectDropdown } from '../../components';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { DocumentUpload } from './document-upload';\r\nimport { DocumentSelection as DocumentSelectionType, DocumentSelectionModel, RequiredDocumentOptions } from '../../types';\r\nimport './document-selection.scss';\r\n\r\nconst DocumentSelection: FC = () => {\r\n const [documentSelections, setDocumentSelections] = useState();\r\n const [showUploadStatus, setShowUploadStatus] = useState(false);\r\n const [requiredDocumentOptions, setRequiredDocumentOptions] = useState([]);\r\n const applicationResponse = useRecoilValue(selectedApplicationResponse);\r\n\r\n useEffect(() => {\r\n const docsRequired: RequiredDocumentOptions[] = [];\r\n\r\n if (applicationResponse?.responseObjects.doC_AddressYN) {\r\n docsRequired.push({\r\n label: 'Address',\r\n documentTypeOptions: [\r\n 'Valid Driver\\'s license',\r\n 'Valid State Issue ID',\r\n 'Utility Bill from last 6 months',\r\n 'Last Paycheck Stub',\r\n 'Most recent W2',\r\n 'Most recent Bank statement',\r\n ],\r\n })\r\n }\r\n if (applicationResponse?.responseObjects.doC_SsnYN) {\r\n docsRequired.push({\r\n label: 'Social Security Number',\r\n documentTypeOptions: [\r\n 'Social Security Card',\r\n ],\r\n })\r\n }\r\n if (applicationResponse?.responseObjects.doC_DobYN) {\r\n docsRequired.push({\r\n label: 'Date of Birth',\r\n documentTypeOptions: [\r\n 'Valid Driver\\'s license',\r\n 'Valid State Issue ID',\r\n 'Passport',\r\n 'Birth Certificate',\r\n ],\r\n })\r\n }\r\n if (applicationResponse?.responseObjects.doC_IncomeYN) {\r\n docsRequired.push({\r\n label: 'Income',\r\n documentTypeOptions: [\r\n 'Last Paycheck Stub',\r\n 'Most recent W2',\r\n 'Most recent Bank statement',\r\n ],\r\n })\r\n }\r\n if (applicationResponse?.responseObjects.doC_NameYN) {\r\n docsRequired.push({\r\n label: 'Name',\r\n documentTypeOptions: [\r\n 'Valid Driver\\'s license',\r\n 'Valid State Issue ID',\r\n 'Passport',\r\n 'Marriage Certificate',\r\n ],\r\n })\r\n }\r\n if (applicationResponse?.responseObjects.doC_ItinYN) {\r\n docsRequired.push({\r\n label: 'Individual Taxpayer Identification Number',\r\n documentTypeOptions: [\r\n 'ITIN Letter',\r\n ],\r\n })\r\n }\r\n\r\n setRequiredDocumentOptions(docsRequired);\r\n }, [applicationResponse]);\r\n\r\n const validationSchema = Yup.object().shape({\r\n documentSelections: Yup.array()\r\n .of(\r\n Yup.object().shape({\r\n type: Yup.string().required('Document Type is Required'),\r\n fileList: Yup.mixed()\r\n .test(\r\n 'has-files',\r\n 'File is Required',\r\n (value) => value?.length > 0\r\n )\r\n .required('File is required'),\r\n })\r\n ),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const {\r\n register,\r\n handleSubmit,\r\n setValue,\r\n formState: { errors, isValid },\r\n watch,\r\n trigger,\r\n } = useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all',\r\n });\r\n\r\n const watchDropdowns = requiredDocumentOptions.map((value, index) => {\r\n return watch(`documentSelections.${index}.type`);\r\n });\r\n\r\n const onSubmit = async (event: DocumentSelectionModel) => {\r\n setDocumentSelections(\r\n event?.documentSelections?.map((value) => {\r\n const nameTokens = value.type.split('_');\r\n return {\r\n category: nameTokens[0],\r\n type: nameTokens[1],\r\n file: value.fileList?.[0],\r\n }\r\n }),\r\n );\r\n\r\n setShowUploadStatus(true);\r\n };\r\n\r\n const handleSelectChange = (index: number, value: string) => {\r\n if (!value.length) {\r\n handleFileClear(index);\r\n }\r\n };\r\n\r\n const handleFileClear = (index: number) => {\r\n // ** TODO: fix\r\n // setApplication((current) => {\r\n // return {\r\n // ...current,\r\n // documentSelections: current?.documentSelections?.map(\r\n // (value, valueIndex) =>\r\n // valueIndex === index ? { type: value.type } : value\r\n // ),\r\n // };\r\n // });\r\n setValue(`documentSelections.${index}.file`, undefined);\r\n setValue(`documentSelections.${index}.fileList`, undefined);\r\n trigger();\r\n };\r\n\r\n const resetDocumentUpload = () => {\r\n if (documentSelections) {\r\n for (let i = 0; i < documentSelections.length; i++) {\r\n handleFileClear(i);\r\n setValue(`documentSelections.${i}.type`, '');\r\n };\r\n };\r\n setShowUploadStatus(false);\r\n };\r\n\r\n return (\r\n \r\n {showUploadStatus ? (\r\n \r\n ) : (\r\n
    \r\n
    \r\n

    \r\n Please provide documents to help us verify your identity\r\n

    \r\n

    \r\n Provide one document for each category below. Images\r\n must be in color and in focus.\r\n

    \r\n
    \r\n
    \r\n {requiredDocumentOptions.map((document, index) => (\r\n // \r\n
    \r\n {document.label}\r\n ({\r\n label: option,\r\n value: `${document.label}_${option}`,\r\n })\r\n )}\r\n register={register}\r\n setValue={setValue}\r\n onChange={(value) =>\r\n handleSelectChange(index, value)\r\n }\r\n />\r\n {!!watchDropdowns?.[index]?.length && (\r\n handleFileClear(index)}\r\n errors={errors as any}\r\n />\r\n )}\r\n {index !== requiredDocumentOptions.length - 1 && (\r\n
    \r\n )}\r\n
    \r\n //
    \r\n ))}\r\n \r\n \r\n Submit for Review\r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentSelection;\r\n","import ErrorPage from './error-page';\r\n\r\nexport default ErrorPage;\r\n\r\nexport {\r\n ErrorPage\r\n}\r\n","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Button, Row } from 'react-bootstrap';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { iconWarning } from '../../assets/img';\r\nimport { ErrorPageProps } from '../../types';\r\n\r\nconst ErrorPage: React.FC = (props) => {\r\n const { title, message, help, navigateTo, navigationState, buttonText, errorIcon } = props;\r\n const history = useHistory();\r\n\r\n const tryAgain = () => {\r\n if (navigateTo.toLowerCase().startsWith('http')) {\r\n window.location.href = navigateTo;\r\n } else {\r\n history.replace(navigateTo, navigationState);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
    \r\n error\r\n {/* TODO: should the img be centered? */}\r\n
    \r\n

    {title}

    \r\n {message &&

    {message}

    }\r\n {help &&

    {help}

    }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ErrorPage;\r\n","import { useMutation, useQuery } from 'react-query';\r\nimport { microserviceClient } from '../../api-clients';\r\nimport { MakePaymentRequest, MakePaymentResponse, GetApplicationsStatusResponse } from '../../types';\r\nimport { queryKeys } from '../../utils/constants';\r\n\r\n\r\nexport type MakePaymentArgs = {\r\n applicationId: string;\r\n payload: MakePaymentRequest;\r\n};\r\n\r\nconst makePayment = ({ applicationId, payload }: MakePaymentArgs) => \r\n microserviceClient.post(`/api/application/${applicationId}/makePayment`, payload);\r\n\r\nexport const useMakePayment = () => {\r\n return useMutation(\r\n makePayment,\r\n {\r\n onError: (err, variables, context) => {\r\n console.log('Error submitting payment', err);\r\n },\r\n }\r\n );\r\n};\r\n\r\n// Due to an error in Decisions a new endpoint was created to specificially get the application payment history\r\n// This follows the same pattern as the traditional getApplicationStatus however.\r\nconst getApplicationsPaymentStatus = async (applicationId: string): Promise => {\r\n const response = await microserviceClient.get(`/api/application/${applicationId}/getApplicationPaymentStatus`);\r\n\r\n return response.data;\r\n};\r\n\r\nexport const useGetApplicationsPaymentStatus = (applicationId?: string) => {\r\n return useQuery(\r\n [...queryKeys.getApplicationPaymentStatus],\r\n () => getApplicationsPaymentStatus(applicationId!),\r\n {\r\n staleTime: Infinity,\r\n cacheTime: Infinity,\r\n retry: false,\r\n enabled: !!applicationId,\r\n }\r\n )\r\n}\r\n\r\n","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\nimport { iconMastercard, iconVisa } from '../../assets/img';\r\n\r\nconst FundingSourceHelp = () => {\r\n return (\r\n \r\n \r\n Funding Source Help\r\n \r\n \r\n \r\n Using your debit card is the most convenient way to fund your security deposit which \r\n equals your credit line amount. By submitting your application you are authorizing OpenSky \r\n to process the full security deposit, placing an immediate hold on the funds selected as \r\n your credit line. If your application is not approved, your funds will be posted back to \r\n your account within 5 days. \r\n \r\n \r\n \r\n Accept Debit Cards\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default FundingSourceHelp;\r\n","import React, { FC } from 'react';\r\nimport { Row, Col, Button } from 'react-bootstrap';\r\nimport { iconCircleCheckMark } from '../../assets/img';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport './index.scss';\r\n\r\nexport type PartialPaymentProps = {\r\n paymentAmount: number;\r\n partialAmount: number;\r\n remainder: number;\r\n daysToFund: number;\r\n onNext: () => void;\r\n};\r\n\r\nconst PartialPayment: FC = ({\r\n paymentAmount,\r\n partialAmount,\r\n remainder,\r\n daysToFund,\r\n onNext,\r\n}) => {\r\n const onSubmit = () => {\r\n onNext();\r\n };\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n \"\"\r\n \r\n \r\n \r\n \r\n

    \r\n Your OpenSky account was successfully funded with $\r\n {paymentAmount}{' '}\r\n

    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n

    Security Deposit Received

    \r\n

    ${partialAmount}

    \r\n
    \r\n
    \r\n
    \r\n \r\n

    Security Deposit Remaining

    \r\n

    ${remainder}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n You have {daysToFund} days left to fund your outstanding\r\n security deposit amount.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PartialPayment;\r\n","import React from 'react';\r\nimport '../process-application/process-application.scss'\r\nimport { LandingPageLayout } from '../../layouts';\r\n\r\nconst PaymentProcessing = () => {\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Please wait as we process your payment

    \r\n

    Shouldn't be long, please keep this page open.

    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\nexport default PaymentProcessing;\r\n","import React from 'react';\r\n// import { Alert } from 'react-bootstrap';\r\n// import { iconError } from '../../../assets/img';\r\n\r\nconst FundingError = () => {\r\n return (\r\n <>\r\n {/*\r\n // old Alert here\r\n \r\n \r\n \r\n An error has occurred \r\n \r\n \r\n */}\r\n

    Let's double check your funding info

    \r\n

    \r\n We were unable to process your card payment. The information\r\n you provided was not verified by your bank.\r\n

    \r\n \r\n );\r\n};\r\n\r\nexport default FundingError;\r\n","import React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\nimport { iconError } from '../../../assets/img';\r\n\r\nconst FundingErrorAlert = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n An error has occurred! We were unable to process your card payment. The information you provided was not verified by your bank. Please review your billing and card information for accuracy.\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FundingErrorAlert;\r\n","import React, { FC } from 'react';\r\nimport { Card, Form } from 'react-bootstrap';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { checkAppState, configurationResponseState, downsellState, } from '../../../store/atoms';\r\nimport { creditcard, creditcardPlusNoRibbon } from '../../../assets/img';\r\nimport { CardInfo, PromotionSpecific } from '../../../components';\r\nimport { IncentiveFeatures, IncentiveResponse } from '../../../types'; \r\nimport { isIncentiveFeatureActive, getPrn, getDetailFromIncentive, getIncentive } from '../../../utils/incentives';\r\nimport { debuglog } from '../../../utils/debug';\r\n\r\ninterface IFundingHeaderProps {\r\n fundWithDebit?: boolean;\r\n amount?: number;\r\n daysLeft?: number;\r\n fundToday: boolean;\r\n changeFundTodayStatus: any;\r\n showSlider?: boolean;\r\n appliedIncentive?: IncentiveResponse;\r\n creditLimit?: number;\r\n cardType?: string;\r\n}\r\n\r\nconst FundWithoutDebit = () => {\r\n return (\r\n
    \r\n

    Let's fund your
    pre-approved* card

    \r\n

    \r\n To complete your application,
    we need you to add a funding\r\n source.\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nconst FundWithDebit: FC<{ daysLeft?: number }> = ({ daysLeft }) => {\r\n return (\r\n
    \r\n

    Fund your OpenSky card

    \r\n

    \r\n Fund your security deposit to receive your OpenSky card in the\r\n mail. You have {daysLeft ?? 60} days left to fund.\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nconst FundLaunch = () => {\r\n return (\r\n
    \r\n

    Let's fund your
    new OpenSky
    Launch Visa®

    \r\n

    \r\n We just need a debit card to fund your
    card's refundable security deposit.\r\n

    \r\n
    \r\n );\r\n}\r\n\r\nconst FundingHeader: FC = ({\r\n fundWithDebit,\r\n amount,\r\n daysLeft,\r\n fundToday,\r\n changeFundTodayStatus,\r\n showSlider,\r\n appliedIncentive,\r\n creditLimit,\r\n cardType,\r\n}) => {\r\n const isCheckApp = useRecoilValue(checkAppState);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const downsell = useRecoilValue(downsellState);\r\n const showBasedOnCardType = cardType ?? 'none';\r\n\r\n debuglog('Funding-header-amt', amount);\r\n debuglog('Funding-header-card-type:', showBasedOnCardType);\r\n\r\n const getFundingHeaderCardClass = () => {\r\n debuglog('getFundingHeaderCardClass configurationResponse.incentiveName', configurationResponse?.incentiveName);\r\n if (isIncentiveFeatureActive(IncentiveFeatures.DepositReductionAmount, getPrn(showBasedOnCardType), configurationResponse)) {\r\n debuglog(\"getFundingHeaderCardClass is \" + IncentiveFeatures.DepositReductionAmount);\r\n return (!isCheckApp || (isCheckApp && fundToday))\r\n ? 'promo-border payment'\r\n : 'promo-border payment disabled';\r\n }\r\n else if (isIncentiveFeatureActive(IncentiveFeatures.MinimumDepositAmount, getPrn(showBasedOnCardType), configurationResponse)) {\r\n debuglog(\"getFundingHeaderCardClass is \" + IncentiveFeatures.MinimumDepositAmount);\r\n return (!isCheckApp || (isCheckApp && fundToday))\r\n ? 'promo-border payment'\r\n : 'promo-border payment disabled';\r\n }\r\n // else if (isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(showBasedOnCardType), configurationResponse)) {\r\n // // return (!isCheckApp || (isCheckApp && fundToday))\r\n // // ? 'thick-black-border payment'\r\n // // : 'thick-black-border payment disabled'\r\n // return (!isCheckApp || (isCheckApp && fundToday))\r\n // ? 'promo-border payment'\r\n // : 'promo-border payment disabled';\r\n // }\r\n else {\r\n debuglog(\"getFundingHeaderCardClass fallback against \");\r\n return (!isCheckApp || (isCheckApp && fundToday))\r\n ? 'promo-border payment'\r\n : 'promo-border payment disabled';\r\n // ? 'gradient-border payment'\r\n // : 'gradient-border payment disabled';\r\n }\r\n };\r\n const getPromotionValueDepositReduction = (incentive: IncentiveResponse | undefined, amount: number | undefined) => {\r\n debuglog('getPromotionValueDepositReduction incentive:', incentive); \r\n debuglog('getPromotionValueDepositReduction amount:', amount); \r\n\r\n if (incentive && amount) {\r\n const depositReductionIncentive = getDetailFromIncentive(IncentiveFeatures.DepositReductionAmount, incentive!);\r\n debuglog('depositReductionIncentive', depositReductionIncentive);\r\n \r\n let calculatedValue = (amount - Number(depositReductionIncentive?.value));\r\n debuglog('calculatedValue', calculatedValue);\r\n\r\n return Number(depositReductionIncentive?.value);\r\n } else {\r\n const incentive = getIncentive(IncentiveFeatures.DepositReductionAmount, getPrn(showBasedOnCardType), configurationResponse);\r\n if (incentive && incentive.incentiveDetails.length > 0) {\r\n return Number(incentive.incentiveDetails[0].value);\r\n }\r\n\r\n debuglog(\"ERROR: Should never not have incentive details when incentive already determined.\");\r\n return undefined;\r\n }\r\n };\r\n\r\n debuglog('funding-header incentive:', appliedIncentive);\r\n debuglog('app-amt', amount);\r\n\r\n return (\r\n <>\r\n {downsell ? (\r\n \r\n ) : fundWithDebit ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n {(showBasedOnCardType === 'launch') ? (\r\n <>\r\n \r\n \r\n ) : (\r\n \r\n {(showBasedOnCardType === 'basic' && !isCheckApp) && (\r\n \r\n
     Save ${getPromotionValueDepositReduction(appliedIncentive, amount)}** 
    \r\n \r\n )}\r\n \r\n \"\"\r\n
    \r\n

    ${amount ?? 0}

    \r\n

    Credit Line

    \r\n
    \r\n \r\n \r\n {(!appliedIncentive) && !isCheckApp && ((true || isIncentiveFeatureActive(IncentiveFeatures.Any, getPrn(showBasedOnCardType), configurationResponse)) && (\r\n <>\r\n \r\n \r\n
    With a refundable security deposit of ${(amount! - \r\n (getPromotionValueDepositReduction(appliedIncentive!, amount!) ?? 0)).toString()}
    \r\n \r\n \r\n
    With a refundable security deposit of ${amount}
    \r\n \r\n \r\n
    With a refundable security deposit of ${amount}
    \r\n \r\n
    \r\n \r\n ) \r\n )}\r\n \r\n {(!!showSlider) && (\r\n <>\r\n {/* TODO: delete this */}\r\n \r\n \r\n
    \r\n I'm ready to fully fund my card today\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default FundingHeader;\r\n","import React, { FC, useState } from 'react';\r\nimport { Card, Col, Row } from 'react-bootstrap';\r\nimport { FieldErrorsImpl, UseFormRegister } from 'react-hook-form';\r\nimport { NumberFormatValues } from 'react-number-format';\r\nimport { NumberFormatInput } from '../../../components';\r\n\r\nexport type PartialFundingVariationProps = {\r\n fullyFund?: boolean;\r\n remainder?: number;\r\n received?: number;\r\n onValueChange?: (newValue: number) => void;\r\n register?: UseFormRegister;\r\n errors?: FieldErrorsImpl;\r\n};\r\n\r\nconst PartialFundingVariation: FC = ({ fullyFund, received, remainder, onValueChange, register, errors }) => {\r\n const handleOnChange = (values: NumberFormatValues) => {\r\n onValueChange && onValueChange(parseInt(values.value?.trim() || '0'));\r\n };\r\n\r\n const [fundingClass, setFundingClass] = useState('gradient-border partial-funding');\r\n const onFundingLostFocus = () => {\r\n setFundingClass('gray-border partial-funding');\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Your Funding Balance\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n

    Security Deposit Received

    \r\n

    ${received ?? 0}

    \r\n
    \r\n \r\n

    \r\n Security Deposit Remaining\r\n

    \r\n

    ${remainder ?? 0}

    \r\n
    \r\n
    \r\n
    \r\n {fullyFund ? (\r\n
    \r\n \r\n

    \r\n Amount you are funding today\r\n

    \r\n

    ${remainder ?? 0}

    \r\n
    \r\n
    \r\n ) : (\r\n 25\r\n ? `Fund any amount from $${Math.min(25, remainder ?? 0)} to $${remainder ?? 0} for your account's security deposit.`\r\n : `Fund $${remainder} for your account's security deposit.`\r\n }\r\n aria-label=\"Credit line amount\"\r\n onValueChange={handleOnChange}\r\n onBlur={onFundingLostFocus}\r\n />\r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n };\r\n\r\nexport default PartialFundingVariation;\r\n","import React, { FC, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport valid from 'card-validator'; //import statement\r\nimport { useMakePayment, useGetApplicationsPaymentStatus } from './hooks';\r\nimport { useProcessResponseCode } from '../../hooks';\r\nimport { AddressForm, NumberFormatInput, TextInput, PromotionSpecific } from '../../components';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport {\r\n applicationState,\r\n selectedApplicationIdState,\r\n sendCheckAppStatusOtpRequestState,\r\n decisionsResponseState,\r\n responseCodeState,\r\n paymentSucceededState,\r\n checkAppState,\r\n configurationResponseState,\r\n gaDataLayerState,\r\n downsellState,\r\n downsellSourcesState,\r\n} from '../../store/atoms';\r\nimport { \r\n ErrorPageProps, \r\n FundingEvent, \r\n FundingSourceModel, \r\n MakePaymentRequest, \r\n MakePaymentResponse, \r\n ResponseCodes, \r\n IncentiveFeatures \r\n} from '../../types'; \r\nimport FundingSourceHelp from './funding-source-help';\r\nimport PartialPayment from './partial-payment';\r\nimport PaymentProcessing from './payment-processing';\r\nimport {\r\n FundingError,\r\n FundingErrorAlert,\r\n FundingHeader,\r\n PartialFundingVariation,\r\n} from './variations';\r\nimport { isValidName, invalidNameCharacters, zipCodePattern } from '../../utils/validations';\r\nimport { checkForUnauthorized, routeHashes } from '../../app-routes';\r\nimport * as FullStory from '@fullstory/browser';\r\nimport { iconMastercard, iconVisa } from '../../assets/img';\r\nimport { debuglog } from '../../utils/debug';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport { CardTypes } from '../../utils/constants';\r\n\r\nconst FundingSource: FC = () => {\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const responseCode = useRecoilValue(responseCodeState);\r\n const decisionsResponse = useRecoilValue(decisionsResponseState);\r\n const applicationId = useRecoilValue(selectedApplicationIdState);\r\n const sendCheckAppStatusOtpRequest = useRecoilValue(sendCheckAppStatusOtpRequestState);\r\n const [fundToday, setFundToday] = useState(application.fundToday ?? true);\r\n const [toggleForm, setToggleForm] = useState(false);\r\n const [isError, setIsError] = useState();\r\n const [fundWithDebit, setFundWithDebit] = useState();\r\n const [remainder, setRemainder] = useState();\r\n const [partialAmount, setPartialAmount] = useState();\r\n const [amount, setAmount] = useState();\r\n const [daysLeftToFund, setDaysLeftToFund] = useState();\r\n const [responseCodeToProcess, setResponseCodeToProcess] = useState();\r\n const [fundingResponse, setFundingResponse] = useState();\r\n const [fundingAmount, setFundingAmount] = useState(0);\r\n const [paymentSucceeded, setPaymentSucceeded] = useRecoilState(paymentSucceededState);\r\n const isCheckApp = useRecoilValue(checkAppState);\r\n const [debounceActive, setDebounceActive] = useState(false);\r\n const debitCardRef = useRef(null);\r\n const [showCardValidationError, setShowCardValidationError] = useState(false);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const [promoValue, setPromoValue] = useState();\r\n const [gaDataLayer, setGaDataLayer] = useRecoilState(gaDataLayerState);\r\n const downsell = useRecoilValue(downsellState);\r\n const downsellSources = useRecoilValue(downsellSourcesState);\r\n\r\n // TODO: since the fundToday button has moved, this can be deleted?\r\n const changeFundTodayStatus = (event: any) => {\r\n setApplication((current) => ({\r\n ...current,\r\n ...{ fundToday: !!event.target.checked },\r\n }));\r\n setFundToday(!!event.target.checked);\r\n }\r\n\r\n const paymentFailureResponseCodes = [\r\n ResponseCodes.FundFailure,\r\n ResponseCodes.FundFailureFinal \r\n ];\r\n\r\n const history = useHistory();\r\n const makePaymentMutation = useMakePayment();\r\n const { data: getApplicationsPaymentStatus } = useGetApplicationsPaymentStatus(applicationId); \r\n\r\n const selectedApplication = decisionsResponse?.checkAppResponseList?.filter(app => app.applicationID === applicationId).find(a=>a!==undefined);\r\n // eslint-disable-next-line no-self-compare\r\n const showPartialPaymentInput = !!(fundWithDebit && !fundToday && (remainder ?? 0 > 0));\r\n // eslint-disable-next-line no-self-compare\r\n const showPartialPaymentSummary = !!(fundWithDebit && (partialAmount ?? 0 > 0) && (remainder ?? 0 > 0));\r\n\r\n const handleRedirect = () => {\r\n debuglog('redirecting');\r\n debuglog('===fundToday-is', fundToday);\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Funding Source',\r\n 'card_fund_selection': fundToday ? 'fund_now' : 'fund_later'\r\n }\r\n\r\n setGaDataLayer(updateDataLayer);\r\n\r\n pushToDataLayer('application_step_7', updateDataLayer);\r\n\r\n setApplication((current) => ({\r\n ...current,\r\n ...{ fundToday: fundToday },\r\n }));\r\n\r\n if(downsellSources.includes(application.cardType as CardTypes)){\r\n history.push(routeHashes['/launch-downsell']);\r\n }\r\n else{\r\n history.push(routeHashes['/credit-line-fund-later']);\r\n }\r\n }\r\n\r\n // process response code and redirect\r\n useProcessResponseCode(responseCodeToProcess);\r\n\r\n const validationSchema = Yup.object().shape({\r\n amount: Yup.number()\r\n .when('showPartialPaymentInput', {\r\n is: true,\r\n then: Yup.number()\r\n .required('Credit line amount is required')\r\n .typeError('You must specify a numeric value')\r\n .min(Math.min(25, remainder ?? 0), `Amount must be at least $${Math.min(25, remainder ?? 0)}`)\r\n .max(remainder ?? 1000, `Amount must be at most $${remainder ?? 1000}`)\r\n .default(amount),\r\n }),\r\n cardHolderFirstName: Yup.string()\r\n .required('First Name is required')\r\n .test(\r\n 'contains-alpha-characters-firstname',\r\n `First Name should only contain alphabetical characters.`,\r\n (value) => isValidName(value)\r\n ),\r\n cardHolderLastName: Yup.string() \r\n .required('Last Name is required.')\r\n .test(\r\n 'contains-alpha-characters-lastname',\r\n `Last Name should only contain alphabetical characters.`,\r\n (value) => isValidName(value)\r\n ),\r\n cardNumber: Yup.string()\r\n .test(\r\n 'test-credit-card-number',\r\n 'Card number is invalid',\r\n (value) => valid.number(value).isValid\r\n )\r\n .test(\r\n 'test-credit-card-type',\r\n 'Debit Card must be Visa or MasterCard',\r\n (value) =>\r\n valid.number(value).card?.type === 'visa' ||\r\n valid.number(value).card?.type === 'mastercard'\r\n )\r\n .required('Card number is required'),\r\n cardExpiration: Yup.string()\r\n .test(\r\n 'test-expiration',\r\n 'Expiration is invalid',\r\n (value) => valid.expirationDate(value).isValid\r\n )\r\n .required('Expiration date is required'),\r\n cardSecurityCode: Yup.string()\r\n .test(\r\n 'test-cvv',\r\n 'CVV code is invalid',\r\n (value) => valid.cvv(value).isValid\r\n )\r\n .required('Security code is required'),\r\n bankingAddress: Yup.object().shape({\r\n addressLine1: Yup.string()\r\n .required('Please enter a street address')\r\n .max(50, 'Total Exceeds Maximum Characters'),\r\n city: Yup.string()\r\n .required('City is required')\r\n .max(18),\r\n state: Yup.string()\r\n .required('State is required'),\r\n zipCode: Yup.string()\r\n .required('Zip Code is required')\r\n .min(5, 'Zip Code is required')\r\n .max(10, 'Zip Code is required')\r\n .test(\r\n 'zipcode',\r\n 'Zip Code is required',\r\n (value) => value !== ''\r\n ) \r\n .matches(zipCodePattern, 'Must be a U.S. Zip Code')\r\n .test('first-five-valid-range', 'Must be a U.S. Zip Code', \r\n (value) => { \r\n let zipCodeValue = parseInt((value ?? '0').substring(0,5)); \r\n return zipCodeValue > 500 && zipCodeValue < 99951; \r\n }),\r\n addressLine2: Yup.string()\r\n .max(10),\r\n }),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const {\r\n handleSubmit,\r\n register,\r\n reset,\r\n setValue,\r\n trigger,\r\n watch,\r\n formState: { errors, isValid },\r\n } = useForm({\r\n ...formOptions,\r\n defaultValues: useMemo(() => ({\r\n cardHolderFirstName: application?.cardHolderFirstName,\r\n cardHolderLastName: application?.cardHolderLastName,\r\n cardNumber: application?.cardNumber,\r\n cardExpiration: application?.cardExpiration,\r\n cardSecurityCode: application?.cardSecurityCode,\r\n bankingAddress: {\r\n addressLine1: application?.bankingAddress?.addressLine1,\r\n city: application?.bankingAddress?.city,\r\n state: application?.bankingAddress?.state,\r\n zipCode: application?.bankingAddress?.zipCode,\r\n addressLine2: application?.bankingAddress?.addressLine2,\r\n },\r\n showPartialPaymentInput,\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }), [showPartialPaymentInput]),\r\n mode: 'all',\r\n });\r\n\r\n const amountWatch = watch('amount');\r\n\r\n useEffect(() => {\r\n reset({\r\n showPartialPaymentInput,\r\n });\r\n trigger();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [showPartialPaymentInput]);\r\n\r\n useEffect(() => {\r\n if (isError && isValid) {\r\n setShowCardValidationError(false);\r\n } else if (isError && !isValid) {\r\n setShowCardValidationError(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isValid]);\r\n\r\n const resetForm = () => {\r\n setToggleForm(true);\r\n\r\n const defaultState: FundingSourceModel = {\r\n cardHolderFirstName: '',\r\n cardHolderLastName: '',\r\n cardNumber: '',\r\n cardExpiration: '',\r\n cardSecurityCode: '',\r\n bankingAddress: undefined,\r\n };\r\n\r\n // @ts-ignore\r\n Object.keys(defaultState).forEach((x: any) => setValue(x, defaultState[x]));\r\n // need both this reset call and the setValue calls above\r\n reset(defaultState); \r\n trigger();\r\n\r\n // hack to run this after setValue(s) have propagated\r\n setTimeout(() => {\r\n setApplication(current => ({\r\n ...current,\r\n ...defaultState,\r\n }));\r\n setToggleForm(false);\r\n }, 100);\r\n }\r\n\r\n useEffect(() => { \r\n if ((!showPartialPaymentInput && !showPartialPaymentSummary) && !fundToday) { \r\n resetForm();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [amountWatch, fundToday]);\r\n\r\n useEffect(() => {\r\n // need this additional trigger or we get validation errors on load if existing data\r\n trigger();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const isErrorResponseCode = responseCode === ResponseCodes.FundFailure;\r\n setIsError(isErrorResponseCode);\r\n if (isErrorResponseCode) {\r\n resetForm();\r\n setShowCardValidationError(true);\r\n setTimeout(() => {\r\n debitCardRef.current?.scrollIntoView({ behavior: 'smooth' });\r\n }, 2);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [responseCode]);\r\n\r\n useEffect(() => {\r\n const isErrorResponseCode = responseCode === ResponseCodes.FundFailure;\r\n let fundingHistory: FundingEvent[] | undefined = decisionsResponse?.fundingHistory ?? [];\r\n let selectedAppCreditLimit = selectedApplication?.responseObjects?.creditLimit ?? undefined;\r\n\r\n if (getApplicationsPaymentStatus && decisionsResponse){ \r\n fundingHistory = getApplicationsPaymentStatus?.done?.fundingHistory ?? [];\r\n }\r\n debuglog('fundingHistory', fundingHistory);\r\n\r\n debuglog('decisionsResponse', decisionsResponse);\r\n\r\n if (decisionsResponse) {\r\n const funded = fundingHistory?.map(x => x.amountReceived)?.reduce((total, current) => total + current, 0) ?? 0; \r\n debuglog('Current Balance:', decisionsResponse.currentBalance);\r\n const incentiveAddOn = decisionsResponse.incentiveValue ?? 0;\r\n let currentBalance: number = decisionsResponse.currentBalance ?? funded + incentiveAddOn;\r\n debuglog('incentiveAddOn:', incentiveAddOn);\r\n setDaysLeftToFund(getApplicationsPaymentStatus?.done?.daysLeftToFund ?? decisionsResponse.daysLeftToFund);\r\n setAmount(selectedAppCreditLimit ?? decisionsResponse.creditLimit);\r\n setPartialAmount(currentBalance);\r\n setRemainder((selectedAppCreditLimit ?? decisionsResponse.creditLimit) - currentBalance);\r\n setFundWithDebit(!isErrorResponseCode && ((selectedAppCreditLimit ?? decisionsResponse.creditLimit) > currentBalance));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [decisionsResponse, responseCode, getApplicationsPaymentStatus, applicationId, remainder]);\r\n\r\n useEffect(() => { \r\n if (paymentSucceeded) {\r\n history.replace(routeHashes['/error'], {\r\n title: 'Oops, your payment was already submitted.',\r\n buttonText: 'Ok, Got it',\r\n navigateTo: process.env.REACT_APP_HOMEPAGE_URL,\r\n } as ErrorPageProps);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const onNext = () => {\r\n // Used when processing partial payment. \r\n window.location.href = `${process.env.REACT_APP_HOMEPAGE_URL}`;\r\n }\r\n\r\n const onToggleFundToday = (newValue: boolean) => {\r\n // NOTE: toggle fundToday\r\n setFundToday(newValue);\r\n\r\n debuglog('========setting fund today to', newValue);\r\n trigger(); \r\n }\r\n\r\n const onSubmit = async (event: FundingSourceModel) => { \r\n if (debounceActive) \r\n return;\r\n\r\n debuglog('======funding-source-fund-today', fundToday);\r\n setFundToday(fundToday);\r\n\r\n setDebounceActive(true);\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Funding Source',\r\n 'card_fund_selection': fundToday ? 'fund_now' : 'fund_later'\r\n }\r\n\r\n setGaDataLayer(updateDataLayer);\r\n\r\n pushToDataLayer('application_step_7', updateDataLayer);\r\n\r\n if (isError) {\r\n // error in lead submission\r\n setApplication((current) => ({\r\n ...current,\r\n ...event,\r\n }));\r\n\r\n history.push(routeHashes['/submit-application']);\r\n } else if (application?.emailAddress && !responseCode) {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('FundingSourceNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_FundingSourceNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_FundingSourceNext', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('FundingSourceNext', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n\r\n // initial funding source collection\r\n setApplication((current) => ({\r\n ...current,\r\n ...event,\r\n ...{ fundToday: true },\r\n }));\r\n\r\n //Forward Credit-Line-Confirm & funding section to end of process\r\n history.push(routeHashes['/terms-and-conditions']);\r\n } else {\r\n // fund card after lead submission (fund later)\r\n const payload: MakePaymentRequest = {\r\n /* TODO: Check if the billing address name is where the name is transmitted on the back end */\r\n // cardHolderFirstName: event.cardHolderFirstName!, \r\n // cardHolderLastName: event.cardHolderLastName,\r\n cardNumber: event.cardNumber!,\r\n expirationDateMMYY: event.cardExpiration!,\r\n cvv: event.cardSecurityCode!,\r\n amount: fundToday ? remainder! : fundingAmount!,\r\n email: application?.emailAddress ?? sendCheckAppStatusOtpRequest?.emailAddress ?? '',\r\n billingAddress: {\r\n firstName: event.cardHolderFirstName!,\r\n lastName: event.cardHolderLastName!,\r\n line1: event.bankingAddress?.addressLine1!,\r\n city: event.bankingAddress?.city!,\r\n state: event.bankingAddress?.state!,\r\n zip: event.bankingAddress?.zipCode!,\r\n },\r\n attemptNumber: 0,\r\n isFullyFunded: fundToday || fundingAmount === remainder,\r\n };\r\n makePaymentMutation.mutate({ applicationId: applicationId!, payload }, {\r\n onSuccess: (response) => { \r\n if (!paymentFailureResponseCodes.includes((response?.data?.responseCode as ResponseCodes))) {\r\n setPaymentSucceeded(true);\r\n } \r\n // Sets the funding response to display receipt of funds. \r\n if (response?.data?.responseCode === ResponseCodes.ApplicationInGoodFunds) {\r\n setResponseCodeToProcess(response.data.responseCode);\r\n } else if (response?.data?.responseCode === ResponseCodes.ExceededDailyPaymentTransactions) { \r\n setResponseCodeToProcess(response.data.responseCode);\r\n } else {\r\n setFundingResponse(response.data); \r\n } \r\n },\r\n onError: (error: any) => {\r\n if (error?.response?.data?.responseCode === ResponseCodes.ExceededDailyPaymentTransactions) { \r\n setResponseCodeToProcess(error.response.data.responseCode);\r\n } else if (!checkForUnauthorized(error, history)) {\r\n history.replace(routeHashes['/error'], {\r\n title: 'An error occurred with your payment. Please try again.',\r\n message: 'We were unable to process your card payment. The information you provided was not verified by your bank.',\r\n buttonText: 'Try again',\r\n navigateTo: routeHashes['/funding-source'],\r\n } as ErrorPageProps);\r\n }\r\n },\r\n });\r\n }\r\n };\r\n \r\n debuglog('funding-source page');\r\n debuglog('Application (funding-source):', application);\r\n debuglog('funding-source-card-type:', application.cardType);\r\n return (\r\n \r\n {makePaymentMutation.isLoading ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {fundingResponse?.responseCode ? (\r\n <> \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {isError ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {(!showPartialPaymentInput && !showPartialPaymentSummary) \r\n && !isError\r\n && !downsell\r\n && (\r\n <>\r\n \r\n
    I'm ready to fully fund my card today.\r\n \r\n <>\r\n Save ${promoValue} on my security deposit.\r\n \r\n \r\n
    \r\n
    Making your deposit today typically means you'll receive your card faster.\r\n
    \r\n
    \r\n }\r\n name=\"fundToday\"\r\n id=\"fundTodayTrue\"\r\n className=\"fundTodayRadio\"\r\n defaultChecked={\r\n fundToday === true\r\n }\r\n value=\"true\"\r\n onClick={() => onToggleFundToday(true)}\r\n />\r\n \r\n \r\n
    I'd like to fund my card at a later date.
    \r\n \r\n <>\r\n
    \r\n I'm not ready to save ${promoValue} today.** \r\n
    \r\n \r\n \r\n
    Not a problem. You can still submit your application, but your card won't be sent until your card is fully funded.
    \r\n
    \r\n }\r\n name=\"fundToday\"\r\n id=\"fundTodayFalse\"\r\n className={(!fundToday) ? \"fundTomorrowRadioFundLater\" : \"fundTomorrowRadio\" } \r\n defaultChecked={\r\n !!fundToday === false\r\n }\r\n value=\"false\"\r\n onClick={() => onToggleFundToday(false)}\r\n />\r\n \r\n \r\n ) } \r\n \r\n \r\n {(showPartialPaymentInput || showPartialPaymentSummary) && (\r\n \r\n \r\n setFundingAmount(amt)}\r\n register={register}\r\n errors={errors}\r\n />\r\n \r\n \r\n )}\r\n
    \r\n {(isCheckApp || fundToday) && (\r\n <>\r\n {!toggleForm && (\r\n <>\r\n \r\n \r\n
    \r\n
    \r\n

    Debit Card Details\r\n \r\n Visa\r\n Mastercard\r\n \r\n

    \r\n {isError && showCardValidationError && (\r\n <>\r\n \r\n
    \r\n *1 attempt remaining\r\n
    \r\n \r\n )}\r\n {\r\n event.target.value = event.target.value.replace(invalidNameCharacters, \"\");\r\n }}\r\n />\r\n {\r\n event.target.value = event.target.value.replace(invalidNameCharacters, \"\");\r\n }}\r\n />\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    Billing Address

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n )}\r\n \r\n )} \r\n \r\n \r\n \r\n {isCheckApp || fundToday ? (\r\n \r\n Next\r\n \r\n ) : (\r\n \r\n Next\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default FundingSource;\r\n","import FundingSource from './funding-source';\r\nimport FundingPayment from './funding-source';\r\n\r\nexport default FundingSource;\r\n\r\nexport {\r\n FundingSource,\r\n FundingPayment\r\n};\r\n","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\n\r\nconst IdentityVerificationHelp = () => {\r\n return (\r\n \r\n \r\n Identity Verification Help\r\n \r\n \r\n \r\n Federal law requires us to obtain, verify, and record information that \r\n identifies each person who opens an account.\r\n \r\n \r\n \r\n Social Security Number (SSN or ITIN)\r\n \r\n Your Social Security Number is required and used for identification purposes.\r\n \r\n \r\n \r\n Home Address\r\n \r\n In order to help the government fight the funding of terrorism and money laundering \r\n activities, your home street address is required for identification purposes.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IdentityVerificationHelp;\r\n","import { yupResolver } from '@hookform/resolvers/yup';\r\nimport React, { useEffect } from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport * as Yup from 'yup';\r\nimport {\r\n AddressForm,\r\n DatePicker,\r\n NumberFormatInput,\r\n TextInput,\r\n} from '../../components';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { applicationState, configurationResponseState, gaDataLayerState } from '../../store/atoms';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport { IdentityVerificationModel, IncentiveFeatures } from '../../types';\r\nimport { maxBirthdate } from '../../utils/dates';\r\nimport {\r\n isValidName,\r\n isValidSSNorITIN,\r\n isNotPOBoxPattern,\r\n invalidNameCharacters,\r\n zipCodePattern\r\n} from '../../utils/validations';\r\nimport IdentityVerificationHelp from './identity-verification-help';\r\nimport { routeHashes } from '../../app-routes';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\nconst IdentityVerification = () => {\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const history = useHistory();\r\n const configurationResponse = useRecoilValue(configurationResponseState); \r\n let [gaDataLayer, setGADataLayer] = useRecoilState(gaDataLayerState);\r\n\r\n const validationSchema = Yup.object().shape({\r\n firstName: Yup.string()\r\n .required('First Name is required')\r\n .test(\r\n 'contains-alpha-characters-firstname',\r\n `First Name should only contain alphabetical characters`,\r\n (value) => isValidName(value || '')\r\n )\r\n .default(() => application.firstName),\r\n lastName: Yup.string()\r\n .required('Last Name is required')\r\n .test(\r\n 'contains-alpha-characters-lastname',\r\n `Last Name should only contain alphabetical characters`,\r\n (value) => isValidName(value || '')\r\n )\r\n .test(\r\n 'firstLastMaxLength',\r\n 'First Name and Last Name combined exceeds maximum characters',\r\n function(item) {\r\n return (this.parent.firstName.length + this.parent.lastName.length) < 27\r\n }\r\n )\r\n .default(() => application.lastName),\r\n dateOfBirth: Yup.date()\r\n .typeError('Birthday is required.')\r\n .max(maxBirthdate, 'Birthday must be at least 18 years in the past')\r\n .required('Birthday is required'),\r\n ssn: Yup.string()\r\n .required('SSN is required')\r\n .typeError('SSN is required')\r\n .test('ssn-valid', 'Invalid SSN or ITIN', (value) => isValidSSNorITIN(value?.toString() || ''))\r\n .test('ssn-length', 'Invalid SSN or ITIN', (value) => value?.length === 9)\r\n .matches(/\\d{9}/, 'Invalid SSN or ITIN')\r\n .default(() => application.ssn),\r\n ssnConfirm: Yup.string()\r\n .required('SSN confirmation is required')\r\n .typeError('SSN confirmation is required')\r\n .oneOf([Yup.ref('ssn'), null], 'Confirm SSN must match SSN')\r\n .default(() => application.ssnConfirm),\r\n homeAddress: Yup.object().shape({\r\n addressLine1: Yup.string()\r\n .required('Address is required')\r\n .max(26, 'Address line must be at most 26 characters')\r\n .matches(isNotPOBoxPattern, 'PO Box addresses are not allowed as Home Address')\r\n .test(\r\n 'address',\r\n 'Invalid Primary Address',\r\n (value) => value !== ''\r\n )\r\n .default(() => application.homeAddress?.addressLine1 || ''),\r\n city: Yup.string()\r\n .required('City is required')\r\n .max(18, \"City must be less than 18 characters\")\r\n .test('city', 'City is required', (value) => value !== '')\r\n .default(() => application.homeAddress?.city || ''),\r\n state: Yup.string()\r\n .required('State is required')\r\n .test('state', 'State is required', (value) => value !== '')\r\n .default(() => application.homeAddress?.state || ''),\r\n zipCode: Yup.string()\r\n .required('Zip Code is required')\r\n .min(5, 'Zip Code is required')\r\n .max(10, 'Zip Code is required')\r\n .test(\r\n 'zipcode',\r\n 'Zip Code is required',\r\n (value) => value !== ''\r\n )\r\n .matches(zipCodePattern, 'Must be a U.S. Zip Code')\r\n .test('first-five-valid-range', 'Must be a U.S. Zip Code', \r\n (value) => { \r\n let zipCodeValue = parseInt((value ?? '0').substring(0,5)); \r\n return zipCodeValue > 500 && zipCodeValue < 99951; \r\n })\r\n .default(() => application.homeAddress?.zipCode || ''),\r\n addressLine2: Yup.string().default(\r\n () => application.homeAddress?.addressLine2 || ''\r\n ),\r\n }),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const {\r\n register,\r\n handleSubmit,\r\n setValue,\r\n trigger,\r\n watch,\r\n formState: { errors, isValid },\r\n } = useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all',\r\n });\r\n \r\n const onDateChange = async (date?: Date) => {\r\n if (!!date) { \r\n trigger();\r\n }\r\n };\r\n\r\n const onSubmit = async (event: IdentityVerificationModel) => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('PIIEntryNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_PIIEntryNext', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_PIIEntryNext', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('PIIEntryNext', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'ID Verify',\r\n };\r\n setGADataLayer(updateDataLayer);\r\n pushToDataLayer(\"application_step_4\", updateDataLayer);\r\n\r\n setApplication((current) => ({\r\n ...current,\r\n ...event,\r\n }));\r\n history.push(routeHashes['/identity-confirm']);\r\n };\r\n\r\n const ssn = watch('ssn');\r\n const ssnConfirm = watch('ssnConfirm');\r\n\r\n useEffect(() => {\r\n if (ssnConfirm !== null) {\r\n trigger();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [ssn, ssnConfirm]);\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n

    Almost there, let's verify your info.

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n Full Legal Name\r\n \r\n \r\n event.target.value = event.target.value.replace(invalidNameCharacters, \"\")\r\n }\r\n />\r\n \r\n event.target.value = event.target.value.replace(invalidNameCharacters, \"\")\r\n }\r\n />\r\n
    \r\n
    \r\n \r\n Birthday\r\n \r\n \r\n
    \r\n
    \r\n \r\n Social Security (SSN or ITIN) Number\r\n \r\n \r\n { \r\n event.preventDefault();\r\n return false;\r\n }}\r\n onPaste={(event) => { \r\n event.preventDefault();\r\n return false;\r\n }}\r\n />\r\n
    \r\n
    \r\n Home Address\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n

    \r\n OpenSky's identity verification will not impact your\r\n credit score.\r\n

    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Next\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default IdentityVerification;\r\n","import React from 'react';\r\nimport { Button, Col, Row } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { applicationState, configurationResponseState, gaDataLayerState } from '../../store/atoms';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport {monthNames} from '../../utils/dates';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport { IncentiveFeatures } from '../../types';\r\nimport IdentityVerificationHelp from './identity-verification-help';\r\nimport { iconLockGray } from '../../assets/img';\r\nimport { routeHashes } from '../../app-routes';\r\nimport './identity.scss';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\nconst IdentityConfirm = () => {\r\n const history = useHistory();\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n let [gaDataLayer, setGADataLayer] = useRecoilState(gaDataLayerState);\r\n const ordinal = (value: string) => {\r\n const ordinalRules = new Intl.PluralRules('en', {\r\n type: 'ordinal',\r\n });\r\n const suffixes: any = {\r\n one: 'st',\r\n two: 'nd',\r\n few: 'rd',\r\n other: 'th',\r\n };\r\n const suffix = suffixes[ordinalRules.select(Number(value))];\r\n return value + suffix;\r\n };\r\n\r\n const onGood = async () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('ConfirmPIILooksGood', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_ConfirmPIILooksGood', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_ConfirmPIILooksGood', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('ConfirmPIILooksGood', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'ID Confirm',\r\n };\r\n setGADataLayer(updateDataLayer);\r\n pushToDataLayer(\"application_step_5\", updateDataLayer);\r\n history.push(routeHashes['/mailing-address']);\r\n };\r\n\r\n const onNeedsChange = async () => {\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('ConfirmPIIChange', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_ConfirmPIIChange', { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_ConfirmPIIChange', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('ConfirmPIIChange', { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n history.push(routeHashes['/identity-verification']);\r\n }; \r\n return (\r\n \r\n \r\n \r\n
    \r\n

    Does everything look good?

    \r\n

    \r\n Please double check this information, we use this to\r\n report your credit history to all three credit bureaus.\r\n

    \r\n
    \r\n
    \r\n
    \r\n Name\r\n \r\n {application.firstName} {application.lastName}\r\n \r\n
    \r\n
    \r\n Birthday\r\n \r\n {monthNames[application.dateOfBirth?.getMonth() ?? 0]}{' '}\r\n {ordinal(application.dateOfBirth?.getDate()?.toString() || '')},{' '}\r\n {application.dateOfBirth?.getFullYear()}\r\n \r\n \r\n
    \r\n
    \r\n \r\n Social Security (SSN or ITIN) Number\r\n \r\n \r\n {' '}\r\n {application.ssn?.toString().padStart(9,'0').replace(/(\\d{3})(\\d{2})(\\d{4})/, '$1-$2-$3')}\r\n \r\n \r\n
    \r\n
    \r\n Home Address\r\n \r\n {application.homeAddress?.addressLine1}\r\n \r\n {application.homeAddress?.addressLine2 ? (\r\n \r\n {application.homeAddress?.addressLine2}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {application.homeAddress?.city},{' '}\r\n {application.homeAddress?.state}{' '}\r\n {application.homeAddress?.zipCode}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n onNeedsChange()}\r\n >\r\n I need to make a change\r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default IdentityConfirm;\r\n","import IdentityVerification from \"./identity-verification\";\r\nimport IdentityConfirm from \"./identity-confirm\";\r\n\r\nexport default IdentityVerification;\r\n\r\nexport {\r\n IdentityVerification,\r\n IdentityConfirm,\r\n}","import React from 'react';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { Intro } from '../../components';\r\nimport { useSetRecoilState, useRecoilValue } from 'recoil';\r\nimport { applicationState, launchCardTunerdOnState } from '../../store/atoms';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { configurationResponseState } from '../../store/atoms'\r\nimport { currentCardInfo } from '../../utils/product-info';\r\nimport { iconBlueCheck } from '../../assets/img';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { IncentiveFeatures } from '../../types';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\nconst IntroGeneric = () => {\r\n const history = useHistory();\r\n const setApplication = useSetRecoilState(applicationState);\r\n\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const launchCardTunedOn = useRecoilValue(launchCardTunerdOnState);\r\n \r\n const basicCardInfo = currentCardInfo('basic', configurationResponse?.securedProducts);\r\n const plusCardInfo = currentCardInfo('plus', configurationResponse?.securedProducts);\r\n const launchCardInfo = currentCardInfo('launch', configurationResponse?.securedProducts);\r\n\r\n const basicAnnualFee = '35';\r\n const plusAnnualFee = '0';\r\n const launchAnnualFee = '24';\r\n\r\n const basicMinimumDeposit = 200;\r\n const plusMinimumDeposit = 300;\r\n const launchMinimumDeposit = 100;\r\n\r\n const launchCreditLimit = 100;\r\n const basicCreditLimit = 200;\r\n const plusCreditLimit = 300;\r\n\r\n const launchProgramFee = 19.95;\r\n\r\n const basicButtonClick = () => {\r\n setApplication((current) => {\r\n return {\r\n ...current,\r\n ...{\r\n cardType: 'basic',\r\n fundToday: true,\r\n annualFee: basicAnnualFee,\r\n defaultCreditLimit: basicCreditLimit,\r\n amount: undefined\r\n },\r\n };\r\n });\r\n FullStory.event('AppIntroGetStarted', {});\r\n history.push(routeHashes['/basic-info']);\r\n } \r\n const plusButtonClick = () => {\r\n setApplication((current) => ({\r\n ...current,\r\n ...{\r\n cardType: 'plus',\r\n fundToday: true,\r\n annualFee: plusAnnualFee,\r\n defaultCreditLimit: plusCreditLimit,\r\n amount: undefined\r\n },\r\n }));\r\n FullStory.event('Plus_AppIntroGetStarted', { });\r\n history.push(routeHashes['/basic-info']);\r\n }\r\n\r\n const launchButtonClick = () => {\r\n setApplication((current) => ({\r\n ...current,\r\n ...{\r\n cardType: 'launch',\r\n fundToday: true,\r\n annualFee: launchAnnualFee,\r\n programFee: launchProgramFee,\r\n defaultCreditLimit: launchCreditLimit,\r\n securityDeposit: launchMinimumDeposit,\r\n },\r\n }));\r\n FullStory.event('Launch_AppIntroGetStarted', { });\r\n history.push(routeHashes['/basic-info']);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n

    \r\n Choose your path\r\n

    \r\n

    \"\"/ Zero risk to apply.

    \r\n
    \r\n
    \r\n \r\n
    \r\n {launchCardTunedOn && ()}\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroGeneric;\r\n","import React from 'react';\r\n// import { LandingPageLayout } from '../../layouts';\r\n// import { Intro } from '../../components';\r\nimport { useSetRecoilState } from 'recoil';\r\nimport { applicationState } from '../../store/atoms';\r\n// import { routeHashes } from '../../app-routes';\r\n// import { useHistory } from 'react-router-dom';\r\n// import { configurationResponseState } from '../../store/atoms'\r\n// import { currentCardInfo } from '../../utils/product-info';\r\n// import * as FullStory from '@fullstory/browser';\r\nimport BasicInfo from '../basic-info';\r\n\r\nconst IntroBasic = () => {\r\n // const history = useHistory();\r\n const setApplication = useSetRecoilState(applicationState);\r\n\r\n // const configurationResponse = useRecoilValue(configurationResponseState);\r\n // const cardInfo = currentCardInfo('basic', configurationResponse?.securedProducts);\r\n const annualFee = '35';\r\n\r\n // const buttonClick = () => {\r\n // setApplication((current) => ({\r\n // ...current,\r\n // ...{\r\n // cardType: 'basic',\r\n // fundToday: true,\r\n // annualFee: annualFee,\r\n // },\r\n // }));\r\n // //AppIntroGetStarted Full Story Event\r\n // FullStory.event('AppIntroGetStarted', { });\r\n // //history.push(routeHashes['/basic-info']);\r\n // }\r\n setApplication((current) => ({\r\n ...current,\r\n ...{\r\n cardType: 'basic',\r\n fundToday: true,\r\n annualFee: annualFee,\r\n },\r\n }));\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default IntroBasic;\r\n","import React from 'react';\r\n// import { LandingPageLayout } from '../../layouts';\r\n// import { Intro } from '../../components';\r\nimport { useSetRecoilState } from 'recoil';\r\nimport { applicationState } from '../../store/atoms';\r\n// import { routeHashes } from '../../app-routes';\r\n// import { useHistory } from 'react-router-dom';\r\n// import { configurationResponseState } from '../../store/atoms'\r\n// import { currentCardInfo } from '../../utils/product-info';\r\n// import * as FullStory from '@fullstory/browser';\r\nimport BasicInfo from '../basic-info';\r\n\r\nconst IntroPlus = () => {\r\n // const history = useHistory();\r\n const setApplication = useSetRecoilState(applicationState);\r\n\r\n // const configurationResponse = useRecoilValue(configurationResponseState);\r\n // const cardInfo = currentCardInfo('plus', configurationResponse?.securedProducts);\r\n const annualFee = '0';\r\n\r\n // const buttonClick = () => {\r\n // setApplication((current) => ({\r\n // ...current,\r\n // ...{\r\n // cardType: 'plus',\r\n // fundToday: true,\r\n // annualFee: annualFee,\r\n // },\r\n // }));\r\n // //AppIntroGetStarted Full Story Event\r\n // FullStory.event('Plus_AppIntroGetStarted', { });\r\n // //history.push(routeHashes['/basic-info']);\r\n // }\r\n setApplication((current) => ({\r\n ...current,\r\n ...{\r\n cardType: 'plus',\r\n fundToday: true,\r\n annualFee: annualFee,\r\n },\r\n }));\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default IntroPlus;\r\n","import React from 'react';\r\nimport { useSetRecoilState } from 'recoil';\r\nimport { applicationState } from '../../store/atoms';\r\nimport BasicInfo from '../basic-info';\r\n\r\nconst IntroLaunch = () => {\r\n const setApplication = useSetRecoilState(applicationState);\r\n\r\n const cardType = 'launch';\r\n const annualFee = '24';\r\n const programFee = 19.95;\r\n const creditLimit = 100;\r\n const securityDeposit = 100;\r\n\r\n setApplication((current) => ({\r\n ...current,\r\n ...{\r\n cardType: cardType,\r\n fundToday: true,\r\n annualFee: annualFee,\r\n programFee: programFee,\r\n defaultCreditLimit: creditLimit,\r\n securityDeposit: securityDeposit,\r\n },\r\n }));\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default IntroLaunch;","import { useMutation } from 'react-query';\r\nimport { microserviceClient } from '../../api-clients';\r\nimport { GetApplicationsStatusResponse, SubmitMiskeyRequest } from '../../types';\r\n\r\nconst submitMiskey = (payload: SubmitMiskeyRequest) =>\r\n microserviceClient.post('/api/application/submitMiskey', payload);\r\n\r\nexport const useSubmitMiskey = () => {\r\n return useMutation(\r\n submitMiskey,\r\n {\r\n onError: (err, variables, context) => {\r\n console.log('Error submitting miskey data', err);\r\n },\r\n }\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Alert, Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport { useForm } from 'react-hook-form';\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { DatePicker, NumberFormatInput } from '../../components';\r\nimport {\r\n selectedApplicationIdState,\r\n decisionsResponseState,\r\n responseCodeState\r\n} from '../../store/atoms';\r\nimport { ErrorPageProps, ResponseCodes, SubmitMiskeyRequest } from '../../types';\r\nimport { useSubmitMiskey } from './hooks';\r\nimport { useProcessResponseCode } from '../../hooks';\r\nimport { maxBirthdate } from '../../utils/dates';\r\nimport { zipCodePattern } from '../../utils/validations';\r\nimport { iconError } from '../../assets/img';\r\nimport { checkForUnauthorized, routeHashes } from '../../app-routes';\r\n\r\nconst zipCodeResponseCodes = [ResponseCodes.MiskeyDOBAndZIP, ResponseCodes.MiskeyZIP];\r\nconst dateOfBirthResponseCodes = [ResponseCodes.MiskeyDOBAndZIP, ResponseCodes.MiskeyDOB];\r\n\r\ntype MiskeyData = {\r\n hasDateOfBirth: boolean;\r\n dateOfBirth?: Date;\r\n hasZipCode: boolean;\r\n zipCode?: string;\r\n};\r\n\r\nconst LexisMiskey = () => {\r\n const [responseCode, setResponseCode] = useRecoilState(responseCodeState);\r\n const applicationId = useRecoilValue(selectedApplicationIdState);\r\n const [, setDecisionsResponse] = useRecoilState(decisionsResponseState);\r\n const [responseCodeToProcess, setResponseCodeToProcess] = useState();\r\n\r\n const history = useHistory();\r\n const submitMiskeyMutation = useSubmitMiskey();\r\n\r\n const hasDateOfBirth = dateOfBirthResponseCodes.includes(responseCode as ResponseCodes);\r\n const hasZipCode = zipCodeResponseCodes.includes(responseCode as ResponseCodes);\r\n\r\n // process response code and redirect\r\n useProcessResponseCode(responseCodeToProcess);\r\n\r\n const validationSchema = Yup.object().shape({\r\n hasDateOfBirth: Yup.boolean(),\r\n dateOfBirth: Yup.date()\r\n .when('hasDateOfBirth', {\r\n is: true,\r\n then: Yup.date()\r\n .max(maxBirthdate, 'Birthday must be at least 18 years in the past')\r\n .required('Birthday is required'),\r\n }),\r\n hasZipCode: Yup.boolean(),\r\n zipCode: Yup.string()\r\n .when('hasZipCode', {\r\n is: true,\r\n then: Yup.string()\r\n .required('Zip Code is required')\r\n .min(5, 'Zip Code is required')\r\n .max(10, 'Zip Code is required')\r\n .test(\r\n 'zipcode',\r\n 'Zip Code is required',\r\n (value) => value !== ''\r\n )\r\n .matches(zipCodePattern, 'Must be a U.S. Zip Code')\r\n .test('first-five-valid-range', 'Must be a U.S. Zip Code', \r\n (value) => { \r\n let zipCodeValue = parseInt((value ?? '0').substring(0,5)); \r\n return zipCodeValue > 500 && zipCodeValue < 99951; \r\n }),\r\n }) \r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { register, setValue, handleSubmit, trigger, formState: { errors, isValid } } = useForm({\r\n ...formOptions,\r\n defaultValues: {\r\n hasDateOfBirth,\r\n hasZipCode,\r\n },\r\n mode: 'all',\r\n });\r\n\r\n const onSubmit = async (event: MiskeyData) => {\r\n const payload: SubmitMiskeyRequest = {\r\n applicationID: applicationId!,\r\n newZIPCode: event.zipCode,\r\n newDOB: event.dateOfBirth?.toISOString().split('T')[0],\r\n };\r\n submitMiskeyMutation.mutate(payload, {\r\n onSuccess: (response) => {\r\n setDecisionsResponse(response.data.done);\r\n setResponseCode(response.data.responseCode);\r\n setResponseCodeToProcess(response.data.responseCode);\r\n },\r\n onError: (error: any) => {\r\n if (error?.response?.data?.responseCode) {\r\n // some error responses will still have a response with responseCode\r\n setResponseCode(error.response.data.responseCode);\r\n setResponseCodeToProcess(error.response.data.responseCode);\r\n } else {\r\n if (!checkForUnauthorized(error, history)) {\r\n // no responseCode found, so show generic error page with option to try again\r\n history.replace(routeHashes['/error'], {\r\n title: 'Oops, something went wrong processing your application.',\r\n buttonText: 'Submit again',\r\n navigateTo: routeHashes['/submit-application'],\r\n } as ErrorPageProps);\r\n }\r\n }\r\n },\r\n });\r\n };\r\n \r\n return (\r\n \r\n \r\n \r\n error\r\n An error has occurred \r\n \r\n \r\n \r\n \r\n
    \r\n

    Please re-enter the below fields

    \r\n
    You may have entered some information incorrectly.
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n {hasZipCode &&\r\n
    \r\n \r\n
    \r\n }\r\n {hasDateOfBirth &&\r\n
    \r\n Birthday\r\n \r\n
    \r\n }\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Submit\r\n \r\n \r\n \r\n \r\n
    \r\n ) \r\n}\r\n\r\nexport default LexisMiskey\r\n","import LexisMiskey from \"./lexis-miskey\";\r\n\r\nexport default LexisMiskey;\r\n\r\nexport {\r\n LexisMiskey,\r\n}","import React from 'react';\r\nimport { HelpTray } from '../../components';\r\n\r\nconst MailingAddressHelp = () => {\r\n return (\r\n \r\n \r\n Mailing Address Help\r\n \r\n \r\n \r\n Federal law requires us to obtain, verify, and record information that identifies \r\n each person who opens an account.\r\n \r\n \r\n \r\n Home Address / P.O. Box\r\n \r\n In order to help the government fight the funding of terrorism and money laundering \r\n activities, your home street address is required for identification purposes. You may \r\n provide a P.O Box in addition to your home street.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MailingAddressHelp;\r\n","import MailingAddress from \"./mailing-address\";\r\n\r\nexport default MailingAddress;\r\n\r\nexport {\r\n MailingAddress\r\n}","import { isValidRawPhone, rawPhonePattern } from './validations';\r\n\r\nconst formatPhone = (phone?: string): string | undefined => {\r\n if (!isValidRawPhone(phone)) {\r\n return undefined;\r\n }\r\n\r\n var slugs = phone?.match(rawPhonePattern);\r\n if (!slugs) {\r\n return undefined;\r\n }\r\n\r\n return `${slugs[1]}-${slugs[2]}-${slugs[3]}`;\r\n}\r\n\r\nexport {\r\n formatPhone,\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Button, Col, Row } from 'react-bootstrap';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { BlockCode } from '../../components';\r\nimport { CompleteValue } from '../../components/block-code/types';\r\nimport { useInterval } from '../../hooks';\r\nimport { useResendOtpCode, useVerifyOtpCode } from './hooks';\r\nimport { formatPhone } from '../../utils/phone-numbers';\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport {\r\n ErrorPageProps,\r\n OtpCheckProps,\r\n OtpMethods,\r\n VerifyLeadOtpRequest,\r\n VerifyCheckAppStatusOtpRequest,\r\n IncentiveFeatures,\r\n} from '../../types';\r\nimport { checkForUnauthorized, routeHashes } from '../../app-routes';\r\nimport {\r\n applicationState,\r\n checkAppState,\r\n configurationResponseState,\r\n gaDataLayerState,\r\n} from '../../store/atoms';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport * as FullStory from '@fullstory/browser';\r\n\r\ntype ResendCodeProps = {\r\n onResendCodeClicked?: () => void;\r\n seconds?: number;\r\n hasBeenResent?: boolean;\r\n};\r\n\r\nexport const ResendCode: React.FC = ({ onResendCodeClicked, seconds, hasBeenResent }) => {\r\n const minutes = Math.floor((seconds ?? 0) / 60);\r\n const remainingSeconds = (seconds ?? 0) - (minutes * 60);\r\n const formatted = `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds} ${minutes < 1 ? 'seconds' : 'minutes'}`;\r\n\r\n if ((seconds ?? 0) <= 0) {\r\n return (\r\n
    \r\n

    (CODE EXPIRED)

    \r\n
    \r\n

    \r\n
    \r\n );\r\n } else if (hasBeenResent) {\r\n return (\r\n
    \r\n

    (Valid for {formatted})

    \r\n
    \r\n

    Code sent!

    \r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n

    (Valid for {formatted})

    \r\n
    \r\n

    \r\n
    \r\n );\r\n};\r\n\r\nconst OtpCheck: React.FC = (props) => {\r\n const { navigateTo, navigationState, otpSentTime, isInitialOtp } = props;\r\n let otpData = props.otpData;\r\n\r\n const history = useHistory();\r\n const [application] = useRecoilState(applicationState);\r\n let [gaDataLayer, setGADataLayer] = useRecoilState(gaDataLayerState);\r\n\r\n if (!otpData) {\r\n otpData = {\r\n emailAddress: '',\r\n primaryPhone: '',\r\n otpMethod: OtpMethods.Mobile,\r\n }\r\n }\r\n\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n\r\n const resendOtpMutation = useResendOtpCode(otpData.isAppStatusCheck ?? false);\r\n const verifyOtpMutation = useVerifyOtpCode(otpData.isAppStatusCheck ?? false);\r\n\r\n const { emailAddress, primaryPhone, otpMethod } = otpData;\r\n const formattedPhone = formatPhone(primaryPhone);\r\n const contactIdentifier = otpData.otpMethod === OtpMethods.Mobile ? formattedPhone : emailAddress;\r\n\r\n const [hasBeenResent, setHasBeenResent] = useState(!isInitialOtp);\r\n const [seconds, setSeconds] = useState(0);\r\n const [codeValue, setCodeValue] = useState();\r\n const [startTime, setStartTime] = useState(otpSentTime);\r\n const isCheckApp = useRecoilValue(checkAppState);\r\n\r\n const onComplete = (data: CompleteValue) => {\r\n setCodeValue(data.value);\r\n //\r\n //OTPentry Full Story Event\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event('OTPentry', {});\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event('Plus_OTPentry', {});\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_OTPentry', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event('OTPentry', {});\r\n break;\r\n }\r\n }\r\n };\r\n\r\n const resendCode = () => {\r\n const payload = otpData.isAppStatusCheck\r\n ? {\r\n emailAddress\r\n }\r\n : {\r\n leadId: otpData.id,\r\n firstName: otpData.firstName,\r\n emailAddress: otpData.emailAddress,\r\n primaryPhone: otpData.primaryPhone\r\n };\r\n resendOtpMutation.mutate(payload, {\r\n onSuccess: () => {\r\n setStartTime(new Date());\r\n setHasBeenResent(true);\r\n }\r\n });\r\n };\r\n\r\n // decrement seconds when necessary\r\n useInterval(() => seconds > 0 && setSeconds(seconds - 1), 1000);\r\n\r\n useEffect(() => {\r\n // the else path here is entirely unreachable because startTime is never undefined\r\n // istanbul ignore else\r\n if (startTime) {\r\n //const expirationMillis = 30_000;\r\n const expirationMins = 5;\r\n const expirationTime = new Date(startTime.getTime() + expirationMins * 60 * 1000);\r\n const now = new Date();\r\n const newSeconds = Math.ceil((expirationTime.getTime() - now.getTime()) / 1000);\r\n setSeconds(newSeconds > 0 ? newSeconds : /* istanbul ignore next */ 0);\r\n }\r\n }, [startTime]);\r\n\r\n useEffect(() => {\r\n if (codeValue) {\r\n const payload = otpData.isAppStatusCheck\r\n ? {\r\n emailAddress,\r\n otpCode: codeValue\r\n }\r\n : {\r\n leadId: otpData.id,\r\n otpCode: codeValue\r\n };\r\n verifyOtpMutation.mutate(payload as VerifyLeadOtpRequest | VerifyCheckAppStatusOtpRequest, {\r\n onSuccess: () => {\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'OTP Check',\r\n };\r\n setGADataLayer(updateDataLayer);\r\n pushToDataLayer(\"application_step_1\", updateDataLayer);\r\n\r\n history.replace(navigateTo, navigationState);\r\n },\r\n onError: (error: any) => {\r\n if (!checkForUnauthorized(error, history)) {\r\n history.replace(routeHashes['/error'], {\r\n title: 'The code you entered was invalid, please try again!',\r\n buttonText: 'Try again',\r\n navigateTo: routeHashes['/otp-check'],\r\n navigationState: { ...props, otpSentTime: startTime, isInitialOtp: !hasBeenResent },\r\n } as ErrorPageProps);\r\n }\r\n }\r\n });\r\n }\r\n // (**TEMPORARY** - BlockCode onComplete needs to be fixed - called infinitely)\r\n // eslint-disable-next-line\r\n }, [codeValue]);\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n

    Verify your {otpMethod === OtpMethods.Mobile ? \"phone number\" : \"email\"}

    \r\n

    \r\n This helps us verify you're you, and will allow you to check on your application status\r\n later.\r\n

    \r\n
    \r\n \r\n

    \r\n Sent to {contactIdentifier}\r\n

    \r\n {!codeValue ? (\r\n \r\n ) : (\r\n \r\n Loading...\r\n \r\n )}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default OtpCheck;\r\n","import { useMutation } from 'react-query';\r\nimport { microserviceClient } from '../../api-clients';\r\nimport {\r\n ResendCheckAppStatusOtpRequest,\r\n ResendLeadOtpRequest,\r\n VerifyCheckAppStatusOtpRequest,\r\n VerifyLeadOtpRequest,\r\n} from '../../types';\r\n\r\nexport const useResendOtpCode = (isAppStatusCheck: boolean) => {\r\n const endpoint = isAppStatusCheck\r\n ? '/api/security/resendCheckAppStatusOtp'\r\n : '/api/security/resendLeadOtp';\r\n\r\n return useMutation(\r\n (payload: ResendLeadOtpRequest | ResendCheckAppStatusOtpRequest) => microserviceClient.post(endpoint, payload),\r\n {\r\n onError: (err, variables, context) => {\r\n console.log('Error resending OTP Code', err);\r\n },\r\n }\r\n );\r\n};\r\n\r\nexport const useVerifyOtpCode = (isAppStatusCheck: boolean) => {\r\n const endpoint = isAppStatusCheck\r\n ? '/api/security/verifyCheckAppStatusOtp'\r\n : '/api/security/verifyLeadOtp';\r\n \r\n return useMutation(\r\n (payload: VerifyLeadOtpRequest | VerifyCheckAppStatusOtpRequest) => microserviceClient.post(endpoint, payload),\r\n {\r\n onError: (err, variables, context) => {\r\n console.log('Error verifying OTP Code', err);\r\n },\r\n }\r\n );\r\n};\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useInterval = (callback: any, delay: number, triggerOnChange=false) => {\r\n const savedCallback = useRef();\r\n\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n }, [callback]);\r\n\r\n function tick() {\r\n // @ts-ignore\r\n savedCallback.current();\r\n }\r\n\r\n useEffect(() => {\r\n if (delay && triggerOnChange) {\r\n tick();\r\n }\r\n }, [delay, triggerOnChange]);\r\n\r\n useEffect(() => {\r\n if (delay) {\r\n const id = setInterval(tick, delay);\r\n return () => {\r\n clearInterval(id);\r\n };\r\n }\r\n }, [callback, delay]);\r\n};\r\n","import OtpCheck from './otp-check';\r\n\r\nexport default OtpCheck;\r\n\r\nexport {\r\n OtpCheck\r\n}\r\n","import React from 'react';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport './process-application.scss';\r\n\r\nconst ProcessApplication = () => {\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Please wait as we process your application

    \r\n

    Shouldn't be long, please keep this page open.

    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\nexport default ProcessApplication;\r\n","import { useMutation } from 'react-query';\r\nimport { microserviceClient } from '../../api-clients';\r\nimport { SubmitLeadResponse } from '../../types';\r\n\r\nconst submitApplication = (payload: any) =>\r\n microserviceClient.post('/api/application/submitLead', payload);\r\n\r\nexport const useSubmitApplication = () => {\r\n return useMutation(\r\n submitApplication,\r\n {\r\n onError: (err, variables, context) => {\r\n console.log('Error submitting application', err);\r\n },\r\n }\r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useRecoilState, useRecoilValue } from 'recoil';\r\nimport ProcessApplication from '../process-application';\r\nimport {\r\n selectedApplicationIdState,\r\n applicationState,\r\n decisionsResponseState,\r\n responseCodeState,\r\n gaDataLayerState\r\n} from '../../store/atoms';\r\nimport { useProcessResponseCode } from '../../hooks';\r\nimport { useSubmitApplication } from './hooks';\r\nimport { ErrorPageProps, ResponseCodes, SubmitLeadRequest, YesNo } from '../../types';\r\nimport { checkForUnauthorized, routeHashes } from '../../app-routes';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\n\r\nconst SubmitApplication = () => {\r\n const [, setResponseCode] = useRecoilState(responseCodeState);\r\n const application = useRecoilValue(applicationState);\r\n const [, setApplicationId] = useRecoilState(selectedApplicationIdState);\r\n const [, setDecisionsResponse] = useRecoilState(decisionsResponseState);\r\n const [responseCodeToProcess, setResponseCodeToProcess] = useState();\r\n const [gaDataLayer, setGaDataLayer] = useRecoilState(gaDataLayerState);\r\n\r\n const history = useHistory();\r\n const submitApplicationMutation = useSubmitApplication();\r\n\r\n // process response code and redirect\r\n useProcessResponseCode(responseCodeToProcess);\r\n\r\n const ifFundToday = (value: any) => application.cardNumber ? value : null;\r\n\r\n // const incentiveIs10PercentOffFullyFunded = (value: any) => {\r\n // if (application.incentiveName === 'TenPercentOffFullyFunded') {\r\n // if (value && !isNaN(value)) {\r\n // return value - (value * 0.10);\r\n // }\r\n // }\r\n // return value;\r\n // };\r\n\r\n const updateDataLayerAndPush = (responseCode: ResponseCodes) => {\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'App Funded',\r\n 'card_fund_result': responseCode === ResponseCodes.ApplicationInGoodFunds ? 'immediate' : 'see_email'\r\n }\r\n \r\n setGaDataLayer(updateDataLayer);\r\n \r\n pushToDataLayer('application_step_9', updateDataLayer);\r\n }\r\n\r\n useEffect(() => {\r\n const month = (application.dateOfBirth?.getMonth() ?? 0) + 1;\r\n const dobMonth = month.toString().padStart(2, '0');\r\n const dobDay = application.dateOfBirth?.getDate()?.toString()?.padStart(2, '0');\r\n const payload: SubmitLeadRequest = {\r\n instanceId: application.instanceId,\r\n id: application.leadId!,\r\n isEmailVerified: !application.phoneConsent, // TODO: *** this is supposed to come from createLead response? ***\r\n applicationId: null,\r\n ignoreEmailVerificationErrors: true, // TODO: *** what is this? ***\r\n submitPayment: true, // TODO: *** what is this? *** // ** BRIAN\r\n ignorePaymentErrors: false, // TODO: *** what is this? *** // ** BRIAN\r\n incentiveId: application.incentiveId ?? null,\r\n incentiveName: application.incentiveName ?? null,\r\n downsellFrom: application.downsellFrom,\r\n basicInfo: {\r\n firstName: application.firstName!,\r\n lastName: application.lastName!,\r\n emailAddress: application.emailAddress!,\r\n primaryPhone: application.primaryPhone!,\r\n primaryPhoneType: application.primaryPhoneType!,\r\n phoneConsent: application.phoneConsent!,\r\n },\r\n dti: {\r\n monthlyHousingPayment: application.housingPayment!,\r\n income: application.annualIncome!,\r\n minimumEligibility: application.minimumIncome === YesNo.Yes, // Will always be false since we removed the value from front end.\r\n incomeConfirmation: application.annualIncomeValidated,\r\n },\r\n creditLine: {\r\n creditLimit: application.amount!,\r\n },\r\n payment: {\r\n debitCardNumber: ifFundToday(application.cardNumber),\r\n debitCvv2CvcCode: ifFundToday(application.cardSecurityCode),\r\n debitExpirationMonth: ifFundToday(application.cardExpiration?.slice(0, 2)),\r\n debitExpirationYear: ifFundToday(`20${application.cardExpiration?.slice(2)}`),\r\n debitAmount: ifFundToday(application.amount),\r\n debitFirstName: ifFundToday(application.cardHolderFirstName),\r\n debitLastName: ifFundToday(application.cardHolderLastName),\r\n attemptNumber: 0,\r\n fundingType: application.cardNumber ? 'DBT' : 'FDL',\r\n isFullyFunded: ifFundToday(true) ?? false,\r\n debitTransId: null,\r\n debitAuthCode: null,\r\n debitAuthorizedFlag: null,\r\n debitSettleFlag: null,\r\n debitAuthApprovedAmount: null,\r\n debitAuthorizationCode: null,\r\n debitAuthRefTransId: null,\r\n debitAuthRequestedAmount: null,\r\n debitAvsResponse: null,\r\n debitCavResponse: null,\r\n },\r\n terms: {\r\n esignConsent: application.eSignConsent!,\r\n termsConsent: application.termsAndConditions!,\r\n },\r\n mailToType: application.mailToType!,\r\n mailingAddress: application.mailingAddress ? {\r\n mailingAddress: application.mailingAddress?.addressLine1!,\r\n mailingAptSuite: application.mailingAddress?.addressLine2 ?? null,\r\n mailingCity: application.mailingAddress?.city!,\r\n mailingState: application.mailingAddress?.state!,\r\n mailingZip: application.mailingAddress?.zipCode!,\r\n } : null,\r\n homeAddress: {\r\n homeAddress: application.homeAddress?.addressLine1!,\r\n aptSuite: application.homeAddress?.addressLine2 ?? null,\r\n city: application.homeAddress?.city!,\r\n state: application.homeAddress?.state!,\r\n zipCode: application.homeAddress?.zipCode!,\r\n },\r\n billingAddress: {\r\n debitFirstName: application.firstName!,\r\n debitLastName: application.lastName!,\r\n debitAddress: application.bankingAddress?.addressLine1!,\r\n debitAptSuite: application.bankingAddress?.addressLine2 ?? null,\r\n debitCity: application.bankingAddress?.city!,\r\n debitState: application.bankingAddress?.state!,\r\n debitZip: application.bankingAddress?.zipCode!,\r\n },\r\n pii: {\r\n ssn: application.ssn?.toString().padStart(9, '0')!,\r\n dateOfBirth: `${dobMonth}/${dobDay}/${application.dateOfBirth?.getFullYear()}`,\r\n },\r\n };\r\n\r\n submitApplicationMutation.mutate(payload, {\r\n onSuccess: (response) => {\r\n setApplicationId(response.data.applicationId);\r\n setDecisionsResponse(response.data.done);\r\n setResponseCode(response.data.responseCode);\r\n setResponseCodeToProcess(response.data.responseCode);\r\n updateDataLayerAndPush(response.data.responseCode as ResponseCodes);\r\n },\r\n onError: (error: any) => {\r\n if (error?.response?.data?.responseCode) {\r\n // some error responses will still have a response with responseCode\r\n setResponseCode(error.response.data.responseCode);\r\n setResponseCodeToProcess(error.response.data.responseCode);\r\n updateDataLayerAndPush(error.response.data.responseCode as ResponseCodes);\r\n } else {\r\n if (!checkForUnauthorized(error, history)) {\r\n // no responseCode found, so show generic error page with option to try again\r\n if (error?.response?.status === 400) {\r\n history.replace(routeHashes['/error'], {\r\n title: 'Oops, something went wrong processing your application.',\r\n buttonText: 'Ok, Got it',\r\n navigateTo: `${process.env.REACT_APP_HOMEPAGE_URL}`,\r\n } as ErrorPageProps);\r\n } else {\r\n history.replace(routeHashes['/error'], {\r\n title: 'Oops, something went wrong processing your application.',\r\n buttonText: 'Submit again',\r\n navigateTo: routeHashes['/submit-application'],\r\n } as ErrorPageProps);\r\n }\r\n }\r\n }\r\n },\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [application]);\r\n \r\n return (\r\n \r\n );\r\n};\r\nexport default SubmitApplication;","import React, { FC } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Alert, Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useSetRecoilState } from 'recoil';\r\nimport { useForm } from 'react-hook-form';\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { iconError } from '../../assets/img';\r\nimport { TextInput } from '../../components';\r\nimport { applicationState } from '../../store/atoms';\r\nimport { ApplicationModel } from '../../types';\r\nimport { LandingPageLayout } from '../../layouts';\r\nimport { routeHashes } from '../../app-routes';\r\n\r\nconst InvalidEmail: FC = () => {\r\n const setApplication = useSetRecoilState(applicationState);\r\n const history = useHistory();\r\n\r\n const validationSchema = Yup.object().shape({\r\n emailAddress: Yup.string()\r\n .email('Invalid Email Address!')\r\n .required('Email Address is required'),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { handleSubmit, register, formState: { errors, isValid } } = useForm<{ emailAddress: string }>({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: 'all',\r\n });\r\n\r\n const onSubmit = async (event: { emailAddress: string }) => {\r\n setApplication((current: ApplicationModel) => ({\r\n ...current,\r\n ...event,\r\n }));\r\n history.push(routeHashes['/submit-application']);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n An error has occurred\r\n \r\n \r\n \r\n
    \r\n

    Please re-enter your email address

    \r\n

    \r\n You may have entered some information incorrectly.\r\n Please provide a valid email address.\r\n

    \r\n
    \r\n
    \r\n
    \r\n Email Address\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Next\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default InvalidEmail;\r\n","import React from 'react';\r\nimport { Button, Card, Tab, Tabs } from 'react-bootstrap';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { Files } from '../../utils/fileConstants';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { configurationResponseState, applicationState } from '../../store/atoms';\r\nimport { currentCardInfo } from '../../utils/product-info';\r\n\r\ntype ISelectedDisclosure = {\r\n buttonText: string;\r\n title: string;\r\n tab: string;\r\n link: string;\r\n};\r\n\r\nconst DisclosureViewer = () => {\r\n const application = useRecoilValue(applicationState);\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n const basicCardInfo = currentCardInfo('basic', configurationResponse?.securedProducts);\r\n const plusCardInfo = currentCardInfo('plus', configurationResponse?.securedProducts);\r\n const launchCardInfo = currentCardInfo('launch', configurationResponse?.securedProducts);\r\n\r\n const origDisclosures: ISelectedDisclosure[] = [\r\n {\r\n buttonText: 'E-Sign Consent',\r\n title: 'E-Sign Disclosure and Consent Statement',\r\n tab: 'esign-consent',\r\n link: Files.GetFiles().electronicDisclosure.toString(),\r\n },\r\n {\r\n buttonText: 'Privacy Notice',\r\n title: 'Privacy Notice',\r\n tab: 'privacy-notice',\r\n link: Files.GetFiles().privacyNotice.toString(),\r\n },\r\n {\r\n buttonText: 'Privacy Policy',\r\n title: 'Privacy Policy',\r\n tab: 'privacy-policy',\r\n link: Files.GetFiles().privacyPolicy.toString(),\r\n },\r\n ];\r\n\r\n const basicDisclosures: ISelectedDisclosure[] = [\r\n {\r\n buttonText: 'Terms and Conditions',\r\n title: 'Terms and Conditions',\r\n tab: 'basic-terms-and-conditions',\r\n link: basicCardInfo.currentTermsConditions,\r\n },\r\n {\r\n buttonText: 'Cardholder Agreement',\r\n title: 'Cardholder Agreement',\r\n tab: 'basic-cardholder-agreement',\r\n link: basicCardInfo.currentCardHolderAgreement,\r\n },\r\n ];\r\n\r\n const plusDisclosures: ISelectedDisclosure[] = [\r\n {\r\n buttonText: 'Terms and Conditions',\r\n title: 'Terms and Conditions',\r\n tab: 'plus-terms-and-conditions',\r\n link: plusCardInfo.currentTermsConditions,\r\n },\r\n {\r\n buttonText: 'Cardholder Agreement',\r\n title: 'Cardholder Agreement',\r\n tab: 'plus-cardholder-agreement',\r\n link: plusCardInfo.currentCardHolderAgreement,\r\n },\r\n ];\r\n\r\n const launchDisclosures: ISelectedDisclosure[] = [\r\n {\r\n buttonText: 'Terms and Conditions',\r\n title: 'Terms and Conditions',\r\n tab: 'launch-terms-and-conditions',\r\n link: launchCardInfo.currentTermsConditions,\r\n },\r\n {\r\n buttonText: 'Cardholder Agreement',\r\n title: 'Cardholder Agreement',\r\n tab: 'launch-cardholder-agreement',\r\n link: launchCardInfo.currentCardHolderAgreement,\r\n },\r\n ];\r\n\r\n const {\r\n state: { tab, cardType },\r\n } = useLocation<{ tab: string, cardType: string }>();\r\n\r\n let disclosures;\r\n\r\n console.log('Original CardType:', cardType);\r\n console.log('Application CardType:', application?.cardType);\r\n\r\n if (application?.cardType === 'basic') {\r\n disclosures = origDisclosures.concat(basicDisclosures);\r\n } \r\n else if (application?.cardType === 'plus') {\r\n disclosures = origDisclosures.concat(plusDisclosures);\r\n }\r\n else {\r\n disclosures = origDisclosures.concat(launchDisclosures);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n {disclosures.map((disclosure, index) => (\r\n \r\n
    \r\n

    \r\n {disclosure.title}\r\n

    \r\n \r\n Download/Print\r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n ))}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DisclosureViewer;","import React from 'react';\r\nimport { useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Button, Card, Col, Form, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Link } from 'react-router-dom';\r\nimport { useRecoilState } from 'recoil';\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { ApplicationFlowLayout } from '../../layouts';\r\nimport { applicationState, downsellState, gaDataLayerState } from '../../store/atoms';\r\nimport { \r\n TermsAndConditionsModel,\r\n IncentiveFeatures, \r\n ProductTypePrns, \r\n} from '../../types';\r\nimport { routeHashes } from '../../app-routes';\r\nimport { useRecoilValue } from 'recoil';\r\nimport { configurationResponseState } from '../../store/atoms'\r\nimport { isIncentiveFeatureActive, getPrn } from '../../utils/incentives';\r\nimport { currentCardInfo } from '../../utils/product-info';\r\nimport { pushToDataLayer } from '../../utils/analytics';\r\nimport * as FullStory from '@fullstory/browser';\r\nimport { iconBlueCheck, safetyFill } from '../../assets/img';\r\nimport { getIncentive, getDetailFromIncentive } from '../../utils/incentives';\r\nimport './index.scss';\r\nimport { debuglog } from '../../utils/debug';\r\nimport { CardInfo } from '../../components';\r\n\r\nconst TermsConditions: React.FC = props => {\r\n const [application, setApplication] = useRecoilState(applicationState);\r\n const [debounceActive, setDebounceActive] = useState(false);\r\n let [gaDataLayer, setGADataLayer] = useRecoilState(gaDataLayerState);\r\n const downsell = useRecoilValue(downsellState);\r\n\r\n const configurationResponse = useRecoilValue(configurationResponseState);\r\n let cardInfo;\r\n\r\n debuglog('=========T&C---FUND TODAY--->', application?.fundToday);\r\n const history = useHistory();\r\n\r\n let rateDisclosuresLink;\r\n let termsAndConditionsTab;\r\n let cardholderAgreementTab;\r\n\r\n if (application.cardType === \"basic\") {\r\n cardInfo = currentCardInfo(\"basic\", configurationResponse?.securedProducts);\r\n rateDisclosuresLink = cardInfo.currentTermsConditions;\r\n termsAndConditionsTab = \"basic-terms-and-conditions\";\r\n cardholderAgreementTab = \"basic-cardholder-agreement\";\r\n } \r\n else if(application.cardType === \"plus\") {\r\n cardInfo = currentCardInfo(\"plus\", configurationResponse?.securedProducts);\r\n rateDisclosuresLink = cardInfo.currentTermsConditions;\r\n termsAndConditionsTab = \"plus-terms-and-conditions\";\r\n cardholderAgreementTab = \"plus-cardholder-agreement\";\r\n }\r\n else{\r\n cardInfo = currentCardInfo(\"launch\", configurationResponse?.securedProducts);\r\n rateDisclosuresLink = cardInfo.currentTermsConditions;\r\n termsAndConditionsTab = \"launch-terms-and-conditions\";\r\n cardholderAgreementTab = \"launch-cardholder-agreement\";\r\n }\r\n \r\n const getPrnFromCardType = (cardType: string | undefined) => {\r\n if (cardType?.toLowerCase() !== 'basic') {\r\n return ProductTypePrns.Plus;\r\n } else {\r\n return ProductTypePrns.Basic;\r\n }\r\n }\r\n const depositReductionIncentive = getIncentive(IncentiveFeatures.DepositReductionAmount, \r\n getPrnFromCardType(application.cardType), configurationResponse);\r\n\r\n const validationSchema = Yup.object().shape({\r\n eSignConsent: Yup.boolean()\r\n .oneOf([true])\r\n .test(\"eSignConsent\", \"Please agree to E-Sign Consent\", x => !!x)\r\n .default(application.eSignConsent),\r\n termsAndConditions: Yup.boolean()\r\n .oneOf([true])\r\n .test(\"termsAndConditions\", \"Please agree to terms and conditions\", x => !!x)\r\n .default(application.termsAndConditions)\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const {\r\n handleSubmit,\r\n register,\r\n watch,\r\n formState: { isValid }\r\n } = useForm({\r\n ...formOptions,\r\n defaultValues: validationSchema.getDefault(),\r\n mode: \"all\"\r\n });\r\n\r\n const eSignConsent = watch(\"eSignConsent\");\r\n const termsAndConditions = watch(\"termsAndConditions\");\r\n\r\n const onSubmit = async (event: TermsAndConditionsModel) => {\r\n // given that the button is disabled when debounceActive this is unreachable\r\n // istanbul ignore if\r\n if (debounceActive) return;\r\n\r\n setDebounceActive(true);\r\n\r\n switch (application?.cardType) {\r\n case \"basic\": {\r\n FullStory.event(\"AppSubmit\", { leadId: application.leadId });\r\n break;\r\n }\r\n case \"plus\": {\r\n FullStory.event(\"Plus_AppSubmit\", { leadId: application.leadId });\r\n break;\r\n }\r\n case \"launch\": {\r\n FullStory.event('Launch_AppSubmit', { leadId: application.leadId });\r\n break;\r\n }\r\n default: {\r\n FullStory.event(\"AppSubmit\", { leadId: application.leadId });\r\n break;\r\n }\r\n }\r\n\r\n const updateDataLayer = {\r\n ...gaDataLayer,\r\n 'step_name': 'Terms and Conditions',\r\n };\r\n setGADataLayer(updateDataLayer);\r\n pushToDataLayer(\"application_step_8\", updateDataLayer);\r\n\r\n setApplication(current => ({\r\n ...current,\r\n ...event\r\n }));\r\n\r\n history.push(routeHashes[\"/submit-application\"]);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n {downsell && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n

    Last step to start building credit.

    \r\n

    \r\n Please read through these Important Disclosures that contain additional information about\r\n eligibility, rates, fees, and other costs, as applicable.\r\n

    \r\n

    \"\"/ No credit check to apply.

    \r\n {application.cardType === 'plus' && (\r\n

    \"\"/ No annual fee.

    \r\n )}\r\n {application.cardType !== 'launch' && (\r\n

    \"\"/ Up to 10% cash back rewards*

    \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n Important Disclosures\r\n \r\n
    \r\n
    \r\n
    \r\n