{"version":3,"sources":["constants/plans/index.tsx","services/api.ts","services/apis.ts","constants/others/states.ts","utils/validations.ts","utils/format.tsx","utils/mask.ts","utils/date.ts","services/apiBolsa.ts","utils/utils.ts","utils/business-day.ts","services/msDarf.ts","services/apiPlan.ts","services/apiVeloPro.ts","assets/ssl-secure.svg","services/apiExterior.ts","services/apiPayment.ts","services/rendimentos.ts","services/apiBolsaVelotax.ts","services/apiIrpf2023.ts","components/Button/styles.ts","components/Button/index.tsx","components/UserPlanModal/UserPlan/styles.ts","components/UserPlanModal/UserPlan/index.tsx","services/handleTag.ts","components/PlanModal/styles.ts","components/CopyText/index.tsx","pages/SSO/styles.ts","assets/velotax/velologo.svg","pages/SSO/index.tsx","pages/Home/styles.ts","components/LoadingIntegration/confirm.modal.tsx","contexts/Notification.context.tsx","contexts/B3IntegrationContext.tsx","pages/Home/index.tsx","styles/LoginSignUp/authContainer.ts","utils/formValidations.ts","pages/Login/index.tsx","pages/Cadastro/index.tsx","pages/Sucesso/styles.ts","pages/Sucesso/index.tsx","pages/Carteira/styles.ts","components/Loading/index.tsx","components/ChartBar/index.tsx","components/Proventos/styles.ts","components/ProventosModal/styles.ts","components/DrawerModal/index.tsx","components/ReportType/styles.ts","components/ReportType/ReportType.tsx","assets/icons/filtro.svg","constants/darf/index.tsx","components/ProventosModal/index.tsx","contexts/NotificationContext.tsx","components/Proventos/index.tsx","contexts/CarteiraContext.tsx","utils/walletCharts.ts","components/MeusInvestimentos/styles.ts","utils/patrimonio.ts","components/FooterModal/index.tsx","constants/inputs/index.tsx","constants/formItems/index.ts","constants/darfBolsa/index.tsx","utils/getDolarQuote.ts","pages/HistoricBolsa/utils.ts","components/MeusInvestimentos/PosicaoCard/styles.ts","components/MeusInvestimentos/PosicaoCard/index.tsx","components/MeusInvestimentos/index.tsx","components/Notification/styles.ts","assets/notification.svg","components/Notification/Notification.tsx","components/MeusInvestimentos/Avisos/styles.ts","components/MeusInvestimentos/DrawerModal/index.tsx","components/MeusInvestimentos/IntegrationModal/styles.ts","assets/Integracao_XP_B3.gif","assets/integracao_xp_exterior_fundo_branco.gif","components/MeusInvestimentos/IntegrationModal/index.tsx","components/MeusInvestimentos/Avisos/index.tsx","pages/Carteira/index.tsx","pages/MinhaConta/styles.ts","pages/MinhaConta/MeuPlano/index.tsx","pages/MinhaConta/index.tsx","pages/Regulation/styles.ts","constants/regulation/index.tsx","pages/Regulation/index.tsx","pages/Darf/styles.ts","components/FormModal/index.tsx","pages/Darf/Components/IntegrationModal/index.tsx","pages/Darf/Components/DatePickerExtraFooter/index.tsx","components/DeleteConfirmationModal/index.tsx","pages/Darf/Components/DatePickerMonthCell/index.tsx","pages/Darf/index.tsx","pages/Exterior/Cards/styles.ts","pages/Exterior/Cards/index.tsx","pages/Bolsa/itensBolsa.tsx","pages/Crypto/itensCrypto.tsx","components/PageInfo/styles.ts","components/PageInfo/index.tsx","components/PlanModal/Plan/styles.ts","components/PlanModal/Plan/index.tsx","components/Payment/CreditCardStep/components/Footer/index.tsx","components/CardList/styles.ts","constants/taxes/index.ts","utils/getInstallmentsListByPrice.tsx","components/CardList/index.tsx","components/Payment/CreditCardStep/index.tsx","components/Payment/CreditCardStep/components/CardForm/index.tsx","services/cep.ts","components/Payment/CreditCardStep/components/AddressForm/index.tsx","components/Payment/CreditCardStep/components/ResultScreen/components/ErrorScreen/index.tsx","components/Payment/CreditCardStep/components/ResultScreen/components/ConfirmScreen/index.tsx","components/Payment/CreditCardStep/components/ResultScreen/index.tsx","components/Payment/CreditCardStep/components/ResultScreen/components/PendingScreen/index.tsx","constants/identification/index.tsx","components/PlanModal/index.tsx","pages/MeiDas/styles.ts","pages/Darf/Components/PayTags/styles.ts","constants/das/index.tsx","pages/DarfExterior/InterestModalContent/index.tsx","pages/Historic/styles.ts","pages/DarfExterior/InterestModalContent/styles.ts","pages/DarfExterior/ExteriorModalContent/index.tsx","components/BackButton/styles.ts","components/BackButton/index.tsx","pages/DarfExterior/ExteriorModalContent/styles.ts","components/ModalConfirmMail/index.tsx","pages/DarfExterior/index.tsx","constants/rendimentos/index.tsx","pages/DarfExterior/useDarfExterior.ts","components/CardXP/style.ts","components/CardXP/index.tsx","pages/HistoricBolsa/PayButton/index.tsx","pages/Exterior/itensExterior.tsx","assets/icons/check.svg","pages/HistoricBolsa/PayDarfButton/styles.ts","pages/HistoricBolsa/PayDarfButton/index.tsx","services/msCalc.ts","pages/Exterior/ModalIntegrationExterior.tsx","pages/Settings/SelectBoxes/styles.ts","pages/Settings/SelectBoxes/index.tsx","pages/Settings/styles.ts","pages/DarfBolsa/styles.ts","contexts/OldTransactionsContext.tsx","utils/handleDownloadSheet.ts","components/ModalZeroBuyPrice/index.tsx","pages/DarfBolsa/index.tsx","pages/MeiReport/styles.ts","pages/ReportBolsa/items.tsx","pages/ReportBolsa/styles.ts","pages/Integration/styles.ts","pages/ReportBolsa/index.tsx","pages/Darf/Components/OldTransactions/styles.ts","pages/Darf/Components/OldTransactions/index.tsx","pages/BolsaManual/items.tsx","pages/BolsaManual/styles.ts","pages/PrePreenchidaModal/styles.ts","components/UploadVelotax/styles.ts","components/UploadVelotax/index.tsx","contexts/UploadDecContext.tsx","assets/govbr.svg","pages/DecPrepreenchida/styles.ts","contexts/YearContext.tsx","pages/DecPrepreenchida/index.tsx","pages/PrePreenchidaModal/index.tsx","pages/MeiIdentification/styles.ts","pages/Rendimentos/styles.ts","pages/IntegrationBolsa/NotasHistoricoModal/index.tsx","pages/AnnualReport/styles.ts","pages/HistoricBolsa/styles.ts","contexts/TransferenciaCustodiaContext.tsx","pages/IntegrationBolsa/NotasCorretagem/useNotasCorretagem.ts","pages/Planos/planos.tsx","pages/ReportExterior/items.tsx","pages/ReportExterior/styles.ts","pages/ReportExterior/index.tsx","pages/DividendosBolsa/styles.ts","utils/sendEmailSheet.ts","pages/DividendosBolsa/modal.tsx","pages/DividendosBolsa/dataSourceList.ts","constants/dividendos/index.tsx","pages/IntegrationBolsa/styles.ts","assets/b3-logo-white.svg","components/IntegrationComponents/IntegrationButton/styles.ts","components/IntegrationComponents/IntegrationButton/index.tsx","pages/IntegrationBolsa/B3IntegrationButtons/index.tsx","pages/IntegrationCrypto/styles.ts","pages/IntegrationCrypto/NotasCorretagem/useNotasCorretagem.ts","pages/IntegrationCrypto/NotasCorretagem/index.tsx","pages/DividendosExterior/dataSourceList.ts","components/DividendosModal/index.tsx","pages/DividendosExterior/styles.ts","pages/IntegrationExterior/styles.ts","components/IntegrationComponents/PassfolioIntegration/PassfolioIntegrationModal.tsx","components/IntegrationComponents/PassfolioIntegration/index.tsx","components/IntegrationComponents/ExteriorIntegration/index.tsx","assets/xp.svg","pages/IntegrationExteriorXP/styles.ts","pages/TransferenciaCustodia/styles.ts","pages/TransferenciaCustodia/formItems.tsx","pages/DoacoesHeranca/Components/DoacoesHerancas/styles.ts","pages/DoacoesHeranca/Components/DoacoesHerancas/index.tsx","pages/DoacoesHeranca/items.tsx","pages/DoacoesHeranca/styles.ts","constants/brokers/pages.tsx","pages/Bolsa/index.tsx","pages/Crypto/index.tsx","pages/MeiDas/index.tsx","pages/Exterior/index.tsx","pages/Historic/index.tsx","pages/Settings/index.tsx","pages/MeiReport/index.tsx","pages/Integration/index.tsx","pages/BolsaManual/index.tsx","pages/DoacoesHeranca/index.tsx","pages/Rendimentos/index.tsx","pages/AnnualReport/index.tsx","pages/HistoricBolsa/index.tsx","pages/MeiIdentification/index.tsx","pages/DividendosBolsa/index.tsx","pages/IntegrationBolsa/index.tsx","pages/IntegrationCrypto/index.tsx","pages/DividendosExterior/index.tsx","pages/IntegrationExterior/index.tsx","pages/TransferenciaCustodia/index.tsx","pages/IntegrationExteriorXP/index.tsx","pages/Planos/styles.ts","assets/icons/selo-7-dias.svg","assets/icons/selo-garantia.svg","assets/icons/selo-play-store.svg","assets/icons/selo-app-store.svg","pages/Planos/index.tsx","constants/managerAccess/index.tsx","pages/ManagerAccess/styles.ts","components/PermissaoAssessorModal/styles.ts","components/PermissaoAssessorModal/index.tsx","contexts/RequireAccessContext.tsx","components/ModalConfirmDesvinculo/index.tsx","pages/ManagerAccess/index.tsx","pages/PGBLSimulator/items.tsx","pages/PGBLSimulator/styles.ts","pages/PGBLSimulator/index.tsx","pages/ForgotPassword/index.tsx","pages/ChangePassword/index.tsx","assets/xp-black.svg","assets/icons/sidebar/bolsa.svg","assets/icons/sidebar/exterior.svg","components/PaymentModal/index.tsx","constants/brokers/index.tsx","components/LoadingSession/index.tsx","components/NameNotification/index.tsx","contexts/BrokerContext.tsx","components/Payment/PixPaymentStep/index.tsx","components/PaymentModal/style.ts","components/UserPlanModal/index.tsx","contexts/AuthContext.tsx","routes/PrivateRoutes.tsx","routes/OnlyPublicRoute.tsx","assets/velotax/veloicon.svg","pages/PageNotFound/index.tsx","components/Header/styles.ts","contexts/HistoryContext.tsx","components/Header/index.tsx","components/Logo/styles.ts","assets/velotax/velotax-light.svg","components/Logo/index.tsx","components/PoweredByVelotax/index.tsx","assets/icons/sidebar/sair.svg","assets/icons/sidebar/irpf.svg","assets/icons/sidebar/conta.svg","components/Sidebar/styles.ts","components/Sidebar/index.tsx","components/PageWrapper/styles.ts","components/TabNavigator/styles.ts","assets/calculadoras/bolsa-de-valores.svg","assets/calculadoras/ativos-no-exterior.svg","components/TabNavigator/index.tsx","pages/Home/IRPFBanner/styles.ts","pages/Home/IRPFBanner/index.tsx","components/PageWrapper/index.tsx","components/PublicWrapper/Header/styles.ts","components/PublicWrapper/Header/index.tsx","components/PublicWrapper/styles.ts","components/PublicWrapper/index.tsx","routes/index.tsx","styles/global.ts","services/chatApi.ts","components/ChatGPT/styles.ts","components/ChatGPT/index.tsx","styles/container.ts","styles/drawer-modal.ts","contexts/ContextWrapper.tsx","styles/historic-list.ts","components/ErrorBoundary/index.tsx","components/Support/styles.ts","components/Support/index.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["PlanEnum","api","axios","create","baseURL","process","headers","apis","NOT_AUTHORIZED","states","isValidCNPJ","cnpj","validateBr","isValidPhone","phone","yup","isValidSync","replace","length","isValidDate","date","test","checkDateExpiration","limit","value","split","day","month","year","Date","Number","removeSpecialCharacters","normalize","formatCurrency","prefix","decimalScale","displayType","decimalSeparator","thousandSeparator","fixedDecimalScale","toLocaleString","minimumFractionDigits","maximumFractionDigits","numberToPercentage","toFixed","number","numberToPercentageWallet","currencyToNumber","replaceDotByComma","String","zero","n","formatDate","dateString","getFullYear","getDate","getMonth","formatDateHour","moment","format","cpfInputMask","maskCpf","cpf","includes","cpfArray","splice","join","maskCnpj","cnpjArray","getInitialYear","months","monthsExtended","antDatePickerLocale","lang","placeholder","CalendarLocale","timePickerLocale","UserPlanEnum","OtherFeatures","name","UserPlans","type","VELOTAX_MAIN_PRO","interval","title","price","originalPrice","percentDiscount","instalments","maskValue","includedFeatures","icon","size","secondaryIcon","overlayStyle","opacity","backgroundColor","fontSize","fontWeight","descriptions","label","checked","color","Plans","BASIC_V1","discount","className","otherFeatures","slice","PRO_V1","B3AuthURL","isSafari","navigator","userAgent","iOSList","isMobile","platform","userAgentData","maxTouchPoints","isIOS","errorMessage","download","link","window","location","href","downloadPDF","base64","fileName","linkSource","downloadLink","document","createElement","now","click","getMuiInputCss","querySelector","classList","find","c","getZeroBuyPrice","data","hasZero","apiBolsa","get","donations","pos2019","element","code","toLowerCase","market","buyPrice","reasonDictionary","text","textLink","hasDonations","filter","op","orders","ord","push","hasPos2019","reason","elementsRepeat","item","isBusinessDay","require","getLastBusinessDay","lastDayOfTheMonth","holidays","tz","setDate","apiPlan","apiVeloPro","apiPayment","REACT_APP_BACKEND_RENDIMENTOS_URL","ButtonStyled","styled","Button","props","css","disabled","typed","children","Container","div","PlanModalStyled","Modal","UserPlan","plan","planBuyed","handleSelect","cupomMsg","checkIfCupomIsValid","cupomInfo","buttonLoading","codeSave","setCode","showInputCupom","user","useAuth","useState","acceptTerms","setAcceptTerms","isActive","userPlanInfoVelotax","active","hasPlan","free","isPlanSelected","useMemo","isMonth","planPrice","discountValue","Title","level","style","width","display","justifyContent","toLocaleLowerCase","Text","delete","discountText","marginTop","map","feature","info","onChange","terms","target","rel","onClick","e","message","warning","loading","HandleTag","activeCampaignTagId","post","then","catch","err","Content","Loading","CopyText","selection","range","body","createTextRange","moveToElementText","getElementById","id","select","getSelection","createRange","selectNode","removeAllRanges","addRange","selectText","SSO","token","useParams","navigate","useNavigate","search","useLocation","setLocalStorageWithAuthData","setLoadingSession","showUserPlanModal","setLoading","useEffect","res","success","authorization","retPlanInfo","query","URLSearchParams","redirect","setTimeout","error","src","veloLogo","alt","LoadingOutlined","htmlType","HomeContainer","ModalConfirmWaitIntegration","action","closeFn","visible","handleClick","send","onCancel","closable","footer","gutter","marginBottom","paddingLeft","paddingRight","span","WSClientEvents","WsServerEvents","isValidEvent","event","Object","values","WebSocketContext","createContext","undefined","PREFIX","WebSocketProvider","socketRef","useRef","reconnectKeyRef","open","setOpen","report","setReport","handleMessage","useCallback","messageWs","fileUrl","console","current","io","reconnection","reconnectionDelay","reconnectionAttempts","auth","reconnectKey","on","log","NOTIFY","REPORT","RECONN_KEY","emit","RESEND_LAST_MESSAGE","disconnect","addEventListener","callback","removeEventListener","off","emitEvent","Provider","useWebSocket","context","useContext","Error","B3IntegrationContext","B3IntegrationProvider","b3Authorized","setB3Authorized","useBroker","integration","initIntegration","getIntegrationStatus","handleIntegrationInit","setInitIntegration","timer","setTimer","timeOver","setTimeOver","loadingIntegration","setLoadingIntegration","loadingAuthorization","setLoadingAuthorization","checkingAuhtorization","setCheckingAuhtorization","integrationInBackground","setIntegrationInBackground","historicoNotasCorretagem","setHistoricoNotasCorretagem","loadingHistoricoNotasCorretagem","setLoadingHistoricoNotasCorretagem","showHistoricoNotasCorretagemModal","setShowHistoricoNotasCorretagemModal","timerInterval","modalConfirm","setModalConfirm","integrationMessage","setIntegrationMessage","integrationLoadingRef","openWithLink","backgroundIntegration","lastUpdateDate","lastUpdate","clearInterval","setInterval","downloadNotaCorretagem","path","params","url","getHistoricoNotasCorretagem","a","filters","crypto","filterDay","filterMonth","filterYear","nota","openB3Window","setIntegrationLoading","status","integrate","onlyPrepareBolsa","email","response","finally","verifyUserIsAuthorized","once","autoError","autoSuccess","count","requestUserAuthorization","firstTime","isAuthorized","resetB3IntegrationContext","handleIntegrate","hasError","integrated","evListenerFn","ev","processing","started","description","hideLoading","finished","INTEGRATION_STATUS","tm","clearTimeout","notas","useB3Integration","Home","allPaths","pathBackup","currentBroker","justify","AuthContainer","section","validationCpf","required","validator","_","Promise","resolve","reject","validationCnpj","validationFullName","rule","trim","validationEmail","validationPhone","validationPhoneRequired","validationDateNotRequired","validationDate","validationDateIsOnReferenceMonth","momentDate","start","startOf","end","endOf","isBetween","isDateOnReferenceMonth","validationDateIsOnReferenceMonthCompra","today","pastLimit","getTime","validationFieldRequired","validationNumberField","min","max","validationNumberAllowNegativeField","validationNumberFieldPositive","validationStateAddress","toUpperCase","isValidStateAddress","validationCardShelfLife","currentMonth","currentYear","substring","monthYearTime","valueTime","reverse","isValidShelfLife","validationCep","cep","validationAmexCVV","validationCVV","validationPassword","validationPassConfirmation","getFieldValue","validationCreditCardNumber","Payment","fns","validateCardNumber","isValidCreditCard","MaskCPF","React","forwardRef","ref","mask","Login","Form","useForm","form","handleSignIn","fieldsError","setFieldsError","onFinish","onValuesChange","changed","setFieldsValue","onFieldsChange","getFieldsError","reduce","acc","cur","errors","Item","rules","TextField","variant","InputProps","inputComponent","startIcon","Cadastro","handleSignUp","showPassword","setShowPassword","FormControl","fullWidth","InputLabel","htmlFor","Input","endAdornment","InputAdornment","position","IconButton","aria-label","onMouseDown","preventDefault","show","edge","getValueFromEvent","Sucesso","Paragraph","ChartBar","monthReport","proventos","yearProventos","typeProventos","hideValues","setDataChart","bars","setBars","totalDiv","setTotalDiv","totalJscp","setTotalJscp","totalBonds","setTotalBonds","totalRendi","setTotalRendi","totalAmort","setTotalAmort","chartColors","background","getProviderColor","provider","index","proventoByMonth","juros","dividendo","rendimento","amortizacao","bonds","groupedProventos","groupBy","key","operations","forEach","el","corporateActionTypeDescription","grossAmount","barsChart","corretora","futuro","liquidado","types","isFuturo","labelFormatter","ResponsiveContainer","height","BarChart","margin","top","left","XAxis","dataKey","YAxis","axisLine","tick","Tooltip","content","payload","verificacaoValorFinal","acumulador","total","keys","Legend","fill","align","layout","iconType","verticalAlign","formatter","entry","Bar","stackId","BlurContent","ContainerProventos","ContainerModal","DrawerModal","destroyOnClose","placement","onClose","ReportTypeContainer","ReportTypeDrawer","setType","closeIcon","cursor","InfoCircleOutlined","_extends","assign","bind","i","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","strokeWidth","strokeLinecap","strokeLinejoin","SvgFiltro","_ref","svgRef","titleId","viewBox","xmlns","FormCurrencyMode","FormMovimentTypeMode","FormMovimentTypeModeNew","ForwardRef","Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez","ProventosModal","setOpenModal","proventosLoading","setYearProventos","setMonthProventos","dateFormat","dateBeginRef","setData","setTotal","setFilters","dataModalPDF","setDataModalPDF","originalData","setOriginalData","dateBeginFilter","setDateBeginFilter","appliedFilters","setAppliedFilters","showFilterModal","setShowFilterModal","reportDrawerProventos","setReportDrawerProventos","dateEndFilter","setDateEndFilter","downloadRelatorioProventos","file","escritorioId","ret","workbook","XLSX","book_new","worksheet","json_to_sheet","book_append_sheet","reportPDFData","capitalize","quantity","unitPrice","monthNumber","dataFiltered","monthOp","yearOp","dataSerialized","Produto","Pagamento","Tipo","Instituição","getCorretFilters","newCorret","maskClosable","defaultValue","minWidth","getPopupContainer","trigger","parentElement","options","m","y","dataSource","pagination","defaultPageSize","defaultCurrent","showSizeChanger","columns","dataIndex","zIndex","strong","Group","corretoras","dropdownClassName","block","dataFinal","corret","dateBegin","toDate","dateEnd","datePagamento","getProventosWithFilter","NotificationContext","NotificationProvider","notification","setNotification","fetched","setFetched","getNotification","defaults","common","useNotification","Proventos","hasPremiunPlan","hasPermissionExterior","hasPermissionGeneral","openModal","setProventos","monthProventos","loadingDownload","setLoadingDownload","setProventosLoading","loadingReport","setLoadingReport","setTypeProventos","updated","downloadExcel","serializedData","serializeDataExcel","downloadRelatorio","newProventos","padding","some","p","toString","existsProvCurrentMonth","autoAdjustOverflow","CarteiraContext","CarteiraProvider","setLastUpdate","carteira","setCarteira","posicoesFilter","setPosicoesFilter","getCarteira","refresh","updateFilter","posicoes","patch","getPatrimonios","useCarteira","IsentCardStyled","getNomeCorretora","shortName","getCategoriaShortName","categoria","calculaSaldoCorretoras","posicao2019","agrupadoPorCorretora","saldosCorretoras","saldo","prev","curr","posicao","calculaPorgentagensCategorias","getTodasAsCorretoras","calculaClassesAtivos","agrupadoPorCategoria","saldosCategorias","totalSaldos","percentage","calculaPorcentagemPosicoes","patrimonioTotal","posicoesOrdenadas","sort","b","porcentagens","hasPosition2019","porcentagem","codigo","porcentagensOrdenadas","somatorioDasMaioresPorcentagens","somatorioDosMaioresValores","po","FooterModal","onOk","dark","saveButtonText","cancelButtonText","TextInput","InputLabelProps","shrink","SelectLabled","rest","Select","labelId","option","MenuItem","NumberInput","maxLength","allowNegative","NumberFormatCustom","getInputRef","MaskInput","MaskedCustom","RadioInput","MaskFormItem","input","DateFormItem","TextFormItem","SelectFormItem","RadioFormItem","NumberFormItem","CurrencyFormItem","yearConfigPL4173","historicoVendasEmptyText","YearResumeStatusFromBackEnum","YearResumeStatusCSSClassEnum","YearResumeStatusColorEnum","YearResumeStatusTextEnum","defaultDarf","totalAlienado","impostoDevido","impostoAcumulado","totalImpostoDevido","aliquotaDevida","totalGanho","multa","memoriaCalculo","minDarfPrice","maxDarfPrice","maxPixPayment","maxCreditCardPayment","MultaModalProps","JurosModalProps","MinPriceModalProps","AliquotaModalProps","DarfModal","reemit","ReemitirDarfModalProps","EmitirDarfModalProps","DarfResultDescriptionsExterior","Component","view","Math","setDataBolsa","setDataCripto","currentPage","edit","setEdit","editForm","handleEditValueCancel","resetFields","isEditting","clsx","handleEditValue","handleEdit","DarfResultDescriptions","DarfImpostosDevidosDescriptions","render","FormItemsCrypto","hidden","precoVenda","custoCompra","avgBuyPrice","taxas","feeB3","ativo","quantidade","ganho","operacao","mercado","FormItemsExterior","movimentType","setMovimentType","fromApi","VENDA","JUROS","DIVIDENDOS","OUTROS","valueOriginBRA","valueOriginEUA","dataCompra","cotacaoCompra","quotations","keycompra","isComplete","subtract","venda","fee","dataVenda","dataVendaFee","cotacaoVenda","keyvenda","compra","cotacaoVendaFee","dataFee","quotes","newDate15Day","newDateLastMonth","setMonth","isRuning","lastBusinessDay","getQuoteFortnight","A","B","C","cambioCompra","D","valor","E","F","cambioVenda","ganhoFee","cambioVendaFee","valorNewModel","capitalGain","capitalGainBRL","sellPrice_BRL","buyPrice_BRL","fee_BRL","valueOriginBRL","feeBRL","DarfFormItemRows","userIrrfComum","userIrrfDayTrade","userIrrfFII","ExteriorFormItemRows","editAsset","asset","ExteriorNewFormItemRows","fator","sellPrice","vendasTotais","transactions","t","exteriorTransactionsFilter","operation","manual","vendasIsentas","codigosIsentos","mercadoIsento","valueIsGreaterThanMin","impostoComumFinal","impostoDTFinal","impostoFIIFinal","showPayButton","impostoTotalFinal","valueIsLessThanMax","payed","impostoCharge","valorPrincipal","multaAux","jurosAux","PosicaoCardStyled","Collapse","Panel","defaultDarfBolsa","alienacoesComum","alienacoesDT","alienacoesFII","buffer","impostoTotal","irrfComum","irrfDayTrade","irrfFII","irrfTotal","mercadoOpcoesDT","mercadoOutrosComum","mercadoOutrosDT","mercadoVistaComum","mercadoVistaDT","prejuizoComum","prejuizoDayTrade","prejuizoFII","CustoMedioModal","to","IRRFModalProps","getTaxes","setEditedAccumulatedTax","textAlign","FormItemsBolsa","avgBuyPriceGOV","mustUpdate","marketCorrect","lendingSide","FormItemsDoacoesHerancas","_id","dateView","DateFormItem2","PrejuFormItems","CorretagemFormItems","IrrfFormItem","userIrrfTotal","IrrfFormItemRows","CorretagemFormItemRows","DarfBolsaFormItemRows","DarfBolsaTabs","class","tabs","varTotaisComum","varTotaisDT","varTotaisFII","ganhoComum","ganhoDT","ganhoFII","handleEditPreju","userPrejuizoComum","userPrejuizoDayTrade","userPrejuizoFII","negativeToPositive","signal","LucroPrejuizo","cotacao","HidenValue","currency","PosicaoHeader","flexGrow","lucroPrejuizoTotal","lucroPrejuizoDiario","precoAtual","lucroPrejuizoTotalPercentual","lucroPrejuizoDiarioPercentual","PosicaoBody","setHelpModal","details","loan","typeLoan","custoMedio","avgPriceUsd","marketCap","beta","peRatio","earningDate","dividendYield","targetPrice","enterpriseValueRevenue","enterpriseValueEbitda","chart","AreaChart","right","bottom","x1","y1","x2","y2","offset","stopColor","stopOpacity","tickCount","tickFormatter","v","orientation","CartesianGrid","strokeDasharray","Area","stroke","fillOpacity","PosicaoCard","header","ExpandIcon","Months","0","1","2","3","4","5","6","7","8","9","10","11","Carteira","helpModal","chartType","setChartType","classesAtivosChart","setClassesAtivosChart","corretorasAtivosChart","setCorretorasAtivosChart","ativosChart","setAtivosChart","vendasBolsa","setVendasBolsa","setCorretoras","corretorasSemFiltro","setCorretorasSemFiltro","vendasExterior","setVendasExterior","checkboxCorretoras","setCheckboxCorretoras","selectedCorretoras","setSelectedCorretoras","reportDrawerWallet","setReportDrawerWallet","vendasRestantesBolsa","setVendasRestantesBolsa","filterCorretoraAtivo","setFilterCorretoraAtivo","vendasRestantesExterior","setVendasRestantesExterior","showCorretoraFilterModal","setShowCorretoraFilterModal","activeKeys","setActiveKeys","setDetailedActiveKeys","detailedLoadingIndex","setDetailedLoadingIndex","detailedPositions","setDetailedPositions","checkAll","indeterminate","largeChart","carteiraCategorizada","posicoesSemFiltro","carteiraCategorizadaFiltered","patrimonioTotalFiltrado","retornoFiltrado","lucroPrejuizoDiarioPercentualNumerator","resumo","lucroPrejuizoDiarioPercentualDenominator","lucroPrejuizoTotalPercentualNumerator","lucroPrejuizoTotalPercentualDenominator","onChangeActiveKeys","isOpenEvent","lastOpened","replaceAll","detailedActiveKeys","exterior","positions","isentas","apiExterior","vendasTotaisExt","itemPatrimonio","corretoraFilter","posicoesFiltradas","corretoraNames","patrimonio","classesAtivos","serializePatrimonio","downloadAction","queryCorretoras","JSON","stringify","username","renderIsentCard","vendas","restante","tipVendas","complete","borderBottomRightRadius","borderTopRightRadius","xs","sm","PieChart","Pie","cx","cy","innerRadius","outerRadius","labelLine","legendType","midAngle","percent","RADIAN","PI","radius","x","cos","sin","colors","textAnchor","dominantBaseline","Cell","Intl","NumberFormat","numberToCurrency","Option","expandIconPosition","defaultActiveKey","expandIcon","activeKey","collapsible","Array","from","utc","local","bodyStyle","paddingTop","mode","allowClear","NotificationContainer","NotificationDrawer","loadingIndex","setLoadingIndex","lidas","viewed","naoLidas","removeNotification","notifications","viewedDate","notificationImage","toLocaleDateString","AvisosContainer","getContainer","B3Link","CopyLink","button","Instructions","b3Link","IntegrationModal","integrationModal","setIntegrationModal","b3IntegrationExample","xpIntegrationExample","clipboard","writeText","Avisos","dismissBolsa","setDismissBolsa","dismissExterior","setDismissExterior","getCloseBanner","closeBannerBolsaXp","closeBannerExteriorXp","handleDismissBolsa","put","handleDismissExterior","spinning","isIntegratedExterior","Wallet","notificationDrawerOpen","setNotificationDrawerOpen","setHideValues","showZero","TabPane","tab","KEY_PASS","MeuPlano","getUserInfo","cancelModal","showCancelModal","pendingCancel","signature","useDate","changeCardModal","showChangeCardModal","formKey","keyPass","setKeyPass","planBasicInfo","isVelopro","setVelopro","hasCreditCardInfo","setCreditCardInfo","userId","isPlanVelopro","currentPlan","plansTypes","VELOTAX_MAIN_CONCIERGE","VELOTAX_MAIN_CONCIERGE_MONTH","VELOTAX_MAIN_PRO_MONTH","VELOTAX_MAIN_BASIC","VELOTAX_MAIN_BASIC_MONTH","XP_BASIC","XP_BASIC_MONTH","XP_PRO","XP_PRO_MONTH","XP_CONCIERGE","XP_CONCIERGE_MONTH","BASIC","PRO","CONCIERGE","period","showChangeCardButton","paymentForm","fromAccountant","getData","planStatus","contentStyle","alignItems","borderRadius","next_billing_at","start_at","dueDate","pix","credit_card","concierge","card","lastFourDigits","hideDarfDownload","closeModal","changeCardAction","onSuccessGeneral","planCurrent","hidePixButton","blockListCard","paymentData","isPlan","callDarf","customInstallments","cancelText","okText","MaskBirth","MaskPhone","MinhaConta","setUser","signOut","warningDeleteModal","showWarningDeleteModal","modalParametrizacaoOpen","setModalParametrizacaoOpen","isMesa","setIsMesa","birthdate","cellphone","getMesaOperacoes","pass","currentPass","config","endIcon","CheckOutlined","CompaniesExemptList","italic","Regulation","showListModal","setShowListModal","handleListModal","accordion","Link","FormModal","add","rows","visibility","itemToEdit","disableButtons","preFormChildren","hideFooter","setUpdate","update","changedValues","inputs","flat","dataEntries","entries","setFields","row","getFieldsValue","hide","array","alignSelf","integrationDate","apiUrl","marginLeft","DatePickerExtraFooter","DeleteConfirmationModal","updateData","setVisibility","buttonLabel","showToast","successMessage","finish","DatePickerMonthCell","yearResume","list","Darf","darf","viewEdit","userPlanModal","state","queryYear","queryMonth","initialMonth","initialYear","currentDate","history","replaceState","oldModel","setAsset","emitting","setEmitting","darfModal","setDarfModal","paymentModal","setPaymentModal","setPaymentData","setYear","showAssetModal","setShowAssetModal","showDeleteModal","setShowDeleteModal","setYearResume","gettingYearResume","setGettingYearResume","datePickerYear","setDatePickerYear","notAuthorized","setNotAuthorized","setShowNotAuthorizedModal","loadingDarfButton","setLoadingDarfButton","transactionFeature","features","taxFeature","yearResumeFeature","emitted","monthResume","resume","PAYED","NOT_PAYED","getDarf","getYearResume","force","findIndex","handleDarf","justSave","onCloseDarfModal","paymentInfo","clientInfo","insertPix","darfUrl","onChangeMonth","parseInt","unsetAsset","handleCloseDeleteModal","handleCloseAssetModal","handleOpenPaymentModal","handlePlanModal","handleSaveMonth","hasExteriorCalcActive","permissions","handleEventDarfButton","handleLabelButton","handleNavigateToHistoric","settings","historicUrl","dataToPayment","taxes","isExceedTax","additionalTax","direction","newYear","picker","inputReadOnly","suffixIcon","locale","onSelect","onPanelChange","renderExtraFooter","disabledDate","monthCellRender","fullPath","record","bordered","column","ghost","stopPropagation","PlusOutlined","itemLayout","renderItem","actions","handleRemove","Meta","ativoTranslated","marginRight","regular","fromDarf","disablePixOption","disableCreditCardOption","maxPixValue","maxCCValue","selectedYear","CardContainer","Card","ButtonBase","disableTouchRipple","itensBolsa","premium","itensCrypto","PageInfo","subtitle","Plan","buyed","f","desc","Footer","currentStep","setCurrentStep","handleProceed","typePurchase","backtoRoot","hideTerms","selectedCardId","md","step","CardContent","NewCardContent","Row","getInstallments","fixedInstallments","_installments","valorTaxa","_valueTmp","_value","plural","ETypePurchase","CardList","onSelectCard","onChangeInstallments","installmentSelected","cardList","setCardList","SelectInput","installments","getInstallmentsByPrice","textTransform","preview","cvc","holder_name","expiry","exp_month","exp_year","first_six_digits","last_four_digits","valid","issuer","isValid","CreditCardNumber","CreditCardNumberDiner","CreditCardNumberAmex","ExpiryInput","PhoneInput","CPFInput","CVVAmexInput","CVVInput","CardForm","setCvc","setName","setPhone","setNumber","setExpiry","setFocused","setHolderDocument","setIsValidCardForm","uniqueValue","handleBack","addInfo","cardType","getInstallmentsListByPrice","cvv","holderName","validateFields","onPaste","setAttribute","clipboardData","getAttribute","removeAttribute","method","AddressForm","setIsValidAddressForm","CEPInput","onValueChange","street","logradouro","neighborhood","bairro","city","localidade","uf","getAddressSuggestion","inputProps","ErrorScreen","cb","ConfirmedScreen","ResultScreen","PendingScreen","MEIAtividadePrincipalEnum","CreditCardStep","handleClosableModal","darfData","handleSuccess","handleIdBack","backToRoot","cupom","closeMainModal","cardForm","addressForm","setStatus","focused","holderDocument","setInstallments","selectedCard","setSelectedCard","isValidCardForm","isValidAddressForm","getCardInfo","addressInfo","monthExp","monthYear","cardInfo","cardId","card_id","line_1","zip_code","getCustomerInfo","customerInfo","customer_id","changeCardService","getConditionToDisable","changeInstallments","aceitouCGV","naoPossuiPendencia","country","createMeiPayment","createUniquePayment","cupomCode","paymentId","paymentRecurringId","createPlanMainVelotax","PlanModal","modalPlans","plans","setPlan","setClosable","handleDeselectPlan","initialized","MEI","setInitialized","getCardCurrentStep","handleSelectPlan","ConfirmModal","StyledTag","Tag","MeiReportDasStatusEnum","MeiReportStatusTextEnum","MeiDasStatusTextEnum","MeiDasStatusColorEnum","MEIAtividadePrincipalValue","61.6","COMERCIO_INDUSTRIA","65.6","SERVICO","validateIdentification","companyCode","mainActivity","identificationQuestions","formItems","FormItem","tabIndex","onKeyDown","ExteriorOperationType","DasHelpModal","TitleContainer","ExteriorModalContainer","InterestModal","rendimentoAplicacao","BackButton","ExteriorModalContent","TRADE","DEPOSIT","WITHDRAW","cambioReferencia","ganho2","ModalConfirmMail","DarfExterior","openPrejuizoModal","setOpenPrejuizoModal","gainKeys","sellPriceKeys","buyPriceKeys","feeKeys","getByKey","isOldModel","k","getBuyPrice","getGain","getSellPrice","getFee","useDarfExterior","currentDarfDate","dateAllowedOnBasic","createdAt","hideOnBasic","setQuotations","showNotAuthorizedModal","reportData","setReportData","memoriaCalculoFiltered","atualizouImpostoAcumulado","getQuotations","cotacoes","pojo","dataHoraCotacao","noSendMail","filePath","dataToEdit","hasntPlan","cupomDueDate","sendReportMail","reportType","calcReturn","qtt","irrfExterior","verifyFromApi","saldoBRA","emptyText","dataToCreate","dataFeeToCreate","closeDarfModal","Boolean","sendMail","CardXP","PayButton","isReport","itensExterior","showToBasic","basic","PayDarfButtonContainer","check","PayDarfButton","checkedChildren","unCheckedChildren","instanceMsCalc","Authorization","ModalIntegrationExterior","border","VelotaxCalculatorsSelect","SelectBoxes","saveModules","setValues","isArray","handleSetValue","moduleName","deleted","vl","CalculatorsSelect","BolsaOperations","OldTransactionsContext","OldTransactionsProvider","setChanged","loadingGet","setLoadingGet","loadingPut","setLoadingPut","oldPositionEdit","setOldPositionEdit","doacaoHerancaEdit","setDoacaoHerancaEdit","oldPositionList","setOldPositionList","doacoesHerancas","setDoacoesHerancas","showAddPositionModal","setShowAddPositionModal","saveOldPositions","saveDoacoesHerancas","newOrders","or","downloadOldTransactionsExcel","responseType","downloadDoacoesHerancasExcel","getOldTransactionsInit","setShowModalPrePreenchida","getDoacoesHerancasInit","addOldPosition","listOldPosition","newPostion","institution","v4","addDoacaoHeranca","addItem","newDate","retExisting","totalValue","totalFeeNota","expirationDate","operationType","newOperation","updatedAt","editOldPosition","editItem","listOldPositions","editDoacaoHeranca","handleEditOldPosition","handleRemoveOldPosition","handleRemoveDoacaoHeranca","itemParam","handleEditDoacaoHeranca","useOldTransactions","handleDownloadSheet","Uint8Array","blob","Blob","FileSaver","saveAs","ModalZeroBuyPrice","dataZeroBuyPrice","setModalZeroBuyPrice","setIgnoreZeroBuyPrice","whiteSpace","wordWrap","DarfBolsa","darfBolsaRef","hasPremiumPlan","hasItems","sethasItems","dataToEditPreju","setDataToEditPreju","setBuffer","editedAccumulatedTax","showEditPrejuConfirmation","setShowEditPrejuConfirmation","useImperativeHandle","thirdBusinessDayAndMonth","disableCurrentMonth","isoWeekday","firstDayOfMonth","businessDaysCount","isBefore","isAntesTerceiroDiaUtil","hideOldPositionsText","prejuizoFeature","irrfFeature","nAtualizarDarfsPassadas","nAtualizarIrrf","nAtualizarPrejuizosAcumulados","atualizarTotalmente","atualizouCorretagem","memoCalc","originalDate","setTab","bolsaOperationsRef","handleNext","scrollBy","clientWidth","handlePrev","resetedPreju","setResetedPreju","showPrejuModal","setShowPrejuModal","showCorretagemModal","setShowCorretagemModal","loadingResetPreju","loadingEditPreju","setLoadingEditPreju","ignoreZeroBuyPrice","setDataZeroBuyPrice","modalZeroBuyPrice","preju","custoCorretagem","userCustoCorretagemComum","userCustoCorretagemDT","userCustoCorretagemFII","handleClosePrejuModal","handleCloseCorretagemModal","showIrrfModal","setShowIrrfModal","irrf","handleEditIrrf","handleCloseIrrfModal","hasZeroBuyPrice","handleEditCorretagem","container","rowIndex","colIndex","QuestionCircleOutlined","avgSellPrice","handleEditPrejuData","removeAsset","cards","ReportContainer","OldTransactions","hasLandingSide","hasLendingPosition","setHasLendingPosition","downloading","setDownloading","URL","createObjectURL","appendChild","remove","flex","justifySelf","DownloadOutlined","PlusCircleOutlined","oldPosition","questions","subTitle","BolsaManualContainer","UploadVelotax","descText","customText","UploadDecContext","UploadDecProvider","loadingSkip","confirmarModal","setConfirmarModal","beforeUpload","nameSplitted","isDec","customRequest","formData","FormData","append","apiIrpf2023","processamantoDec2019","reponse","useUploadDec","DecUploadContent","GovBrIcon","DecPrepreenchidaContent","Step","PrePreenchidaModal","showModal","setShowModal","forceRender","showArrow","accept","QuestionContainer","Question","RendimentoFormItems","tipo","valorRendimento","cpfPagador","cpfBeneficiario","RendimentoFormItemRows","ImpostoTotalRendimentos","impostoPrincipal","monthStock","backendRendimentos","userCode","totalRendimentos","baseTributaria","totalDependentes","totalDespesas","totalPrevidencia","totalPensao","totalDeducoes","RendimentosImpostosDevidos","BottomAdvice","AttentionIconContainer","TransferenciaCustodiaContext","TransferenciaCustodiaProvider","pathname","setAtivo","ativos","setAtivos","indexAtivo","setIndexAtivo","redirected","setRedirected","showFormModal","setShowFormModal","isInvalidItem","valorCompraUSDOrigemBRA","valorCompraUSDOrigemEUA","handleLoading","closeFormModal","closeDeleteModal","getAtivos","useTransferenciaCustodia","handleAdd","saveAtivos","isValidFile","useNotasCorretagem","sameNameFiles","loadingSend","setLoadingSend","setNotas","showNotasCorretagemModal","setShowNotasCorretagemModal","sendNotas","originFileObj","sendNotasCustodyTransfer","uploadProps","fileList","multiple","listType","onRemove","uid","files","sameNameFile","Upload","LIST_IGNORE","showUploadList","showRemoveIcon","showPreviewIcon","showDownloadIcon","dayFilters","UserPlanUpgradeEnum","yearFilters","NotasHistoricoModal","rowKey","simple","filterReset","filterIcon","ReportAlertTitle","columnGap","lineHeight","ModalStyled","sendEmailSheet","dolarQuote","DividendosModal","ticker","referenceDate","monthList","monthName","handleValue","variable","handleValueBolsa","DividendosTabs","setItem","setIndex","isBolsa","handleItem","imgHeight","IntegrationButton","logo","integrado","isB3LinkRedirect","setIntegrationModalVisible","isB3","CheckCircleTwoTone","twoToneColor","B3IntegrationButtons","showIntegrationButton","b3Logo","NotasCorretagem","xtageIntegration","impostoPagoExterior","object","setObject","checkType","getTotal","auxTotal","totalRendimento","totalRendimentoReal","totalImposto","totalImpostoReal","valorRendimentoReal","impostoPagoExteriorReal","groupBycode","aux","FlexDiv","PassfolioIntegrationModal","setVisible","integrationData","secret","integrationParams","setParams","onReset","authenticatorId","PassfolioIntegration","dependentId","integrationCallback","integrationModalVisible","setIntegrado","setIntegrationData","getEstadoIntegracao","providerExists","ExteriorIntegration","TransferenciaCustodiaFormItems","yearLimit","monthLimit","dayLimit","checkDateLimit","DoacoesHerancas","setOrders","ordersLocal","Pages","Bolsa","infoModal","toggleModal","reportCount","setReportCount","reportIsReady","setReportIsReady","userPlanInfoStatus","handleAnualReport","reportCountInterval","itvl","isProcessing","reportFinishCountInterval","checkProcessorAction","Crypto","isBasic","MeiDas","showHelpModal","setShowHelpModal","showPlanModal","setShowPlanModal","yearOptions","dasMonths","getDasList","responseItem","pay","das","checkIfPayed","inssBeneficiary","handleModal","handleEmit","handleHelpModal","CheckCircleOutlined","CloseCircleOutlined","inssAction","issueDate","requestDate","keyboard","Exterior","reportLoading","setReportLoading","setReportDisabled","showNoOperationsModal","setShowNoOperationsModal","checkOperations","has","handleReportClick","notified","errorDates","Historic","setHolidays","stateYear","itemToPay","setItemToPay","showErrorCard","setShowErrorCard","setErrorDates","showCalcModal","setShowCalcModal","historicFeature","payFeature","downloadFeature","isCripto","isExterior","backend","getDowloadLinks","dataLinks","allSettled","getHistoric","payAction","editAction","noPlanMode","calc","handleOpenPlanModal","handlePayButton","handleOpenDarfModal","obj","handleCloseCalcModal","darfId","exteriorTransactionsFilterCalc","handleFinalValue","ImpostoAPagarNoPlan","ErrorCard","ImpostoAPagarWithPlan","getHolidays","dataFormated","defineMovementText","ultimoDiaUtilDoMes","vencimento","checkMonth","ed","minHeight","sidebar","component","showNavigateToIntegrationButton","integrationUrl","Settings","MeiReport","contentElement","loadingReports","setLoadingReports","reports","setReports","getReports","requiredMark","annualInvoicing","EMITTED","hasEmployee","scrollIntoView","behavior","ReportBolsa","ssoToken","setAction","itemToReport","setItemToReport","loadingLinks","sendEmail","act","mobileAction","isPro","handleActionButton","localStorage","getItem","Integration","BolsaManual","currentQuestion","showAlertModal","setShowAlertModal","showModalPrePreenchida","handleAlertModalVisibility","handleSubmit","overflow","question","DoacoesHeranca","Rendimentos","itemprops","monthView","yearView","Dependentes","Autonomos","Previdencia","Pensao","itemIndex","setItemIndex","showRendimentoModal","setShowRendimentoModal","setId","setMonthStock","isSaveItens","impostos","setImpostos","buildCalcTaxBody","numeroDependentes","gastosAutonomos","gastosPrevidencia","gastosPensao","calcTaxes","deducoes","rendimentosBackend","rendimentos","currentValue","getRendimentos","currentImpostos","getRendimento","buildNewImpostos","saveItems","newImpostos","generateDarf","pixValue","MsDarf","valueCharge","goToHistoric","handleRegularize","apiRendimentos","handleCloseItemModal","unsetItem","currentArray","changeInputState","valueToCharge","controls","onBlur","DollarCircleOutlined","PENDING","AnnualReport","fileLink","HistoricBolsa","integrouHoje","backgroundIntegrationDisabled","wordSpacing","letterSpacing","integrationPath","textDecoration","ReportExterior","hasPermissionExteriorPlanos","updateUserInfo","setInitialYear","loadingError","setLoadingError","reportDisabled","Identification","handleProviderExists","saving","setSaving","isEditing","setIsEditing","setCurrentQuestion","handleNav","formItem","newValue","realValue","offsetTop","scrollTo","DividendosBolsa","backendBolsa","IntegrationBolsa","cameFromRegister","setCameFromRegister","bolsa","IntegrationCrypto","DividendosExterior","setQuotes","sortedData","totalData","acumulatorImpostoPagoExterior","acumulatorValorRendimento","backendExterior","newData","IntegrationExterior","TransferenciaCustodia","at","orderId","IntegrationExteriorXP","setIntegrated","isIntegrated","XP_logo","PlanosContainer","LogoContainer","planos","for","benefits","popular","planUpgrade","BASIC_TO_PRO","BASIC_TO_CONCIERGE","PRO_TO_CONCIERGE","getPlanPrice","fillRule","clipRule","SvgSelo7Dias","SvgSeloGarantia","gradientUnits","SvgSeloPlayStore","SvgSeloAppStore","getStatus","StatusCSSClassEnum","StatusTextEnum","Planos","selectedPlan","setSelectedPlan","setPlanUpgrade","checkWasPaid","delay","attempts","isAd","actionTypeText","isUpgrade","benefit","onSucessPix","onSucessCreditCard","stopIntervalPix","Field","Typography","Value","ActionContainers","PermissaoAssessorModal","dataContent","changePermission","useRequireAccess","handleCancel","escritorio","assessor","RequireAccessContext","RequireAccessProvider","escritorioLiberados","setEscritorioLiberados","assessoresLiberados","setAssessoresLiberados","solicitantesAcesso","setSolicitantesAcesso","solicitacaoModal","s","checkPermissionUser","assessorId","listRequiredAccess","solicitantes","removeOfficeIntegration","authorize","preventNotification","ModalConfirmDesvinculo","ManagerAccess","officeName","TabFormItem","tabBarExtraContent","SalarioText","listStyle","EducacaoText","AnualMensalText","HelpModalTexts","rendaBrutaMensal","gastoMensalSaude","gastoMensalEducacao","possuiDependentes","pagaPensaoAlimenticia","rendaAnualMensal","saudeAnualMensal","educacaoAnualMensal","pensaoAnualMensal","pgblQuestions","hideQuestionNumber","rendaBrutaMensalMode","possuiGastoMensalSaudeDependente","gastoMensalSaudeDependenteMode","possuiGastoMensalEducacaoDependente","gastoMensalEducacaoDependenteMode","gastoPensaoAlimenticiaMode","PGBLSimulator","setResume","editting","setEditting","autorizacao","setAutorizacao","backupValues","setBackupValues","setQuestions","getResume","resumoSimulacao","possuiGastoMensalSaude","possuiGastoMensalEducacao","quantidadeDependente","gastoMensalSaudeDependente","gastoMensalEducacaoDependente","formValidate","formNavigate","gastoMensalSaudeMode","gastoMensalEducacaoMode","gastoPensaoAlimenticia","backupKeys","pre","changedKeys","updateKeys","o","completa","valorRestituicao","simplificada","ForgotPassword","ChangePassword","SvgBolsa","SvgExterior","EPlanStep","brokers","dns","useSSO","usePGBL","useSettings","hideCalculadoras","hideJuridicMessage","primary","secondary","sidebarSelectedColor","sidebarSelectedColorDark","html","favicon","XP_logo_black","iconAlternative","iconStyle","iconAlternativeStyle","hidePoweredBy","defaultPath","defaultProviderExistsPath","pages","calcId","integratedOnly","showOnSidebar","subPages","darfComponent","LoadingSession","NameNotification","loadingIntegrationStatus","loadingSession","showNameModal","setShowNameModal","showed","setShowed","defaultIntegration","BrokerContext","BrokerProvider","hostname","setPathBackup","setIntegration","integrations","setIntegrations","setLoadingIntegrationStatus","brokerList","broker","dnsBroker","isAfter","sidebarPages","page","handleIntegrateStatus","apiName","pathnameWindowArray","pathnameWindow","abledPages","publicRoutes","privateRoutes","brokerRoutes","Element","privatePaths","publicPaths","abledPagesPaths","getElementsByTagName","innerHTML","pixTaxesByInsitution","PixPaymentStep","onSucess","backStep","brCode","setBrCode","qrCodeLink","setQRCodeLink","qrCodeLinkUrl","setQRCodeLinkUrl","callUserPlanPayment","callDarfPix","qrCode","br_code","payment","plano","totalPrice","flexDirection","wordBreak","maxWidth","CardButton","blockMultipleReq","debounce","PaymentModal","setCupom","installment","setInstallment","loadingPayment","setLoadingPayment","loadingCards","setLoadingCards","CHOOSE_PAYMENT","setStep","check_id","FINISHED","changePaymentId","LOADING","purchaseType","UNIQUE","plansContentDisplay","CC_PAYMENT","PIX_PAYMENT","cancelActions","UserPlanModal","tabPlanActive","textCupomErr","setTextCupomErr","setButtonLoading","setShowInputCupom","MinusOutlined","onKeyPress","AuthContext","AuthProvider","decUrl","setDecUrl","chatOpen","setChatOpen","showDrawer","setShowDrawer","showDbkModal","setShowDbkModal","wasMessageSent","setWasMessageSent","showPhoneModal","setShowPhoneModal","showIndicarModal","setShowIndicarModal","chatNotificationQtt","setChatNotificationQtt","userPlanModalTitle","forceUpdateTabNavigator","setForceUpdateTabNavigator","planInfo","planInfoToHasPlan","handleCalcs","calcs","navigateTo","visibleCalcs","getUserInformation","backnedRendimentos","msDarf","isBlocked","userFromApi","cpfProtegido","profileId","dependents","visibleModules","modulesStatus","answeredStepDec","showContratarMalhaFina","cellphoneFilled","showAccountantPremiumButton","showContratarContador","isIntegratedBolsa","isAccountant","apiBolsaVelotax","parse","updateUserDec","updatedUser","removeItem","reload","interceptors","use","mostrouRecomendacao","authAccountantSSOCnpj","signUpData","onboardingData","hiringData","policiesAccepted","modules","goods","incomeTypes","operationTypes","set","irpfBannerActive","setSsoToken","signed","sslSecure","PrivateRoute","OnlyPublicRoute","SvgVeloicon","PageNotFound","extra","LayoutHeader","Layout","Header","HistoryContext","HistoryProvider","setHistory","handleBackHistory","last","flexWrap","LogoStyled","Logo","VelotaxLogo","PoweredByVelotax","VelotaxLogoWhite","SvgSair","SvgConta","ContentButton","DrawerSider","Drawer","LayoutSider","Sider","Modules","Menu","Module","sidebarselectedcolor","SupportContainerIcon","SideBarContainer","theme","Sidebar","pagePath","openKeys","setOpenKeys","handleNavigate","focus","cripto","subPage","loginInSupport","urlSupportSSO","selectedKeys","poweredBy","AntLayout","nav","SvgBolsaDeValores","SvgAtivosNoExterior","TabNavigator","setActiveKey","menuItems","matchItem","disabledOverflow","IRPFBannerContainer","IRPFBanner","setShow","PageWrapper","sideBar","scrollRef","useScroll","showIrpfBanner","setShowIrpfBanner","HeaderContainer","PublicWrapper","Routes","lastPath","setLastPath","ConfigProvider","primaryColor","infoColor","successColor","route","createGlobalStyle","chatApi","ChatButton","ChatWindow","KEY","KEY_TIMESTAMP","defaultMsg","ChatGPT","storage","chatBodyRef","textareaRef","msg","setMsg","scrolled","setScrolled","firstLoading","setFirstLoading","msgs","setMsgs","scrollToBottom","scrollHeight","after24H","timestamp","loadMsgs","threadId","userMessage","formattedGptAnswer","DOMPurify","sanitize","botResponse","sendMsg","dangerouslySetInnerHTML","__html","textarea","ContextWrapper","FallbackUI","ErrorBoundaryRollbar","ErrorBoundary","fallbackUI","SupportButton","Support","setLoadingLogin","App","host","rollbarConfig","accessToken","captureUncaught","captureUnhandledRejections","environment","createTheme","palette","main","ThemeProvider","ptBR","renderEmpty","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode"],"mappings":"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","file":"static/js/main.a98f06b8.chunk.js","sourcesContent":["import { Tooltip } from \"antd\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { RiDivideFill, RiStockLine } from \"react-icons/ri\";\nimport { GrTextAlignFull } from \"react-icons/gr\";\nimport { AiFillQuestionCircle } from \"react-icons/ai\";\nimport { HiOutlineDocumentReport } from \"react-icons/hi\";\nimport {\n MdOutlineAlternateEmail,\n MdOutlineAttachMoney,\n MdDone,\n} from \"react-icons/md\";\n\ninterface Feature {\n name: string;\n desc?: string;\n icon?: JSX.Element;\n secondaryIcon?: JSX.Element;\n secondaryLabel?: string;\n}\n\nexport enum PlanEnum {\n BASIC_V1 = \"BASIC_V1\",\n PRO_V1 = \"PRO_V1\",\n}\n\nexport interface Plan {\n type: PlanEnum | UserPlanEnum;\n title: string;\n price: number;\n discount: number;\n originalPrice: number;\n includedFeatures: Feature[];\n otherFeatures: Feature[];\n}\n\nexport const OtherFeatures: Feature[] = [\n {\n name: \"Emissão de relatório anual (DASN-MEI)\",\n },\n {\n name: \"Emissão de guias mensais (DAS)\",\n },\n];\n\nexport enum UserPlanEnum {\n VELOTAX_MAIN_BASIC = \"VELOTAX_MAIN_BASIC\",\n VELOTAX_MAIN_BASIC_MONTH = \"VELOTAX_MAIN_BASIC_MONTH\",\n VELOTAX_MAIN_FREE = \"VELOTAX_MAIN_FREE\",\n VELOTAX_MAIN_PRO = \"VELOTAX_MAIN_PRO\",\n VELOTAX_MAIN_PRO_MONTH = \"VELOTAX_MAIN_PRO_MONTH\",\n VELOTAX_MAIN_CONCIERGE = \"VELOTAX_MAIN_CONCIERGE\",\n VELOTAX_MAIN_CONCIERGE_MONTH = \"VELOTAX_MAIN_CONCIERGE_MONTH\",\n XP_BASIC = \"XP_BASIC\",\n XP_PRO = \"XP_PRO\",\n XP_CONCIERGE = \"XP_CONCIERGE\",\n XP_PRO_MONTH = \"XP_PRO_MONTH\",\n}\n\nexport interface UserPlan {\n type: UserPlanEnum;\n interval: \"Anual\" | \"Mensal\";\n title: string;\n price: number;\n instalments: number;\n discount?: number;\n originalPrice: number;\n includedFeatures: Feature[];\n otherFeatures?: Feature[];\n free?: boolean;\n maskValue?: boolean;\n percentDiscount: number;\n descriptions?: any;\n discountText?: string;\n}\n\nconst overlayStyle = {\n opacity: 0.9,\n backgroundColor: \"#000000\",\n fontSize: 14,\n fontWeight: 500,\n};\n\nexport const UserPlans: UserPlan[] = [\n // {\n // type: UserPlanEnum.VELOTAX_MAIN_FREE,\n // title: \"Rede\",\n // free: true,\n // price: 0.00,\n // originalPrice: 0.00,\n // percentDiscount: 0,\n // includedFeatures: [\n // {\n // name: \"Módulos ilimitados\",\n // icon: <MdOutlineAttachMoney size={18} />,\n // },\n // {\n // name: \"Não inclui emissão de DARFs\",\n // icon: <BiCopy size={18} className=\"fill\" />,\n // },\n // {\n // name: \"Suporte por e-mail\",\n // icon: <MdOutlineAlternateEmail size={18} className=\"fill\" />,\n // },\n // ],\n // descriptions: [\n // { label: 'Integração com B3 e corretoras', checked: true, icon: <MdDone size={20} color=\"var(--ant-success-color)\" /> },\n // { label: 'Cálculos automáticos, com multa e juros', checked: true, icon: <MdDone size={20} color=\"var(--ant-success-color)\" /> },\n // {\n // label: 'Emissão de DARF corrente e retroativo',\n // checked: false, icon: <AiOutlineClose color=\"var(--ant-error-color)\" size={17} />\n // },\n // {\n // label: 'Pagamento dos impostos via PIX ',\n // checked: false, icon: <AiOutlineClose color=\"var(--ant-error-color)\" size={17} />\n // },\n // {\n // label: 'Parcelamento em 4x no cartão de crédito',\n // checked: false, icon: <AiOutlineClose color=\"var(--ant-error-color)\" size={17} />\n // },\n // { label: 'Suporte com especialista em IR ao vivo', checked: false, icon: <AiOutlineClose color=\"var(--ant-error-color)\" size={17} /> },\n // ]\n // },\n // {\n // type: UserPlanEnum.VELOTAX_MAIN_BASIC,\n // title: \"Basic\",\n // price: 29.9,\n // originalPrice: 79.9,\n // percentDiscount: 60,\n // maskValue: true,\n // includedFeatures: [\n // {\n // name: \"Módulos ilimitados\",\n // icon: <MdOutlineAttachMoney size={18} />,\n // },\n // {\n // name: \"Emissão de DARFs ilimitados\",\n // icon: <BiCopy size={18} className=\"fill\" />,\n // },\n // {\n // name: \"Suporte por e-mail\",\n // icon: <MdOutlineAlternateEmail size={18} className=\"fill\" />,\n // },\n // ],\n // descriptions: [\n // {\n // label: \"Integração com B3 e corretoras\",\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Cálculos automáticos, com multa e juros\",\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Emissão de DARF corrente e retroativo\",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Permite a emissão de forma ilimitada\n // de DARFs, inclusive para os meses em\n // atraso\"\n // >\n // <AiFillQuestionCircle size={20} />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Pagamento dos impostos via PIX \",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Facilita o pagamento dos seus DARFs\n // aceitando PIX de qualquer banco\"\n // >\n // <AiFillQuestionCircle size={20} />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Parcelamento em 4x no cartão de crédito\",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Permite o parcelamento dos seus\n // impostos em até 4x no cartão de\n // crédito\"\n // >\n // <AiFillQuestionCircle size={20} />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Suporte com especialista em IR ao vivo\",\n // checked: false,\n // icon: <AiOutlineClose color=\"var(--ant-error-color)\" size={17} />,\n // },\n // ],\n // },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO,\n interval: \"Anual\",\n title: \"PREMIUM\",\n price: 19.9,\n originalPrice: 19.9,\n percentDiscount: 0,\n instalments: 12,\n // discountText: \"ou 4 meses grátis\",\n maskValue: true,\n includedFeatures: [\n {\n name: \"Módulos de renda variável e exterior\",\n icon: <GrTextAlignFull size={18} />,\n },\n {\n name: \"Emissão de DARF ilimitados\",\n icon: <BiCopy size={18} />,\n secondaryIcon: (\n <Tooltip\n overlayStyle={overlayStyle}\n title=\"Permite a emissão ilimitada de DARF, inclusive para os meses em atraso\"\n >\n <AiFillQuestionCircle size={20} />\n </Tooltip>\n ),\n },\n {\n name: \"Relatórios auxiliares para declaração de IRPF\",\n icon: <RiStockLine size={18} />,\n },\n {\n name: \"Pagamento de DARF por PIX ou cartão de crédito\",\n icon: <MdOutlineAttachMoney size={18} />,\n },\n {\n name: \"Parcelamento dos impostos em até 12x\",\n icon: <RiDivideFill size={18} />,\n },\n ],\n descriptions: [\n {\n label: \"Integração com B3\",\n checked: true,\n icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n },\n {\n label: \"Cálculos automáticos, com multa e juros\",\n checked: true,\n icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n },\n {\n label: \"Integração com XP International\",\n checked: true,\n icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n },\n // {\n // label: \"Emissão de DARF corrente e retroativo\",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Permite a emissão de forma ilimitada\n // de DARFs, inclusive para os meses em\n // atraso\"\n // >\n // <AiFillQuestionCircle\n // size={20}\n\n // />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Pagamento dos impostos via PIX \",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Facilita o pagamento dos seus DARFs\n // aceitando PIX de qualquer banco\"\n // >\n // <AiFillQuestionCircle\n // size={20}\n\n // />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Parcelamento em 4x no cartão de crédito\",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Permite o parcelamento dos seus\n // impostos em até 4x no cartão de\n // crédito\"\n // >\n // <AiFillQuestionCircle\n // size={20}\n\n // />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Suporte com especialista em IR ao vivo\",\n // info: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Conte com a ajuda ilimitada e ao vivo\n // do nosso time de especialistas em IR.\n // Horário: Seg-Sex, das 8h à s 18h\"\n // >\n // <AiFillQuestionCircle\n // size={20}\n\n // />\n // </Tooltip>\n // ),\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n ],\n },\n // {\n // type: UserPlanEnum.XP_PRO_MONTH,\n // title: \"PREMIUM\",\n // interval: \"Mensal\",\n // price: 29.9,\n // originalPrice: 29.9,\n // percentDiscount: 0,\n // maskValue: true,\n // includedFeatures: [\n // {\n // name: \"Módulos de renda variável e exterior\",\n // icon: <GrTextAlignFull size={18} />,\n // },\n // {\n // name: \"Emissão de DARF ilimitados\",\n // icon: <BiCopy size={18} />,\n // secondaryIcon: (\n // <Tooltip\n // overlayStyle={overlayStyle}\n // title=\"Permite a emissão ilimitada de DARF, inclusive para os meses em atraso\"\n // >\n // <AiFillQuestionCircle size={20} />\n // </Tooltip>\n // ),\n // },\n // {\n // name: \"Relatórios auxiliares para declaração de IRPF\",\n // icon: <RiStockLine size={18} />,\n // },\n // {\n // name: \"Pagamento de DARF por PIX ou cartão de crédito\",\n // icon: <MdOutlineAttachMoney size={18} />,\n // },\n // {\n // name: \"Parcelamento dos impostos em até 12x\",\n // icon: <RiDivideFill size={18} />,\n // },\n // ],\n // descriptions: [\n // {\n // label: \"Integração com B3\",\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Cálculos automáticos, com multa e juros\",\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // {\n // label: \"Integração com XP International\",\n // checked: true,\n // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // },\n // // {\n // // label: \"Emissão de DARF corrente e retroativo\",\n // // info: (\n // // <Tooltip\n // // overlayStyle={overlayStyle}\n // // title=\"Permite a emissão de forma ilimitada\n // // de DARFs, inclusive para os meses em\n // // atraso\"\n // // >\n // // <AiFillQuestionCircle\n // // size={20}\n\n // // />\n // // </Tooltip>\n // // ),\n // // checked: true,\n // // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // // },\n // // {\n // // label: \"Pagamento dos impostos via PIX \",\n // // info: (\n // // <Tooltip\n // // overlayStyle={overlayStyle}\n // // title=\"Facilita o pagamento dos seus DARFs\n // // aceitando PIX de qualquer banco\"\n // // >\n // // <AiFillQuestionCircle\n // // size={20}\n\n // // />\n // // </Tooltip>\n // // ),\n // // checked: true,\n // // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // // },\n // // {\n // // label: \"Parcelamento em 4x no cartão de crédito\",\n // // info: (\n // // <Tooltip\n // // overlayStyle={overlayStyle}\n // // title=\"Permite o parcelamento dos seus\n // // impostos em até 4x no cartão de\n // // crédito\"\n // // >\n // // <AiFillQuestionCircle\n // // size={20}\n\n // // />\n // // </Tooltip>\n // // ),\n // // checked: true,\n // // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // // },\n // // {\n // // label: \"Suporte com especialista em IR ao vivo\",\n // // info: (\n // // <Tooltip\n // // overlayStyle={overlayStyle}\n // // title=\"Conte com a ajuda ilimitada e ao vivo\n // // do nosso time de especialistas em IR.\n // // Horário: Seg-Sex, das 8h à s 18h\"\n // // >\n // // <AiFillQuestionCircle\n // // size={20}\n\n // // />\n // // </Tooltip>\n // // ),\n // // checked: true,\n // // icon: <MdDone size={20} color=\"var(--ant-success-color)\" />,\n // // },\n // ],\n // },\n];\n\nexport const Plans: Plan[] = [\n {\n type: PlanEnum.BASIC_V1,\n title: \"basic\",\n price: 29.9,\n discount: 75,\n originalPrice: 119.9,\n includedFeatures: [\n {\n name: \"Emissão de DASN ilimitados\",\n icon: <HiOutlineDocumentReport size={18} />,\n },\n {\n name: \"Suporte por email\",\n icon: <MdOutlineAlternateEmail size={18} className=\"fill\" />,\n },\n ],\n otherFeatures: OtherFeatures.slice(0, 1),\n },\n {\n type: PlanEnum.PRO_V1,\n title: \"plus\",\n price: 39.9,\n discount: 75,\n originalPrice: 149.9,\n includedFeatures: [\n {\n name: \"Emissão de DAS e DASN ilimitados\",\n icon: <HiOutlineDocumentReport size={18} />,\n },\n {\n name: \"Suporte por email\",\n icon: <MdOutlineAlternateEmail size={18} className=\"fill\" />,\n },\n ],\n otherFeatures: OtherFeatures,\n },\n];\n","import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_IRPF_URL || \"http://localhost:3333\",\n headers: {\n \"x-api-provider\": \"XP\",\n },\n});\n\nexport default api;\n","import axios from \"axios\";\n\nconst apis = axios.create({\n baseURL: process.env.REACT_APP_URL || \"http://localhost:8888\",\n});\n\nexport const NOT_AUTHORIZED = \"not authorized\";\n\nexport default apis;\n","export const states = [\n \"AC\",\n \"AL\",\n \"AP\",\n \"AM\",\n \"BA\",\n \"CE\",\n \"DF\",\n \"ES\",\n \"GO\",\n \"MA\",\n \"MT\",\n \"MS\",\n \"MG\",\n \"PA\",\n \"PB\",\n \"PR\",\n \"PE\",\n \"PI\",\n \"RR\",\n \"RO\",\n \"RJ\",\n \"RN\",\n \"RS\",\n \"SC\",\n \"SP\",\n \"SE\",\n \"TO\",\n];\n","import * as yup from \"yup\";\nimport \"yup-phone\";\nimport moment from \"moment\";\nimport Payment from \"payment\";\nimport { validateBr } from \"js-brasil\";\nimport { states } from \"../constants/others/states\";\n\nexport const isValidCPF = (cpf: string) => validateBr.cpf(cpf || \"\");\n\nexport const isValidCNPJ = (cnpj: string) => validateBr.cnpj(cnpj || \"\");\n\nexport const isValidRenavam = (renavam?: string) =>\n renavam && validateBr.renavam(renavam);\n\nexport const isValidFullName = (name: string) =>\n name.trim().split(\" \").length > 1;\n\nexport const isValidEmail = (email?: string) =>\n email && yup.string().email().isValidSync(email);\n\nexport const isValidPhone = (phone?: string) =>\n phone &&\n yup.string().phone(\"BR\").isValidSync(phone) &&\n phone.replace(/[^0-9\\\\.]+/g, \"\").length === 11;\n\nexport const isValidDate = (date?: string) =>\n date &&\n /^((0?[1-9]|[12][0-9]|3[01])[/](0?[1-9]|1[012])[/](19|20)[0-9]{2})*$/.test(\n date\n );\n\nexport const isDateOnReferenceMonth = (\n month: number,\n year: number,\n date?: string\n) => {\n if (date && isValidDate(date)) {\n try {\n const momentDate = moment(date, \"DD/MM/YYYY\");\n const start = moment(`${year}-${month + 1}`, \"YYYY-M\", true).startOf(\"M\");\n const end = moment(`${year}-${month + 1}`, \"YYYY-M\", true).endOf(\"M\");\n return moment(momentDate).isBetween(start, end, undefined, \"[]\");\n } catch (err) {\n return false;\n }\n }\n return false;\n};\n\nexport const isNonDateOnFuture = (\n month: number,\n year: number,\n date?: string\n) => {\n if (date && isValidDate(date)) {\n try {\n const momentDate = moment(date, \"DD/MM/YYYY\");\n const end = moment(`${year}-${month + 1}`, \"YYYY-M\", true).endOf(\"M\");\n return moment(momentDate).isSameOrBefore(end);\n } catch (err) {\n return false;\n }\n }\n return false;\n};\n\nexport const isValidVoterCard = (voterCard?: string) =>\n voterCard && voterCard.replace(/[._]/g, \"\").length === 12;\n\nexport const isValidCEP = (cep?: string) => cep && validateBr.cep(cep);\n\nexport const checkDateExpiration = (limit: string, value: string) => {\n const [day, month, year] = value.split(\"/\");\n const date = new Date(\n Number(year),\n Number(month) - 1,\n Number(day),\n 23,\n 59,\n 59\n );\n return date <= new Date(limit);\n};\n\nexport const checkDateLimit = (limit: string, value: string) => {\n const [day, month, year] = value.split(\"/\");\n const [yearLimit, monthLimit, dayLimit] = limit.split(\"-\");\n const date = new Date(Number(year), Number(month) - 1, Number(day), 0, 0, 0);\n const dateLimit = new Date(\n Number(yearLimit),\n Number(monthLimit) - 1,\n Number(dayLimit),\n 0,\n 0,\n 0\n );\n return date > dateLimit;\n};\n\nexport const isValidIPTU = (value?: string) =>\n !value ||\n String(value || \"\").length === 0 ||\n (String(value || \"\").length >= 8 && String(value || \"\").length <= 30);\n\nexport const isValidDeclarationReceipt = (value: string) =>\n !value || value.length === 10 || value.length === 12;\n\nexport const removeSpecialCharacters = (value: string) => {\n if (!value) return \"\";\n return value?.normalize(\"NFD\").replace(/[^a-zA-Zs]/g, \"\");\n};\n\nexport const isValidStateAddress = (value: string) => {\n return states.includes(value.toUpperCase());\n};\n\nexport const isValidShelfLife = (value: string) => {\n let currentMonth: number | string | undefined = new Date().getMonth() + 1;\n let currentYear = (new Date().getFullYear() + \"\")?.substring(2);\n currentMonth = currentMonth < 10 ? `0${currentMonth}` : currentMonth;\n let monthYearTime = `${currentYear}${currentMonth}`;\n let valueTime = value?.split(\"/\").reverse().join().replace(\",\", \"\");\n return (\n !!value &&\n (valueTime < monthYearTime ||\n !/\\b(0[1-9]|1[0-2])\\/?([0-9]{4}|[0-9]{2})\\b/.test(value))\n );\n};\n\nexport const isValidCreditCard = (value: string) =>\n Payment.fns.validateCardNumber(value);\n","import moment from \"moment\";\nimport { Tooltip } from \"antd\";\nimport { BiErrorCircle } from \"react-icons/bi\";\nimport NumberFormat from \"react-number-format\";\n\nexport const removeLiNumbers = (t: string) => t.replace(/^([\\d]+\\.*)+/, \"\");\n\nexport const onlyNumbersToPhone = (value: string) =>\n value.replace(/[()_.%-/\\s/]/g, \"\");\n\nexport const formatCurrency = (value: number, prefix = \"R$ \") => {\n return (\n <NumberFormat\n prefix={prefix}\n decimalScale={2}\n displayType=\"text\"\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n fixedDecimalScale={true}\n value={\n value?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }) || 0\n }\n />\n );\n};\n\nexport const numberToCurrency = (value: number) => {\n const formatter = new Intl.NumberFormat('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n })\n\n return formatter.format(value)\n}\n\nexport const numberToPercentage = (value?: number, toFixed = 2) => {\n const number = typeof value === \"number\" ? value : 0;\n return `${Number(number * (number < 1 ? 100 : 1)).toLocaleString(\"pt-br\", {\n minimumFractionDigits: toFixed,\n maximumFractionDigits: toFixed,\n })}%`;\n};\n\nexport const numberToPercentageWallet = (value?: number, toFixed = 2) => {\n const number = typeof value === \"number\" ? value : 0;\n return `${Number(number * 100).toLocaleString(\"pt-br\", {\n minimumFractionDigits: toFixed,\n maximumFractionDigits: toFixed,\n })}%`;\n};\n\nexport const currencyToNumber = (value: string, prefix = \"R$\") =>\n Number(\n value\n ?.replace(prefix, \"\")\n .replace(/\\./g, \"\")\n .replace(/,/g, \".\")\n .replace(/\\s/g, \"\")\n ) || 0;\n\nexport const replaceDotByComma = (value: number) => {\n return String(value).replace(/\\./g, \",\");\n};\n\nexport const ErrorIcon = (\n <Tooltip title=\"Este campo é obrigatório\">\n <BiErrorCircle size={24} className=\"error-icon\" />\n </Tooltip>\n);\n\nexport const zero = (n: number) => (n < 10 ? `0${n}` : `${n}`);\n\nexport const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const year = date.getFullYear();\n const day = zero(date.getDate());\n const month = zero(date.getMonth() + 1);\n return `${day}/${month}/${year}`;\n};\n\nexport const formatDateHour = (dateString: string) =>\n `${moment(dateString).format(\"DD/MM/YYYY\")} à s ${moment(dateString).format(\n \"HH:mm\"\n )}`;\n","export const cpfInputMask = \"999.999.999-99\";\nexport const cnpjInputMask = \"99.999.999/9999-99\";\n\nexport const maskCpf = (cpf = \"\") => {\n if (!cpf) return \"\";\n if (cpf.includes(\".\")) return cpf;\n const cpfArray = cpf.split(\"\");\n cpfArray.splice(3, 0, \".\");\n cpfArray.splice(7, 0, \".\");\n cpfArray.splice(11, 0, \"-\");\n return cpfArray.join(\"\");\n};\n\nexport const maskNitPisPasep = (nitpispasep = \"\") => {\n if (!nitpispasep) return \"\";\n if (nitpispasep.includes(\".\")) return nitpispasep;\n const array = nitpispasep.split(\"\");\n array.splice(3, 0, \".\");\n array.splice(9, 0, \".\");\n array.splice(12, 0, \"-\");\n return array.join(\"\");\n};\n\nexport const maskCnpj = (cnpj = \"\") => {\n if (!cnpj) return \"\";\n if (cnpj.includes(\".\")) return cnpj;\n const cnpjArray = cnpj.split(\"\");\n cnpjArray.splice(2, 0, \".\");\n cnpjArray.splice(6, 0, \".\");\n cnpjArray.splice(10, 0, \"/\");\n cnpjArray.splice(15, 0, \"-\");\n return cnpjArray.join(\"\");\n};\n\nexport const maskCep = (cep = \"\") => {\n if (!cep) return \"\";\n if (cep.includes(\"-\")) return cep;\n const cepArray = cep.split(\"\");\n cepArray.splice(5, 0, \"-\");\n return cepArray.join(\"\");\n};\n\nexport const maskVoterCard = (voterCard = \"\") => {\n if (!voterCard) return \"\";\n const voterCardArray = voterCard.split(\"\");\n voterCardArray.splice(4, 0, \" \");\n voterCardArray.splice(9, 0, \" \");\n return voterCardArray.join(\"\");\n};\n\nexport const maskPhone = (phone = \"\") => {\n if (!phone) return \"\";\n const phoneArray = phone.split(\"\");\n if (phone.substring(0, 2) === \"55\") {\n phoneArray.splice(0, 0, \"+\");\n }\n if (phoneArray[0] === \"+\") {\n phoneArray.splice(3, 0, \" (\");\n phoneArray.splice(6, 0, \") \");\n phoneArray.splice(12, 0, \"-\");\n } else {\n phoneArray.splice(0, 0, \"(\");\n phoneArray.splice(3, 0, \") \");\n phoneArray.splice(9, 0, \"-\");\n }\n return phoneArray.join(\"\");\n};\n","import CalendarLocale from \"rc-picker/lib/locale/pt_BR\";\n\nexport const getInitialYear = (year: number, month: number) =>\n // year - (month === 0 ? 1 : 0);\n year;\n\nexport const months = [\n \"Jan\",\n \"Fev\",\n \"Mar\",\n \"Abr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Set\",\n \"Out\",\n \"Nov\",\n \"Dez\",\n];\n\nexport const monthsExtended = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nexport const antDatePickerLocale = {\n lang: {\n placeholder: \"\",\n ...CalendarLocale,\n },\n timePickerLocale: {},\n};\n","import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_BOLSA_URL || \"http://localhost:8888\",\n headers: {\n \"x-api-provider\": \"xpinvestimentos\",\n },\n});\n\nexport default api;\n","import { UserPlanEnum } from \"../constants/plans\";\nimport apiBolsa from \"../services/apiBolsa\";\n\nexport const B3AuthURL =\n \"https://b3Investidor.b2clogin.com/b3Investidor.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_FINTECH&client_id=069ecfdf-7471-48eb-be82-d50799c99e5c&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fwww.investidor.b3.com.br&scope=openid&response_type=code&prompt=login\";\n\nexport const getQuizLabel = (username: string, message: string): string => {\n return username !== \"Declarante\"\n ? `${username} ${message}`\n : `Você ${message}`;\n};\n\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(\n navigator.userAgent\n);\n\nconst iOSList = [\n \"iPad Simulator\",\n \"iPhone Simulator\",\n \"iPod Simulator\",\n \"iPad\",\n \"iPhone\",\n \"iPod\",\n];\n\nexport const isIOS = () =>\n iOSList.includes(navigator.platform) ||\n iOSList.includes((navigator as any).userAgentData?.platform) ||\n navigator.userAgent.includes(\"Mac\") ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1);\n\nexport const isIOSWebView = isIOS() && !isSafari;\n\n// export const isAndroidWebView = ?????\n\nexport const isMobile = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n};\n\nexport const isExternalLink = (link: string): boolean => {\n return /http:\\/\\/|https:\\/\\//i.test(link);\n};\n\nexport const errorMessage =\n \"Algo inesperado aconteceu! Tente novamente mais tarde.\";\n\nexport const tenteIntegrarNovamente = \"Tente integrar novamente.\";\n\nexport const reintegrateMessage =\n \"Faça novamente a integração para buscar dados mais novos\";\n\nexport const download = (link: string) => {\n window.location.href = link;\n};\n\nexport const downloadPDF = (base64: string, fileName?: string) => {\n const linkSource = `data:application/pdf;base64,${base64}`;\n const downloadLink = document.createElement(\"a\");\n fileName = fileName ?? `Relatório-${Date.now()}.pdf`;\n\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n};\n\nexport const getMuiInputCss = () =>\n document\n .querySelector(\"input.MuiInputBase-input\")\n ?.classList.value.split(\" \")\n .find((c) => c.includes(\"css\")) ?? \"\";\n\n\nexport const planInfoToHasPlan = (planInfo: any, hasPermissionGeneral: any) => \n (!!planInfo?.type && !!planInfo?.active) || !!hasPermissionGeneral\n ? {\n basic: !!planInfo?.type || !!hasPermissionGeneral,\n premium: [\n UserPlanEnum.XP_PRO,\n UserPlanEnum.XP_PRO_MONTH,\n UserPlanEnum.XP_CONCIERGE,\n UserPlanEnum.VELOTAX_MAIN_PRO,\n UserPlanEnum.VELOTAX_MAIN_PRO_MONTH,\n UserPlanEnum.XP_CONCIERGE\n ].includes(planInfo?.type) || !!hasPermissionGeneral,\n concierge: [UserPlanEnum.XP_CONCIERGE, UserPlanEnum.VELOTAX_MAIN_CONCIERGE].includes(planInfo?.type),\n }\n : false;\n\nexport const getZeroBuyPrice = async (data: any) => {\n let hasZero: any[] = [];\n const donations = await apiBolsa.get(\"/operation/donations?operationType=Credito\", {});\n const pos2019 = await apiBolsa.get(\"/operation?month=12&year=2019\", {});\n\n for (const element of data) {\n const code = element?.code;\n const isTaxa = (code.toLowerCase()).includes('taxa');\n if (isTaxa) continue;\n const market = element?.market;\n const buyPrice = element?.buyPrice;\n\n if (market.includes('opções') || market.includes('Opção')) continue;\n const reasonDictionary = [\n { text: \"Preencha o custo de compra do ativo na aba\", textLink: \"Doações e heranças\", link: \"/xpinvestimentos/bolsa-doacoes-heranca\" },\n { text: \"Preencha o custo de compra do ativo na aba\", textLink: \"Posição 31/12/2019\", link: \"/xpinvestimentos/bolsa-insert-manual\" }\n ];\n const hasDonations: any[] = [];\n donations?.data?.filter((op: any) => {\n op?.orders?.filter((ord: any) => {\n if (code === ord?.code) {\n hasDonations.push(ord);\n return;\n }\n else return;\n })\n })\n const hasPos2019: any[] = [];\n pos2019?.data?.filter((op: any) => {\n op?.orders?.filter((ord: any) => {\n if (code === ord?.code) {\n hasPos2019.push(ord);\n return;\n }\n else return;\n })\n })\n const reason = hasDonations.length ? 0 : (hasPos2019.length ? 1 : \"\");\n // Para quando o ativo não estiver zerado no mês, mas estiver zerado em doações e heranças\n if (hasDonations.length > 0 && hasDonations[0]?.price == 0) {\n hasZero.push({ code: code, reason: reason !== \"\" ? reasonDictionary[reason] : \"\" });\n }\n else if ((buyPrice == 0 || !buyPrice)\n && ((hasDonations.length > 0 && hasDonations[0]?.price == 0)\n || (hasPos2019.length > 0 && hasPos2019[0]?.price == 0))) {\n hasZero.push({ code: code, reason: reason !== \"\" ? reasonDictionary[reason] : \"\" });\n }\n else if ((buyPrice == 0 || !buyPrice) && hasDonations.length == 0 && hasPos2019.length == 0) {\n hasZero.push({ code: code, reason: \"\" });\n }\n }\n let elementsRepeat: string[] = [];\n hasZero = hasZero.filter((item) => {\n if (!elementsRepeat.includes(item.code)) {\n elementsRepeat.push(item.code);\n return item;\n }\n else return;\n });\n\n return hasZero;\n}","import moment from \"moment-timezone\";\n\n/* eslint-disable @typescript-eslint/no-var-requires */\nconst isBusinessDay = require(\"eh-dia-util\");\n// import ehDiaUtilSlim from 'eh-dia-util-slim';\n\nexport const getLastBusinessDay = (lastDayOfTheMonth: Date, holidays?: any) => {\n const date = lastDayOfTheMonth;\n while (!isBusinessDay(date) || holidays?.includes(moment(date).tz('Europe/London').format('MM-DD'))) {\n date.setDate(date.getDate() - 1);\n }\n return date;\n};\n\n/** @description Function to return if the day that passed is a business/week day */\nexport const isWeekday = (year: number, month: number, day: number) => {\n const dayReturn = new Date(year, month, day).getDay();\n if (dayReturn === 0 || dayReturn === 6) return false;\n return true;\n};\n\n/** @description Function to return the array of business/week days in that month */\nexport const weekDays = (dateParam: Date) => {\n const year = dateParam.getFullYear();\n const month = dateParam.getMonth();\n const days = new Date(year, month + 1, 0).getDate();\n let weekdays: any[] = [];\n for (let i = 1; i <= days; i++) {\n if (isWeekday(year, month, i)) weekdays.push(i);\n }\n return weekdays;\n};\n\n/** @description Function to get the second business/week day and check if it's true */\nexport const isSecondBusinessDay = (dateParam: Date) => {\n const currentDay = dateParam.getDate();\n const arrayOfWeekDays = weekDays(dateParam);\n return arrayOfWeekDays.indexOf(currentDay) > 2 ? true : false;\n};\n","import axios from 'axios';\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_MS_DARF_URL || 'http://localhost:5002',\n});\n\nexport default api;","import axios from \"axios\";\n\nexport const apiPlan = axios.create({\n baseURL: process.env.REACT_APP_PLAN_URL || \"http://localhost:8002\",\n});\n","import axios from \"axios\";\n\nconst apiVeloPro = axios.create({\n baseURL: process.env.REACT_APP_VELOPRO_URL || \"http://localhost:8888\",\n});\n\nexport default apiVeloPro;\n","export default __webpack_public_path__ + \"static/media/ssl-secure.dd09a1ee.svg\";","import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_EXTERIOR_URL || \"http://localhost:8889\",\n headers: {\n \"ngrok-skip-browser-warning\": \"69420\",\n \"x-api-provider\": \"exterior-xpinvestimentos\",\n },\n});\n\nexport default api;\n","import axios from \"axios\";\n\nexport const apiPayment = axios.create({\n baseURL:\n process.env.REACT_APP_PAYMENT_AUTH || \"http://localhost:4444\",\n headers: {\n \"x-api-provider\": \"xp-investimentos\",\n },\n});\n","import axios from 'axios';\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_BACKEND_RENDIMENTOS_URL || 'http://localhost:5003',\n});\n\nexport default api;","import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_BOLSA_VELOTAX_URL || \"http://localhost:8004\",\n headers: {\n \"x-api-provider\": \"bolsa-velotax\",\n },\n});\n\nexport default api;\n","import axios from \"axios\";\n\nconst api = axios.create({\n baseURL: process.env.REACT_APP_IRPF2023_URL || \"http://localhost:3333\",\n});\n\nexport default api;\n","import { Button, ButtonProps } from \"antd\";\nimport styled, { css } from \"styled-components\";\n\nexport interface IButtonProps extends ButtonProps {\n typed?: \"underlined\";\n}\n\nexport const ButtonStyled = styled(Button)<IButtonProps>`\n &.ant-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0;\n border: 0;\n font-weight: 500;\n column-gap: 8px;\n }\n &[disabled] {\n border-color: var(--velotax-ghost) !important;\n color: var(--velotax-font-color-ghost) !important;\n background-color: var(--velotax-ghost) !important;\n }\n ${(props) =>\n props.type === \"primary\" &&\n css`\n color: var(--black);\n svg {\n fill: var(--black);\n }\n :focus,\n :hover {\n color: var(--black);\n }\n `}\n\n ${(props) =>\n props.size === \"large\" &&\n css`\n height: 56px;\n `}\n \n ${(props) =>\n props.disabled &&\n css`\n svg {\n fill: var(--velotax-font-color-ghost) !important;\n }\n `}\n\n ${(props) =>\n props.typed === \"underlined\" &&\n css`\n color: var(--white);\n border-bottom: 1px solid var(--ant-primary-color);\n :focus,\n :hover {\n border-bottom: 1px solid var(--ant-primary-color-active);\n }\n `}\n`;\n","import { ButtonStyled, IButtonProps } from \"./styles\";\n\nconst Button: React.FC<IButtonProps> = (props) => (\n <ButtonStyled {...props}>{props.children}</ButtonStyled>\n);\n\nexport default Button;\n","import styled from \"styled-components\";\nimport { Modal } from \"antd\";\n\nexport const Container = styled.div`\n width: 100%;\n height: 100%;\n padding: 16px;\n border-radius: 8px;\n border: 1px solid var(--velotax-background-color-ghost);\n span.ant-checkbox {\n top: 0;\n }\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--velotax-font-color-ghost);\n }\n .original-price {\n display: grid;\n max-width: 150px;\n }\n .price {\n display: flex;\n width: 100%;\n column-gap: 8px;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n h4 {\n font-size: 22px;\n margin: 8px 0 !important;\n color: var(--ant-primary-color);\n del,\n span.per-month {\n font-size: 14px;\n }\n span.cupom-discount {\n font-size: 12px;\n color: var(--velotax-disabled);\n }\n\n del {\n opacity: 0.8;\n color: var(--velotax-font-color);\n }\n }\n .ant-typography-danger {\n font-size: 11px;\n text-align: right;\n max-width: 120px;\n }\n }\n .ant-divider.ant-divider-horizontal {\n margin: 16px 0;\n }\n .other-features,\n .included-features-user {\n .feature {\n display: flex;\n align-items: center;\n justify-content: space-between;\n opacity: 0.7;\n margin: 6px 0;\n column-gap: 16px;\n span {\n font-weight: 500;\n display: flex;\n column-gap: 4px;\n align-items: center;\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n }\n svg.fill {\n fill: var(--velotax-font-color);\n }\n svg:not(.fill) {\n stroke: var(--velotax-font-color);\n }\n &.disabled {\n opacity: 0.4;\n }\n .feature-desc {\n display: block;\n font-size: 10px;\n font-weight: 400;\n }\n }\n }\n .other-features {\n margin-bottom: 24px;\n }\n\n .checkbox-terms {\n font-size: 12px;\n line-height: 16px;\n display: flex;\n column-gap: 4px;\n align-items: flex-start;\n }\n\n @media only screen and (max-device-width: 812px) {\n .original-price {\n font-size: 14px;\n max-width: 100px;\n\n .per-month {\n font-size: 12px !important;\n }\n }\n }\n`;\n\nexport const PlanModalStyled = styled(Modal)`\n .ant-modal-body {\n padding: 32px !important;\n }\n\n .ant-tabs {\n width: 100%;\n }\n\n .ant-tabs-nav {\n margin: 0 auto 8px !important;\n width: calc(100% - 16px) !important;\n }\n\n .click-here {\n cursor: pointer;\n font-weight: 500;\n color: var(--ant-primary-color);\n display: flex;\n align-items: center;\n margin-top: 12px;\n\n svg {\n margin-right: 8px;\n color: var(--ant-primary-color);\n }\n }\n\n .cupom-content {\n .description-cupom-valid {\n font-size: 12px;\n }\n .input-content {\n display: flex;\n column-gap: 4px;\n align-items: center;\n margin-top: 10px;\n .icon-cupom {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .input-cupom {\n height: 40px;\n max-width: 200px;\n }\n }\n .cupom-msg {\n margin-top: 4px;\n display: inline-block;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-modal-body {\n padding: 16px !important;\n }\n }\n`;\n","import { Checkbox, Col, Divider, message, Row, Typography } from \"antd\";\nimport Button from \"../../Button\";\nimport { Container } from \"./styles\";\nimport { formatCurrency } from \"../../../utils\";\nimport { UserPlan as IUserPlan } from \"../../../constants/plans\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { useMemo, useState } from \"react\";\n\ninterface PlanProps {\n plan: IUserPlan;\n planBuyed: string;\n handleSelect: React.MouseEventHandler;\n checkIfCupomIsValid: (code: string) => void;\n cupomMsg: string;\n cupomInfo: any;\n codeSave: string;\n setCode: any;\n showInputCupom: boolean;\n buttonLoading?: boolean;\n}\n\nexport const UserPlan: React.FC<PlanProps> = ({\n plan,\n planBuyed,\n handleSelect,\n checkIfCupomIsValid,\n cupomMsg,\n cupomInfo,\n codeSave,\n setCode,\n showInputCupom,\n buttonLoading,\n}) => {\n const { user } = useAuth();\n const [acceptTerms, setAcceptTerms] = useState(false);\n const isActive = user?.user?.userPlanInfoVelotax?.active;\n const hasPlan = (planBuyed && isActive) || !!plan.free;\n const isPlanSelected =\n planBuyed && isActive && plan.type === user.user.userPlanInfoVelotax.type;\n\n const handleTerm = () => {\n setAcceptTerms((terms) => !terms);\n };\n\n const price = useMemo(() => {\n var isMonth = plan.interval === \"Mensal\";\n var planPrice = !isMonth ? plan.price * 12 : plan.price;\n\n if (cupomMsg !== \"valid\") return !isMonth ? planPrice / 12 : planPrice;\n\n if (cupomInfo?.type === \"absolute\") {\n planPrice = planPrice - Number(cupomInfo.discountValue);\n } else if (cupomInfo?.type === \"percent\") {\n planPrice = planPrice - planPrice * Number(cupomInfo.discountValue / 100);\n }\n\n planPrice = Number(planPrice.toFixed(2));\n\n return !isMonth ? planPrice / 12 : planPrice;\n }, [plan.price, cupomInfo, cupomMsg, plan.interval]);\n\n return (\n <Container>\n <Typography.Title level={3}>{plan.title}</Typography.Title>\n <div className=\"price\">\n <Typography.Title\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n }}\n level={4}\n >\n {plan.free ? (\n <span> Gratuito</span>\n ) : (\n <div>\n {formatCurrency(price)} <span className=\"per-month\">/ mês</span>\n <br />\n <span className=\"per-month\">\n {\" \"}\n plano {plan?.interval.toLocaleLowerCase()}\n </span>\n <br />\n {cupomInfo?.type && (\n <span className=\"cupom-discount\">\n {\" \"}\n cupom de desconto de{\" \"}\n {cupomInfo?.type === \"percent\"\n ? `${cupomInfo?.discountValue}%`\n : formatCurrency(cupomInfo?.discountValue)}\n </span>\n )}\n </div>\n )}\n <br />\n {!plan.free && plan.originalPrice !== plan.price && (\n <div className=\"original-price\">\n <Typography.Text delete>\n {formatCurrency(plan.originalPrice)}{\" \"}\n </Typography.Text>\n <Typography.Text\n style={{ color: \"var(--ant-error-color)\" }}\n className=\"per-month\"\n >{`${plan.percentDiscount}% de desconto ${\n plan.discountText ? plan.discountText : \"\"\n }`}</Typography.Text>\n </div>\n )}\n </Typography.Title>\n </div>\n <div\n style={{ marginTop: plan.free ? 55 : 0 }}\n className=\"included-features-user\"\n >\n {plan.includedFeatures.map((feature: any) => (\n <div className=\"feature\" key={feature.name}>\n <span>\n {feature.name}\n {feature?.secondaryIcon}\n </span>\n <span>{feature.icon}</span>\n </div>\n ))}\n </div>\n <Divider />\n <div className=\"other-features\">\n {plan.descriptions.map((feature: any) => (\n <div className=\"feature\" style={{ marginTop: 3 }} key={feature.label}>\n <span style={{ opacity: !feature.checked ? 0.5 : 1 }}>\n {feature.label}\n {feature.info}\n </span>\n <span>{feature.icon}</span>\n </div>\n ))}\n </div>\n <Row\n style={{ marginTop: 35 }}\n >\n {!isPlanSelected && !hasPlan && (\n <Col>\n <Checkbox\n checked={acceptTerms}\n onChange={handleTerm}\n className=\"checkbox-terms\"\n >\n Li, entendi e estou de acordo com o{\" \"}\n <a\n target=\"_blank\"\n rel=\"noreferrer\"\n href=\"https://velotax-termos-e-condicoes.s3.amazonaws.com/TERMO+DE+ACEITE+E+CONTRATAC%CC%A7A%CC%83O_11.10.2022.pdf\"\n >\n Termo de Contratação\n </a>\n </Checkbox>\n </Col>\n )}\n </Row>\n <Row \n style={{ marginTop: 25 }}>\n <Button\n style={{ width: '100%'}}\n size=\"large\"\n type=\"primary\"\n onClick={(e) => {\n if (!acceptTerms) {\n message.warning(\"Você precisa aceitar o Termo de Contratação\");\n } else {\n handleSelect(e);\n }\n }}\n loading={buttonLoading}\n disabled={hasPlan}\n >\n {isPlanSelected ? \"Plano Selecionado!\" : \"Selecionar\"}\n </Button>\n </Row>\n </Container>\n );\n};\n","import api from './apiBolsa';\n\nexport default async function HandleTag(activeCampaignTagId: string) {\n await api\n .post(\n \"/ac\",\n {\n activeCampaignTagId,\n },\n )\n .then()\n .catch((err) => {})\n };","import { Modal } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const PlanModalStyled = styled(Modal)`\n min-width: 760px;\n .ant-modal-body {\n padding: 32px !important;\n }\n @media only screen and (max-width: 812px) {\n width: calc(100vw - 32px);\n min-width: unset;\n }\n`;\n\nexport const Content = styled.div`\n display: flex;\n column-gap: 16px;\n position: relative;\n justify-content: center;\n flex-direction: row;\n @media only screen and (max-width: 812px) {\n row-gap: 16px;\n flex-direction: column;\n }\n`;\n\nexport const Loading = styled.div`\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n border-radius: 8px;\n position: absolute;\n align-items: center;\n justify-content: center;\n background-color: var(--velotax-shadow-default);\n`;\n","import { HTMLAttributes } from \"react\";\n\ninterface CopyTextProps extends HTMLAttributes<HTMLDivElement> {\n id: string;\n}\n\nexport const CopyText: React.FC<CopyTextProps> = ({ children, ...props }) => {\n const selectText = () => {\n if ((document as any).selection) {\n // Internet Explorer\n const range = (document.body as any).createTextRange?.();\n range?.moveToElementText?.(document.getElementById(props.id)!);\n range?.select();\n } else if (window.getSelection) {\n const range = document.createRange?.();\n range?.selectNode?.(document.getElementById(props.id)!);\n window.getSelection?.()?.removeAllRanges?.();\n window.getSelection?.()?.addRange?.(range);\n }\n };\n\n return (\n <div\n {...props}\n onClick={(e) => {\n selectText();\n props.onClick?.(e);\n }}\n >\n {children}\n </div>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ant-info-color);\n height: 100%;\n\n .sso-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 230px;\n margin-bottom: 40px;\n }\n\n .sso-area {\n background: var(--velotax-background-color);\n border-radius: 8px;\n padding: 20px;\n width: 500px;\n min-height: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n h4 {\n margin-bottom: 20px;\n }\n\n .anticon {\n width: 40px;\n height: 40px;\n color: var(--ant-info-color);\n\n svg {\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/velologo.722b6e4c.svg\";","import { message } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport api from \"../../services/api\";\nimport { Container } from \"./styles\";\nimport Button from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport veloLogo from \"../../assets/velotax/velologo.svg\";\n\nconst SSO: React.FC = () => {\n const { token } = useParams();\n const navigate = useNavigate();\n const { search } = useLocation();\n const { setLocalStorageWithAuthData, setLoadingSession, showUserPlanModal } =\n useAuth();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n api\n .post(\"/session/sso\", {\n token,\n })\n .then(async (res) => {\n message.success(\"Logado com sucesso!\");\n let retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\", {\n headers: {\n authorization: `Bearer ${res?.data?.token}`,\n },\n });\n setLoading(false);\n setLocalStorageWithAuthData({\n ...(res.data || {}),\n userPlanInfoVelotax: retPlanInfo?.data || {},\n });\n const query = new URLSearchParams(search);\n const redirect = query.get(\"redirect\");\n setTimeout(() => {\n setLoadingSession(false);\n if (redirect === \"pagamento\") {\n setTimeout(() => {\n showUserPlanModal(true, \"Contrate o plano\");\n setTimeout(() => {\n document.querySelector<HTMLElement>(\".checkbox-terms\")?.click();\n document\n .querySelector<HTMLElement>(\n \".ant-modal-body .ant-btn-primary\"\n )\n ?.click();\n }, 100);\n }, 100);\n } else if (redirect === 'exterior-report') {\n navigate(\"/xpinvestimentos/exterior\")\n }\n }, 500);\n })\n .catch((err) => {\n message.error(\"Algo deu errado, tente novamente mais tarde.\");\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [token, search]);\n\n return (\n <Container>\n <div className=\"sso-wrapper\">\n <img src={veloLogo} alt=\"velologo\" />\n <div className=\"sso-area\">\n {loading ? (\n <>\n <h4>Logando...</h4>\n <LoadingOutlined size={20} />\n </>\n ) : (\n <Button\n size=\"large\"\n type=\"primary\"\n htmlType=\"submit\"\n className=\"full-width\"\n onClick={() => navigate(\"/p/login\")}\n >\n Tentar fazer login manualmente\n </Button>\n )}\n </div>\n </div>\n </Container>\n );\n};\n\nexport default SSO;\n","import styled from \"styled-components\";\n\nexport const HomeContainer = styled.div`\n height: 100%;\n display: flex;\n padding: 64px 32px 32px 48px;\n\n & > .content {\n margin: 0 auto;\n width: 700px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n &.bolsa,\n &.exterior {\n .cards.cards-2 > div {\n width: 100%;\n }\n }\n }\n\n h1 {\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n margin-bottom: 3rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n div.ant-typography {\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n strong {\n font-weight: 500;\n }\n }\n\n .ant-typography.destak {\n margin: 0 0 24px;\n display: block;\n font-weight: 300;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n }\n\n .cards {\n margin: 0;\n padding-bottom: 32px;\n width: 100%;\n display: grid;\n row-gap: 1rem;\n column-gap: 1rem;\n grid-template-columns: repeat(4, 1fr);\n\n &.cards-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n &.cards-2 {\n grid-template-columns: repeat(2, 1fr);\n }\n\n &.cards-5 {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: auto auto;\n gap: 1rem;\n }\n &.cards-5 > :nth-child(3) {\n grid-column: 1 / span 2;\n height: 80px;\n display: flex;\n }\n &.cards-5 > :nth-child(3) > button {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 5px;\n }\n &.cards-5 > :nth-child(3) > button > figure {\n display: flex;\n }\n }\n\n .home-footer {\n opacity: 0.75;\n font-size: 12px;\n font-style: italic;\n line-height: 16px;\n letter-spacing: 0.625px;\n }\n\n @media only screen and (max-device-width: 812px) {\n height: auto;\n padding: 24px 24px 64px;\n & > .content {\n width: 100%;\n max-width: 100%;\n &.bolsa,\n &.exterior {\n width: 100%;\n .cards.cards-2 > div {\n width: 100%;\n }\n }\n }\n\n .cards {\n width: 100%;\n grid-template-columns: repeat(2, 1fr) !important;\n\n > div {\n width: auto;\n }\n }\n }\n`;\n","import { Col, Modal, Row } from \"antd\";\nimport Button from \"../Button\";\n\nexport function ModalConfirmWaitIntegration({\n action,\n closeFn,\n visible,\n}: {\n action: (ok: boolean) => void;\n visible: boolean;\n closeFn: () => void;\n}) {\n function handleClick(send: boolean) {\n action(send);\n closeFn();\n }\n\n return (\n <Modal\n title=\"Integração em andamento\"\n visible={visible}\n onCancel={() => handleClick(false)}\n closable={true}\n footer={\n <Row\n gutter={[16, 16]}\n style={{\n marginBottom: \"16px\",\n paddingLeft: \"18px\",\n paddingRight: \"18px\",\n }}>\n <Col span={12}>\n <Button\n size=\"large\"\n type=\"primary\"\n // style={{ backgroundColor: \"#0015a0\" }}\n className=\"full-width\"\n onClick={() => {\n handleClick(false);\n }}>\n Não\n </Button>\n </Col>\n <Col span={12}>\n <Button\n size=\"large\"\n type=\"primary\"\n className=\"full-width\"\n onClick={() => {\n handleClick(true);\n }}>\n Sim\n </Button>\n </Col>\n </Row>\n }>\n <Row>\n <Col>Estamos processando um grande número de informações.</Col>\n </Row>\n <Row>\n <Col>\n <p>Deseja receber um e-mail quando a integração for finalizada?</p>\n </Col>\n </Row>\n </Modal>\n );\n}","import React, {\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { io, Socket } from \"socket.io-client\";\nimport { useAuth } from \"./AuthContext\";\nimport { message } from \"antd\";\n\nexport enum WSClientEvents {\n RECONN_KEY = \"reconnect_key\",\n INTEGRATION_STATUS = \"integration_status\",\n NOTIFY = \"notify\",\n REPORT = \"report\"\n}\n\nexport enum WsServerEvents {\n RESEND_LAST_MESSAGE = \"resend_last_message\",\n}\n\n\nexport const isValidEvent = (event: string): event is WSClientEvents => {\n return Object.values(WSClientEvents).includes(event as WSClientEvents);\n};\n\ntype CallbackFunction<T = any> = (data: T) => void;\n\ninterface WebSocketContextType {\n addEventListener: <T>(\n event: WSClientEvents,\n callback: CallbackFunction<T>\n ) => void;\n removeEventListener: (\n event: WSClientEvents,\n callback: CallbackFunction\n ) => void;\n emitEvent: (event: WSClientEvents, data?: any) => void;\n open: boolean;\n report: string;\n setReport: (data: string) => void;\n}\n\nconst WebSocketContext = createContext<WebSocketContextType | undefined>(\n undefined\n);\nconst PREFIX = \"[VELOTAX-WS]:\";\n\nexport const WebSocketProvider: React.FC = ({ children }) => {\n const { user } = useAuth();\n const socketRef = useRef<Socket | null>(null);\n const reconnectKeyRef = useRef<string>();\n const [open, setOpen] = useState(false);\n const [report, setReport] = useState(\"\");\n\n const handleMessage = useCallback((data: any) => {\n const { message: messageWs, type, fileUrl } = data;\n if (typeof messageWs === \"string\") {\n switch (type) {\n case \"error\":\n message.error(messageWs);\n break;\n case \"info\":\n message.info(messageWs);\n break;\n case \"success\":\n message.success(messageWs);\n break;\n case \"report\":\n message.success(messageWs);\n setReport(fileUrl);\n break;\n default:\n console.error(\"[VELOTAX-WS]:\", messageWs);\n break;\n }\n } else {\n console.error(\"[VELOTAX-WS]:\", messageWs);\n }\n }, []);\n\n useEffect(() => {\n const socketUrl = process.env.REACT_APP_MS_NOTIFICATION_URL || \"http://localhost:3333\";\n\n if (user?.token) {\n socketRef.current = io(socketUrl, {\n reconnection: true,\n reconnectionDelay: 30000,\n reconnectionAttempts: 5,\n auth: {\n token: user.token,\n reconnectKey: reconnectKeyRef.current\n },\n });\n\n socketRef.current.on(\"connect\", () => {\n console.log(PREFIX, \"Conectado\");\n socketRef.current?.on(WSClientEvents.NOTIFY, handleMessage);\n socketRef.current?.on(WSClientEvents.REPORT, handleMessage);\n socketRef.current?.on(WSClientEvents.RECONN_KEY, (data) => {\n reconnectKeyRef.current = data;\n });\n\n setTimeout(() => {\n socketRef.current?.emit(WsServerEvents.RESEND_LAST_MESSAGE, { send: true });\n }, 2000);\n setOpen(true);\n });\n\n socketRef.current.on(\"disconnect\", () => {\n console.log(PREFIX, \"Desconectado\");\n setOpen(false);\n });\n\n return () => {\n socketRef.current?.disconnect();\n };\n }\n }, [user?.token, handleMessage]);\n\n const addEventListener = useCallback(\n <T,>(event: WSClientEvents, callback: CallbackFunction<T>) => {\n if (socketRef.current && isValidEvent(event)) {\n console.log(PREFIX, `Starting event [${event}]`);\n socketRef.current.on(event, callback);\n }\n },\n []\n );\n\n const removeEventListener = useCallback(\n (event: WSClientEvents, callback: CallbackFunction) => {\n if (socketRef.current && isValidEvent(event)) {\n console.log(PREFIX, `Closing event [${event}]`);\n socketRef.current.off(event, callback);\n }\n },\n []\n );\n\n const emitEvent = useCallback((event: WSClientEvents, data?: any) => {\n if (socketRef.current && isValidEvent(event)) {\n console.log(PREFIX, \"Emit ev ->\", event);\n socketRef.current.emit(event, data);\n }\n }, []);\n\n const value = {\n addEventListener,\n removeEventListener,\n emitEvent,\n open,\n report,\n setReport\n };\n\n return (\n <WebSocketContext.Provider value={value}>\n {children}\n </WebSocketContext.Provider>\n );\n};\n\nexport const useWebSocket = (): WebSocketContextType => {\n const context = useContext(WebSocketContext);\n if (!context) {\n throw new Error(\"useWebSocket must be used within a WebSocketProvider\");\n }\n return context;\n};","import { message } from \"antd\";\nimport {\n createContext,\n Dispatch,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAuth } from \"./AuthContext\";\nimport apiBolsa from \"../services/apiBolsa\";\nimport { Integration, useBroker } from \"./BrokerContext\";\nimport HandleTag from \"../services/handleTag\";\nimport { B3AuthURL, errorMessage, isMobile } from \"../utils\";\nimport { ModalConfirmWaitIntegration } from \"../components/LoadingIntegration/confirm.modal\";\nimport { ItegrationStatus } from \"../components/Sidebar\";\nimport { useWebSocket, WSClientEvents } from \"./Notification.context\";\nimport moment from \"moment\";\n\ninterface HandleIntegrationProps {\n integrationInBackground?: boolean;\n onlyPrepareBolsa?: boolean;\n}\n\nexport interface IntegrationStatus {\n description?: string;\n started?: boolean;\n finished?: boolean;\n error?: boolean;\n alert?: boolean;\n processing?: boolean;\n}\n\ninterface IB3IntegrationContext {\n timer: number;\n timeOver: boolean;\n openWithLink: boolean;\n b3Authorized: boolean;\n loadingIntegration: boolean;\n loadingAuthorization: boolean;\n checkingAuhtorization: boolean;\n integrationMessage?: string;\n integrationInBackground: boolean;\n setIntegration?: React.Dispatch<React.SetStateAction<Integration>>;\n integrate: (onlyPrepareBolsa?: boolean) => void;\n handleIntegrate: (props?: HandleIntegrationProps) => void;\n resetB3IntegrationContext: () => void;\n setIntegrationLoading: (status: boolean) => void;\n backgroundIntegration: {\n loading: boolean;\n month: number;\n year: number;\n };\n verifyUserIsAuthorized: (\n once?: boolean,\n autoError?: boolean,\n autoSuccess?: boolean\n ) => void;\n interval: React.MutableRefObject<NodeJS.Timeout | undefined>;\n notas: {\n downloadNotaCorretagem: (\n path: string,\n month: number,\n year: number\n ) => void;\n historicoNotasCorretagem: any[];\n getHistoricoNotasCorretagem: (params: {\n crypto?: boolean;\n filters: any;\n }) => void;\n loadingHistoricoNotasCorretagem: boolean;\n showHistoricoNotasCorretagemModal: boolean;\n setHistoricoNotasCorretagem: Dispatch<SetStateAction<any[]>>;\n setShowHistoricoNotasCorretagemModal: Dispatch<SetStateAction<boolean>>;\n };\n}\n\nexport const B3IntegrationContext = createContext<IB3IntegrationContext>(\n {} as IB3IntegrationContext\n);\n\nexport const keyIntegrationDate = \"@VeloTax:integrationTimer\";\n\nexport const B3IntegrationProvider: React.FC = ({ children }) => {\n const { user, b3Authorized, setB3Authorized } = useAuth();\n const { integration, initIntegration, handleIntegrationInit, getIntegrationStatus, setInitIntegration } = useBroker();\n\n const [timer, setTimer] = useState(0);\n const [timeOver, setTimeOver] = useState(false);\n const [loadingIntegration, setLoadingIntegration] = useState(false);\n const [loadingAuthorization, setLoadingAuthorization] = useState(false);\n const [checkingAuhtorization, setCheckingAuhtorization] = useState(false);\n const [integrationInBackground, setIntegrationInBackground] = useState(false);\n const [historicoNotasCorretagem, setHistoricoNotasCorretagem] = useState<\n any[]\n >([]);\n const [loadingHistoricoNotasCorretagem, setLoadingHistoricoNotasCorretagem] =\n useState(false);\n const [\n showHistoricoNotasCorretagemModal,\n setShowHistoricoNotasCorretagemModal,\n ] = useState(false);\n const interval = useRef<ReturnType<typeof setInterval>>();\n const timerInterval = useRef<ReturnType<typeof setInterval>>();\n const [modalConfirm, setModalConfirm] = useState(false);\n const [integrationMessage, setIntegrationMessage] = useState<string>();\n const integrationLoadingRef = useRef<boolean>(false);\n\n const openWithLink =\n !timeOver && !checkingAuhtorization && !b3Authorized && isMobile();\n\n\n const backgroundIntegration = useMemo(() => {\n const lastUpdateDate = moment(integration.lastUpdate ?? new Date(2000, 0, 1));\n const month = lastUpdateDate.get(\"month\") + 1;\n const year = lastUpdateDate.get(\"year\");\n return { loading: initIntegration, month, year };\n }, [initIntegration, integration?.lastUpdate]);\n\n useEffect(() => {\n if (checkingAuhtorization) {\n setTimer(90);\n timerInterval.current && clearInterval(timerInterval.current);\n timerInterval.current = setInterval(() => {\n setTimer((timer) => (timer - 1 <= 0 ? 0 : timer - 1));\n }, 1000);\n } else {\n setTimer(0);\n timerInterval.current && clearInterval(timerInterval.current);\n }\n return () => {\n timerInterval.current && clearInterval(timerInterval.current);\n };\n }, [checkingAuhtorization]);\n\n const downloadNotaCorretagem = async (\n path: string,\n month: number,\n year: number,\n ) => {\n try {\n const { data } = await apiBolsa.get(\n \"/brokerage-notes/download\",\n {\n params: { path: path.replace(\"notas/\", \"\"), month, year },\n }\n );\n if (data.url) {\n window.open(data.url);\n }\n } catch (error) {\n message.error(\"Algo errado aconteceu. Tente novamente mais tarde.\");\n }\n };\n\n const getHistoricoNotasCorretagem = async ({\n filters,\n crypto,\n }: {\n crypto?: boolean;\n filters: any;\n }) => {\n setLoadingHistoricoNotasCorretagem(true);\n const filterDay = filters?.day || null;\n const filterMonth = filters?.month || null;\n const filterYear = filters?.year || null;\n try {\n setHistoricoNotasCorretagem([]);\n const { data } = await apiBolsa.get(\n `/brokerage-notes/history`,\n {\n params: {\n day: filterDay,\n month: filterMonth,\n year: filterYear,\n },\n }\n );\n if (data?.message) {\n message.error(data.message);\n } else {\n setHistoricoNotasCorretagem(\n data.map((nota: any) => ({\n ...nota,\n id: `${nota.month}${nota.year}`,\n }))\n );\n }\n } catch (error: any) {\n message.error(\"Algo errado aconteceu. Tente novamente mais tarde.\");\n } finally {\n setLoadingHistoricoNotasCorretagem(false);\n }\n };\n\n const openB3Window = useCallback(() => {\n window.open(\n B3AuthURL,\n \"_blank\",\n \"location=yes,height=570,width=520,scrollbars=yes,status=yes\"\n );\n }, []);\n\n const setIntegrationLoading = useCallback((status: boolean) => {\n if (status) {\n if (integrationLoadingRef.current) return;\n // console.log(\"INICIOU INTEGRAÇÃO\", new Date())\n integrationLoadingRef.current = true;\n setInitIntegration(true)\n setLoadingIntegration(true)\n } else {\n // console.log(\"FINALIZOU INTEGRAÇÃO\", new Date())\n integrationLoadingRef.current = false;\n setLoadingIntegration(false);\n setInitIntegration(false)\n }\n }, [])\n\n const integrate = useCallback(\n (onlyPrepareBolsa?: boolean) => {\n HandleTag(\"50\");\n setIntegrationLoading(true);\n apiBolsa\n .post(\"/xpinvestimentos/integrate\", {\n email: user.user.email,\n onlyPrepareBolsa,\n })\n .catch((err) => {\n if (err?.response?.data?.message?.includes(\"Aguarde\")) {\n message.error(err?.response?.data?.message);\n } else {\n message.error(errorMessage);\n }\n })\n .finally(() => {\n setIntegrationLoading(false);\n });\n },\n [setIntegrationLoading, user?.user?.email]\n );\n\n const verifyUserIsAuthorized = useCallback(\n (once?: boolean, autoError?: boolean, autoSuccess?: boolean) => {\n let count = 0;\n\n const requestUserAuthorization = (\n interval?: NodeJS.Timeout,\n firstTime?: boolean\n ) =>\n apiBolsa\n .get(\"/xpinvestimentos/verify-user\")\n .then((response) => {\n count += 1;\n if (response?.data?.isAuthorized) {\n setB3Authorized(true);\n setCheckingAuhtorization(false);\n (interval || firstTime) &&\n message.success(\"Permissão concedida com sucesso!\", 5);\n (interval || firstTime || autoSuccess) && integrate();\n interval && clearInterval(interval);\n } else if (autoError) {\n resetB3IntegrationContext();\n // openB3Window();\n // setCheckingAuhtorization(true);\n // verifyUserIsAuthorized();\n }\n if (interval && count > 12) {\n setTimeOver(true);\n clearInterval(interval);\n setCheckingAuhtorization(false);\n }\n return response;\n })\n .catch((err) => {\n if (err?.response?.data?.message) {\n message.error(err?.response?.data?.message);\n }\n if (interval) {\n setTimeOver(true);\n clearInterval(interval);\n setCheckingAuhtorization(false);\n }\n });\n\n if (once && autoError && autoSuccess) {\n setLoadingAuthorization(true);\n }\n requestUserAuthorization(undefined, !once)\n .then((response) => {\n if (!once && !response?.data?.isAuthorized) {\n if (interval.current) {\n clearInterval(interval.current);\n }\n interval.current = setInterval(() => {\n requestUserAuthorization(interval.current);\n }, 6000);\n }\n })\n .finally(() => {\n setLoadingAuthorization(false);\n });\n },\n [integrate, setB3Authorized]\n );\n\n const handleIntegrate = useCallback(\n (props?: HandleIntegrationProps) => {\n if (!checkingAuhtorization) {\n if (timeOver && !b3Authorized) {\n verifyUserIsAuthorized(true, true, true);\n } else if (b3Authorized) {\n setIntegrationInBackground(!!props?.integrationInBackground);\n integrate();\n } else {\n !openWithLink && openB3Window();\n setCheckingAuhtorization(true);\n verifyUserIsAuthorized();\n }\n } else {\n openB3Window();\n }\n },\n [\n timeOver,\n b3Authorized,\n integrate,\n verifyUserIsAuthorized,\n openWithLink,\n openB3Window,\n checkingAuhtorization,\n ]\n );\n\n const resetB3IntegrationContext = () => {\n setTimeOver(false);\n setLoadingIntegration(false);\n setLoadingAuthorization(false);\n setCheckingAuhtorization(false);\n interval.current && clearInterval(interval.current);\n };\n\n useEffect(() => {\n if (initIntegration && (integration.hasError || integration.integrated)) {\n resetB3IntegrationContext();\n verifyUserIsAuthorized(true, integration.hasError);\n }\n }, [\n initIntegration,\n integration.hasError,\n integration.integrated,\n verifyUserIsAuthorized,\n ]);\n\n useEffect(() => {\n !!user.token && !b3Authorized && verifyUserIsAuthorized(true);\n }, [user.token, b3Authorized, verifyUserIsAuthorized]);\n\n useEffect(() => {\n return () => {\n interval.current && clearInterval(interval.current);\n };\n }, []);\n\n const { addEventListener, removeEventListener, open } = useWebSocket();\n\n useEffect(() => {\n const evListenerFn = (ev: IntegrationStatus | null) => {\n if (ev?.processing || ev?.started) {\n setIntegrationLoading(true);\n setIntegrationMessage(ev.description);\n return;\n }\n if (ev?.error) {\n setIntegrationMessage(ev.description);\n message.error(\n \"Houve um erro durante sua integração. Tente novamente mais tarde.\"\n );\n setIntegrationLoading(false);\n setInitIntegration(false);\n setModalConfirm(false);\n getIntegrationStatus({\n token: user.token,\n hideLoading: true,\n });\n return;\n }\n if (ev?.finished) {\n setIntegrationMessage(ev.description);\n setInitIntegration(false);\n setModalConfirm(false);\n setIntegrationLoading(false);\n getIntegrationStatus({\n token: user.token,\n hideLoading: true,\n });\n return;\n }\n };\n if (open) {\n addEventListener<IntegrationStatus | null>(\n WSClientEvents.INTEGRATION_STATUS,\n evListenerFn\n );\n }\n return () => {\n removeEventListener(WSClientEvents.INTEGRATION_STATUS, evListenerFn);\n };\n }, [open, user.token]);\n\n useEffect(() => {\n if (initIntegration) {\n const tm = setTimeout(() => {\n if (integrationLoadingRef.current) {\n setModalConfirm(true);\n }\n }, 50000)\n return () => {\n if (tm) clearTimeout(tm)\n }\n }\n }, [initIntegration])\n\n return (\n <B3IntegrationContext.Provider\n value={{\n backgroundIntegration,\n timer,\n openWithLink,\n loadingIntegration,\n loadingAuthorization,\n setIntegrationLoading,\n interval,\n timeOver,\n integrate,\n b3Authorized,\n handleIntegrate,\n checkingAuhtorization,\n integrationMessage,\n verifyUserIsAuthorized,\n integrationInBackground,\n resetB3IntegrationContext,\n notas: {\n downloadNotaCorretagem,\n historicoNotasCorretagem,\n setHistoricoNotasCorretagem,\n getHistoricoNotasCorretagem,\n loadingHistoricoNotasCorretagem,\n showHistoricoNotasCorretagemModal,\n setShowHistoricoNotasCorretagemModal,\n },\n }}\n >\n <ModalConfirmWaitIntegration\n action={(res) => {\n apiBolsa.post(\"/b3/send-integration-mail\", { send: res });\n setModalConfirm(false);\n }}\n closeFn={() => setModalConfirm(false)}\n visible={modalConfirm}\n />\n {children}\n {/* <LoadingIntegration\n show={initIntegration}\n hasError={integration.hasError}\n /> */}\n </B3IntegrationContext.Provider>\n );\n};\n\nexport const useB3Integration = () => useContext(B3IntegrationContext);\n","import { Col, Row } from \"antd\";\nimport { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { HomeContainer } from \"./styles\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { useB3Integration } from \"../../contexts/B3IntegrationContext\";\n\nexport const Home = () => {\n const navigate = useNavigate();\n const { b3Authorized } = useB3Integration();\n const { allPaths, pathBackup, integration, currentBroker } = useBroker();\n\n useEffect(() => {\n // NÃO APAGAR O CÓDIGO: Lógica de redirecionamento comentada por conta do IRPF.\n if (integration.lastUpdate !== \"\") {\n if (allPaths.includes(pathBackup)) {\n if (pathBackup?.includes(\"bolsa\")) {\n if (b3Authorized) {\n navigate(pathBackup ?? \"/carteira\");\n } else {\n navigate(`/${currentBroker.path}/bolsa-integration`);\n }\n } else {\n navigate(pathBackup ?? \"/carteira\");\n }\n } else {\n navigate(\"/carteira\");\n }\n }\n // navigate(\"/declaracao-irpf\");\n }, [\n allPaths,\n navigate,\n pathBackup,\n b3Authorized,\n currentBroker?.path,\n integration?.lastUpdate,\n ]);\n\n return (\n <HomeContainer>\n <Row justify=\"center\" style={{ width: \"100%\" }}>\n <Col>\n <LoadingOutlined />\n </Col>\n </Row>\n </HomeContainer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const AuthContainer = styled.section`\n margin: 80px auto 0;\n height: calc(100% - 80px);\n box-sizing: border-box;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: var(--white);\n\n .auth-content {\n min-height: 100%;\n margin: 0 auto;\n max-width: calc(100% - 128px);\n padding: 48px 0;\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n flex-direction: column;\n\n h1 {\n font-weight: 400;\n font-size: 1.5rem;\n line-height: 2rem;\n color: var(--velotax-font-color-dark);\n margin: 0 0 32px;\n }\n\n p {\n font-weight: 500;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-dark);\n margin: 0 0 32px;\n text-align: center;\n }\n\n .form-container {\n width: 420px;\n\n form {\n row-gap: 0;\n display: flex;\n flex-direction: column;\n }\n\n .bottom-acessar {\n display: flex;\n justify-content: center;\n }\n }\n }\n\n .buttons {\n margin: 16px 0 8px;\n display: flex;\n column-gap: 16px;\n align-items: center;\n justify-content: space-between;\n }\n\n .btn-underlined {\n padding: 0;\n height: 32px;\n font-weight: 600;\n border-radius: 0;\n border-bottom: 2px dashed var(--ant-primary-color);\n }\n\n .footer {\n display: flex;\n column-gap: 16px;\n align-items: center;\n width: 100%;\n padding: 16px 0;\n margin: 24px auto 0;\n color: var(--velotax-font-color-dark);\n border-top: 1px solid rgba(0, 0, 0, 0.42);\n }\n\n .ant-checkbox-wrapper {\n a,\n span {\n color: var(--velotax-font-color-dark);\n }\n a {\n font-weight: 600;\n }\n }\n\n .checkbox {\n margin-top: 8px;\n }\n\n @media screen and (max-width: 576px) {\n .auth-content {\n border-left: none;\n padding: 64px 24px 0;\n\n :before {\n display: none;\n }\n\n .form-container {\n width: 100%;\n }\n }\n\n .buttons {\n button {\n width: 100%;\n }\n\n button + button {\n display: none;\n }\n }\n\n .footer {\n margin: 48px auto 0;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .auth-content {\n max-width: 100%;\n padding: 48px 24px 64px;\n border-left: none;\n }\n }\n`;\n","import { Rule } from \"antd/lib/form\";\nimport {\n checkDateExpiration,\n isDateOnReferenceMonth,\n isNonDateOnFuture,\n isValidCEP,\n isValidCNPJ,\n isValidCPF,\n isValidCreditCard,\n isValidDate,\n isValidDeclarationReceipt,\n isValidEmail,\n isValidFullName,\n isValidIPTU,\n isValidPhone,\n isValidRenavam,\n isValidShelfLife,\n isValidStateAddress,\n isValidVoterCard,\n months,\n} from \".\";\n\nconst dataLimite = \"2021-12-31 23:59:59\";\n\nexport const validationCpf: Rule[] = [\n {\n required: true,\n validator: (_: any, value: string) =>\n !value || !isValidCPF(value)\n ? Promise.reject(new Error(\"Informe um CPF válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCnpj: Rule[] = [\n {\n validator: (_: any, value: string) =>\n !value || !isValidCNPJ(value)\n ? Promise.reject(new Error(\"Informe um CNPJ válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCnpjNotRequired: Rule[] = [\n {\n validator: (_: any, value: string) =>\n value && !isValidCNPJ(value)\n ? Promise.reject(new Error(\"Informe um CNPJ válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationFullName: Rule[] = [\n {\n validator: (rule, value) =>\n !value || !isValidFullName(value)\n ? Promise.reject(\n new Error(\"Seu nome deve possuir duas palavras ou mais\")\n )\n : Promise.resolve(),\n },\n];\n\nexport const validationEmail: Rule[] = [\n {\n validator: (rule, value) =>\n !value || !isValidEmail(value)\n ? Promise.reject(new Error(\"Informe um email válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationPhone: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidPhone(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um telefone válido\")),\n },\n];\n\nexport const validationPhoneRequired: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !value || !isValidPhone(value)\n ? Promise.reject(new Error(\"Informe um telefone válido\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDateNotRequired: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidDate(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe uma data válida\")),\n },\n];\n\nexport const validationDate: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDateIsOnReferenceMonth: (\n month: number,\n year: number\n) => Rule[] = (month, year) => [\n {\n validator: (_: any, value: string) =>\n isDateOnReferenceMonth(month, year, value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\n `Informe uma data válida do mês de ${months[month]} de ${year}`\n )\n ),\n },\n];\n\nexport const validationDateIsOnReferenceMonthCompra: Rule[] = [\n {\n validator: async (_: any, value: string) => {\n if (!value) return Promise.reject(new Error(`Informe uma data válida`));\n const today = new Date();\n const pastLimit = today.getFullYear() - 6;\n const [day, month, year] = value.split(\"/\");\n const date = new Date(Number(year), Number(month) - 1, Number(day));\n return value.length < 10 || (value.length === 10 && !isValidDate(value))\n ? Promise.reject(new Error(`Informe uma data válida`))\n : Number(year) < pastLimit\n ? Promise.reject(new Error(`Informe um ano superior a ${pastLimit}`))\n : date.getTime() > today.getTime()\n ? Promise.reject(new Error(\"Não é permitida uma data futura\"))\n : Promise.resolve();\n },\n },\n];\n\nexport const validationDateIsOnFuture: (\n month: number,\n year: number\n) => Rule[] = (month, year) => [\n {\n validator: (_: any, value: string) =>\n isNonDateOnFuture(month, year, value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\n `Informe uma data menor ou igual ao mês de ${months[month]} de ${year}`\n )\n ),\n },\n];\n\nexport const validationIPTU: Rule[] = [\n {\n validator: (rule, value) =>\n isValidIPTU(value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\"O número do IPTU precisa ter entre 8 e 30 caracteres.\")\n ),\n },\n];\n\nexport const validationDateNotRequired2021: Rule[] = [\n {\n validator: (rule, value) =>\n value && !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : value && !checkDateExpiration(dataLimite, value)\n ? Promise.reject(new Error(\"Informe uma data até 31/12/2021\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationDate2021: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : !checkDateExpiration(dataLimite, value)\n ? Promise.reject(new Error(\"Informe uma data até 31/12/2021\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationVoterCard: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidVoterCard(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um TÃtulo de Eleitor válido\")),\n },\n];\n\nexport const validationRenavam: Rule[] = [\n {\n validator: (rule, value) =>\n !value || isValidRenavam(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Renavam válido\")),\n },\n];\n\nexport const validationFieldRequired: Rule[] = [\n {\n required: true,\n message: \"Este campo é obrigatório\",\n },\n];\n\nexport const validationNumberPercentageField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0.0001,\n type: \"number\",\n message: \"O valor deve ser maior que 0,0001\",\n },\n {\n max: 100,\n type: \"number\",\n message: \"O valor deve ser menor que 100 (cem)\",\n },\n];\n\nexport const validationNumberPercentageFieldPositive: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve estar entre 0 (zero) e 100 (cem)\",\n },\n {\n max: 100,\n type: \"number\",\n message: \"O valor deve estar entre 0 (zero) e 100 (cem)\",\n },\n];\n\nexport const validationNumberField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0.01,\n type: \"number\",\n message: \"O valor deve ser maior que 0 (zero)\",\n },\n];\n\nexport const validationNumberAllowNegativeField: Rule[] = [\n ...validationFieldRequired,\n {\n type: \"number\",\n message: \"Não é um número válido\",\n },\n];\n\nexport const validationNumberFieldPositive: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve ser positivo\",\n },\n];\n\nexport const validationQuantityCryptoField: Rule[] = [\n ...validationFieldRequired,\n {\n min: 0,\n type: \"number\",\n message: \"O valor deve ser positivo\",\n },\n];\n\nexport const validationDeclarationReceipt: Rule[] = [\n {\n validator: (rule, value) =>\n isValidDeclarationReceipt(value)\n ? Promise.resolve()\n : Promise.reject(\n new Error(\"O número da declaração deve ter 10 ou 12 dÃgitos\")\n ),\n },\n];\n\nexport const validationStateAddress: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n value && isValidStateAddress(value)\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um Estado válido\")),\n },\n];\n\nexport const validationCardShelfLife: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n isValidShelfLife(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : Promise.resolve(),\n },\n];\n\nexport const validationCep: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n isValidCEP(value ?? \"\")\n ? Promise.resolve()\n : Promise.reject(new Error(\"Informe um CEP válido\")),\n },\n];\n\nexport const validationAmexCVV: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n (value?.replace(/[_]/g, \"\") ?? \"\")?.length === 4\n ? Promise.resolve()\n : Promise.reject(new Error(\"Insira um código de segurança válido\")),\n },\n];\n\nexport const validationCVV: Rule[] = [\n {\n required: true,\n validator: (rule, value) =>\n (value?.replace(/[_]/g, \"\") ?? \"\")?.length === 3\n ? Promise.resolve()\n : Promise.reject(new Error(\"Insira um código de segurança válido\")),\n },\n];\n\nexport const validationPasswordNotRequired: Rule[] = [\n { min: 6, message: \"A senha deve ter pelo menos 6 caracteres\" },\n];\n\nexport const validationPassword: Rule[] = [\n { required: true, message: \"Informe uma senha\" },\n { min: 6, message: \"A senha deve ter pelo menos 6 caracteres\" },\n];\n\nexport const validationPassConfirmation: Rule[] = [\n ({ getFieldValue }) => ({\n validator: (_: any, value: string) =>\n value === getFieldValue(\"pass\")\n ? Promise.resolve()\n : Promise.reject(new Error(\"As senhas não coincidem\")),\n }),\n];\n\nexport const validationCreditCardNumber: Rule[] = [\n {\n validator: (rule, value: string) =>\n isValidCreditCard(value?.replace(/[^0-9\\\\.]+/g, \"\"))\n ? Promise.resolve()\n : Promise.reject(new Error(\"Número de cartão inválido\")),\n },\n];\n","import { Form } from \"antd\";\nimport React, { useState } from \"react\";\nimport ReactInputMask from \"react-input-mask\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Button, TextField } from \"@mui/material\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { cpfInputMask } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationCpf,\n validationFieldRequired,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n cpf: string;\n pass: string;\n}\n\nconst MaskCPF = React.forwardRef<HTMLElement>((props, ref) => (\n <ReactInputMask {...props} mask={cpfInputMask} />\n));\n\nexport const Login: React.FC = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm<IData>();\n const { handleSignIn, loading } = useAuth();\n const { getIntegrationStatus } = useBroker();\n const [fieldsError, setFieldsError] = useState<{ [key: string]: string[] }>(\n {}\n );\n\n const onFinish = async (data: IData) => {\n try {\n await handleSignIn(data);\n getIntegrationStatus({ firstTime: true });\n } catch (err: any) {\n return;\n }\n };\n\n const onValuesChange = (changed: any, values: any) => {\n const cpf = changed.cpf ? changed.cpf.replace(/[_.-/-]/g, \"\") : values.cpf;\n form.setFieldsValue({\n ...values,\n cpf,\n });\n };\n\n const onFieldsChange = () => {\n setFieldsError(\n form\n .getFieldsError()\n .reduce((acc, cur) => ({ ...acc, [cur.name?.[0]]: cur.errors }), {})\n );\n };\n\n const handleNavigate = () => {\n navigate(\"/p/cadastrar\");\n };\n\n return (\n <AuthContainer className=\"beauty-scrollbar\">\n <div className=\"auth-content\">\n <div className=\"form-container\">\n <h1>Acesse sua conta</h1>\n <Form\n form={form}\n size=\"large\"\n onFinish={onFinish}\n onValuesChange={onValuesChange}\n onFieldsChange={onFieldsChange}\n >\n <Form.Item name=\"cpf\" rules={validationCpf}>\n <TextField\n label=\"CPF\"\n variant=\"standard\"\n error={fieldsError[\"cpf\"]?.length > 0}\n InputProps={{ inputComponent: MaskCPF as any }}\n />\n </Form.Item>\n\n <Form.Item name=\"pass\" rules={validationFieldRequired}>\n <TextField\n label=\"Senha\"\n type=\"password\"\n variant=\"standard\"\n error={fieldsError[\"pass\"]?.length > 0}\n />\n </Form.Item>\n\n <div className=\"buttons\">\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n disabled={loading}\n startIcon={loading && <LoadingOutlined />}\n >\n Entrar\n </Button>\n </div>\n <div className=\"bottom-acessar\">\n <Button\n type=\"button\"\n disabled={loading}\n style={{ fontSize: \"11px\" }}\n onClick={() => navigate(\"/p/forgot-password\")}\n >\n <span className=\"xp-link\">Esqueci minha senha</span>\n </Button>\n </div>\n </Form>\n\n <div className=\"footer\">\n Ainda não possui uma conta?\n <Button onClick={handleNavigate}>\n <span className=\"xp-link\">Começar</span>\n </Button>\n </div>\n </div>\n </div>\n </AuthContainer>\n );\n};\n","import { Checkbox, Form } from \"antd\";\nimport React, { useState } from \"react\";\nimport ReactInputMask from \"react-input-mask\";\nimport { useNavigate } from \"react-router-dom\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { MdVisibility, MdVisibilityOff } from \"react-icons/md\";\nimport {\n Button,\n FormControl,\n IconButton,\n Input,\n InputAdornment,\n InputLabel,\n TextField,\n} from \"@mui/material\";\nimport { cpfInputMask } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationCpf,\n validationEmail,\n validationFullName,\n validationPassword,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n email: string;\n pass: string;\n passConfirmation: string;\n cpf: string;\n name: string;\n}\n\ninterface IProps {\n className?: string;\n}\n\nconst MaskCPF = React.forwardRef<HTMLElement>((props, ref) => (\n <ReactInputMask {...props} mask={cpfInputMask} />\n));\n\nconst Cadastro: React.FC<IProps> = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm<IData>();\n const { handleSignUp, loading } = useAuth();\n const [showPassword, setShowPassword] = useState(false);\n const [fieldsError, setFieldsError] = useState<{ [key: string]: string[] }>(\n {}\n );\n\n const onFinish = (data: IData) => {\n handleSignUp(data, {});\n };\n\n const onValuesChange = (changed: any, values: any) => {\n const cpf = changed.cpf ? changed.cpf.replace(/[_.-/-]/g, \"\") : values.cpf;\n form.setFieldsValue({\n ...values,\n cpf,\n });\n };\n\n const onFieldsChange = () => {\n setFieldsError(\n form\n .getFieldsError()\n .reduce((acc, cur) => ({ ...acc, [cur.name?.[0]]: cur.errors }), {})\n );\n };\n\n return (\n <AuthContainer className=\"beauty-scrollbar\">\n <div className=\"auth-content\">\n <div className=\"form-container\">\n <h1>Faça seu cadastro</h1>\n <Form\n form={form}\n size=\"large\"\n onFinish={onFinish}\n onValuesChange={onValuesChange}\n onFieldsChange={onFieldsChange}\n >\n <Form.Item name=\"name\" rules={validationFullName}>\n <TextField\n variant=\"standard\"\n label=\"Nome completo\"\n error={fieldsError[\"name\"]?.length > 0}\n />\n </Form.Item>\n\n <Form.Item name=\"cpf\" rules={validationCpf}>\n <TextField\n label=\"CPF\"\n variant=\"standard\"\n error={fieldsError[\"cpf\"]?.length > 0}\n InputProps={{ inputComponent: MaskCPF as any }}\n />\n </Form.Item>\n\n <Form.Item name=\"email\" rules={validationEmail}>\n <TextField\n variant=\"standard\"\n type=\"email\"\n label=\"Email\"\n error={fieldsError[\"email\"]?.length > 0}\n />\n </Form.Item>\n\n <Form.Item name=\"pass\" rules={validationPassword}>\n <FormControl fullWidth variant=\"standard\">\n <InputLabel htmlFor=\"input-password\">Senha</InputLabel>\n <Input\n id=\"input-password\"\n type={showPassword ? \"text\" : \"password\"}\n error={fieldsError[\"pass\"]?.length > 0}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"exibir senha\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowPassword((show) => !show)}\n edge=\"end\"\n >\n {showPassword ? <MdVisibilityOff /> : <MdVisibility />}\n </IconButton>\n </InputAdornment>\n }\n />\n </FormControl>\n </Form.Item>\n\n <Form.Item\n name=\"policiesAccepted\"\n getValueFromEvent={(e) => e.target.checked}\n >\n <Checkbox>\n <span>\n Li, entendi e estou de acordo com os{\" \"}\n <a\n href=\"https://velotax-termos-e-condicoes.s3.us-east-1.amazonaws.com/Termos%20de%20Uso%20-%20Velotax%20v1.pdf\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Termos de Uso\n </a>\n ,{\" \"}\n <a\n href=\"https://velotax-termos-e-condicoes.s3.us-east-1.amazonaws.com/Pol%C3%ADtica%20de%20Privacidade%20-%20Velotax%2020.01.22%20v1.pdf\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n PolÃtica de Privacidade\n </a>{\" \"}\n e{\" \"}\n <a\n href=\"https://velotax-termos-e-condicoes.s3.us-east-1.amazonaws.com/POL%C3%8DTICA%20DE%20COOKIES%20-%20VELOTAX_vEE%20v1.pdf\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n PolÃtica de Cookies\n </a>{\" \"}\n do Velotax\n </span>\n </Checkbox>\n </Form.Item>\n\n <div className=\"buttons\">\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n disabled={loading}\n startIcon={loading && <LoadingOutlined />}\n >\n Começar\n </Button>\n </div>\n </Form>\n\n <div className=\"footer\">\n Já possui uma conta?\n <Button\n type=\"button\"\n disabled={loading}\n onClick={() => navigate(\"/p/login\")}\n >\n <span className=\"xp-link\">Entrar</span>\n </Button>\n </div>\n </div>\n </div>\n </AuthContainer>\n );\n};\n\nexport default Cadastro;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .velotax-content {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n .success {\n width: 80px;\n height: 80px;\n display: flex;\n margin-top: 64px;\n position: relative;\n border-radius: 50%;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-primary-color);\n :after,\n :before {\n content: \"\";\n position: absolute;\n border-radius: 50%;\n background-color: var(--ant-primary-color);\n }\n :before {\n top: -16px;\n left: -16px;\n width: 112px;\n height: 112px;\n opacity: 0.1;\n }\n :after {\n top: -28px;\n left: -28px;\n width: 136px;\n height: 136px;\n opacity: 0.08;\n }\n svg {\n width: 40px;\n height: 40px;\n fill: var(--white);\n }\n }\n\n h1 {\n font-size: 24px;\n font-weight: 700;\n line-height: 32px;\n font-style: normal;\n margin: 48px 0 8px;\n letter-spacing: -0.24px;\n color: var(--velotax-font-color-light);\n }\n\n div.ant-typography {\n font-size: 16px;\n font-weight: 400;\n max-width: 450px;\n line-height: 24px;\n font-style: normal;\n text-align: center;\n margin-bottom: 40px;\n color: var(--velotax-font-color-light);\n }\n\n .ant-btn-primary {\n width: 200px;\n margin-bottom: 64px;\n }\n\n .expert-xp {\n padding: 16px 24px;\n border-radius: 8px;\n margin-bottom: 24px;\n background-color: var(--white);\n .ant-typography {\n display: block;\n text-align: center;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n color: var(--velotax-font-color-dark);\n text-shadow: 0px 0px var(--velotax-font-color-dark);\n a {\n text-decoration: underline;\n text-shadow: 0px 0px var(--ant-primary-color);\n }\n strong {\n font-style: italic;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .velotax-content {\n .success {\n margin-top: 32px;\n }\n div.ant-typography {\n margin-bottom: 32px;\n }\n .ant-btn-primary {\n margin-bottom: 32px;\n }\n }\n }\n`;\n","import { Typography } from \"antd\";\nimport { HiCheck } from \"react-icons/hi\";\nimport { useNavigate } from \"react-router\";\nimport { Container } from \"./styles\";\nimport Button from \"../../components/Button\";\n\nexport const Sucesso = () => {\n const navigate = useNavigate();\n return (\n <Container className=\"velotax-container\">\n <div className=\"velotax-content velotax-content-transparent\">\n <div className=\"success\">\n <HiCheck />\n </div>\n <Typography.Title level={1}>Sucesso!</Typography.Title>\n <Typography.Paragraph>\n Agora você já consegue acessar todos os módulos da plataforma e emitir\n DARFs ilimitados sem custo adicional.\n </Typography.Paragraph>\n <Button\n size=\"large\"\n type=\"primary\"\n onClick={() => {\n navigate(\"/carteira\");\n }}\n >\n Continuar\n </Button>\n {/* <div className=\"expert-xp\">\n <Typography.Text>\n Você ganhou um cupom de desconto para adquirir seu ingresso Expert\n XP 2023.\n </Typography.Text>\n <Typography.Text>\n Acesse{\" \"}\n <a\n target=\"_blank\"\n rel=\"noreferrer\"\n href=\"https://www.expertxp.com.br/\"\n >\n www.expertxp.com.br\n </a>{\" \"}\n e utilize o cupom <strong>\"VelotaxNaExpertXP\"</strong>.\n </Typography.Text>\n </div> */}\n </div>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .velotax-content.carteira {\n width: 840px;\n }\n .header {\n display: flex;\n align-items: flex-start;\n width: 100%;\n width: 840px;\n\n h1 {\n flex-grow: 1;\n }\n .hide-values-btn {\n svg {\n margin-top: 1rem;\n transition: 0.3s;\n &:hover {\n fill: var(--ant-primary-3) !important;\n transition: 0.3s;\n }\n }\n }\n .notification-button {\n button {\n width: 52px;\n height: 52px;\n transition: 0.3s;\n border-radius: 50%;\n background-color: var(--ant-primary-color);\n\n &:hover {\n background-color: var(--ant-primary-5);\n box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.1) !important;\n transition: 0.3s;\n }\n\n svg {\n font-size: 28px;\n fill: var(--black);\n }\n }\n }\n }\n .ant-tabs-nav-list {\n width: 100%;\n border-bottom: 1px solid #313131;\n .ant-tabs-ink-bar {\n bottom: -1px;\n }\n }\n .ant-tabs-ink-bar {\n max-width: 50% !important;\n width: 100% !important;\n }\n .ant-tabs-tab {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n .success {\n color: var(--ant-success-color);\n }\n .error {\n color: var(--ant-error-color);\n }\n .page-title {\n display: flex;\n align-items: baseline;\n }\n .hide-values-btn {\n width: 24px;\n margin-left: 12px;\n border-radius: 4px;\n display: inline-flex;\n height: 32px !important;\n background-color: transparent;\n svg {\n width: 20px;\n height: 20px;\n fill: var(--ant-primary-color) !important;\n }\n }\n\n .patrimonio {\n width: 100%;\n margin-bottom: -48px;\n\n h1:not(.page-title) {\n padding-bottom: 0;\n font-size: 2.25rem;\n margin: 0 !important;\n color: var(--velotax-font-color-light);\n\n span {\n font-weight: 800;\n }\n\n :after {\n display: none;\n }\n }\n\n h2 {\n font-weight: 400;\n line-height: 1rem;\n font-size: 0.875rem;\n margin: 0 !important;\n color: var(--velotax-font-color-light);\n }\n\n .lucro-prejuizo {\n padding: 16px 0 16px 16px;\n border-left: 2px solid #313131;\n\n .anticon.anticon-loading.anticon-spin {\n width: 14px;\n height: 14px;\n margin-left: 4px;\n svg {\n width: 14px;\n height: 14px;\n }\n }\n\n div.ant-typography {\n margin: 0.5rem 0;\n font-size: 0.875rem;\n span {\n font-weight: 600;\n white-space: nowrap;\n }\n }\n }\n }\n\n .list-empty {\n padding: 16px;\n margin-top: -16px;\n border-radius: 8px;\n color: var(--velotax-font-color);\n background-color: #313131;\n }\n\n .last-update {\n display: flex;\n margin-top: 32px;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n .button-refresh-wallet {\n width: 20px;\n height: 20px;\n border: none;\n box-shadow: none;\n margin-right: 8px;\n background-color: #313131;\n color: var(--ant-primary-color) !important;\n svg {\n width: 10px !important;\n height: 10px !important;\n * {\n stroke: var(--ant-primary-color) !important;\n }\n }\n }\n }\n\n .messages {\n margin-top: 16px;\n font-weight: 400;\n padding-top: 16px;\n line-height: 1rem;\n font-size: 0.75rem;\n color: var(--velotax-font-color);\n border-top: 2px solid #313131;\n li {\n padding-left: 16px;\n margin-bottom: 6px;\n position: relative;\n .anticon-info-circle {\n left: 0;\n top: 1px;\n position: absolute;\n color: var(--velotax-font-color);\n }\n }\n }\n\n .select-container {\n top: 0;\n right: 0;\n width: 41.6666%; // 41.6666% para alinhar com o prejuizo (10/24 = 41.6666)\n position: absolute;\n .ant-select {\n min-width: 180px;\n height: 40px !important;\n .ant-select-selector {\n height: 40px !important;\n }\n }\n }\n .recharts-layer.recharts-pie-labels text {\n font-size: 14px !important;\n font-weight: 600 !important;\n }\n @media only screen and (min-device-width: 813px) {\n .velotax-content.largeChart {\n .recharts-responsive-container {\n margin: 0 auto 80px;\n }\n }\n .recharts-responsive-container {\n margin: 0 auto 48px;\n position: relative;\n .recharts-wrapper {\n width: 100% !important;\n > .recharts-surface {\n margin-left: 80px;\n }\n .recharts-legend-wrapper {\n right: 0px !important;\n .recharts-legend-item {\n margin: 4px 0;\n .recharts-surface {\n width: 16px;\n height: 16px;\n border-radius: 2px;\n }\n .recharts-legend-item-text {\n /* margin-left: 12px; */\n span {\n font-size: 14px;\n font-weight: 500;\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .velotax-content.carteira {\n width: 100%;\n }\n .header {\n width: 100%;\n padding-right: 16px;\n align-items: center;\n .page-title {\n font-size: 22px;\n align-items: center;\n }\n .hide-values-btn {\n svg {\n margin: 0;\n }\n }\n }\n .patrimonio {\n margin-bottom: -48px;\n\n .lucro-prejuizo {\n padding: 4px 0 0;\n border: none;\n margin-top: 16px;\n border-top: 2px solid #313131;\n\n .anticon.anticon-loading.anticon-spin {\n width: 10px;\n height: 10px;\n margin-left: 4px;\n svg {\n width: 10px;\n height: 10px;\n }\n }\n\n div.ant-typography {\n margin: 0.25rem 0;\n font-size: 0.75rem;\n }\n }\n }\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n .recharts-responsive-container {\n position: relative;\n margin: 32px auto;\n .select-container {\n top: -32px;\n width: 100%;\n .ant-select {\n min-width: 210px;\n }\n }\n .recharts-legend-wrapper {\n width: 98px !important;\n right: -24px !important;\n .recharts-legend-item {\n margin: 4px 0;\n align-items: start;\n display: flex !important;\n margin-right: 0 !important;\n .recharts-surface {\n border-radius: 2px;\n margin-top: 1px;\n }\n .recharts-legend-item-text {\n max-width: 80px;\n font-size: 13px;\n line-height: 14px;\n white-space: normal;\n display: inline-block;\n span {\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n .ant-tabs-tabpane {\n display: flex;\n justify-content: center;\n }\n .range {\n display: flex;\n justify-content: space-between;\n\n div.ant-typography {\n font-size: 13px;\n }\n }\n .isentometro {\n margin-bottom: 5px;\n font-size: 14px;\n }\n .box {\n margin: 50px 0px;\n }\n .overview {\n color: var(--ant-primary-color);\n font-size: 18px;\n font-weight: bold;\n }\n .ant-progress-success-bg {\n background-color: var(--ant-primary-color);\n height: 13px !important;\n }\n .ant-progress-inner {\n height: 13px !important;\n }\n .ant-progress-bg {\n height: 13px !important;\n }\n & > .ant-collapse {\n border: none;\n & > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n &:last-of-type {\n margin-bottom: 0;\n }\n & > .ant-collapse-header {\n padding: 0;\n align-items: center;\n .ant-collapse-arrow {\n right: 0;\n }\n h2 {\n margin: 0;\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n }\n .collapse-title-divider {\n flex-grow: 1;\n display: block;\n margin: 0 16px;\n border-bottom: 2px solid #313131;\n }\n .collapse-title-hidden {\n width: 24px;\n height: 24px;\n display: block;\n visibility: hidden;\n }\n }\n & > .ant-collapse-content {\n border: none;\n background-color: transparent;\n & > .ant-collapse-content-box {\n padding: 24px 0 0;\n & > .ant-collapse {\n border: none;\n }\n & > div {\n font-size: 13px;\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n margin-bottom: 0;\n border-radius: 0;\n padding: 32px 24px;\n\n h1,\n h2 {\n padding: 0;\n }\n }\n`;\n\nexport const BlurContent = styled.div`\n margin-top: 8px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n border: 2px solid #313131;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const Toolbar = styled.div`\n display: flex;\n flex-direction: column;\n width: 700px;\n margin: 0 auto 1.5rem;\n justify-content: space-between;\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n }\n`;\n\nexport const IsentCardStyled = styled.div`\n margin-bottom: 4px;\n height: 110px;\n padding: 23px;\n border: none !important;\n border-radius: 4px !important;\n background-color: var(--velotax-background-color-ghost);\n text-align: center;\n gap: 12px;\n flex-direction: column;\n display: flex;\n\n .overviewTitleIsent {\n color: var(--ant-primary-color);\n font-size: 13px;\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding: 64px 32px 0;\n height: calc(100vh - 64px);\n .anticon.anticon-loading.anticon-spin {\n width: 48px;\n height: 48px;\n svg {\n width: 48px;\n height: 48px;\n fill: var(--ant-primary-color);\n }\n }\n`;\n\nconst Loading: React.FC = () => {\n return (\n <Container>\n <LoadingOutlined />\n </Container>\n );\n};\n\nexport default Loading;\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport { useEffect, useState } from \"react\";\nimport {\n Bar,\n BarChart,\n Legend,\n ResponsiveContainer,\n XAxis,\n YAxis,\n Tooltip,\n} from \"recharts\";\nimport Loading from \"../Loading\";\nimport { isMobile } from \"../../utils\";\n\nexport const ChartBar = ({\n monthReport,\n proventos,\n yearProventos,\n typeProventos,\n hideValues,\n}: any) => {\n const [data, setDataChart] = useState([]);\n const [bars, setBars] = useState<any[]>([]);\n const [loading, setLoading] = useState(false);\n const [totalDiv, setTotalDiv] = useState(0);\n const [totalJscp, setTotalJscp] = useState(0);\n const [totalBonds, setTotalBonds] = useState(0);\n const [totalRendi, setTotalRendi] = useState(0);\n const [totalAmort, setTotalAmort] = useState(0);\n\n const chartColors = [\n { background: \"#FCC102\", label: \"white\" },\n { background: \"#C8D200\", label: \"black\" },\n { background: \"#FF2B01\", label: \"white\" },\n { background: \"#E50045\", label: \"white\" },\n { background: \"#CC13AF\", label: \"white\" },\n { background: \"#5B0084\", label: \"white\" },\n { background: \"#79002B\", label: \"white\" },\n { background: \"#0A9E5A\", label: \"white\" },\n { background: \"#FF7F00\", label: \"white\" },\n ];\n\n const getProviderColor = (provider: string, index: number) => {\n while (index > 8) {\n const differnce = index - 8;\n index = differnce - 1;\n }\n return chartColors[index].background;\n };\n\n useEffect(() => {\n setLoading(true);\n let totalJscp = 0;\n let totalDiv = 0;\n let totalBonds = 0;\n let totalRendi = 0;\n let totalAmort = 0;\n if (typeProventos === \"provento\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Fev\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Mar\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Abr\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Mai\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Jun\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Jul\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Ago\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Set\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Out\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Nov\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n {\n name: \"Dez\",\n juros: 0,\n dividendo: 0,\n rendimento: 0,\n amortizacao: 0,\n bonds: 0,\n },\n ];\n\n const groupedProventos = _.groupBy(proventos, (item) => {\n return moment(item.date).format(\"YYYY-MM\");\n });\n\n for (const key in groupedProventos) {\n const year = +moment(key).format(\"Y\");\n const month = +moment(key).format(\"M\");\n const operations = groupedProventos[key];\n if (Number(year) === yearProventos) {\n operations.forEach((el: any) => {\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"rendimento\"\n ) {\n proventoByMonth[month - 1].rendimento =\n proventoByMonth[month - 1]?.rendimento + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendo\" ||\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendos\"\n ) {\n proventoByMonth[month - 1].dividendo =\n proventoByMonth[month - 1]?.dividendo + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"juros sobre capital próprio\"\n ) {\n proventoByMonth[month - 1].juros =\n proventoByMonth[month - 1]?.juros + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"amortização\"\n ) {\n proventoByMonth[month - 1].amortizacao =\n proventoByMonth[month - 1]?.amortizacao + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"cupom\"\n ) {\n proventoByMonth[month - 1].bonds =\n proventoByMonth[month - 1]?.bonds + el.grossAmount;\n }\n });\n }\n }\n for (const el of proventoByMonth) {\n totalAmort += el.amortizacao || 0;\n totalJscp += el.juros || 0;\n totalDiv += el.dividendo || 0;\n totalBonds += el.bonds || 0;\n totalRendi += el.rendimento || 0;\n }\n\n setTotalAmort(totalAmort);\n setTotalBonds(totalBonds);\n setTotalDiv(totalDiv);\n setTotalJscp(totalJscp);\n setTotalRendi(totalRendi);\n setDataChart(proventoByMonth);\n }\n if (typeProventos === \"corretora\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n },\n {\n name: \"Fev\",\n },\n {\n name: \"Mar\",\n },\n {\n name: \"Abr\",\n },\n {\n name: \"Mai\",\n },\n {\n name: \"Jun\",\n },\n {\n name: \"Jul\",\n },\n {\n name: \"Ago\",\n },\n {\n name: \"Set\",\n },\n {\n name: \"Out\",\n },\n {\n name: \"Nov\",\n },\n {\n name: \"Dez\",\n },\n ];\n const barsChart: any = [];\n\n const groupedProventos = _.groupBy(proventos, (item) => {\n return item.corretora;\n });\n\n for (const key in groupedProventos) {\n barsChart.push(key);\n const operations = groupedProventos[key];\n operations.forEach((el: any) => {\n if (Number(moment(el.date).format(\"YYYY\")) === yearProventos) {\n const month = Number(moment(el.date).format(\"M\"));\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"rendimento\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendo\" ||\n el?.corporateActionTypeDescription?.toLowerCase() === \"dividendos\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"juros sobre capital próprio\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"amortização\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n if (\n el?.corporateActionTypeDescription?.toLowerCase() ===\n \"cupom\"\n ) {\n proventoByMonth[month - 1][key] =\n (proventoByMonth[month - 1][key] || 0) + el.grossAmount;\n }\n }\n });\n }\n\n setBars(barsChart);\n setDataChart(proventoByMonth);\n }\n if (typeProventos === \"data\") {\n const proventoByMonth: any = [\n {\n name: \"Jan\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Fev\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Mar\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Abr\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Mai\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Jun\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Jul\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Ago\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Set\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Out\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Nov\",\n futuro: 0,\n liquidado: 0,\n },\n {\n name: \"Dez\",\n futuro: 0,\n liquidado: 0,\n },\n ];\n const types = [\n \"rendimento\",\n \"juros sobre capital próprio\",\n \"dividendo\",\n \"dividendos\",\n \"amortização\",\n \"cupom\",\n \"cupom\",\n ];\n\n proventos?.forEach((el: any) => {\n const year = Number(moment(el.date).format(\"Y\"));\n if (\n year === yearProventos &&\n types.includes(el.corporateActionTypeDescription.toLowerCase())\n ) {\n const month = Number(moment(el.date).format(\"M\"));\n if (el.isFuturo) {\n proventoByMonth[month - 1].futuro += el.grossAmount;\n } else {\n proventoByMonth[month - 1].liquidado += el.grossAmount;\n }\n }\n });\n setDataChart(proventoByMonth);\n }\n setLoading(false);\n }, [yearProventos, typeProventos, proventos]);\n\n const renderLegend = (value: string, entry: any) => {\n return <span style={{ color: \"black\", fontWeight: 400 }}>{value}</span>;\n };\n\n const labelFormatter = (value: any) => {\n return value > 0\n ? hideValues\n ? \"R$ ***\"\n : \"R$ \" +\n value?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : \"\";\n };\n\n const renderTooltip = (value: any) => {\n const { payload } = value;\n\n const verificacaoValorFinal = payload?.reduce(\n (acumulador: any, item: any) => {\n if (item.value !== undefined) {\n return acumulador + item.value;\n }\n return acumulador;\n },\n 0\n );\n\n if (\n typeProventos === \"provento\" &&\n payload?.[0] &&\n verificacaoValorFinal !== 0\n ) {\n const total =\n payload[0]?.payload?.dividendo +\n payload[0]?.payload?.rendimento +\n payload[0]?.payload?.juros +\n payload[0]?.payload?.amortizacao +\n payload[0]?.payload?.bonds;\n return (\n <>\n <div className=\"container-tooltip\">\n {payload[0]?.payload?.dividendo > 0 && (\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Dividendos: R${\" \"}\n {payload[0]?.payload?.dividendo.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.dividendo * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n )}\n {payload[0]?.payload?.rendimento > 0 && (\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Rendimento: R${\" \"}\n {payload[0]?.payload?.rendimento.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.rendimento * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n )}\n {payload[0]?.payload?.juros > 0 && (\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Juros sobre capital próprio: R${\" \"}\n {payload[0]?.payload?.juros.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.juros * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n )}\n {payload[0]?.payload?.amortizacao > 0 && (\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Amortização: R${\" \"}\n {payload[0]?.payload?.amortizacao.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.amortizacao * 100) / total).toFixed(\n 2\n )\n : 0}\n %)\n </span>\n )}\n {payload[0]?.payload?.bonds > 0 && (\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Cupom: R${\" \"}\n {payload[0]?.payload?.bonds.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.bonds * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n )}\n </div>\n </>\n );\n }\n if (typeProventos === \"corretora\" && payload?.[0]) {\n const keys = Object.keys(payload[0]?.payload || {});\n let total = 0;\n keys.forEach((el) => {\n if (el !== \"name\") {\n total += payload[0]?.payload[el] || 0;\n }\n });\n\n return (\n <div className=\"container-tooltip\">\n {keys.map((el) => {\n if (el !== \"name\") {\n return (\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n {el}: R${\" \"}\n {payload[0]?.payload[el].toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload[el] * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n );\n }\n return <></>;\n })}\n </div>\n );\n }\n if (typeProventos === \"data\" && payload?.[0]) {\n const total =\n payload[0]?.payload?.futuro + payload[0]?.payload?.liquidado;\n return (\n <>\n <div className=\"container-tooltip\">\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Futuro: R${\" \"}\n {payload[0]?.payload?.futuro?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.futuro * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n <span style={{ fontSize: \"12px\", color: \"black\" }}>\n Liquidado: R${\" \"}\n {payload[0]?.payload?.liquidado.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}{\" \"}\n (\n {total > 0\n ? ((payload[0]?.payload?.liquidado * 100) / total).toFixed(2)\n : 0}\n %)\n </span>\n </div>\n </>\n );\n }\n return <></>;\n };\n return loading ? (\n <Loading />\n ) : (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <BarChart\n data={data}\n margin={{\n top: 40,\n left: -60,\n }}\n >\n <XAxis dataKey=\"name\" style={{ fontSize: \"10px\" }} />\n <YAxis axisLine={false} tick={false} />\n <Tooltip content={renderTooltip} />\n <Legend\n style={{ fill: \"white\" }}\n align=\"center\"\n layout=\"horizontal\"\n iconType=\"circle\"\n verticalAlign=\"bottom\"\n formatter={renderLegend}\n />\n {typeProventos === \"provento\" && (\n <>\n {totalJscp > 0 && (\n <Bar\n dataKey=\"juros\"\n stackId=\"a\"\n fill=\"var(--ant-error-color-active)\"\n name=\"Juros sobre capital próprio\"\n onClick={monthReport}\n />\n )}\n {totalRendi > 0 && (\n <Bar\n dataKey=\"rendimento\"\n stackId=\"a\"\n fill=\"#ff7a00\"\n name=\"Rendimento\"\n onClick={monthReport}\n />\n )}\n {totalDiv > 0 && (\n <Bar\n dataKey=\"dividendo\"\n stackId=\"a\"\n fill=\"var(--ant-primary-color)\"\n name=\"Dividendo\"\n onClick={monthReport}\n />\n )}\n {totalAmort > 0 && (\n <Bar\n dataKey=\"amortizacao\"\n stackId=\"a\"\n fill=\"#4B0082\"\n name=\"Amortização\"\n onClick={monthReport}\n />\n )}\n {totalBonds > 0 && (\n <Bar\n dataKey=\"bonds\"\n stackId=\"a\"\n fill=\"#CC13AF\"\n name=\"Cupom\"\n onClick={monthReport}\n />\n )}\n {!isMobile() && (\n <Bar\n dataKey=\"\"\n stackId=\"a\"\n fill=\"transparent\"\n name=\"\"\n label={{ position: \"top\", formatter: labelFormatter }}\n />\n )}\n </>\n )}\n {typeProventos === \"corretora\" && (\n <>\n {bars.map((el, index) => {\n return (\n <Bar\n dataKey={el}\n stackId=\"a\"\n fill={getProviderColor(\"\", index)}\n name={el}\n onClick={monthReport}\n />\n );\n })}\n {!isMobile() && (\n <Bar\n dataKey=\"\"\n stackId=\"a\"\n fill=\"transparent\"\n name=\"\"\n label={{ position: \"top\", formatter: labelFormatter }}\n />\n )}\n </>\n )}\n {typeProventos === \"data\" && (\n <>\n <Bar\n dataKey=\"futuro\"\n stackId=\"a\"\n fill=\"var(--ant-error-color-active)\"\n onClick={monthReport}\n name=\"Futuro\"\n />\n <Bar\n dataKey=\"liquidado\"\n stackId=\"a\"\n fill=\"#ff7a00\"\n name=\"Liquidado\"\n onClick={monthReport}\n />\n {!isMobile() && (\n <Bar\n dataKey=\"\"\n stackId=\"a\"\n fill=\"transparent\"\n name=\"\"\n label={{ position: \"top\", formatter: labelFormatter }}\n />\n )}\n </>\n )}\n </BarChart>\n </ResponsiveContainer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const BlurContent: any = styled.div`\n .recharts-responsive-container {\n filter: ${(props: any) => (!props.hasPlan ? \"blur(10px)\" : \"\")};\n }\n height: 100%;\n margin-top: 8px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n z-index: 1;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const ContainerProventos: any = styled.div`\n @media only screen and (max-device-width: 812px) {\n .recharts-responsive-container\n .recharts-legend-wrapper\n .recharts-legend-item\n .recharts-legend-item-text {\n max-width: 100%;\n }\n }\n height: 400px;\n width: 100%;\n .container-tooltip {\n width: 350px;\n display: flex;\n flex-direction: column;\n background-color: white;\n margin-top: 5px;\n padding: 5px;\n }\n .recharts-default-legend {\n display: inline !important;\n li {\n margin-right: 15px !important;\n }\n }\n .recharts-bar-rectangle {\n cursor: pointer;\n }\n .ant-select-selection-placeholder {\n display: flex;\n align-items: center;\n }\n\n .recharts-surface {\n margin-left: 0px !important;\n }\n\n span.recharts-legend-item-text span {\n color: white !important;\n }\n\n .recharts-legend-wrapper {\n left: 10px !important;\n }\n\n .recharts-responsive-container .recharts-wrapper .recharts-legend-wrapper {\n width: 100% !important;\n }\n\n .recharts-layer > text {\n font-size: 12px;\n font-weight: 400;\n fill: white;\n }\n .ant-btn {\n border-radius: 10px;\n align-items: center;\n display: flex;\n }\n .filter-proventos {\n width: 100%;\n display: flex;\n margin-bottom: 16px;\n button.ant-btn.ant-btn-default {\n height: 40px;\n svg.fill {\n fill: var(--ant-primary-color);\n }\n }\n .ant-select {\n height: 38px;\n font-size: 16px;\n margin-right: 8px;\n .ant-select-selector {\n height: 38px;\n }\n }\n .ant-select:not(:first-of-type) {\n margin-right: auto;\n }\n .proventos-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n button.ant-btn {\n min-width: 32px;\n font-size: 14px;\n font-weight: 500;\n padding: 5px 12px;\n border-radius: 4px;\n border-radius: 24px;\n display: inline-flex;\n height: 38px !important;\n background-color: var(--white);\n color: var(--velotax-font-color-dark);\n border: 1px solid var(--white) !important;\n svg {\n width: 18px;\n height: 18px;\n fill: var(--ant-primary-color);\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n }\n @media only screen and (max-device-width: 812px) {\n .filter-proventos {\n flex-wrap: wrap;\n .ant-select:first-of-type {\n width: 25%;\n }\n .ant-select:not(:first-of-type) {\n margin-right: 0;\n width: calc(75% - 8px);\n }\n .proventos-btns {\n width: 100%;\n margin-top: 8px;\n button.ant-btn.ant-btn-text {\n width: 50%;\n }\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n width: 100% !important;\n .ant-tooltip {\n z-index: 999;\n }\n &.velotax-content {\n padding: 24px 0 48px !important;\n }\n .download-report-btn {\n padding: 5px;\n border-radius: 4px;\n display: inline-flex;\n height: 32px !important;\n background-color: var(--white);\n color: var(--velotax-font-color-dark);\n width: auto;\n border: 1px solid var(--white);\n border-radius: 60px;\n svg {\n width: 20px;\n height: 20px;\n fill: var(--ant-primary-color) !important;\n }\n }\n .range {\n display: flex;\n justify-content: space-between;\n\n div.ant-typography {\n font-size: 13px;\n }\n }\n .isentometro {\n margin-bottom: 5px;\n font-size: 14px;\n }\n .box {\n margin: 50px 0px;\n }\n .overview {\n color: var(--ant-primary-color);\n font-size: 18px;\n font-weight: bold;\n }\n .ant-progress-success-bg {\n background-color: var(--ant-primary-color);\n height: 13px !important;\n }\n .ant-progress-inner {\n height: 13px !important;\n }\n .ant-progress-bg {\n height: 13px !important;\n }\n & > .ant-collapse {\n border: none;\n & > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n &:last-of-type {\n margin-bottom: 0;\n }\n & > .ant-collapse-header {\n padding: 0;\n align-items: center;\n .ant-collapse-arrow {\n right: 0;\n }\n h2 {\n margin: 0;\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n }\n .collapse-title-divider {\n flex-grow: 1;\n display: block;\n margin: 0 16px;\n border-bottom: 2px solid #313131;\n }\n .collapse-title-hidden {\n width: 24px;\n height: 24px;\n display: block;\n visibility: hidden;\n }\n }\n & > .ant-collapse-content {\n border: none;\n background-color: transparent;\n & > .ant-collapse-content-box {\n padding: 24px 0 0;\n & > .ant-collapse {\n border: none;\n }\n & > div {\n font-size: 13px;\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n margin-bottom: 0;\n border-radius: 0;\n &.velotax-content {\n padding: 24px 0 96px !important;\n }\n\n h1,\n h2 {\n padding: 0;\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const ContainerModal: any = styled.div`\n width: 100%;\n .ant-typography {\n color: var(--velotax-font-color-dark);\n }\n .container-table {\n width: 100%;\n overflow-y: auto;\n .ant-table-thead {\n .ant-table-cell {\n font-weight: bold;\n }\n }\n }\n .year-resume {\n width: 100%;\n display: flex;\n margin: 16px 0;\n padding: 20px 24px;\n border-radius: 12px;\n background-color: #ededed;\n justify-content: space-between;\n .ant-typography {\n font-size: 15px;\n margin: 0px;\n font-weight: 900;\n }\n }\n .container-1 {\n gap: 8px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n .ant-btn {\n display: flex;\n align-items: center;\n border-radius: 10px;\n }\n .ant-select {\n color: var(--velotax-font-color-dark) !important;\n .ant-select-arrow {\n .anticon {\n color: var(--velotax-font-color-dark);\n }\n }\n .ant-select-selector {\n height: 40px;\n border-radius: 4px !important;\n border: 1px solid #e8e8e8 !important;\n background-color: #e8e8e8 !important;\n .ant-select-selection-search,\n .ant-select-selection-item,\n .ant-select-selection-search input {\n font-size: 15px !important;\n font-weight: 900 !important;\n }\n }\n .ant-select-dropdown {\n border: none;\n border-radius: 2px;\n background-color: var(--white) !important;\n box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n .ant-select-item {\n background-color: var(--white) !important;\n color: var(--velotax-font-color-dark);\n :hover {\n background-color: #e8e8e8 !important;\n }\n }\n .ant-select-item-option-selected {\n font-weight: bold;\n background-color: #abaaa8 !important;\n color: var(--velotax-font-color-dark) !important;\n :hover {\n background-color: #abaaa8 !important;\n }\n }\n }\n }\n }\n .client-wallet-header-btns {\n display: flex;\n column-gap: 8px;\n align-items: center;\n .ant-btn {\n height: 32px;\n min-width: 32px;\n font-weight: 500;\n box-shadow: none;\n border-radius: 24px;\n border: 1px solid #e8e8e8;\n &.filtro-aplicado {\n color: var(--ant-primary-color);\n border: 1px solid var(--ant-primary-color);\n background-color: var(--ant-primary-1);\n }\n svg {\n fill: none;\n width: 18px;\n height: 18px;\n stroke: var(--ant-primary-color);\n &.fill {\n path {\n stroke: var(--ant-primary-color);\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .container-1 {\n flex-direction: column;\n .client-wallet-header-btns {\n width: 100%;\n .ant-select {\n width: 35%;\n }\n .ant-select:first-of-type {\n width: calc(65% - 8px);\n }\n .ant-btn {\n width: calc(50% - 4px);\n }\n }\n }\n .container-table {\n .ant-pagination.ant-table-pagination {\n right: 24px;\n position: fixed;\n }\n }\n }\n`;\n","import { Drawer, DrawerProps, Modal, ModalProps } from \"antd\";\nimport { isMobile } from \"../../utils\";\n\nexport interface DrawerModalProps\n extends Omit<ModalProps, \"visible\" | \"onCancel\">,\n Omit<DrawerProps, \"visible\" | \"onClose\"> {\n visible?: boolean;\n onCancel?: (e: any) => void;\n}\n\nexport const DrawerModal: React.FC<DrawerModalProps> = ({\n height,\n visible,\n onCancel,\n children,\n className,\n ...props\n}) => {\n return isMobile() ? (\n <Drawer\n destroyOnClose\n visible={visible}\n placement=\"bottom\"\n onClose={onCancel}\n className={`modal-drawer ${className} ${!props.title ? \"untitled\" : \"\"}`}\n height={height ?? \"calc(100% - 64px)\"}\n {...props}\n >\n {children}\n </Drawer>\n ) : (\n <Modal\n destroyOnClose\n footer={null}\n visible={visible}\n onCancel={onCancel}\n className={`modal-drawer ${className}`}\n {...props}\n >\n {children}\n </Modal>\n );\n};\n","import styled from \"styled-components\";\n\nexport const ReportTypeContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n width: 100%;\n height: 100%;\n\n .divider {\n width: 100%;\n max-width: 80px;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 1rem;\n }\n\n .loading {\n display: flex;\n\n h5 {\n margin-left: 1rem;\n }\n }\n\n .textInfo {\n display: flex;\n align-items: start;\n gap: 12px;\n padding: 2px;\n font-size: 11px;\n color: var(--gray-2);\n }\n\n button.MuiButtonBase-root.buttonDownload {\n font-size: 12px !important;\n text-transform: none !important;\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { Drawer, Typography } from \"antd\";\nimport { AiOutlineArrowLeft, AiOutlineDownload } from \"react-icons/ai\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport { isMobile } from \"../../utils\";\nimport { ReportTypeContainer } from \"./styles\";\n\ninterface IProps {\n open: boolean;\n loading?: boolean;\n setType: Function;\n onClose:\n | ((\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>\n ) => void)\n | undefined;\n}\n\nexport const ReportTypeDrawer = ({\n open,\n loading,\n setType,\n onClose,\n}: IProps) => {\n return (\n <Drawer\n visible={open}\n placement=\"right\"\n onClose={onClose}\n closeIcon={<AiOutlineArrowLeft />}\n title={\n <div onClick={onClose} style={{ cursor: \"pointer\" }}>\n Voltar\n </div>\n }\n {...(isMobile() ? { width: \"100%\" } : { width: \"420px\" })}\n >\n <ReportTypeContainer>\n <div>\n <Typography.Title level={4} style={{ color: \"white\" }}>\n Baixar\n </Typography.Title>\n <div className=\"divider\" />\n </div>\n <div>\n <Typography.Text style={{ fontSize: \"14px\" }}>\n Qual tipo de arquivo deseja baixar?\n </Typography.Text>\n </div>\n <div className=\"textInfo\">\n <InfoCircleOutlined style={{ marginTop: \"5px\" }} />\n <span>\n {\" \"}\n O arquivo baixado mostrará suas informações de acordo com os filtros\n selecionados no momento do download.\n </span>\n </div>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading}\n className=\"buttonDownload\"\n onClick={() => setType(\"pdf\")}\n startIcon={<AiOutlineDownload />}\n >\n <span>\n Arquivo em <b> PDF </b>\n {!isMobile() ? \" para simples conferência de dados.\" : \"\"}\n </span>\n </Button>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading}\n className=\"buttonDownload\"\n onClick={() => setType(\"xlsx\")}\n startIcon={<AiOutlineDownload />}\n >\n <span>\n Arquivo em <b> Excel </b>\n {!isMobile() ? \" para ser importado em planilhas.\" : \"\"}\n </span>\n </Button>\n {loading && (\n <LoadingOutlined\n style={{\n position: \"absolute\",\n top: \"60%\",\n left: \"45%\",\n color: \"var(--ant-primary-color)\",\n }}\n ></LoadingOutlined>\n )}\n </ReportTypeContainer>\n </Drawer>\n );\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.33333H14M2 3.33333H9.33333M6.66667 8H14M2 8H4M12 12.6667H14M2 12.6667H9.33333M11.6095 2.39052C12.1302 2.91122 12.1302 3.75544 11.6095 4.27614C11.0888 4.79684 10.2445 4.79684 9.72385 4.27614C9.20315 3.75545 9.20315 2.91122 9.72385 2.39052C10.2445 1.86983 11.0888 1.86983 11.6095 2.39052ZM6.27614 7.0572C6.79684 7.5779 6.79684 8.42212 6.27614 8.94282C5.75544 9.46352 4.91122 9.46352 4.39052 8.94282C3.86982 8.42212 3.86982 7.5779 4.39052 7.0572C4.91122 6.5365 5.75544 6.5365 6.27614 7.0572ZM11.6095 11.7239C12.1302 12.2446 12.1302 13.0888 11.6095 13.6095C11.0888 14.1302 10.2445 14.1302 9.72385 13.6095C9.20315 13.0888 9.20315 12.2446 9.72385 11.7239C10.2445 11.2032 11.0888 11.2032 11.6095 11.7239Z\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\nfunction SvgFiltro(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFiltro);\nexport default __webpack_public_path__ + \"static/media/filtro.d769fa77.svg\";\nexport { ForwardRef as ReactComponent };","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport React, { useState } from \"react\";\nimport { Form, List, message, Typography } from \"antd\";\nimport { VscClose } from \"react-icons/vsc\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport NumberFormat from \"react-number-format\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport { FooterModal } from \"../../components/FooterModal\";\nimport {\n currencyToNumber,\n errorMessage,\n formatCurrency,\n months,\n numberToPercentage,\n replaceDotByComma,\n zero,\n isValidDate,\n isMobile,\n getQuoteFortnight,\n} from \"../../utils\";\nimport {\n validationDateIsOnReferenceMonth,\n validationDateIsOnReferenceMonthCompra,\n validationFieldRequired,\n validationNumberAllowNegativeField,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\nimport {\n CurrencyFormItem,\n DateFormItem,\n NumberFormItem,\n TextFormItem,\n SelectFormItem,\n} from \"../formItems\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\n\n// import euaFlag from \"../../assets/united-states-of-america.png\";\n// import brazilFlag from \"../../assets/brazil.png\";\n\nexport const yearConfigPL4173 = 2024\n\nexport const historicoVendasEmptyText =\n \"Nenhuma operação de venda realizada neste mês\";\n\nexport enum FormCurrencyMode {\n BRL = \"R$\",\n USD = \"US$\",\n}\n\nexport enum FormMovimentTypeMode {\n VENDA = \"Venda de ativos\",\n JUROS = \"Juros de aplicações\",\n}\n\nexport enum FormMovimentTypeModeNew {\n VENDA = \"Venda de ativos\",\n JUROS = \"Juros de bonds\",\n DIVIDENDOS = \"Dividendos\",\n OUTROS = \"Outros rendimentos\",\n}\n\nexport const TipoMercado: { [key: string]: string } = {\n mercado: \"Mercado à vista\",\n mercadoAVista: \"Mercado a Vista\",\n mercadoOpcoes: \"Mercado de opções\",\n outros: \"Outros mercados\",\n mercadoFracionario: \"Merc. Fracionário\",\n opcaoCompra: \"Opção de Compra\",\n opcaoVenda: \"Opção de Venda\",\n dayTrade: \"Day Trade\",\n};\n\nexport const TipoOperacao: { [key: string]: string } = {\n comum: \"Comum\",\n daytrade: \"Day Trade\",\n fii: \"FII\",\n};\n\nexport enum YearResumeStatusFromBackEnum {\n PAYED = \"PAYED\",\n PENDING = \"PENDING\",\n REGULAR = \"REGULAR\",\n NOT_PAYED = \"NOT_PAYED\",\n}\n\nexport enum YearResumeStatusCSSClassEnum {\n PAYED = \"payed\",\n PENDING = \"pending\",\n REGULAR = \"not-payed\",\n NOT_PAYED = \"not-payed\",\n}\n\nexport enum YearResumeStatusColorEnum {\n PAYED = \"var(--ant-success-color)\",\n PENDING = \"var(--ant-error-color)\",\n REGULAR = \"var(--ant-info-color-disabled)\",\n NOT_PAYED = \"var(--ant-info-color-disabled)\",\n}\n\nexport enum YearResumeStatusTextEnum {\n PAYED = \"Imposto apurado\",\n PENDING = \"Imposto devido\",\n REGULAR = \"Não há imposto devido\",\n NOT_PAYED = \"DARF Emitido e não pago\",\n}\n\nexport interface IDarf {\n payed?: boolean;\n emitted?: boolean;\n multa: number;\n juros: number;\n totalAlienado: number;\n totalGanho: number;\n aliquotaDevida: number;\n impostoDevido: number;\n impostoAcumulado: number;\n totalImpostoDevido: number;\n memoriaCalculo: any[];\n regular?: boolean;\n status?: keyof typeof YearResumeStatusFromBackEnum;\n irrfExterior?: number; \n}\n\nexport interface IQuote {\n venda: number;\n compra: number;\n}\n\nexport interface IQuotes {\n [key: string]: IQuote;\n}\n\nexport const defaultDarf: IDarf = {\n totalAlienado: 0,\n impostoDevido: 0,\n impostoAcumulado: 0,\n totalImpostoDevido: 0,\n aliquotaDevida: 0,\n totalGanho: 0,\n juros: 0,\n multa: 0,\n memoriaCalculo: [],\n status: \"REGULAR\",\n};\n\nexport interface IDarfBolsa {\n payed?: boolean;\n emitted?: boolean;\n aliquotaComum?: number;\n aliquotaDT?: number;\n aliquotaFII?: number;\n alienacoesComum?: number;\n alienacoesDT?: number;\n alienacoesFII?: number;\n ganhoComum?: number;\n ganhoDT?: number;\n ganhoFII?: number;\n impostoComumFinal?: number;\n impostoDTFinal?: number;\n impostoFIIFinal?: number;\n impostoTotal?: number;\n impostoTotalFinal?: number;\n irrfComum?: number;\n irrfDayTrade?: number;\n irrfFII?: number;\n irrfTotal?: number;\n irrfExterior?: number;\n jurosAux?: number;\n mercadoOpcoesComum?: number;\n mercadoOpcoesDT?: number;\n mercadoOutrosComum?: number;\n mercadoOutrosDT?: number;\n mercadoOutrosFII?: number;\n mercadoVistaComum?: number;\n mercadoVistaDT?: number;\n multaAux?: number;\n memoriaCalculo: any[];\n impostoAcumulado?: number;\n impostoDevido?: number;\n multa?: number;\n juros?: number;\n prejuizoComum?: number;\n prejuizoDayTrade?: number;\n prejuizoFII?: number;\n userPrejuizoComum?: number;\n userPrejuizoDayTrade?: number;\n userPrejuizoFII?: number;\n userIrrfComum?: number;\n userIrrfDayTrade?: number;\n userIrrfFII?: number;\n userIrrfTotal?: number;\n varTotaisComum?: number;\n varTotaisDT?: number;\n varTotaisFII?: number;\n totalImpostoDevido?: number;\n totalGanho?: number;\n}\n\nexport const defaultDarfBolsa: IDarfBolsa = {\n alienacoesComum: 0,\n alienacoesDT: 0,\n alienacoesFII: 0,\n impostoComumFinal: 0,\n impostoDTFinal: 0,\n impostoFIIFinal: 0,\n impostoTotal: 0,\n impostoTotalFinal: 0,\n irrfComum: 0,\n irrfDayTrade: 0,\n irrfFII: 0,\n irrfTotal: 0,\n jurosAux: 0,\n mercadoOpcoesDT: 0,\n mercadoOutrosComum: 0,\n mercadoOutrosDT: 0,\n mercadoVistaComum: 0,\n mercadoVistaDT: 0,\n multaAux: 0,\n memoriaCalculo: [],\n impostoAcumulado: 0,\n prejuizoComum: 0,\n prejuizoDayTrade: 0,\n prejuizoFII: 0,\n};\n\nexport const minDarfPrice = 10;\nexport const maxDarfPrice = 10000;\nexport const maxPixValue = 10000;\nexport const maxPixPayment = 10000;\nexport const maxCreditCardPayment = 10000;\n\nconst MultaModalProps = {\n title: \"Multa de Atraso\",\n content: (\n <div>\n <p>\n O pagamento dos impostos deve ser feito sempre até o último dia útil do\n mês subsequente aos ganhos realizados.\n </p>\n <p>\n Caso você tenha atrasado no pagamento do seu DARF, a sua multa de atraso\n será de 0,33% por dia de atraso (chegando, no máximo, a 20%) sobre o\n valor do principal, calculados a partir do primeiro dia útil depois do\n dia do vencimento do DARF.\n </p>\n </div>\n ),\n};\n\nconst JurosModalProps = {\n title: \"Juros de Atraso\",\n content: (\n <div>\n <p>\n O pagamento dos impostos deve ser feito sempre até o último dia útil do\n mês subsequente aos ganhos realizados.\n </p>\n <p>\n Caso você tenha atrasado no pagamento do seu DARF, os seus juros de\n atraso serão equivalentes a taxa Selic acumulada até o mês anterior ao\n do pagamento, mais 1% no mês do pagamento, sobre o valor principal,\n contados a partir do mês subsequente ao vencimento do DARF.\n </p>\n </div>\n ),\n};\n\nexport const MinPriceModalProps = {\n title: <>DARF abaixo de {formatCurrency(minDarfPrice)}</>,\n content: (\n <div>\n <p>\n O sistema da Receita Federal não permite a emissão de um único DARF com\n valor abaixo de {formatCurrency(minDarfPrice)}.\n </p>\n <p>\n Caso seu DARF tenha ficado com um valor abaixo de{\" \"}\n {formatCurrency(minDarfPrice)}, o valor será repassado automaticamente\n para o mês seguinte e ficará visÃvel no campo{\" \"}\n <strong>\n <i>DARFs passados abaixo de {formatCurrency(minDarfPrice)}</i>\n </strong>\n .\n </p>\n </div>\n ),\n};\n\nconst AliquotaModalProps = {\n title: \"AlÃquota sobre ganhos com ativos no exterior\",\n content: (\n <div>\n <p>\n Caso o valor total vendido no mês seja superior a R$ 35 mil, os ganhos\n obtidos serão tributados a tÃtulo de ganho de capital. As alÃquotas\n (percentuais) aplicadas sobre o lucro são progressivas:\n </p>\n <List>\n <List.Item>\n a) 15% sobre a parcela dos ganhos que não ultrapassar R$ 5.000.000,00;\n </List.Item>\n <List.Item>\n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00 e não\n ultrapassar R$ 10.000.000,00;\n </List.Item>\n <List.Item>\n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e não\n ultrapassar R$ 30.000.000,00; e\n </List.Item>\n <List.Item>\n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$ 30.000.000,00.\n </List.Item>\n </List>\n </div>\n ),\n};\n\nconst EmitirDarfModalProps = (onCancel: () => void, onOk: () => void) => ({\n title: \"Você confirma a emissão do DARF?\",\n footer: <FooterModal dark onCancel={onCancel} onOk={onOk} />,\n content: (\n <div>\n <p>\n O arquivo gerado ficará disponÃvel na aba Histórico e será enviado para\n o seu e-mail cadastrado.\n </p>\n </div>\n ),\n});\n\nconst ReemitirDarfModalProps = (onCancel: () => void, onOk: () => void) => ({\n title: \"Você confirma a emissão de um novo DARF?\",\n footer: <FooterModal dark onCancel={onCancel} onOk={onOk} />,\n content: (\n <div>\n <p>\n <b>Ao confirmar, o DARF anterior será substituido.</b> O arquivo gerado\n ficará disponÃvel na aba Histórico e será enviado para o seu e-mail\n cadastrado.\n </p>\n </div>\n ),\n});\n\nexport const DarfModal = (\n reemit: boolean,\n onCancel: () => void,\n onOk: () => void\n) =>\n reemit\n ? ReemitirDarfModalProps(onCancel, onOk)\n : EmitirDarfModalProps(onCancel, onOk);\n\ninterface IEdit {\n value: any;\n id: string;\n isEditting: boolean;\n}\ninterface DarfResultDescriptionsProps {\n id: string;\n label: (onClick: Function) => React.ReactNode;\n Component: React.FC<{\n data: IDarf | IDarfBolsa;\n url: string;\n year: number;\n month: number;\n loading: boolean;\n disabled: boolean;\n view?: boolean;\n handleEdit?: Function;\n setDataCripto?: React.Dispatch<React.SetStateAction<IDarf>>;\n setDataBolsa?: React.Dispatch<React.SetStateAction<IDarfBolsa>>;\n }>;\n}\n\nexport const DarfResultDescriptionsExterior: DarfResultDescriptionsProps[] = [\n {\n id: \"impostoDevido\",\n label: () => \"(+) Valor do principal\",\n Component: ({ data, view, year, month }) =>\n formatCurrency(\n Math.max((Number(data[\"impostoDevido\"] || 0) + ((year < yearConfigPL4173 || month == 0) ? Number(data[\"impostoAcumulado\"] || 0) : 0\n )) - Number(data[\"irrfExterior\"] || 0), 0)\n ),\n },\n {\n id: \"impostoDevido\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) Imposto devido\n </div>\n ),\n Component: ({ data, view }) =>\n formatCurrency(Number(data[\"impostoDevido\"] || 0)),\n },\n {\n id: \"impostoAcumulado\",\n label: (onClick: any) => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) DARFs passados abaixo de R$ {minDarfPrice}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MinPriceModalProps)}\n />\n </div>\n ),\n Component: ({\n data,\n year,\n month,\n loading,\n disabled,\n setDataBolsa,\n setDataCripto,\n url,\n }) => {\n const { currentPage } = useBroker();\n const [edit, setEdit] = useState<IEdit>();\n const [editForm] = Form.useForm();\n const handleEditValue = (id: string) => {\n const value = data[id as keyof (IDarf | IDarfBolsa)];\n setEdit({ id, isEditting: true, value });\n editForm.setFieldsValue({ [id]: value });\n };\n\n const handleEditValueCancel = () => {\n setEdit(undefined);\n editForm.resetFields();\n };\n const handleEditValueConfirm = () => {\n if (edit && edit.value >= 0 && edit.value < minDarfPrice) {\n (currentPage?.api || apis)\n .post(`${url}/updateDataDarf`, {\n year,\n month: month + 1,\n [edit.id]: edit.value,\n })\n .then(() =>\n (setDataCripto ?? setDataBolsa)?.((data: any) => ({\n ...data,\n [edit.id]: edit.value,\n }))\n )\n .catch(() => message.error(errorMessage))\n .finally(() => handleEditValueCancel());\n } else {\n handleEditValueCancel();\n }\n };\n return edit && edit.isEditting && edit.id === \"impostoAcumulado\" ? (\n <div className=\"desc-content is-editting\">\n {!isMobile() && (\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n )}\n <Form\n form={editForm}\n onValuesChange={(changed) => {\n const value = currencyToNumber(changed.impostoAcumulado);\n editForm.setFieldsValue({ impostoAcumulado: value });\n setEdit((edit) => ({ ...edit!, value }));\n }}\n >\n <Form.Item\n name=\"impostoAcumulado\"\n rules={[\n {\n message: `Deve ser menor que ${minDarfPrice}`,\n validator: (rule, value) =>\n typeof value === \"number\" &&\n value >= 0 &&\n value < minDarfPrice\n ? Promise.resolve()\n : Promise.reject(),\n },\n ]}\n >\n <NumberFormat\n prefix=\"R$ \"\n decimalScale={2}\n disabled={loading}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n className=\"ant-input\"\n allowNegative={false}\n />\n </Form.Item>\n </Form>\n <Button\n type=\"primary\"\n onClick={handleEditValueConfirm}\n disabled={edit.value < 0 || edit.value >= minDarfPrice}\n >\n Ok\n </Button>\n {isMobile() && (\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n )}\n </div>\n ) : (\n <div\n className={clsx(\"desc-content\", {\n \"ml-40\": disabled && year < yearConfigPL4173,\n })}\n >\n {formatCurrency(Number(data.impostoAcumulado || 0))}\n {(disabled && year < yearConfigPL4173) && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEditValue(\"impostoAcumulado\")}\n />\n )}\n </div>\n );\n },\n },\n {\n id: \"irrfTotal\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (-) Imposto de Renda Retido na Fonte\n </div>\n ),\n Component: ({ data, handleEdit }) => (\n <div className=\"desc-content ml-40\">\n {formatCurrency(\n Number(\n (data as IDarfBolsa)[\"userIrrfTotal\"] ||\n (data as IDarfBolsa)[\"irrfTotal\"] ||\n 0\n )\n )}\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEdit?.()}\n />\n </div>\n ),\n },\n {\n id: \"irrfExterior\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (-) Imposto de Renda Retido na Fonte\n </div>\n ),\n Component: ({ data, handleEdit }) => {\n return (\n <div className=\"desc-content\">\n {formatCurrency(\n Number(\n (data as IDarfBolsa)[\"irrfExterior\"] ||\n 0\n )\n )}\n {/* <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEdit?.()}\n /> */}\n </div>\n )},\n },\n {\n id: \"multa\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Multa de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MultaModalProps)}\n />\n </div>\n ),\n Component: ({ data }) =>\n formatCurrency(\n (data[\"impostoDevido\"] || 0) + (data[\"impostoAcumulado\"] || 0) - (data[\"irrfExterior\"] || 0) >=\n minDarfPrice\n ? Number(data[\"multa\"])\n : 0\n ),\n },\n {\n id: \"juros\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Juros e/ou encargos de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(JurosModalProps)}\n />\n </div>\n ),\n Component: ({ data }) =>\n formatCurrency(\n (data[\"impostoDevido\"] || 0) + (data[\"impostoAcumulado\"] || 0) - (data[\"irrfExterior\"] || 0) >=\n minDarfPrice\n ? Number(data[\"juros\"])\n : 0\n ),\n },\n];\n\nexport const DarfResultDescriptions: DarfResultDescriptionsProps[] = [\n {\n id: \"impostoDevido\",\n label: () => \"(+) Valor do principal\",\n Component: ({ data, view }) =>\n formatCurrency(\n Number(data[\"impostoDevido\"] || 0) +\n Number(data[\"impostoAcumulado\"] || 0)\n ),\n },\n {\n id: \"impostoDevido\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) Imposto devido\n </div>\n ),\n Component: ({ data, view }) =>\n formatCurrency(Number(data[\"impostoDevido\"] || 0)),\n },\n {\n id: \"impostoAcumulado\",\n label: (onClick: any) => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) DARFs passados abaixo de R$ {minDarfPrice}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MinPriceModalProps)}\n />\n </div>\n ),\n Component: ({\n data,\n year,\n month,\n loading,\n disabled,\n setDataBolsa,\n setDataCripto,\n url,\n }) => {\n const { currentPage } = useBroker();\n const [edit, setEdit] = useState<IEdit>();\n const [editForm] = Form.useForm();\n const handleEditValue = (id: string) => {\n const value = data[id as keyof (IDarf | IDarfBolsa)];\n setEdit({ id, isEditting: true, value });\n editForm.setFieldsValue({ [id]: value });\n };\n\n const handleEditValueCancel = () => {\n setEdit(undefined);\n editForm.resetFields();\n };\n const handleEditValueConfirm = () => {\n if (edit && edit.value >= 0 && edit.value < minDarfPrice) {\n (currentPage?.api || apis)\n .post(`${url}/updateDataDarf`, {\n year,\n month: month + 1,\n [edit.id]: edit.value,\n })\n .then(() =>\n (setDataCripto ?? setDataBolsa)?.((data: any) => ({\n ...data,\n [edit.id]: edit.value,\n }))\n )\n .catch(() => message.error(errorMessage))\n .finally(() => handleEditValueCancel());\n } else {\n handleEditValueCancel();\n }\n };\n return edit && edit.isEditting && edit.id === \"impostoAcumulado\" ? (\n <div className=\"desc-content is-editting\">\n {!isMobile() && (\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n )}\n <Form\n form={editForm}\n onValuesChange={(changed) => {\n const value = currencyToNumber(changed.impostoAcumulado);\n editForm.setFieldsValue({ impostoAcumulado: value });\n setEdit((edit) => ({ ...edit!, value }));\n }}\n >\n <Form.Item\n name=\"impostoAcumulado\"\n rules={[\n {\n message: `Deve ser menor que ${minDarfPrice}`,\n validator: (rule, value) =>\n typeof value === \"number\" &&\n value >= 0 &&\n value < minDarfPrice\n ? Promise.resolve()\n : Promise.reject(),\n },\n ]}\n >\n <NumberFormat\n prefix=\"R$ \"\n decimalScale={2}\n disabled={loading}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n className=\"ant-input\"\n allowNegative={false}\n />\n </Form.Item>\n </Form>\n <Button\n type=\"primary\"\n onClick={handleEditValueConfirm}\n disabled={edit.value < 0 || edit.value >= minDarfPrice}\n >\n Ok\n </Button>\n {isMobile() && (\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n )}\n </div>\n ) : (\n <div\n className={clsx(\"desc-content\", {\n \"ml-40\": disabled,\n })}\n >\n {formatCurrency(Number(data.impostoAcumulado || 0))}\n {disabled && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEditValue(\"impostoAcumulado\")}\n />\n )}\n </div>\n );\n },\n },\n {\n id: \"irrfTotal\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (-) Imposto de Renda Retido na Fonte\n </div>\n ),\n Component: ({ data, handleEdit }) => (\n <div className=\"desc-content ml-40\">\n {formatCurrency(\n Number(\n (data as IDarfBolsa)[\"userIrrfTotal\"] ||\n (data as IDarfBolsa)[\"irrfTotal\"] ||\n 0\n )\n )}\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEdit?.()}\n />\n </div>\n ),\n },\n {\n id: \"multa\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Multa de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MultaModalProps)}\n />\n </div>\n ),\n Component: ({ data }) =>\n formatCurrency(\n (data[\"impostoDevido\"] || 0) + (data[\"impostoAcumulado\"] || 0) >=\n minDarfPrice\n ? Number(data[\"multa\"])\n : 0\n ),\n },\n {\n id: \"juros\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Juros e/ou encargos de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(JurosModalProps)}\n />\n </div>\n ),\n Component: ({ data }) =>\n formatCurrency(\n (data[\"impostoDevido\"] || 0) + (data[\"impostoAcumulado\"] || 0) >=\n minDarfPrice\n ? Number(data[\"juros\"])\n : 0\n ),\n },\n];\n\nexport const DarfImpostosDevidosDescriptions = [\n {\n id: \"totalGanho\",\n label: () => \"Ganho total\",\n },\n {\n id: \"prejuizoExterior\",\n label: () => \"(-) PrejuÃzos a compensar\",\n render: (data: any, view?: boolean, year?: number) => {\n return formatCurrency(Number(data[\"prejuizoExterior\"] || 0))\n },\n },\n {\n id: \"aliquotaDevida\",\n label: (onClick: any, year?: number) => (\n <div className=\"desc-label\">\n (x) AlÃquota devida\n {(year || 0) < yearConfigPL4173 && <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(AliquotaModalProps)}\n />}\n </div>\n ),\n render: (data: any, view?: any, year?: number) =>\n `${replaceDotByComma(\n Number(((year || 0) >= yearConfigPL4173 ? 15 : (data[\"aliquotaDevida\"] || 0)).toFixed(2))\n )} %`,\n },\n {\n id: \"impostoDevido\",\n label: () => \"Imposto devido\",\n render: (data: any, view?: boolean, year?: number) => {\n const impostoDevido = Math.max(\n Number(data[\"impostoDevido\"] || data[\"totalImpostoDevido\"] || 0),\n 0\n );\n \n return formatCurrency(impostoDevido);\n }\n },\n];\n\nconst FormItemsBolsa = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n date: (month: number, year: number) =>\n DateFormItem({\n name: \"date\",\n label: `Dia do mês de ${months[month]}/${year}`,\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n code: (placeholder: string) =>\n TextFormItem({\n name: \"code\",\n label: \"Ativo\",\n placeholder,\n rules: validationFieldRequired,\n }),\n quantity: (placeholder: string) =>\n NumberFormItem({\n name: \"quantity\",\n label: \"Quantidade\",\n placeholder,\n decimalScale: 12,\n rules: validationNumberFieldPositive,\n }),\n avgBuyPrice: CurrencyFormItem({\n name: \"avgBuyPrice\",\n label: \"Custo de compra\",\n }),\n price: CurrencyFormItem({ name: \"price\", label: \"Preço de venda\" }),\n feeB3: CurrencyFormItem({ name: \"feeB3\", label: \"Taxas\" }),\n capitalGain: CurrencyFormItem({\n name: \"capitalGain\",\n label: \"Ganho\",\n disabled: true,\n allowNegative: true,\n rules: validationNumberAllowNegativeField,\n onChange: (changed, values) => {\n const precoVenda = changed.price\n ? currencyToNumber(changed.price)\n : values.price;\n const custoCompra = changed.avgBuyPrice\n ? currencyToNumber(changed.avgBuyPrice)\n : values.avgBuyPrice;\n const taxas = changed.feeB3\n ? currencyToNumber(changed.feeB3)\n : values.feeB3;\n return Number(values.quantity) * (precoVenda - custoCompra) - taxas;\n },\n }),\n operacao: SelectFormItem({\n name: \"operacao\",\n label: \"Operação\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Comum\", value: \"Comum\" },\n { label: \"Day Trade\", value: \"Day Trade\" },\n { label: \"Fundos Imobiliários\", value: \"FII\" },\n ],\n }),\n market: ({ data }: any) =>\n SelectFormItem({\n name: \"market\",\n label: \"Mercado\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Mercado à vista\", value: \"Mercado a Vista\" },\n ...(data.operacao !== \"FII\"\n ? [\n { label: \"Mercado de opções\", value: \"Mercado de opções\" },\n { label: \"Outros mercados\", value: \"Outros mercados\" },\n ]\n : []),\n ],\n onChange: (changed, values) =>\n values.operacao === \"FII\" && values.market !== \"Mercado a Vista\"\n ? \"Mercado a Vista\"\n : values.market,\n }),\n};\n\n// const exchange = ({\n// changed,\n// values,\n// modeProp,\n// prop,\n// cotacaoProp,\n// }: {\n// changed: any;\n// values: any;\n// modeProp: string;\n// prop: string;\n// cotacaoProp: string;\n// }) => {\n// return changed.hasOwnProperty(modeProp)\n// ? values[cotacaoProp] && changed[modeProp]\n// ? values[prop] * values[cotacaoProp]\n// : values[prop] / values[cotacaoProp]\n// : changed[prop]\n// ? currencyToNumber(\n// changed[prop],\n// values[modeProp] !== false ? FormCurrencyMode.BRL : FormCurrencyMode.USD\n// )\n// : values[prop];\n// };\n\nconst FormItemsCrypto = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n data: (month: number, year: number) =>\n DateFormItem({\n name: \"data\",\n label: `Dia do mês de ${months[month]}/${year}`,\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n ativo: (placeholder: string) =>\n TextFormItem({\n name: \"ativo\",\n label: \"Ativo\",\n placeholder,\n rules: validationFieldRequired,\n }),\n quantidade: (placeholder: string) =>\n NumberFormItem({\n name: \"quantidade\",\n label: \"Quantidade\",\n placeholder,\n decimalScale: 12,\n rules: validationNumberFieldPositive,\n }),\n precoVenda: CurrencyFormItem({ name: \"precoVenda\", label: \"Preço de venda\" }),\n custoCompra: CurrencyFormItem({\n name: \"custoCompra\",\n label: \"Custo de compra\",\n }),\n taxas: CurrencyFormItem({ name: \"taxas\", label: \"Taxas\" }),\n ganho: CurrencyFormItem({\n name: \"ganho\",\n label: \"Ganho\",\n disabled: true,\n onChange: (changed, values) => {\n const precoVenda = changed.precoVenda\n ? currencyToNumber(changed.precoVenda)\n : values.precoVenda;\n const custoCompra = changed.custoCompra\n ? currencyToNumber(changed.custoCompra)\n : values.custoCompra;\n const taxas = changed.taxas\n ? currencyToNumber(changed.taxas)\n : values.taxas;\n return Number(\n Math.max(\n 0,\n Number(values.quantidade) * (precoVenda - custoCompra) - taxas\n ).toFixed(2)\n );\n },\n }),\n operacao: SelectFormItem({\n name: \"operacao\",\n label: \"Operação\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Comum\", value: \"comum\" },\n { label: \"Day Trade\", value: \"daytrade\" },\n ],\n }),\n mercado: SelectFormItem({\n name: \"mercado\",\n label: \"Mercado\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Mercado à vista\", value: \"mercado\" },\n { label: \"Mercado de opções\", value: \"mercadoOpcoes\" },\n { label: \"Outros mercados\", value: \"outros\" },\n ],\n }),\n};\n\nconst FormItemsExterior = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n movimentType: (movimentType: any, setMovimentType: any, year: number, fromApi?: boolean) =>\n SelectFormItem({\n name: \"movimentType\",\n label: \"Tipo de movimentação\",\n value: movimentType,\n disabled: fromApi,\n defaultValue: FormMovimentTypeMode.VENDA,\n rules: [],\n options: year < yearConfigPL4173 \n ? [\n { label: \"Venda de ativos\", value: FormMovimentTypeMode.VENDA },\n { label: \"Juros de aplicações\", value: FormMovimentTypeMode.JUROS },\n ] \n : [\n { label: \"Venda de ativos\", value: FormMovimentTypeModeNew.VENDA },\n { label: \"Juros de bonds\", value: FormMovimentTypeModeNew.JUROS },\n { label: \"Dividendos\", value: FormMovimentTypeModeNew.DIVIDENDOS },\n { label: \"Outros rendimentos\", value: FormMovimentTypeModeNew.OUTROS },\n ],\n onChange(changed, values) {\n setMovimentType(\n changed.movimentType !== undefined\n ? changed.movimentType\n : movimentType\n );\n return changed.movimentType !== undefined\n ? changed.movimentType\n : movimentType;\n },\n }),\n ativo: (placeholder: string, fromApi?: boolean) =>\n TextFormItem({\n name: \"ativo\",\n label: \"Ativo\",\n disabled: fromApi,\n placeholder,\n rules: validationFieldRequired,\n }),\n valueOriginBRA: CurrencyFormItem({\n prefix: \"US$ \",\n name: \"valueOriginBRA\",\n label: \"Origem BRA (US$)\",\n placeholder: \"US$ 0,00\",\n }),\n valueOriginEUA: CurrencyFormItem({\n prefix: \"US$ \",\n name: \"valueOriginEUA\",\n label: \"Origem USA (US$)\",\n placeholder: \"US$ 0,00\",\n }),\n dataCompra: () =>\n DateFormItem({\n name: \"dataCompra\",\n label: \"Data da Liquidação\",\n placeholder: \"DD/MM/YYYY\",\n mask: `99/99/9999`,\n rules: validationDateIsOnReferenceMonthCompra,\n }),\n cotacaoCompra: (quotations: IQuotes) =>\n TextFormItem({\n disabled: true,\n name: \"cambioCompra\",\n label: \"Cotação dólar\",\n onChange: (changed, values) => {\n if (isValidDate(values.dataCompra)) {\n let i = 0;\n let keycompra = changed.dataCompra || values.dataCompra;\n const isComplete = !String(keycompra).includes(\"_\");\n if (!keycompra || !isComplete) return values.cotacaoCompra;\n while (isComplete && !quotations[keycompra] && i <= 10) {\n keycompra = moment(keycompra, \"DD/MM/YYYY\")\n .subtract(1, \"days\")\n .format(\"DD/MM/YYYY\");\n i++;\n }\n const { venda } = quotations[keycompra] || { venda: 0 };\n return venda;\n }\n },\n }),\n precoVenda: CurrencyFormItem({\n prefix: \"US$ \",\n name: \"valor\",\n placeholder: \"US$ 0,00\",\n label: \"Valor Bruto (US$)\",\n }),\n fee: CurrencyFormItem({\n name: \"fee\",\n label: \"Taxa de corretagem (US$)\",\n placeholder: \"US$ 0,00\",\n prefix: \"US$ \",\n }),\n dataVenda: (month: number, year: number) =>\n DateFormItem({\n name: \"data\",\n label: \"Data da Liquidação\",\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n dataVendaFee: (month: number, year: number) =>\n DateFormItem({\n name: \"dataFee\",\n label: \"Data da Liquidação\",\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n cotacaoVenda: (quotations: IQuotes) =>\n TextFormItem({\n disabled: true,\n name: \"cambioVenda\",\n label: \"Cotação dólar\",\n onChange: (changed, values) => {\n if (isValidDate(values.data)) {\n let i = 0;\n let keyvenda = changed.data || values.data;\n const isComplete = !String(keyvenda).includes(\"_\");\n if (!keyvenda || !isComplete) return values.cotacaoVenda;\n while ((isComplete && !quotations[keyvenda]) || i === 5) {\n keyvenda = moment(keyvenda, \"DD/MM/YYYY\")\n .subtract(1, \"days\")\n .format(\"DD/MM/YYYY\");\n i++;\n }\n const { compra } = quotations[keyvenda] || { compra: 0 };\n return compra;\n }\n },\n }),\n cotacaoVendaFee: (quotations: IQuotes) =>\n TextFormItem({\n disabled: true,\n name: \"cambioVendaFee\",\n label: \"Cotação dólar\",\n onChange: (changed, values) => {\n if (isValidDate(values.dataFee)) {\n let i = 0;\n let keyvenda = changed.dataFee || values.dataFee;\n const isComplete = !String(keyvenda).includes(\"_\");\n if (!keyvenda || !isComplete) return values.cotacaoVendaFee;\n while ((isComplete && !quotations[keyvenda]) || i === 5) {\n keyvenda = moment(keyvenda, \"DD/MM/YYYY\")\n .subtract(1, \"days\")\n .format(\"DD/MM/YYYY\");\n i++;\n }\n if (values.movimentType == 'Dividendos') {\n const day = keyvenda.split('/')[0];\n const month = keyvenda.split('/')[1];\n const year = keyvenda.split('/')[2];\n const dateToQuote = new Date(`${month}/${day}/${year}`);\n const cotacaoCompra = getQuoteFortnight(dateToQuote, quotations);\n return cotacaoCompra;\n }\n\n const { venda } = quotations[keyvenda] || { venda: 0 };\n return venda;\n }\n },\n }),\n ganho: CurrencyFormItem({\n name: \"ganho\",\n label: `Ganho (R$)`,\n disabled: true,\n rules: [],\n onChange: (changed, values) => {\n // TODO Atualmente há perda de centavos entre a conversão sucessiva entre BRL e USD\n let A = changed.valueOriginBRA\n ? currencyToNumber(changed.valueOriginBRA, \"US$\")\n : values.valueOriginBRA || 0;\n let B = changed.valueOriginEUA\n ? currencyToNumber(changed.valueOriginEUA, \"US$\")\n : values.valueOriginEUA || 0;\n const C = values.cambioCompra || 1;\n const D = changed.valor\n ? currencyToNumber(changed.valor, \"US$\")\n : values.valor || 0;\n const E = changed.fee\n ? currencyToNumber(changed.fee, \"US$\")\n : values.fee || 0;\n const F = values.cambioVenda || 1;\n\n const correctionZero = 1e-50;\n if (A === 0) A = correctionZero;\n if (B === 0) B = correctionZero;\n\n const ganho =\n (A / (A + B)) * (D - E) * F - A * C + ((B / (A + B)) * (D - E) - B) * F;\n\n return Number(Math.max(ganho, 0).toFixed(2));\n },\n }),\n ganhoFee: CurrencyFormItem({\n name: \"ganhoFee\",\n label: `Rendimento (R$)`,\n disabled: true,\n rules: [],\n onChange: (changed, values) => {\n // TODO Atualmente há perda de centavos entre a conversão sucessiva entre BRL e USD\n const A = values.cambioVendaFee || 1;\n\n const B = changed.valor\n ? currencyToNumber(changed.valor, \"US$\")\n : values.valor || 0;\n\n const C = changed.fee\n ? currencyToNumber(changed.fee, \"US$\")\n : values.fee || 0;\n\n const ganho = (B - C) * A;\n return Number(Math.max(ganho, 0).toFixed(2));\n },\n }),\n date: (month: number, year: number, fromApi?: boolean) =>\n DateFormItem({\n name: \"data\",\n disabled: fromApi,\n label: `Dia do mês de ${months[month]}/${year}`,\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n quantidade: (placeholder: string, fromApi?: boolean) =>\n NumberFormItem({\n disabled: fromApi,\n name: \"quantidade\",\n label: \"Quantidade\",\n placeholder,\n decimalScale: 12,\n rules: validationNumberFieldPositive,\n }),\n valor: CurrencyFormItem({ name: \"sellPrice_BRL\", label: \"Preço de venda (R$)\" }),\n valorNewModel: (fromApi?: boolean) => \n CurrencyFormItem({ name: \"sellPrice_BRL\", disabled: fromApi, label: \"Preço de venda (R$)\" }),\n capitalGain: CurrencyFormItem({\n name: \"ganho\",\n label: \"Ganho\",\n disabled: true,\n allowNegative: true,\n rules: validationNumberAllowNegativeField,\n onChange: (changed, values) => {\n const precoVenda = changed.valor\n ? currencyToNumber(changed.valor)\n : values.valor;\n const custoCompra = changed.valueOriginBRA\n ? currencyToNumber(changed.valueOriginBRA)\n : values.valueOriginBRA;\n const taxas = changed.fee\n ? currencyToNumber(changed.fee)\n : values.fee;\n return Number(values.quantidade) * (precoVenda - custoCompra) - taxas;\n },\n }),\n capitalGainBRL: CurrencyFormItem({\n name: \"varTotalBRL\",\n label: \"Ganho\",\n disabled: true,\n allowNegative: true,\n rules: validationNumberAllowNegativeField,\n onChange: (changed, values) => {\n const precoVenda = changed.sellPrice_BRL\n ? currencyToNumber(changed.sellPrice_BRL)\n : values.sellPrice_BRL;\n const custoCompra = changed.buyPrice_BRL\n ? currencyToNumber(changed.buyPrice_BRL)\n : values.buyPrice_BRL;\n const taxas = changed.fee_BRL\n ? currencyToNumber(changed.fee_BRL)\n : values.fee_BRL;\n return Number(values.quantidade) * (precoVenda - custoCompra) - taxas;\n },\n }),\n valueOriginBRL: (fromApi?: boolean) => CurrencyFormItem({\n disabled: fromApi,\n prefix: \"R$ \",\n name: \"buyPrice_BRL\",\n label: \"Custo de Compra (R$)\",\n placeholder: \"R$ 0,00\",\n }),\n feeBRL: (fromApi?: boolean) => CurrencyFormItem({\n disabled: fromApi,\n name: \"fee_BRL\",\n label: \"Taxa de corretagem (R$)\",\n placeholder: \"R$ 0,00\",\n prefix: \"R$ \",\n }),\n};\n\nconst PrejuFormItems = {\n userPrejuizoComum: CurrencyFormItem({\n name: \"userPrejuizoComum\",\n label: \"PrejuÃzo Comum\",\n }),\n userPrejuizoDayTrade: CurrencyFormItem({\n name: \"userPrejuizoDayTrade\",\n label: \"PrejuÃzo Day Trade\",\n }),\n userPrejuizoFII: CurrencyFormItem({\n name: \"userPrejuizoFII\",\n label: \"PrejuÃzo FII\",\n }),\n};\n\nconst IrrfFormItem = {\n userIrrfComum: CurrencyFormItem({\n name: \"userIrrfComum\",\n label: \"IRRF Comum\",\n }),\n userIrrfDayTrade: CurrencyFormItem({\n name: \"userIrrfDayTrade\",\n label: \"IRRF Day Trade\",\n }),\n userIrrfFII: CurrencyFormItem({\n name: \"userIrrfFII\",\n label: \"IRRF FII\",\n }),\n userIrrfTotal: CurrencyFormItem({\n name: \"userIrrfTotal\",\n label: \"IRRF Total (Comum + Day Trade + FII)\",\n disabled: true,\n onChange: (changed, values) => {\n const userIrrfComum = changed.userIrrfComum\n ? currencyToNumber(changed.userIrrfComum)\n : values.userIrrfComum;\n const userIrrfDayTrade = changed.userIrrfDayTrade\n ? currencyToNumber(changed.userIrrfDayTrade)\n : values.userIrrfDayTrade;\n const userIrrfFII = changed.userIrrfFII\n ? currencyToNumber(changed.userIrrfFII)\n : values.userIrrfFII;\n return (\n Number(userIrrfComum ?? 0) +\n Number(userIrrfDayTrade ?? 0) +\n Number(userIrrfFII ?? 0)\n );\n },\n }),\n};\n\nexport const IrrfFormItemRows = [\n [IrrfFormItem.userIrrfComum],\n [IrrfFormItem.userIrrfDayTrade],\n [IrrfFormItem.userIrrfFII],\n [IrrfFormItem.userIrrfTotal],\n];\n\nexport const PrejuFormItemRows = [\n [PrejuFormItems.userPrejuizoComum],\n [PrejuFormItems.userPrejuizoDayTrade],\n [PrejuFormItems.userPrejuizoFII],\n];\n\nexport const DarfFormItemRows = (month: number, year: number) => [\n [FormItemsCrypto.id],\n [FormItemsCrypto.data(month, year), FormItemsCrypto.ativo(\"Ex: BTC\")],\n [FormItemsCrypto.quantidade(\"Ex: 0,00101\")],\n [FormItemsCrypto.precoVenda, FormItemsCrypto.custoCompra],\n [FormItemsCrypto.taxas],\n [FormItemsCrypto.ganho],\n];\n\nexport const ExteriorFormItemRows = (\n month: number,\n year: number,\n quotations: IQuotes,\n editAsset: any,\n asset: any,\n movimentType: string,\n setMovimentType: React.Dispatch<React.SetStateAction<string>>\n) => {\n return [\n asset && !asset?.valueOriginBRA\n ? []\n : asset\n ? [FormItemsExterior.ativo(\"Ex: XP\")]\n : [\n FormItemsExterior.movimentType(movimentType, setMovimentType, year),\n FormItemsExterior.ativo(\"Ex: XP\"),\n ],\n asset && !asset?.valueOriginBRA\n ? []\n : [\n {\n label: \"\",\n name: \"\",\n input: (\n <div className=\"exterior-content-title\">\n {movimentType === \"Juros de aplicações\" ? \"Juros\" : \"Compra\"}\n </div>\n ),\n },\n ],\n asset && !asset?.valueOriginBRA\n ? []\n : movimentType !== \"Juros de aplicações\"\n ? [FormItemsExterior.valueOriginBRA, FormItemsExterior.valueOriginEUA]\n : [],\n asset && !asset?.valueOriginBRA\n ? []\n : movimentType !== \"Juros de aplicações\"\n ? [\n FormItemsExterior.dataCompra(),\n FormItemsExterior.cotacaoCompra(quotations),\n ]\n : [],\n asset && !asset?.valueOriginBRA\n ? []\n : movimentType !== \"Juros de aplicações\"\n ? [\n {\n label: \"\",\n name: \"\",\n input: <div className=\"exterior-content-title\">Venda</div>,\n },\n ]\n : [],\n asset && !asset?.valueOriginBRA\n ? []\n : [FormItemsExterior.precoVenda, FormItemsExterior.fee],\n asset && !asset?.valueOriginBRA\n ? []\n : movimentType !== \"Juros de aplicações\"\n ? [\n FormItemsExterior.dataVenda(month, year),\n FormItemsExterior.cotacaoVenda(quotations),\n ]\n : [\n FormItemsExterior.dataVendaFee(month, year),\n FormItemsExterior.cotacaoVendaFee(quotations),\n ],\n asset && !asset?.valueOriginBRA\n ? []\n : movimentType !== \"Juros de aplicações\"\n ? [FormItemsExterior.ganho]\n : [FormItemsExterior.ganhoFee],\n ];\n};\n\nexport const ExteriorNewFormItemRows = (\n month: number,\n year: number,\n quotations: IQuotes,\n editAsset: any,\n asset: any,\n movimentType: string,\n setMovimentType: React.Dispatch<React.SetStateAction<string>>,\n fromApi?: boolean\n) => {\n return [\n asset ? [FormItemsExterior.ativo(\"Ex: XP\", fromApi)]\n : movimentType === \"Venda de ativos\" ? [FormItemsExterior.movimentType(movimentType, setMovimentType, year, fromApi)] \n : [\n FormItemsExterior.movimentType(movimentType, setMovimentType, year, fromApi),\n FormItemsExterior.ativo(\"Ex: XP\", fromApi),\n ],\n movimentType === \"Venda de ativos\" ? [] : [\n {\n label: \"\",\n name: \"\",\n input: (\n <div className=\"exterior-content-title\">\n {\n ['Juros de bonds'].includes(movimentType || '') ? \"Juros\" \n : ['Dividendos'].includes(movimentType || '') ? \"Dividendos\" \n : \"Rendimentos\"}\n </div>\n ),\n },\n ],\n movimentType === \"Venda de ativos\"\n ? [FormItemsExterior.date(month, year, fromApi), FormItemsExterior.ativo(\"Ex: XP\", fromApi)]\n : [],\n movimentType === \"Venda de ativos\"\n ? [\n FormItemsExterior.quantidade(\"Ex: 100\", fromApi),\n FormItemsExterior.valorNewModel(fromApi),\n ]\n : [],\n movimentType === 'Venda de ativos' ? [FormItemsExterior.valueOriginBRL(fromApi), FormItemsExterior.feeBRL(fromApi)]\n : [FormItemsExterior.precoVenda, FormItemsExterior.fee],\n movimentType === \"Venda de ativos\"\n ? [\n FormItemsExterior.capitalGainBRL,\n ]\n : [\n FormItemsExterior.dataVendaFee(month, year),\n FormItemsExterior.cotacaoVendaFee(quotations),\n ],\n movimentType === \"Venda de ativos\"\n ? []\n : [FormItemsExterior.ganhoFee],\n ];\n};\n\nexport const DarfBolsaFormItemRows = (month: number, year: number) => [\n [FormItemsBolsa.id],\n [FormItemsBolsa.operacao, FormItemsBolsa.market],\n [FormItemsBolsa.date(month, year), FormItemsBolsa.code(\"Ex: PETR3\")],\n [FormItemsBolsa.quantity(\"Ex: 100\"), FormItemsBolsa.price],\n [FormItemsBolsa.avgBuyPrice, FormItemsBolsa.feeB3],\n [FormItemsBolsa.capitalGain],\n];\n\nexport const DarfBolsaTabs: (\n data: IDarfBolsa,\n rest: any\n) => { class: string; tabs: { content: React.ReactNode }[] }[] = (\n data,\n rest\n) => [\n {\n class: \"header\",\n tabs: [\n {\n content: \"\",\n },\n {\n content: \"Comum\",\n },\n {\n content: \"Day Trade\",\n },\n {\n content: \"FII\",\n },\n ],\n },\n {\n class: \"sub-header strong\",\n tabs: [\n {\n content: \"Ganhos e perdas totais\",\n },\n {\n content: formatCurrency(data.varTotaisComum ?? 0),\n },\n {\n content: formatCurrency(data.varTotaisDT ?? 0),\n },\n {\n content: formatCurrency(data.varTotaisFII ?? 0),\n },\n ],\n },\n {\n class: \"sub-header strong\",\n tabs: [\n {\n content: \"Ganhos tributáveis\",\n },\n {\n content: formatCurrency(data.ganhoComum ?? 0),\n },\n {\n content: formatCurrency(data.ganhoDT ?? 0),\n },\n {\n content: formatCurrency(data.ganhoFII ?? 0),\n },\n ],\n },\n {\n class: \"sub-header opacity\",\n tabs: [\n {\n content: (\n <>\n (-) PrejuÃzos a compensar\n {!rest.view && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={rest.handleEditPreju}\n />\n )}\n </>\n ),\n },\n {\n content: formatCurrency(\n data.userPrejuizoComum ?? data.prejuizoComum ?? 0\n ),\n },\n {\n content: formatCurrency(\n data.userPrejuizoDayTrade ?? data.prejuizoDayTrade ?? 0\n ),\n },\n {\n content: formatCurrency(data.userPrejuizoFII ?? data.prejuizoFII ?? 0),\n },\n ],\n },\n {\n class: \"sub-header strong\",\n tabs: [\n {\n content: \"Base de cálculo\",\n },\n {\n content: formatCurrency(\n Math.max(\n (data.ganhoComum ?? 0) -\n (data.userPrejuizoComum\n ? data.userPrejuizoComum ?? 0\n : data.prejuizoComum ?? 0),\n 0\n )\n ),\n },\n {\n content: formatCurrency(\n Math.max(\n (data.ganhoDT ?? 0) -\n (data.userPrejuizoDayTrade\n ? data.userPrejuizoDayTrade ?? 0\n : data.prejuizoDayTrade ?? 0),\n 0\n )\n ),\n },\n {\n content: formatCurrency(\n Math.max(\n (data.ganhoFII ?? 0) -\n (data.userPrejuizoFII\n ? data.userPrejuizoFII ?? 0\n : data.prejuizoFII ?? 0),\n 0\n )\n ),\n },\n ],\n },\n {\n class: \"sub-header opacity\",\n tabs: [\n {\n content: \"(x) AlÃquota devida\",\n },\n {\n content: numberToPercentage(15, 0),\n },\n {\n content: numberToPercentage(20, 0),\n },\n {\n content: numberToPercentage(20, 0),\n },\n ],\n },\n {\n class: \"sub-header strong\",\n tabs: [\n {\n content: \"Imposto devido\",\n },\n {\n content: formatCurrency(data.totalImpostoDevido ?? 0),\n },\n {\n content: formatCurrency(data.impostoDTFinal ?? 0),\n },\n {\n content: formatCurrency(data.impostoFIIFinal ?? 0),\n },\n ],\n },\n];\n\nexport const FreeLimitText = (\n <Typography\n style={{\n fontSize: \"14px\",\n display: \"flex\",\n columnGap: \"8px\",\n lineHeight: \"18px\",\n alignItems: \"flex-start\",\n }}\n >\n <InfoCircleOutlined style={{ fontSize: \"16px\", marginTop: \"2px\" }} />{\" \"}\n <span>\n Você atingiu o limite de DARFS emitidos/salvos no plano gratuito.{\" \"}\n <strong>Atualize o seu plano</strong>\n </span>\n </Typography>\n);\n\nexport const SuportPremiumText = (\n <Typography\n style={{\n fontSize: \"14px\",\n display: \"flex\",\n columnGap: \"8px\",\n lineHeight: \"18px\",\n alignItems: \"flex-start\",\n }}\n >\n <InfoCircleOutlined style={{ fontSize: \"16px\", marginTop: \"2px\" }} />{\" \"}\n <span>\n O suporte ao vivo está disponÃvel apenas para usuários do Plano PREMIUM.{\" \"}\n <strong>Atualize o seu plano</strong>\n </span>\n </Typography>\n);\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport * as XLSX from \"xlsx\";\nimport { HiOutlineDownload } from \"react-icons/hi\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport {\n Checkbox,\n Col,\n DatePicker,\n Modal,\n Row,\n Select,\n Table,\n Typography,\n message,\n} from \"antd\";\nimport { ContainerModal } from \"./styles\";\nimport Button from \"../../components/Button\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport apiVeloPro from \"../../services/apiVeloPro\";\nimport { ReportTypeDrawer } from \"../ReportType/ReportType\";\nimport { ReactComponent as FiltroIcon } from \"../../assets/icons/filtro.svg\";\nimport {\n download,\n downloadPDF,\n formatCurrency,\n isMobile,\n monthsExtended,\n} from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\nconst months: any = {\n Jan: 1,\n Fev: 2,\n Mar: 3,\n Abr: 4,\n Mai: 5,\n Jun: 6,\n Jul: 7,\n Ago: 8,\n Set: 9,\n Out: 10,\n Nov: 11,\n Dez: 12,\n};\n\nexport const ProventosModal: React.FC<any> = ({\n open,\n month,\n proventos,\n setOpenModal,\n yearProventos,\n proventosLoading,\n setYearProventos,\n setMonthProventos,\n}) => {\n const date = new Date();\n const dateFormat = \"DD/MM/YYYY\";\n const selectYears = [1, 0, -1, -2, -3];\n const dateBeginRef = useRef(null);\n const [data, setData] = useState([]);\n const [total, setTotal] = useState(0);\n const [loading, setLoading] = useState(false);\n const [filters, setFilters] = useState<any>({});\n const [dataModalPDF, setDataModalPDF] = useState([]);\n const [originalData, setOriginalData] = useState([]);\n const [dateBeginFilter, setDateBeginFilter] = useState(\"\");\n const [appliedFilters, setAppliedFilters] = useState<any>({});\n const [showFilterModal, setShowFilterModal] = useState(false);\n const [reportDrawerProventos, setReportDrawerProventos] = useState(false);\n const [dateEndFilter, setDateEndFilter] = useState(\n moment().format(dateFormat)\n );\n const { user } = useAuth();\n\n const downloadRelatorioProventos = async (type: string) => {\n try {\n const escritorioId = null;\n setLoading(true);\n if (type === \"pdf\") {\n let fileUrl = \"\";\n let file = \"\";\n const ret = await apiVeloPro.post(\n \"/clients/downloadRelatorioProventos\",\n {\n proventos: dataModalPDF,\n escritorioId: escritorioId,\n user: user?.user\n }\n );\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n if (fileUrl && !isMobile()) {\n download(fileUrl);\n } else if (file && !isMobile()) {\n downloadPDF(file, \"Proventos\");\n }\n setLoading(false);\n message.success(\"O relatório foi enviado para o seu e-mail\");\n }\n if (type === \"xlsx\") {\n if (!isMobile()) {\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.json_to_sheet(data);\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Proventos\");\n XLSX.writeFile(workbook, \"Proventos.xlsx\");\n }\n setLoading(false);\n message.success(\"O relatório foi enviado para o seu e-mail\");\n }\n } catch (err: any) {\n setLoading(false);\n message.error(\n \"Não foi possÃvel baixar o relatório de proventos. Tente novamente mais tarde\"\n );\n }\n };\n\n const reportPDFData = (data: any, type: string) => {\n const formatModalPDF = data.map((el: any) => {\n if (type === \"prov\") {\n return {\n code: el.code || \"\",\n date: moment(el?.date).format(dateFormat),\n corporateActionTypeDescription: _.capitalize(\n el?.corporateActionTypeDescription\n ),\n corretora: el?.corretora,\n quantity: el?.quantity || \"-\",\n unitPrice: el?.unitPrice || \"-\",\n grossAmount: el?.grossAmount,\n };\n } else if (type === \"other\") {\n return {\n code: el[\"Produto\"] || \"\",\n date: el[\"Pagamento\"],\n corporateActionTypeDescription: _.capitalize(el[\"Tipo\"]),\n corretora: el[\"Instituição\"],\n quantity: el[\"Qtde.\"] || \"-\",\n unitPrice: el[\"Preço unit.\"] || \"-\",\n grossAmount: el[\"Valor lÃquido\"],\n };\n }\n return {};\n });\n return formatModalPDF;\n };\n\n useEffect(() => {\n let total = 0;\n const monthNumber = months[month];\n\n const dataFiltered = proventos.filter((el: any) => {\n const monthOp = Number(moment(el?.date).format(\"M\"));\n const yearOp = Number(moment(el?.date).format(\"YYYY\"));\n if (monthNumber === monthOp && yearProventos === yearOp) {\n return true;\n }\n return false;\n });\n setDataModalPDF(reportPDFData(dataFiltered, \"prov\"));\n const dataSerialized = dataFiltered.map((el: any) => {\n total += el?.grossAmount;\n\n return {\n Produto: el?.code,\n Pagamento: moment(el?.date).format(dateFormat),\n Tipo: _.capitalize(el?.corporateActionTypeDescription),\n Instituição: el?.corretora,\n \"Qtde.\": el?.quantity || \"-\",\n \"Preço unit.\": !el?.unitPrice\n ? \"-\"\n : \"R$ \" +\n el?.unitPrice?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n \"Valor lÃquido\":\n \"R$ \" +\n el?.grossAmount?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n };\n });\n setTotal(total);\n setData(dataSerialized);\n setOriginalData(dataSerialized);\n }, [month, yearProventos, proventos]);\n\n useEffect(() => {\n if (Object.keys(filters).length > 0 || (dateBeginFilter && dateEndFilter))\n setData(originalData);\n }, [filters, dateBeginFilter, dateEndFilter, originalData]);\n\n const handleOpenFilterModal = () => {\n setShowFilterModal(true);\n };\n\n const getCorretFilters = () => {\n const newCorret: any[] = [];\n if (originalData && originalData.length > 0)\n originalData.forEach((el: any) => {\n if (newCorret.includes(el[\"Instituição\"])) {\n } else {\n newCorret.push(el[\"Instituição\"]);\n }\n });\n return newCorret;\n };\n\n return (\n <DrawerModal\n footer={null}\n visible={open}\n title=\"Proventos\"\n maskClosable={true}\n destroyOnClose={true}\n className=\"modalProventos\"\n onCancel={() => setOpenModal(false)}\n >\n <ContainerModal>\n <div className=\"container-1\">\n <Row className=\"client-wallet-header-btns\">\n <Select\n value={month}\n defaultValue={month}\n style={{ minWidth: \"150px\" }}\n onChange={(name) => setMonthProventos({ name })}\n getPopupContainer={(trigger) => trigger.parentElement!}\n options={Object.keys(months).map((m, i) => ({\n value: m,\n label: monthsExtended[i],\n }))}\n />\n <Select\n value={yearProventos}\n defaultValue={yearProventos}\n onChange={(e) => setYearProventos(e)}\n getPopupContainer={(trigger) => trigger.parentElement!}\n options={selectYears.map((y) => ({\n value: date.getFullYear() + y,\n label: date.getFullYear() + y,\n }))}\n />\n </Row>\n <Row className=\"client-wallet-header-btns\">\n <Button onClick={handleOpenFilterModal} icon={<FiltroIcon />}>\n Filtrar\n </Button>\n <Button\n icon={<HiOutlineDownload />}\n onClick={() => {\n setReportDrawerProventos(true);\n }}\n >\n Baixar\n </Button>\n </Row>\n </div>\n <Row>\n <div className=\"year-resume\">\n <Typography.Paragraph>Total recebido no mês:</Typography.Paragraph>\n <Typography.Paragraph>{formatCurrency(total)}</Typography.Paragraph>\n </div>\n </Row>\n <Row>\n <div className=\"container-table\">\n <Table\n dataSource={data}\n style={{ width: \"100%\" }}\n loading={proventosLoading}\n pagination={{\n defaultPageSize: 10,\n defaultCurrent: 1,\n showSizeChanger: false,\n }}\n columns={[\n {\n title: \"Empresa\",\n align: \"left\",\n width: \"250px\",\n dataIndex: \"Produto\",\n },\n {\n title: \"Pagamento\",\n align: \"left\",\n width: \"50px\",\n dataIndex: \"Pagamento\",\n },\n {\n title: \"Tipo\",\n align: \"left\",\n width: \"100px\",\n dataIndex: \"Tipo\",\n },\n {\n title: \"Corretora\",\n align: \"left\",\n width: \"250px\",\n dataIndex: \"Instituição\",\n },\n {\n title: \"Qtde.\",\n align: \"left\",\n width: \"50px\",\n dataIndex: \"Qtde.\",\n },\n {\n title: \"Preço unit.\",\n align: \"left\",\n width: \"50px\",\n dataIndex: \"Preço unit.\",\n },\n {\n title: \"Valor lÃquido\",\n align: \"left\",\n width: \"50px\",\n dataIndex: \"Valor lÃquido\",\n },\n ]}\n />\n </div>\n </Row>\n </ContainerModal>\n <Modal\n footer={null}\n zIndex={1001}\n width=\"410px\"\n visible={showFilterModal}\n title=\"Filtrar proventos\"\n className=\"filter-proventos-modal\"\n onCancel={() => {\n setFilters(appliedFilters);\n setShowFilterModal(false);\n }}\n >\n <Row gutter={[24, 24]}>\n <Col span={24}>\n <Row gutter={[8, 8]}>\n {getCorretFilters().length > 0 &&\n <>\n <Col span={24}>\n <Typography.Text strong>Instituição</Typography.Text>\n </Col>\n <Col span={24}>\n <Checkbox.Group\n value={filters.corretoras}\n onChange={(corretoras) => {\n setFilters((filters: any) => ({ ...filters, corretoras }));\n }}\n >\n <Row gutter={[4, 4]}>\n {getCorretFilters().map((el: any) => {\n const value = `${el.split(\" \")[0]}_${el.split(\" \")[1]}`;\n return (\n <Col span={24}>\n <Checkbox value={`corret_${value}`}>{el}</Checkbox>\n </Col>\n );\n })}\n </Row>\n </Checkbox.Group>\n </Col>\n </>\n }\n <Col span={24}>\n <Typography.Text strong>PerÃodo de pagamento</Typography.Text>\n </Col>\n <Col span={24}>\n <Typography.Text>Data inicial</Typography.Text>\n <DatePicker\n ref={dateBeginRef}\n format={dateFormat}\n className=\"original-date-picker\"\n onClick={() => setDateBeginFilter(\"\")}\n dropdownClassName=\"original-date-picker\"\n onChange={(el) => {\n if (el) setDateBeginFilter(moment(el).format(dateFormat));\n }}\n style={{\n width: \"50%\",\n marginTop: \"5px\",\n marginBottom: \"10px\",\n }}\n />\n <Typography.Text>Data final</Typography.Text>\n <DatePicker\n format={dateFormat}\n defaultValue={moment()}\n className=\"original-date-picker\"\n onClick={() => setDateEndFilter(\"\")}\n dropdownClassName=\"original-date-picker\"\n onChange={(el) => {\n if (el) setDateEndFilter(moment(el).format(dateFormat));\n }}\n style={{\n width: \"50%\",\n marginTop: \"5px\",\n marginBottom: \"10px\",\n }}\n />\n </Col>\n </Row>\n </Col>\n <Col span={24}>\n <Button\n block\n size=\"large\"\n type=\"primary\"\n loading={loading}\n onClick={() => {\n setAppliedFilters(filters);\n const getProventosWithFilter = (filters: any) => {\n const corretoras = filters?.corretoras || [];\n const dataFiltered: any = [];\n const dataFinal: any = [];\n if (corretoras.length > 0) {\n corretoras.forEach((corret: string) => {\n data.forEach((el: any) => {\n const corretEl = `corret_${\n el[\"Instituição\"]?.split(\" \")[0]\n }_${el[\"Instituição\"]?.split(\" \")[1]}`;\n if (corretEl === corret) dataFiltered.push(el);\n });\n });\n setData(dataFiltered);\n if (dateBeginFilter && dateEndFilter) {\n const dateBegin = moment(\n dateBeginFilter,\n dateFormat\n ).toDate();\n const dateEnd = moment(\n dateEndFilter,\n dateFormat\n ).toDate();\n dataFiltered.forEach((el: any) => {\n const datePagamento = moment(\n el[\"Pagamento\"],\n dateFormat\n ).toDate();\n if (\n datePagamento >= dateBegin &&\n datePagamento <= dateEnd\n )\n dataFinal.push(el);\n });\n setData(dataFinal);\n }\n setDataModalPDF(\n reportPDFData(\n dataFinal.length === 0 ? dataFiltered : dataFinal,\n \"other\"\n )\n );\n return;\n } else if (dateBeginFilter && dateEndFilter) {\n const dateBegin = moment(\n dateBeginFilter,\n dateFormat\n ).toDate();\n const dateEnd = moment(dateEndFilter, dateFormat).toDate();\n data.forEach((el: any) => {\n const datePagamento = moment(\n el[\"Pagamento\"],\n dateFormat\n ).toDate();\n if (\n datePagamento >= dateBegin &&\n datePagamento <= dateEnd\n )\n dataFinal.push(el);\n });\n setData(dataFinal);\n setDataModalPDF(reportPDFData(dataFinal, \"other\"));\n return;\n }\n setData(originalData);\n };\n getProventosWithFilter(filters);\n setTimeout(() => {\n setShowFilterModal(false);\n }, 500);\n }}\n >\n Aplicar\n </Button>\n </Col>\n </Row>\n </Modal>\n <ReportTypeDrawer\n loading={loading}\n open={reportDrawerProventos}\n onClose={() => setReportDrawerProventos(false)}\n setType={(type: string) => downloadRelatorioProventos(type)}\n />\n </DrawerModal>\n );\n};\n","import { SetStateAction, createContext, useCallback, useContext, useEffect, useState } from \"react\";\nimport api from \"../services/apiBolsa\";\nimport { message } from \"antd\";\nimport { useAuth } from \"./AuthContext\";\n\ninterface INotification {\n message: string;\n type: string;\n date: Date;\n viewed: boolean;\n viewedDate?: Date;\n meta: any;\n}\n\ninterface INotificationContext {\n notification: INotification[];\n setNotification: React.Dispatch<SetStateAction<INotification[]>>\n loading: boolean;\n getNotification: () => void;\n}\n\nexport const NotificationContext = createContext<INotificationContext>(\n {} as INotificationContext\n);\n\nexport const NotificationProvider: React.FC = ({ children }) => {\n const [notification, setNotification] = useState<INotification[]>([]);\n const [loading, setLoading] = useState(false);\n const [fetched, setFetched] = useState(false);\n\n const { user } = useAuth()\n\n const getNotification = useCallback(() => {\n if(user?.token) {\n setLoading(true)\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${user?.token}`;\n api.get(`/xpinvestimentos/notification`)\n .then((res) => {\n setFetched(true)\n setNotification(res.data)\n })\n .catch(err => message.error('Não foi possÃvel buscar notificações'))\n .finally(() => setLoading(false))\n }\n }, [user?.token])\n\n useEffect(() => {\n if(!fetched) {\n getNotification()\n }\n }, [fetched, getNotification]);\n\n return (\n <NotificationContext.Provider\n value={{ notification, setNotification, loading, getNotification }}\n >\n {children}\n </NotificationContext.Provider>\n );\n};\n\nexport const useNotification = () => useContext(NotificationContext);\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport * as XLSX from \"xlsx\";\nimport { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport { BsDownload } from \"react-icons/bs\";\nimport { Select, Tooltip, message } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineLock, AiOutlineSearch } from \"react-icons/ai\";\nimport Loading from \"../Loading\";\nimport { ChartBar } from \"../ChartBar\";\nimport { BlurContent } from \"./styles\";\nimport api from \"../../services/apiBolsa\";\nimport AntButton from \"../../components/Button\";\nimport HandleTag from \"../../services/handleTag\";\nimport { ProventosModal } from \"../ProventosModal\";\nimport apiVeloPro from \"../../services/apiVeloPro\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { ContainerProventos, Content } from \"./styles\";\nimport { ReportTypeDrawer } from \"../ReportType/ReportType\";\nimport { download, downloadPDF, isMobile } from \"../../utils\";\nimport { useNotification } from \"../../contexts/NotificationContext\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const Proventos = ({ hideValues }: any) => {\n const { getNotification } = useNotification();\n\n const {\n user,\n showUserPlanModal,\n hasPlan: hasPremiunPlan,\n hasPermissionExterior,\n hasPermissionGeneral,\n } = useAuth();\n\n const navigate = useNavigate();\n const [openModal, setOpenModal] = useState(false);\n const [proventos, setProventos] = useState<any[]>([]);\n const [monthProventos, setMonthProventos] = useState<any>({});\n const [loadingDownload, setLoadingDownload] = useState(false);\n // const [appliedFilters, setAppliedFilters] = useState<any>({});\n const [proventosLoading, setProventosLoading] = useState<any>({});\n const [loadingReport, setLoadingReport] = useState<boolean>(false);\n const [typeProventos, setTypeProventos] = useState<any>(\"provento\");\n const [reportDrawerProventos, setReportDrawerProventos] = useState(false);\n const [yearProventos, setYearProventos] = useState<any>(\n new Date().getFullYear()\n );\n\n const hasPlan =\n (hasPremiunPlan || hasPermissionExterior || hasPermissionGeneral)\n && !user?.user?.userPlanInfoVelotax?.type?.includes('BASIC');\n\n useEffect(() => {\n setProventosLoading(true);\n api\n .get(`/xpinvestimentos/get-proventos`, {\n params: { year: yearProventos },\n })\n .then((res) => {\n if (!res?.data?.proventos) setProventos([])\n setProventos(res?.data?.proventos);\n if (res?.data?.updated) {\n getNotification();\n }\n })\n .finally(() => setProventosLoading(false));\n }, [user?.user?.cpf, getNotification, yearProventos]);\n\n const monthReport = (data?: any, index?: any) => {\n setOpenModal(true);\n if (data) {\n setMonthProventos(data);\n } else {\n const date = new Date();\n const y = date.getFullYear();\n const m = date.toLocaleString(\"pt-BR\", { month: \"short\" });\n const name = `${m[0].toUpperCase()}${m.substring(1, 3)}`;\n setMonthProventos({ name });\n setYearProventos(y);\n }\n };\n\n const serializeDataExcel = (data: any) => {\n return data\n .filter(\n (el: any) => yearProventos === Number(moment(el?.date).format(\"Y\"))\n )\n .map((el: any) => {\n return {\n Produto: el?.code,\n Pagamento: moment(el?.date).format(\"DD/MM/YYYY\"),\n Tipo: _.capitalize(el?.corporateActionTypeDescription),\n Instituição: el?.corretora,\n \"Qtde.\": el?.quantity || \"-\",\n \"Preço unit.\":\n el?.corporateActionTypeDescription.toLowerCase() === \"dividendo\" ||\n el?.corporateActionTypeDescription.toLowerCase() === \"dividendos\" ||\n el?.corporateActionTypeDescription.toLowerCase() === \"cupom\"\n ? \"-\"\n : \"R$ \" +\n el?.unitPrice?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n \"Valor lÃquido\":\n \"R$ \" +\n el?.grossAmount?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }),\n };\n });\n };\n\n const downloadExcel = (data: any) => {\n const serializedData = serializeDataExcel(data);\n setLoadingReport(true);\n api\n .post(\"/xpinvestimentos/wallet/report-proventos\", {\n data: serializedData,\n })\n .then(() => {\n if (!isMobile()) {\n const worksheet = XLSX.utils.json_to_sheet(serializedData);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Proventos\");\n XLSX.writeFile(workbook, \"Proventos.xlsx\");\n }\n })\n .finally(() => {\n message.success(\"O relatório foi enviado para o seu e-mail\");\n setLoadingReport(false);\n });\n };\n\n const downloadRelatorio = async (type: string, item: any) => {\n try {\n setLoadingDownload(true);\n if (type === \"pdf\") {\n let fileUrl = \"\";\n let file = \"\";\n const escritorioId = null;\n const newProventos = proventos.map((el: any) => {\n return {\n code: el.code || \"\",\n date: moment(el?.date).format(\"DD/MM/YYYY\"),\n corporateActionTypeDescription: _.capitalize(\n el?.corporateActionTypeDescription\n ),\n corretora: el?.corretora,\n quantity: el?.quantity || \"-\",\n unitPrice: el?.unitPrice,\n grossAmount: el?.grossAmount,\n };\n });\n const ret = await apiVeloPro.post(\n \"/clients/downloadRelatorioProventos\",\n {\n proventos: newProventos,\n escritorioId: escritorioId,\n user: user?.user\n }\n );\n if (ret) {\n fileUrl = ret?.data?.fileUrl;\n file = ret?.data?.file;\n }\n if (fileUrl && !isMobile()) {\n download(fileUrl);\n } else if (file) {\n downloadPDF(file, \"Proventos\");\n }\n message.success(\"O relatório foi enviado para o seu e-mail\");\n } else if (type === \"xlsx\") {\n downloadExcel(proventos);\n }\n setLoadingDownload(false);\n } catch (err: any) {\n setLoadingDownload(false);\n message.error(\n \"Não foi possÃvel baixar o relatório de Proventos. Tente novamente mais tarde\"\n );\n }\n };\n\n const existsProvCurrentMonth = () => {\n const currentMonth = (new Date().getMonth() + 1);\n return (proventos.some((p: any) => {\n if ((p?.date?.split('-')[1] == currentMonth.toString())) return true;\n }))\n }\n\n return (\n <Content className=\"velotax-container\" style={{ padding: \"0px\" }}>\n <Content className=\"velotax-content\">\n <ContainerProventos>\n {!hasPlan ? (\n proventosLoading ? (\n <Loading />\n ) : (\n <BlurContent hasPlan={hasPlan}>\n <div className=\"blur-content-title\">\n Contrate o plano premium para ver a lista completa de\n proventos\n <AntButton\n type=\"primary\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n navigate('/planos')\n HandleTag(\"54\");\n }}\n >\n PREMIUM\n </AntButton>\n </div>\n <ChartBar\n monthReport={monthReport}\n proventos={proventos}\n yearProventos={yearProventos}\n typeProventos={typeProventos}\n hideValues={hideValues}\n />\n </BlurContent>\n )\n ) : (\n <>\n <div className=\"filter-proventos\">\n <Select\n value={yearProventos}\n disabled={proventosLoading}\n defaultValue={yearProventos}\n onChange={(e) => setYearProventos(e)}\n options={[\n {\n value: new Date().getFullYear() + 1,\n label: new Date().getFullYear() + 1,\n },\n {\n value: new Date().getFullYear(),\n label: new Date().getFullYear(),\n },\n {\n value: new Date().getFullYear() - 1,\n label: new Date().getFullYear() - 1,\n },\n {\n value: new Date().getFullYear() - 2,\n label: new Date().getFullYear() - 2,\n },\n {\n value: new Date().getFullYear() - 3,\n label: new Date().getFullYear() - 3,\n },\n ]}\n />\n <Select\n value={typeProventos}\n defaultValue=\"provento\"\n disabled={proventosLoading}\n onChange={(e) => setTypeProventos(e)}\n options={[\n {\n label: \"Por tipo de provento\",\n value: \"provento\",\n },\n {\n label: \"Por corretora\",\n value: \"corretora\",\n },\n {\n label: \"Por data de recebimento\",\n value: \"data\",\n },\n ]}\n />\n <div className=\"proventos-btns\">\n {existsProvCurrentMonth() && \n <AntButton\n type=\"text\"\n size=\"large\"\n onClick={() => monthReport()}\n icon={<AiOutlineSearch className=\"fill\" />}\n disabled={proventosLoading || loadingReport}\n >\n Ver detalhes\n </AntButton>\n }\n <Tooltip\n placement=\"topRight\"\n autoAdjustOverflow={true}\n title=\"Baixar Relatório de proventos\"\n getPopupContainer={(target) => target.parentElement!}\n >\n <AntButton\n type=\"text\"\n size=\"large\"\n onClick={() => {\n setReportDrawerProventos(true);\n }}\n disabled={proventosLoading || loadingReport}\n icon={\n loadingReport ? <LoadingOutlined /> : <BsDownload />\n }\n >\n Baixar\n </AntButton>\n </Tooltip>\n </div>\n </div>\n {proventosLoading ? (\n <Loading />\n ) : (\n <ChartBar\n monthReport={monthReport}\n proventos={proventos}\n yearProventos={yearProventos}\n typeProventos={typeProventos}\n hideValues={hideValues}\n />\n )}\n <ProventosModal\n open={openModal}\n setOpenModal={setOpenModal}\n month={monthProventos.name}\n monthProventos={monthProventos}\n proventos={proventos}\n yearProventos={yearProventos}\n downloadExcel={downloadExcel}\n setYearProventos={setYearProventos}\n proventosLoading={proventosLoading}\n setMonthProventos={setMonthProventos}\n />\n </>\n )}\n </ContainerProventos>\n </Content>\n <ReportTypeDrawer\n loading={loadingDownload}\n open={reportDrawerProventos}\n onClose={() => setReportDrawerProventos(false)}\n setType={(type: string) => downloadRelatorio(type, proventos)}\n />\n </Content>\n );\n};\n","import { message } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Dispatch, SetStateAction, createContext, useCallback, useContext, useEffect, useState } from \"react\";\nimport apiBolsa from \"../services/apiBolsa\";\nimport apiVeloPro from \"../services/apiVeloPro\";\n\nexport interface Posicao {\n avgPriceUsd: number;\n categoria: string;\n codigo: string;\n posicao: number;\n quantidade: number;\n precoAtual: number;\n precoVenda: number;\n loan?: {\n isLoan?: boolean;\n typeLoan?: string;\n };\n custoMedio: number;\n lucroPrejuizoTotal: number;\n lucroPrejuizoDiario: number;\n lucroPrejuizoTotalPercentual: number;\n lucroPrejuizoDiarioPercentual: number;\n hasPosition2019: boolean;\n corretora: string;\n resumo: any;\n}\n\ninterface Carteira {\n posicoes: Posicao[];\n posicoesSemFiltro: Posicao[];\n patrimonioTotal: number;\n lucroPrejuizoTotal: number;\n lucroPrejuizoDiario: number;\n lucroPrejuizoTotalPercentual: number;\n lucroPrejuizoDiarioPercentual: number;\n filter?: string[];\n cotacaoVenda: number;\n}\n\ninterface ICarteiraContext {\n carteira: Carteira;\n loading: boolean;\n lastUpdate: Date;\n getCarteira: (refresh?: boolean) => void;\n getPatrimonios: (cpf: string) => Promise<any>;\n updateFilter: (posicoes: string[]) => Promise<void>;\n posicoesFilter: any;\n setPosicoesFilter: Dispatch<SetStateAction<any>>;\n}\n\nexport const CarteiraContext = createContext<ICarteiraContext>(\n {} as ICarteiraContext\n);\n\nexport const CarteiraProvider: React.FC = ({ children }) => {\n const navigate = useNavigate();\n const [loading, setLoading] = useState(false);\n const [lastUpdate, setLastUpdate] = useState(new Date());\n const [carteira, setCarteira] = useState<Carteira | any>({});\n const [posicoesFilter, setPosicoesFilter] = useState(carteira.filter);\n\n const getCarteira = useCallback(\n (refresh?: boolean) => {\n setLoading(true);\n apiBolsa\n .get(\"/xpinvestimentos/wallet\", {\n params: {\n refresh,\n },\n })\n .then(({ data }) => {\n setCarteira(data);\n setPosicoesFilter(data?.filter)\n setLastUpdate(new Date());\n })\n .catch((error) => {\n if (error.response?.data?.status === 400) {\n message.info(\"Refaça sua integração com a B3 e tente novamente.\");\n setTimeout(() => {\n navigate(\"xpinvestimentos/bolsa-integration\");\n }, 1000);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [navigate]\n );\n\n const updateFilter = async (posicoes: string[]) => {\n apiBolsa.patch('/xpinvestimentos/wallet/filter', {posicoes})\n .then(() => {\n getCarteira(true)\n })\n .catch((err) => {\n console.log(err)\n })\n }\n\n const getPatrimonios = async (cpf: string) => {\n const { data } = await apiVeloPro.get(`/clients/get-patrimonios/${cpf}`);\n return data;\n };\n\n return (\n <CarteiraContext.Provider\n value={{\n loading,\n carteira,\n lastUpdate,\n getCarteira,\n getPatrimonios,\n updateFilter,\n posicoesFilter,\n setPosicoesFilter\n }}\n >\n {children}\n </CarteiraContext.Provider>\n );\n};\n\nexport const useCarteira = () => useContext(CarteiraContext);\n","import { months } from \"./date\";\nimport { Posicao } from \"../contexts/CarteiraContext\";\n\nconst colors: any = [\n \"var(--ant-primary-color)\",\n \"#121212\",\n \"#AABBCC\",\n \"var(--ant-primary-8)\",\n \"var(--ant-primary-4)\",\n \"#000058\",\n];\n\nexport const chartColors = [\n { background: \"#FCC102\", label: \"white\" },\n { background: \"#C8D200\", label: \"black\" },\n { background: \"#FF2B01\", label: \"white\" },\n { background: \"#E50045\", label: \"white\" },\n { background: \"#CC13AF\", label: \"white\" },\n { background: \"#5B0084\", label: \"white\" },\n { background: \"#79002B\", label: \"white\" },\n { background: \"#125E22\", label: \"white\" },\n { background: \"#FF7F00\", label: \"white\" },\n]\nexport const getProviderColor = (provider: string, index: number) => {\n while (index > 8) {\n const differnce = index - 8;\n index = differnce - 1;\n }\n return chartColors[index].background;\n}\n\nexport const getFontColor = (bc: string) => {\n const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(bc);\n const rgb = hex\n ? [parseInt(hex[1], 16), parseInt(hex[2], 16), parseInt(hex[3], 16)]\n : [0, 0, 0];\n\n const brightness = Math.round(\n (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000\n );\n return brightness > 200 ? \"#000000\" : \"#FFFFFF\";\n};\n\nexport const getRandomDarkColor = () => {\n let color = \"#\";\n for (let i = 0; i < 6; i++) {\n color += Math.floor(Math.random() * 10);\n }\n return color;\n};\n\nexport const getClassesAtivosChart = (carteiraCategorizada: {\n [key: string]: Posicao[];\n}) => {\n const getCategoriaAtivos = (categoria: string) => {\n switch (categoria) {\n case \"FII - Fundo de Investimento Imobiliário\":\n return \"FIIs\";\n case \"Fundos de Investimentos\":\n return \"FIs\";\n case \"ETF - Exchange Traded Fund\":\n return \"ETFs\";\n case \"BDR - Brazilian Depositary Receipts\":\n return \"BDRs\";\n case \"Opcao\":\n return \"Opções\";\n case \"Exterior\":\n return \"XP International\";\n case \"TesouroDireto\":\n return \"Tesouro Direto\";\n case \"undefined\":\n return \"Outros\";\n default:\n return categoria;\n }\n };\n\n let i = 0;\n let classes: any[] = [];\n for (let index in carteiraCategorizada) {\n const sum = carteiraCategorizada[index].reduce((acc, cur) => {\n return acc + cur.posicao;\n }, 0);\n const name = getCategoriaAtivos(index);\n classes.push({\n name,\n value: sum,\n color: colors[i % colors.length],\n });\n i += 1;\n }\n return classes;\n};\n\nexport const getCorretoraAtivosChart = (carteiraCategorizada: {\n [key: string]: Posicao[];\n}) => {\n const getCorretora = (corretora: string) => {\n switch (corretora) {\n case \"XP INVESTIMENTOS CCTVM S/A\":\n return \"XP\";\n case \"BANCO BTG PACTUAL S/A\":\n return \"BTG Pactual\";\n case \"undefined\":\n return \"XP International\";\n default:\n return corretora;\n }\n };\n let corretoras: any = [];\n for (let ativos of Object.values(carteiraCategorizada)) {\n for (let ativo of ativos) {\n corretoras[ativo.corretora] =\n (corretoras[ativo.corretora] || 0) + ativo.posicao;\n }\n }\n let i = 0;\n let result = [];\n for (let index in corretoras) {\n result.push({\n name: getCorretora(index),\n value: corretoras[index],\n color: colors[i % colors.length],\n });\n i += 1;\n }\n return result;\n};\n\nexport const getLineChartData = (arr: any[]) => {\n if (!arr) return [];\n const previousDate = arr[0].date.split(\"/\").map((num: any) => Number(num));\n const currentDate = arr[arr.length - 1].date\n .split(\"/\")\n .map((num: any) => Number(num));\n\n let response = arr.map((i) => {\n return { name: \"\", value: i.value };\n });\n\n response[0].name = `${previousDate[0]} ${months[previousDate[1] - 1]} ${previousDate[2]\n }`;\n response[response.length - 1].name = `${currentDate[0]} ${months[currentDate[1] - 1]\n } ${currentDate[2]}`;\n\n return response;\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n width: 100%;\n .progress_container {\n width: 100%;\n background-color: var(--velotax-ghost-white);\n height: 15px;\n position: relative;\n border-radius: 50px;\n }\n\n .loading_bar {\n height: 100%;\n background-color: var(--ant-primary-color);\n border-top-left-radius: 50px;\n border-bottom-left-radius: 50px;\n display: flex; /* Para que os elementos dentro da barra de progresso se alinhem corretamente */\n align-items: center; /* Para centralizar verticalmente o texto */\n justify-content: center; /* Para alinhar o texto à esquerda dentro da barra de progresso */\n padding-left: 10px; /* Adicione o padding necessário para dar espaço ao texto na barra */\n }\n\n .progress_container_text_align_center {\n /* Estilos para o texto (se necessário) */\n font-size: 11px;\n font-weight: 700;\n }\n .recharts-responsive-container {\n height: auto !important;\n }\n .success {\n color: var(--ant-success-color);\n }\n .error {\n color: var(--ant-error-color);\n }\n .page-title {\n display: flex;\n align-items: baseline;\n }\n .hide-values-btn {\n width: 24px;\n margin-left: 12px;\n border-radius: 4px;\n display: inline-flex;\n height: 32px !important;\n background-color: transparent;\n svg {\n width: 20px;\n height: 20px;\n fill: var(--ant-primary-color) !important;\n }\n }\n\n .patrimonio {\n width: 100%;\n margin-top: -32px;\n margin-bottom: -32px;\n\n h1:not(.page-title) {\n padding-bottom: 0;\n padding-left: 40px;\n font-size: 2.25rem;\n margin: 0 !important;\n color: var(--velotax-font-color-light);\n\n span {\n font-weight: 800;\n }\n\n :after {\n display: none;\n }\n }\n\n h2 {\n font-weight: 400;\n line-height: 1rem;\n padding-left: 40px;\n font-size: 0.875rem;\n margin: 0 !important;\n color: var(--velotax-font-color-light);\n }\n\n .lucro-prejuizo {\n padding: 16px 0 16px 16px;\n border-left: 2px solid #313131;\n\n .anticon.anticon-loading.anticon-spin {\n width: 14px;\n height: 14px;\n margin-left: 4px;\n svg {\n width: 14px;\n height: 14px;\n }\n }\n\n div.ant-typography {\n margin: 0.5rem 0;\n font-size: 0.875rem;\n span {\n font-weight: 600;\n white-space: nowrap;\n }\n & > span {\n display: block;\n &.error {\n margin: 0;\n }\n }\n }\n }\n }\n\n .list-empty {\n padding: 16px;\n margin-top: -16px;\n border-radius: 8px;\n color: var(--velotax-font-color);\n background-color: #313131;\n }\n\n .last-update {\n display: flex;\n margin-top: 32px;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n .button-refresh-wallet {\n width: 20px;\n height: 20px;\n border: none;\n box-shadow: none;\n margin-right: 8px;\n background-color: #313131;\n color: var(--ant-primary-color) !important;\n svg {\n width: 10px !important;\n height: 10px !important;\n * {\n stroke: var(--ant-primary-color) !important;\n }\n }\n }\n }\n\n .messages {\n margin-top: 16px;\n font-weight: 400;\n padding-top: 16px;\n line-height: 1rem;\n font-size: 0.75rem;\n color: var(--velotax-font-color);\n border-top: 2px solid #313131;\n li {\n padding-left: 16px;\n margin-bottom: 6px;\n position: relative;\n .anticon-info-circle {\n left: 0;\n top: 1px;\n position: absolute;\n color: var(--velotax-font-color);\n }\n }\n }\n\n .select-container {\n top: 0;\n right: 0;\n width: 41.6666%; // 41.6666% para alinhar com o prejuizo (10/24 = 41.6666)\n position: absolute;\n .ant-select {\n min-width: 180px;\n height: 40px !important;\n .ant-select-selector {\n height: 40px !important;\n }\n }\n }\n .recharts-layer.recharts-pie-labels text {\n font-size: 14px !important;\n font-weight: 600 !important;\n }\n @media only screen and (min-device-width: 813px) {\n .velotax-content.largeChart {\n .recharts-responsive-container {\n margin: 0 auto 80px;\n }\n }\n .recharts-responsive-container {\n margin: 0 auto 48px;\n position: relative;\n .recharts-wrapper {\n width: 100% !important;\n > .recharts-surface {\n margin-left: 40px;\n }\n .recharts-legend-wrapper {\n right: 0px !important;\n width: 41.6666% !important; // 41.6666% para alinhar com o prejuizo (10/24 = 41.6666)\n top: calc(48px + 20px) !important;\n .recharts-legend-item {\n margin: 4px 0;\n .recharts-surface {\n width: 16px;\n height: 16px;\n border-radius: 2px;\n }\n .recharts-legend-item-text {\n /* margin-left: 12px; */\n span {\n font-size: 14px;\n font-weight: 500;\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .page-title {\n align-items: center;\n justify-content: space-between;\n }\n .patrimonio {\n margin-top: 32px;\n margin-bottom: -24px;\n\n h1,\n h2 {\n padding-left: 0 !important;\n }\n\n .lucro-prejuizo {\n padding: 4px 0 0;\n border: none;\n margin-top: 16px;\n border-top: 2px solid #313131;\n\n .anticon.anticon-loading.anticon-spin {\n width: 10px;\n height: 10px;\n margin-left: 4px;\n svg {\n width: 10px;\n height: 10px;\n }\n }\n\n div.ant-typography {\n margin: 0.25rem 0;\n font-size: 0.75rem;\n }\n }\n }\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n .recharts-responsive-container {\n position: relative;\n margin: 32px auto;\n .select-container {\n top: -32px;\n width: 100%;\n .ant-select {\n min-width: 210px;\n }\n }\n .recharts-legend-wrapper {\n width: 98px !important;\n right: -24px !important;\n .recharts-legend-item {\n margin: 4px 0;\n align-items: start;\n display: flex !important;\n margin-right: 0 !important;\n .recharts-surface {\n border-radius: 2px;\n margin-top: 1px;\n }\n .recharts-legend-item-text {\n max-width: 80px;\n font-size: 13px;\n line-height: 14px;\n white-space: normal;\n display: inline-block;\n span {\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n .ant-tooltip {\n z-index: 999;\n .ant-tooltip-inner {\n width: auto;\n white-space: nowrap;\n }\n }\n &.velotax-content {\n width: 100% !important;\n padding: 16px 0 48px !important;\n }\n .container-btn {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 32px;\n }\n .download-report-btn {\n padding: 5px;\n width: 24px;\n z-index: 1;\n font-size: 14px;\n border-radius: 4px;\n display: inline-flex;\n height: 32px !important;\n background-color: var(--white);\n color: var(--velotax-font-color-dark);\n width: 32px;\n border: 1px solid var(--white);\n border-radius: 60px;\n svg {\n width: 16px;\n height: 16px;\n fill: var(--ant-primary-color) !important;\n }\n &.filter-btn {\n width: auto;\n margin-right: 8px;\n padding: 5px 12px;\n svg {\n stroke: var(--ant-primary-color) !important;\n fill: none !important;\n }\n }\n }\n .range {\n display: flex;\n justify-content: space-between;\n\n div.ant-typography {\n font-size: 13px;\n }\n }\n .ant-tabs-tabpane {\n min-height: 547px;\n }\n .isentometro {\n margin-bottom: 5px;\n font-size: 14px;\n }\n .box {\n margin: 50px 0px;\n }\n .overview {\n color: var(--ant-primary-color);\n font-size: 18px;\n font-weight: bold;\n }\n .ant-progress-success-bg {\n background-color: var(--ant-primary-color);\n height: 13px !important;\n }\n .ant-progress-inner {\n height: 13px !important;\n }\n .ant-progress-bg {\n height: 13px !important;\n }\n & > .ant-collapse {\n border: none;\n & > .ant-collapse-item.ativos-categoria {\n margin-bottom: 48px;\n &:last-of-type {\n margin-bottom: 0;\n }\n & > .ant-collapse-header {\n padding: 0;\n align-items: center;\n .ant-collapse-arrow {\n right: 0;\n }\n h2 {\n margin: 0;\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n }\n .collapse-title-divider {\n flex-grow: 1;\n display: block;\n margin: 0 16px;\n border-bottom: 2px solid #313131;\n }\n .collapse-title-hidden {\n width: 24px;\n height: 24px;\n display: block;\n visibility: hidden;\n }\n }\n & > .ant-collapse-content {\n border: none;\n background-color: transparent;\n & > .ant-collapse-content-box {\n padding: 24px 0 0;\n & > .ant-collapse {\n border: none;\n }\n & > div {\n font-size: 13px;\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n margin-bottom: 0;\n border-radius: 0;\n padding: 32px 24px;\n\n h1,\n h2 {\n padding: 0;\n }\n }\n`;\n\nexport const BlurContent: any = styled.div`\n margin-top: 8px;\n position: relative;\n user-select: none;\n border-radius: 4px;\n border: 2px solid #313131;\n .blur-content {\n opacity: 0.5;\n filter: blur(4px);\n }\n .blur-content-title {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0 100px;\n font-weight: 500;\n font-size: 1.25rem;\n text-align: center;\n row-gap: 16px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n .blur-content-title {\n padding: 0 16px;\n font-size: 1rem;\n }\n }\n`;\n\nexport const Toolbar = styled.div`\n display: flex;\n flex-direction: column;\n width: 700px;\n margin: 0 auto 1.5rem;\n justify-content: space-between;\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n }\n`;\n\nexport const IsentCardStyled = styled.div`\n margin-bottom: 4px;\n height: 110px;\n padding: 23px;\n border: none !important;\n border-radius: 4px !important;\n background-color: var(--velotax-background-color-ghost);\n text-align: center;\n gap: 12px;\n flex-direction: column;\n display: flex;\n\n .overviewTitleIsent {\n color: var(--ant-primary-color);\n font-size: 13px;\n }\n\n .ant-tooltip-inner {\n display: flex;\n justify-content: center;\n width: 315px;\n padding: 5px;\n }\n`;\n","import _ from \"lodash\";\n\nexport const serializePatrimonio = (\n itemPatrimonio: any,\n corretoraFilter?: string[]\n) => {\n let posicoesFiltradas = itemPatrimonio?.posicoes || [];\n const corretoras = getTodasAsCorretoras(posicoesFiltradas);\n const corretorasSemFiltro = getTodasAsCorretoras(itemPatrimonio?.posicoesSemFiltro)\n if(corretoraFilter && corretoraFilter.length > 0) {\n const corretoraNames = corretoraFilter.map(c => getNomeCorretora({shortName: c}))\n posicoesFiltradas = posicoesFiltradas?.filter((p: any) => corretoraNames.includes(p.corretora))\n }\n\n const patrimonio = calculaSaldoCorretoras(\n posicoesFiltradas,\n itemPatrimonio?.posicao2019 || {}\n );\n\n const classesAtivos = calculaClassesAtivos(\n posicoesFiltradas,\n itemPatrimonio?.posicao2019 || {}\n );\n const posicoes = calculaPorcentagemPosicoes(posicoesFiltradas);\n\n return { patrimonio, classesAtivos, posicoes, corretoras, corretorasSemFiltro };\n};\n\nexport const getNomeCorretora = ({\n name,\n shortName,\n}: {\n name?: string;\n shortName?: string;\n}) => {\n const corretoras = [\n {\n name: \"XP INVESTIMENTOS CCTVM S/A\",\n shortName: \"XP Investimentos\",\n },\n {\n name: \"NU INVEST CORRETORA DE VALORES S.A.\",\n shortName: \"Nubank\",\n },\n {\n name: \"INTER DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA\",\n shortName: \"Inter\",\n },\n {\n name: \"ORAMA DTVM S.A.\",\n shortName: \"Orama\",\n },\n {\n name: \"CLEAR CORRETORA - GRUPO XP\",\n shortName: \"Clear Corretora\",\n },\n {\n name: \"Exterior\",\n shortName: \"XP International\",\n },\n ];\n\n if (name) return corretoras.find((c) => c.name === name)?.shortName || name;\n if (shortName)\n return corretoras.find((c) => c.shortName === shortName)?.name || shortName;\n return \"\";\n};\n\nconst getCategoriaShortName = (categoria: string) => {\n if (categoria.includes(\"Fundos de Investimentos\")) return \"FIs\";\n if (categoria.includes(\"FII\")) return \"FIIs\";\n if (categoria.includes(\"BDR\")) return \"BDRs\";\n if (categoria.includes(\"ETF\")) return \"ETFs\";\n if (categoria.includes(\"Empréstimo de Ativos (Doador)\")) return \"Empréstimos (Doador)\";\n if (categoria.includes(\"Empréstimo de Ativos (Tomador)\")) return \"Empréstimos (Tomador)\";\n if (categoria.includes(\"TesouroDireto\")) return \"Tesouro Direto\";\n return categoria;\n};\n\nconst calculaSaldoCorretoras = (posicoes: any, posicao2019: any) => {\n const agrupadoPorCorretora = _.groupBy(posicoes, (p) => p.corretora);\n const saldosCorretoras = [];\n for (const corretora in agrupadoPorCorretora) {\n const saldo = agrupadoPorCorretora[corretora].reduce((prev, curr) => {\n return (prev || 0) + (curr?.posicao || 0);\n }, 0);\n saldosCorretoras.push({\n name: getNomeCorretora({ name: corretora }),\n value: saldo,\n });\n }\n\n return calculaPorgentagensCategorias(saldosCorretoras);\n};\n\nconst getTodasAsCorretoras = (posicoes: any) => {\n const agrupadoPorCorretora = _.groupBy(posicoes, (p) => p.corretora);\n const corretoras = Object.keys(agrupadoPorCorretora);\n return corretoras.map((c) => getNomeCorretora({ name: c }));\n};\n\nconst calculaClassesAtivos = (posicoes: any, posicao2019: any) => {\n const agrupadoPorCategoria = _.groupBy(posicoes, (p) => p.categoria);\n const saldosCategorias = [];\n for (const categoria in agrupadoPorCategoria) {\n const saldo = agrupadoPorCategoria[categoria].reduce((prev, curr) => {\n return (prev || 0) + (curr?.posicao || 0);\n }, 0);\n saldosCategorias.push({\n name: getCategoriaShortName(categoria),\n value: saldo,\n });\n }\n\n return calculaPorgentagensCategorias(saldosCategorias);\n};\n\nconst calculaPorgentagensCategorias = (\n saldosCategorias: Array<{ name: string; value: number }>\n) => {\n const totalSaldos = saldosCategorias.reduce(\n (acc, curr) => acc + curr.value,\n 0\n );\n\n const porcentagens = saldosCategorias.map((categoria) => ({\n name: categoria.name,\n value: categoria.value,\n percentage: Number(((categoria.value / totalSaldos) * 100).toFixed(1)),\n }));\n\n return porcentagens;\n};\n\nconst calculaPorcentagemPosicoes = (\n posicoes: {\n codigo: string;\n posicao: number;\n custoMedio: number;\n precoAtual: number;\n precoVenda: number;\n quantidade: number;\n categoria: string;\n corretora: string;\n hasPosition2019: boolean;\n }[]\n) => {\n if (!posicoes || posicoes.length === 0) return [];\n\n const patrimonioTotal = Number(\n posicoes.reduce((prev, curr) => prev + curr.posicao, 0).toFixed(2)\n );\n\n const posicoesOrdenadas = posicoes.sort((a, b) => {\n return b.posicao - a.posicao;\n });\n const quantidadeDeAtivosMostrados = 8;\n const porcentagens = [];\n\n for (\n let i = 0;\n i <\n (posicoesOrdenadas.length < quantidadeDeAtivosMostrados\n ? posicoesOrdenadas.length\n : quantidadeDeAtivosMostrados);\n i++\n ) {\n const posicao = posicoesOrdenadas[i];\n if (posicao.categoria === \"Exterior\" || !posicao.hasPosition2019) {\n const porcentagem = (posicao.posicao / patrimonioTotal) * 100;\n porcentagens.push({\n name: posicao.codigo,\n value: Number(posicao.posicao),\n percentage: Number(porcentagem.toFixed(1)),\n });\n }\n }\n\n let porcentagensOrdenadas = porcentagens.sort(\n (a, b) => a.percentage - b.percentage\n );\n\n if (porcentagensOrdenadas.length > quantidadeDeAtivosMostrados) {\n porcentagensOrdenadas = porcentagensOrdenadas.slice(\n 0,\n quantidadeDeAtivosMostrados\n );\n }\n\n let somatorioDasMaioresPorcentagens = 0;\n let somatorioDosMaioresValores = 0;\n for (const po of porcentagensOrdenadas) {\n somatorioDasMaioresPorcentagens += po.percentage;\n somatorioDosMaioresValores += po.value;\n }\n\n const ret = porcentagensOrdenadas.sort((a, b) => b.percentage - a.percentage);\n\n if (somatorioDasMaioresPorcentagens < 100) {\n ret.push({\n name: \"Outros\",\n value: patrimonioTotal - somatorioDosMaioresValores,\n percentage: Number((100 - somatorioDasMaioresPorcentagens).toFixed(2)),\n });\n }\n\n return ret;\n};\n","import { Col, Row } from \"antd\";\nimport { Button } from \"@mui/material\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\n\ninterface FooterModalProps {\n disabled?: boolean;\n onCancel: () => void;\n onOk?: () => void;\n loading?: boolean;\n cancelButtonText?: string;\n saveButtonText?: string;\n dark?: boolean;\n}\n\nexport const FooterModal: React.FC<FooterModalProps> = ({\n onOk,\n dark,\n loading,\n disabled,\n onCancel,\n saveButtonText,\n cancelButtonText,\n}) => {\n return (\n <Row gutter={[16, 16]}>\n <Col span={12}>\n <Button\n fullWidth\n size=\"large\"\n onClick={onCancel}\n disabled={disabled}\n color={dark ? \"inherit\" : \"primary\"}\n variant={dark ? \"contained\" : \"outlined\"}\n >\n {cancelButtonText || \"Cancelar\"}\n </Button>\n </Col>\n <Col span={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={disabled || loading}\n onClick={onOk ? onOk : undefined}\n type={onOk ? undefined : \"submit\"}\n >\n {saveButtonText || \"Salvar\"}\n {loading && <LoadingOutlined />}\n </Button>\n </Col>\n </Row>\n );\n};\n","import { Radio } from \"antd\";\nimport Masked from \"react-input-mask\";\nimport { forwardRef, ReactNode } from \"react\";\nimport NumberFormat from \"react-number-format\";\nimport { InputLabel, MenuItem, Select, TextField } from \"@mui/material\";\nimport { getMuiInputCss, isMobile } from \"../../utils\";\n\ninterface InputParams {\n label?: ReactNode;\n disabled?: boolean;\n placeholder?: string;\n maxLength?: number;\n className?: string;\n}\n\ninterface MaskInputParams extends InputParams {\n mask?: string;\n}\n\ninterface NumberInputParams extends InputParams {\n prefix?: string;\n decimalScale?: number;\n allowNegative?: boolean;\n}\n\ninterface SelectInputParams extends InputParams {\n defaultValue?: any;\n options?: { label: ReactNode; value: any }[];\n value?: any;\n}\n\ninterface RadioInputParams extends SelectInputParams {}\n\nexport const TextInput = ({ label, placeholder, disabled }: InputParams) => (\n <TextField\n variant=\"standard\"\n label={label}\n disabled={disabled}\n placeholder={placeholder}\n InputLabelProps={{\n shrink: true,\n }}\n />\n);\n\nexport const SelectLabled = ({\n options,\n label,\n disabled,\n value,\n defaultValue,\n ...rest\n}: SelectInputParams & {\n onChange?: Function;\n value?: any;\n defaultValue?: any;\n}) => {\n const handleChange = (e: any) => {\n rest.onChange?.(e.target.value);\n };\n\n return (\n <>\n <InputLabel id={`id-label-${label?.toString()}`}>{label}</InputLabel>\n <Select\n label={label}\n variant=\"standard\"\n disabled={disabled}\n onChange={handleChange}\n value={value ?? \"\"}\n defaultValue={defaultValue}\n labelId={`id-label-${label?.toString()}`}\n >\n {options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n </>\n );\n};\n\nexport const SelectInput = (props: SelectInputParams) => {\n return <SelectLabled {...props} />;\n};\n\nexport const NumberInput = ({\n label,\n maxLength,\n className,\n prefix = \"\",\n disabled = false,\n decimalScale = 2,\n placeholder = \"\",\n allowNegative = false,\n}: NumberInputParams) => {\n const NumberFormatCustom = forwardRef((props, ref) => (\n <NumberFormat\n {...props}\n prefix={prefix}\n getInputRef={ref}\n disabled={disabled}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n decimalScale={decimalScale}\n allowNegative={allowNegative}\n maxLength={maxLength}\n />\n ));\n\n return (\n <TextField\n label={label}\n variant=\"standard\"\n className={className}\n disabled={disabled}\n placeholder={placeholder}\n InputProps={{\n inputComponent: NumberFormatCustom as any,\n }}\n InputLabelProps={disabled || isMobile() ? { shrink: true } : {}}\n />\n );\n};\n\nexport const MaskInput = ({\n label,\n mask = \"\",\n placeholder = \"\",\n disabled = false,\n}: MaskInputParams) => {\n const MaskedCustom = forwardRef((props, ref) => (\n <Masked\n {...props}\n mask={mask}\n className={`MuiInputBase-input MuiInput-input ${getMuiInputCss()}`}\n />\n ));\n\n return (\n <TextField\n label={label}\n variant=\"standard\"\n disabled={disabled}\n placeholder={placeholder}\n InputProps={{\n inputComponent: MaskedCustom as any,\n }}\n InputLabelProps={{ shrink: true }}\n />\n );\n};\n\nexport const RadioInput = ({ options, disabled }: RadioInputParams) => {\n return (\n <Radio.Group>\n {(\n options || [\n { value: true, label: \"Sim\" },\n { value: false, label: \"Não\" },\n ]\n ).map((option) => (\n <Radio key={option.value} value={option.value} disabled={disabled}>\n {option.label}\n </Radio>\n ))}\n </Radio.Group>\n );\n};\n","import { ReactNode } from \"react\";\nimport { FormItemProps } from \"antd\";\nimport { currencyToNumber } from \"../../utils\";\nimport {\n MaskInput,\n NumberInput,\n TextInput,\n SelectInput,\n RadioInput,\n} from \"../inputs\";\nimport {\n validationFieldRequired,\n validationDate,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\n\ninterface FormItemParams extends FormItemProps {\n name: string;\n span?: number;\n align?: \"end\";\n disabled?: boolean;\n placeholder?: string;\n onChange?: (changed: any, values: any) => any;\n hide?: ((data: any) => boolean) | boolean;\n}\n\ninterface NumberFormItemParams extends FormItemParams {\n prefix?: string;\n decimalScale?: number;\n allowNegative?: boolean;\n maxLength?: number;\n}\n\ninterface MaskFormItemParams extends FormItemParams {\n mask?: string;\n}\n\ninterface SelectFormItemParams extends FormItemParams {\n options: { label: ReactNode; value: any }[];\n renderItem?: any;\n defaultValue?: any;\n mustUpdate?: boolean;\n value?: any;\n}\n\ninterface RadioFormItemParams extends Omit<SelectFormItemParams, \"options\"> {\n options?: { label: ReactNode; value: any }[];\n}\n\nexport const MaskFormItem = ({\n mask,\n label,\n placeholder,\n disabled,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n getValueFromEvent: undefined,\n input: MaskInput({\n mask,\n label,\n placeholder,\n disabled,\n }),\n});\n\nexport const DateFormItem = ({\n rules,\n label,\n placeholder,\n disabled,\n mask,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n getValueFromEvent: undefined,\n rules: rules ? rules : validationDate,\n input: MaskInput({\n mask: mask ?? \"99/99/9999\",\n placeholder: placeholder || \"01/01/2021\",\n disabled,\n label,\n }),\n});\n\nexport const DateFormItem2 = ({\n rules,\n label,\n placeholder,\n disabled,\n mask,\n ...rest\n}: MaskFormItemParams) => ({\n ...rest,\n getValueFromEvent: undefined,\n rules: rules ? rules : validationDate,\n input: MaskInput({\n mask: mask ?? \"9999/99/99\",\n disabled,\n label,\n }),\n});\n\nexport const TextFormItem = ({\n rules,\n placeholder,\n disabled,\n label,\n ...rest\n}: FormItemParams) => ({\n ...rest,\n rules: rules || [],\n getValueFromEvent: undefined,\n input: TextInput({ placeholder, disabled, label }),\n});\n\nexport const SelectFormItem = ({\n placeholder,\n disabled,\n options,\n label,\n rules,\n value,\n defaultValue,\n ...rest\n}: SelectFormItemParams) => ({\n ...rest,\n getValueFromEvent: undefined,\n rules: rules ?? validationFieldRequired,\n input: SelectInput({\n placeholder,\n disabled,\n options,\n label,\n defaultValue,\n value,\n }),\n});\n\nexport const RadioFormItem = ({\n disabled,\n options,\n label,\n rules,\n defaultValue,\n ...rest\n}: RadioFormItemParams) => ({\n ...rest,\n getValueFromEvent: undefined,\n rules: rules ?? validationFieldRequired,\n input: RadioInput({ disabled, options, defaultValue }),\n});\n\nexport const NumberFormItem = ({\n name,\n label,\n maxLength,\n rules = [],\n prefix = \"\",\n disabled = false,\n placeholder = \"\",\n decimalScale = 2,\n allowNegative = false,\n onChange,\n}: NumberFormItemParams) => ({\n name,\n label,\n rules,\n placeholder,\n getValueFromEvent: undefined,\n input: NumberInput({\n prefix,\n decimalScale,\n placeholder,\n allowNegative,\n disabled,\n label,\n maxLength,\n }),\n onChange: onChange\n ? onChange\n : (changed: any, values: any) =>\n changed[name]\n ? Number(changed[name].replace(/\\./g, \"\").replace(\",\", \".\")) || 0\n : values[name],\n});\n\nexport const CurrencyFormItem = ({\n name,\n label,\n rules,\n prefix = \"R$ \",\n disabled = false,\n decimalScale = 2,\n placeholder = \"R$ 0,00\",\n allowNegative = false,\n onChange,\n className,\n ...rest\n}: NumberFormItemParams) => ({\n ...rest,\n name,\n label,\n placeholder,\n getValueFromEvent: undefined,\n rules: rules === undefined ? validationNumberFieldPositive : rules,\n input: NumberInput({\n prefix,\n decimalScale,\n placeholder,\n allowNegative,\n disabled,\n label,\n className,\n }),\n onChange: onChange\n ? onChange\n : (changed: any, values: any) =>\n changed[name] ? currencyToNumber(changed[name], prefix) : values[name],\n});\n","import clsx from \"clsx\";\nimport { useState } from \"react\";\nimport { VscClose } from \"react-icons/vsc\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport NumberFormat from \"react-number-format\";\nimport { Form, List, message } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport { FooterModal } from \"../../components/FooterModal\";\nimport { Link } from \"react-router-dom\";\nimport {\n currencyToNumber,\n errorMessage,\n formatCurrency,\n isMobile,\n months,\n numberToPercentage,\n replaceDotByComma,\n zero,\n} from \"../../utils\";\nimport {\n validationDateIsOnReferenceMonth,\n validationFieldRequired,\n validationNumberAllowNegativeField,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\nimport {\n CurrencyFormItem,\n DateFormItem,\n NumberFormItem,\n TextFormItem,\n SelectFormItem,\n DateFormItem2,\n} from \"../formItems\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\n\nexport const TipoMercado: { [key: string]: string } = {\n mercado: \"Mercado à vista\",\n mercadoAVista: \"Mercado a Vista\",\n mercadoOpcoes: \"Mercado de opções\",\n outros: \"Outros mercados\",\n mercadoFracionario: \"Merc. Fracionário\",\n opcaoCompra: \"Opção de Compra\",\n opcaoVenda: \"Opção de Venda\",\n dayTrade: \"Day Trade\",\n};\n\nexport const TipoOperacao: { [key: string]: string } = {\n comum: \"Comum\",\n daytrade: \"Day Trade\",\n fii: \"FII\",\n};\n\nexport enum YearResumeStatusFromBackEnum {\n PAYED = \"PAYED\",\n PENDING = \"PENDING\",\n REGULAR = \"REGULAR\",\n NOT_PAYED = \"NOT_PAYED\",\n}\n\nexport enum YearResumeStatusCSSClassEnum {\n PAYED = \"payed\",\n PENDING = \"pending\",\n REGULAR = \"not-payed\",\n NOT_PAYED = \"not-payed\",\n}\n\nexport enum YearResumeStatusColorEnum {\n PAYED = \"var(--ant-success-color)\",\n PENDING = \"var(--ant-error-color)\",\n REGULAR = \"var(--ant-info-color-disabled)\",\n NOT_PAYED = \"var(--ant-warning-color)\",\n}\n\nexport enum YearResumeStatusTextEnum {\n PAYED = \"Imposto apurado\",\n PENDING = \"Imposto devido\",\n REGULAR = \"Não há imposto devido\",\n NOT_PAYED = \"DARF Emitido e não pago\",\n}\n\nexport interface IDarf {\n payed?: boolean;\n emitted?: boolean;\n multa: number;\n juros: number;\n buffer?: any;\n totalAlienado: number;\n totalGanho: number;\n aliquotaDevida: number;\n impostoDevido: number;\n impostoTotal: number;\n impostoAcumulado: number;\n totalImpostoDevido: number;\n memoriaCalculo: any[];\n impostoComumFinal?: number;\n impostoDTFinal?: number;\n impostoFIIFinal?: number;\n regular?: boolean;\n status?: keyof typeof YearResumeStatusFromBackEnum;\n}\n\nexport const defaultDarf: IDarf = {\n totalAlienado: 0,\n impostoDevido: 0,\n impostoTotal: 0,\n impostoAcumulado: 0,\n totalImpostoDevido: 0,\n aliquotaDevida: 0,\n totalGanho: 0,\n juros: 0,\n multa: 0,\n buffer: {},\n memoriaCalculo: [],\n status: \"REGULAR\",\n};\n\nexport interface IDarfBolsa {\n payed?: boolean;\n buffer?: any;\n emitted?: boolean;\n aliquotaComum?: number;\n aliquotaDT?: number;\n aliquotaFII?: number;\n alienacoesComum?: number;\n alienacoesDT?: number;\n alienacoesFII?: number;\n ganhoComum?: number;\n ganhoDT?: number;\n ganhoFII?: number;\n impostoComumFinal?: number;\n impostoDTFinal?: number;\n impostoFIIFinal?: number;\n impostoTotal?: number;\n impostoTotalFinal?: number;\n irrfComum?: number;\n irrfDayTrade?: number;\n irrfFII?: number;\n irrfTotal?: number;\n jurosAux?: number;\n mercadoOpcoesComum?: number;\n mercadoOpcoesDT?: number;\n mercadoOutrosComum?: number;\n mercadoOutrosDT?: number;\n mercadoOutrosFII?: number;\n mercadoVistaComum?: number;\n mercadoVistaDT?: number;\n multaAux?: number;\n memoriaCalculo: any[];\n impostoAcumulado?: number;\n impostoDevido?: number;\n multa?: number;\n juros?: number;\n prejuizoComum?: number;\n prejuizoDayTrade?: number;\n prejuizoFII?: number;\n userPrejuizoComum?: number;\n userPrejuizoDayTrade?: number;\n userPrejuizoFII?: number;\n userIrrfComum?: number;\n userIrrfDayTrade?: number;\n userIrrfFII?: number;\n userIrrfTotal?: number;\n varTotaisComum?: number;\n varTotaisDT?: number;\n varTotaisFII?: number;\n userCustoCorretagemComum?: number;\n userCustoCorretagemDT?: number;\n userCustoCorretagemFII?: number;\n}\n\nexport const defaultDarfBolsa: IDarfBolsa = {\n alienacoesComum: 0,\n alienacoesDT: 0,\n alienacoesFII: 0,\n buffer: {},\n impostoComumFinal: 0,\n impostoDTFinal: 0,\n impostoFIIFinal: 0,\n impostoTotal: 0,\n impostoTotalFinal: 0,\n irrfComum: 0,\n irrfDayTrade: 0,\n irrfFII: 0,\n irrfTotal: 0,\n jurosAux: 0,\n mercadoOpcoesDT: 0,\n mercadoOutrosComum: 0,\n mercadoOutrosDT: 0,\n mercadoVistaComum: 0,\n mercadoVistaDT: 0,\n multaAux: 0,\n memoriaCalculo: [],\n impostoAcumulado: 0,\n prejuizoComum: 0,\n prejuizoDayTrade: 0,\n prejuizoFII: 0,\n};\n\nexport const minDarfPrice = 10;\nexport const maxDarfPrice = 10000;\nexport const maxPixValue = 10000;\n\nconst MultaModalProps = {\n title: \"Multa de Atraso\",\n content: (\n <div>\n <p>\n O pagamento dos impostos deve ser feito sempre até o último dia útil do\n mês subsequente aos ganhos realizados.\n </p>\n <p>\n Caso você tenha atrasado no pagamento do seu DARF, a sua multa de atraso\n será de 0,33% por dia de atraso (chegando, no máximo, a 20%) sobre o\n valor do principal, calculados a partir do primeiro dia útil depois do\n dia do vencimento do DARF.\n </p>\n </div>\n ),\n};\n\nconst JurosModalProps = {\n title: \"Juros de Atraso\",\n content: (\n <div>\n <p>\n O pagamento dos impostos deve ser feito sempre até o último dia útil do\n mês subsequente aos ganhos realizados.\n </p>\n <p>\n Caso você tenha atrasado no pagamento do seu DARF, os seus juros de\n atraso serão equivalentes a taxa Selic acumulada até o mês anterior ao\n do pagamento, mais 1% no mês do pagamento, sobre o valor principal,\n contados a partir do mês subsequente ao vencimento do DARF.\n </p>\n </div>\n ),\n};\n\nexport const CorretagemModalProps = {\n title: \"Taxas de corretagem\",\n content: (\n <div>\n <p className=\"justify\">\n A Receita Federal admite a dedução dos custos de corretagem na apuração\n do ganho lÃquido em operações de renda variável. Entretanto, não há\n obrigatoriedade do usufruto do benefÃcio da dedução por parte dos\n investidores (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015,\n art. 56, § 3º). As informações advindas somente da integração com a B3\n não consideram o benefÃcio da dedução dos custos de corretagem da XP,\n incluindo somente as tarifas de liquidação, registro, termo/opções e\n emolumentos da B3. Caso deseje descontar os seus custos de corretagem\n dos ganhos tributáveis, você pode adicionar manualmente as taxas de\n corretagem em cada operação no campo “Taxas†ou inserir manualmente a\n soma das taxas de corretagem do mês neste campo.\n </p>\n </div>\n ),\n};\n\nexport const CustoMedioModal = {\n title: \"Custo Médio\",\n content: (\n <div>\n <p>\n Preencha o custo médio do ativo na aba{\" \"}\n <Link to=\"/xpinvestimentos/bolsa-insert-manual\">\n <b>Posição 31-12-2019</b>\n </Link>\n .\n </p>\n </div>\n ),\n};\n\nconst MinPriceModalProps = {\n title: <>DARF abaixo de {formatCurrency(minDarfPrice)}</>,\n content: (\n <div>\n <p>\n O sistema da Receita Federal não permite a emissão de um único DARF com\n valor abaixo de {formatCurrency(minDarfPrice)}.\n </p>\n <p>\n Caso seu DARF tenha ficado com um valor abaixo de{\" \"}\n {formatCurrency(minDarfPrice)}, o valor será repassado automaticamente\n para o mês seguinte e ficará visÃvel no campo{\" \"}\n <strong>\n <i>DARFs passados abaixo de {formatCurrency(minDarfPrice)}</i>\n </strong>\n .\n </p>\n </div>\n ),\n};\n\nconst IRRFModalProps = {\n title: <>IRRF (Imposto de Renda Retido na Fonte)</>,\n content: (\n <div>\n <p>\n Operações Comuns e FIIs: As operações comuns realizadas em bolsas de\n valores, de mercadorias, de futuros e de FIIs estão sujeitas à retenção\n do imposto sobre a renda incidente na fonte à alÃquota de 0,005% sobre o\n volume alienado.\n </p>\n <p>\n Operações Day Trade: As operações de Day Trade estão sujeitas à retenção\n do imposto sobre a renda incidente na fonte à alÃquota de 1% do ganho,\n independente do volume alienado no mês.\n </p>\n </div>\n ),\n};\n\nconst AliquotaModalProps = {\n title: \"AlÃquota sobre ganhos com criptoativos\",\n content: (\n <div>\n <p>\n Caso o valor total vendido no mês seja superior a R$ 35 mil, os ganhos\n obtidos serão tributados a tÃtulo de ganho de capital. As alÃquotas\n (percentuais) aplicadas sobre o lucro são progressivas:\n </p>\n <List>\n <List.Item>\n a) 15% sobre a parcela dos ganhos que não ultrapassar R$ 5.000.000,00;\n </List.Item>\n <List.Item>\n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00 e não\n ultrapassar R$ 10.000.000,00;\n </List.Item>\n <List.Item>\n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e não\n ultrapassar R$ 30.000.000,00; e\n </List.Item>\n <List.Item>\n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$ 30.000.000,00.\n </List.Item>\n </List>\n </div>\n ),\n};\n\nconst EmitirDarfModalProps = (onCancel: () => void, onOk: () => void) => ({\n title: \"Você confirma a emissão do DARF?\",\n footer: <FooterModal dark onCancel={onCancel} onOk={onOk} />,\n content: (\n <div>\n <p>\n O arquivo gerado ficará disponÃvel na aba Histórico e será enviado para\n o seu e-mail cadastrado.\n </p>\n </div>\n ),\n});\n\nconst ReemitirDarfModalProps = (onCancel: () => void, onOk: () => void) => ({\n title: \"Você confirma a emissão de um novo DARF?\",\n footer: <FooterModal dark onCancel={onCancel} onOk={onOk} />,\n content: (\n <div>\n <p>\n <b>Ao confirmar, o DARF anterior será substituido.</b> O arquivo gerado\n ficará disponÃvel na aba Histórico e será enviado para o seu e-mail\n cadastrado.\n </p>\n </div>\n ),\n});\n\nexport const DarfModal = (\n reemit: boolean,\n onCancel: () => void,\n onOk: () => void\n) =>\n reemit\n ? ReemitirDarfModalProps(onCancel, onOk)\n : EmitirDarfModalProps(onCancel, onOk);\n\ninterface IEdit {\n value: any;\n id: string;\n isEditting: boolean;\n}\ninterface DarfResultDescriptionsProps {\n id: string;\n label: (onClick: Function) => React.ReactNode;\n Component: React.FC<{\n data: IDarfBolsa;\n url: string;\n year: number;\n month: number;\n loading: boolean;\n disabled: boolean;\n view?: boolean;\n handleEdit?: Function;\n setDataCripto?: React.Dispatch<React.SetStateAction<IDarf>>;\n setDataBolsa?: React.Dispatch<React.SetStateAction<IDarfBolsa>>;\n valorPrincipal?: number;\n setEditedAccumulatedTax?: React.Dispatch<React.SetStateAction<boolean>>;\n getTaxes?: (\n a?: boolean,\n b?: boolean,\n atualizouImpostoAcumulado?: boolean,\n nAtualizarPrejuizosAcumulados?: boolean\n ) => void;\n }>;\n}\n\nexport const DarfResultDescriptions: DarfResultDescriptionsProps[] = [\n {\n id: \"impostoTotal\",\n label: () => \"(+) Valor do principal\",\n Component: ({ data, view }) => {\n return formatCurrency(\n Math.max(\n 0,\n Number(\n (data.impostoComumFinal || 0) +\n (data.impostoDTFinal || 0) +\n (data.impostoFIIFinal || 0)\n ) +\n (Number(data[\"impostoAcumulado\"] || 0) -\n Number(data[\"irrfTotal\"] || 0))\n )\n );\n },\n },\n {\n id: \"impostoTotal\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) Imposto devido\n </div>\n ),\n Component: ({ data, view }) => {\n return formatCurrency(\n Number(\n (data.impostoComumFinal || 0) +\n (data.impostoDTFinal || 0) +\n (data.impostoFIIFinal || 0)\n )\n );\n },\n },\n {\n id: \"impostoAcumulado\",\n label: (onClick: any) => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) DARFs passados abaixo de R$ {minDarfPrice}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MinPriceModalProps)}\n />\n </div>\n ),\n Component: ({\n data,\n year,\n month,\n loading,\n disabled,\n setDataBolsa,\n setDataCripto,\n url,\n getTaxes,\n setEditedAccumulatedTax,\n }) => {\n const { currentPage } = useBroker();\n const [edit, setEdit] = useState<IEdit>();\n const [editForm] = Form.useForm();\n const handleEditValue = (id: string) => {\n const value = data[id as keyof (IDarf | IDarfBolsa)];\n setEdit({ id, isEditting: true, value });\n editForm.setFieldsValue({ [id]: value });\n };\n\n const handleEditValueCancel = () => {\n setEdit(undefined);\n editForm.resetFields();\n };\n const handleEditValueConfirm = () => {\n if (edit && edit.value >= 0 && edit.value < minDarfPrice) {\n (currentPage?.api || apis)\n .post(`${url}/updateDataDarf`, {\n year,\n month: month + 1,\n [edit.id]: edit.value,\n })\n .then(() => {\n getTaxes?.(true, true, true, true);\n setEditedAccumulatedTax?.(true);\n return (setDataCripto ?? setDataBolsa)?.((data: any) => ({\n ...data,\n [edit.id]: edit.value,\n }));\n })\n .catch(() => message.error(errorMessage))\n .finally(() => handleEditValueCancel());\n } else {\n handleEditValueCancel();\n }\n };\n return edit && edit.isEditting && edit.id === \"impostoAcumulado\" ? (\n <div className=\"desc-content is-editting\">\n {!isMobile() && (\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n )}\n <Form\n form={editForm}\n onValuesChange={(changed) => {\n const value = currencyToNumber(changed.impostoAcumulado);\n editForm.setFieldsValue({ impostoAcumulado: value });\n setEdit((edit) => ({ ...edit!, value }));\n }}\n >\n <Form.Item\n name=\"impostoAcumulado\"\n rules={[\n {\n message: `Deve ser menor que ${minDarfPrice}`,\n validator: (rule, value) =>\n typeof value === \"number\" &&\n value >= 0 &&\n value < minDarfPrice\n ? Promise.resolve()\n : Promise.reject(),\n },\n ]}\n >\n <NumberFormat\n prefix=\"R$ \"\n decimalScale={2}\n disabled={loading}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n className=\"ant-input\"\n allowNegative={false}\n />\n </Form.Item>\n </Form>\n <Button\n type=\"primary\"\n onClick={handleEditValueConfirm}\n disabled={edit.value < 0 || edit.value >= minDarfPrice}\n >\n Ok\n </Button>\n {isMobile() && (\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n )}\n </div>\n ) : (\n <div\n className={clsx(\"desc-content\", {\n \"ml-40\": disabled,\n })}\n >\n {formatCurrency(Number(data.impostoAcumulado || 0))}\n {disabled && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEditValue(\"impostoAcumulado\")}\n />\n )}\n </div>\n );\n },\n },\n {\n id: \"irrfTotal\",\n label: (onClick: any) => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (-) Imposto de Renda Retido na Fonte\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(IRRFModalProps)}\n />\n </div>\n ),\n Component: ({ data, handleEdit, view }) => (\n <div\n className={`desc-content ${!view ? \"ml-40\" : \"\"}`}\n style={{ textAlign: \"center\" }}\n >\n {formatCurrency(Number((data as IDarfBolsa)[\"irrfTotal\"] || 0))}\n {!view && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEdit?.()}\n />\n )}\n </div>\n ),\n },\n {\n id: \"multa\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Multa de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MultaModalProps)}\n />\n </div>\n ),\n Component: ({ data, view, valorPrincipal }) =>\n // view\n // ? formatCurrency(data[\"multa\"] || 0)\n // :\n formatCurrency(\n (valorPrincipal || 0) < minDarfPrice ? 0 : data[\"multa\"] || 0\n ),\n },\n {\n id: \"juros\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Juros e/ou encargos de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(JurosModalProps)}\n />\n </div>\n ),\n Component: ({ data, view, valorPrincipal }) =>\n // view\n // ? formatCurrency(data[\"juros\"] || 0)\n // :\n formatCurrency(\n (valorPrincipal || 0) < minDarfPrice ? 0 : Number(data[\"juros\"] || 0)\n ),\n },\n];\n\nexport const DarfImpostosDevidosDescriptions = [\n {\n id: \"totalGanho\",\n label: () => \"Ganho total\",\n },\n {\n id: \"aliquotaDevida\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (x) AlÃquota devida\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(AliquotaModalProps)}\n />\n </div>\n ),\n render: (data: any) =>\n `${replaceDotByComma(\n Number((data[\"aliquotaDevida\"] || 0).toFixed(2))\n )} %`,\n },\n {\n id: \"impostoDevido\",\n label: () => \"Imposto devido\",\n render: (data: any, view?: boolean) =>\n formatCurrency(\n !view\n ? Number(data[\"impostoDevido\"] || 0)\n : Number(data[\"impostoDevido\"] || 0) -\n Number(data[\"impostoDevido\"] ? data[\"impostoAcumulado\"] || 0 : 0)\n ),\n },\n];\n\nexport const AddTransactionGOVFormItemRows = (hasLandingSide: boolean) => {\n if (!hasLandingSide)\n return [\n [FormItemsBolsa.id],\n [FormItemsBolsa.code(\"Ex: PETR3\")],\n [FormItemsBolsa.quantity(\"Ex: 100\")],\n [FormItemsBolsa.avgBuyPriceGOV],\n ];\n\n return [\n [FormItemsBolsa.id],\n [FormItemsBolsa.code(\"Ex: PETR3\")],\n [FormItemsBolsa.quantity(\"Ex: 100\")],\n [FormItemsBolsa.avgBuyPriceGOV],\n [FormItemsBolsa.lendingSide],\n ];\n};\n\nexport const AddTransactionFormItemRows = (hasLandingSide: boolean) => {\n if (!hasLandingSide)\n return [\n [FormItemsBolsa.id],\n [FormItemsBolsa.code(\"Ex: PETR3\")],\n [FormItemsBolsa.quantity(\"Ex: 100\")],\n [FormItemsBolsa.avgBuyPrice],\n ];\n\n return [\n [FormItemsBolsa.id],\n [FormItemsBolsa.code(\"Ex: PETR3\")],\n [FormItemsBolsa.quantity(\"Ex: 100\")],\n [FormItemsBolsa.avgBuyPrice],\n [FormItemsBolsa.lendingSide],\n ];\n};\n\nconst FormItemsBolsa = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n date: (month: number, year: number) =>\n DateFormItem({\n name: \"date\",\n label: `Dia do mês de ${months[month]}/${year}`,\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n code: (placeholder: string) =>\n TextFormItem({\n name: \"code\",\n label: \"Ativo\",\n placeholder,\n rules: validationFieldRequired,\n }),\n quantity: (placeholder: string) =>\n NumberFormItem({\n name: \"quantity\",\n label: \"Quantidade\",\n placeholder,\n decimalScale: 12,\n rules: validationNumberFieldPositive,\n }),\n avgBuyPrice: CurrencyFormItem({\n name: \"avgBuyPrice\",\n label: \"Custo de compra\",\n }),\n avgBuyPriceGOV: CurrencyFormItem({\n name: \"avgBuyPrice\",\n label: \"Custo médio de compra (por ação)\",\n }),\n price: CurrencyFormItem({ name: \"price\", label: \"Preço de venda\" }),\n feeB3: CurrencyFormItem({ name: \"feeB3\", label: \"Taxas\" }),\n capitalGain: CurrencyFormItem({\n name: \"capitalGain\",\n label: \"Ganho\",\n disabled: true,\n allowNegative: true,\n rules: validationNumberAllowNegativeField,\n onChange: (changed, values) => {\n const precoVenda = changed.price\n ? currencyToNumber(changed.price)\n : values.price;\n const custoCompra = changed.avgBuyPrice\n ? currencyToNumber(changed.avgBuyPrice)\n : values.avgBuyPrice;\n const taxas = changed.feeB3\n ? currencyToNumber(changed.feeB3)\n : values.feeB3;\n return Number(values.quantity) * (precoVenda - custoCompra) - taxas;\n },\n }),\n operacao: SelectFormItem({\n name: \"operacao\",\n label: \"Operação\",\n placeholder: \"Selecione\",\n mustUpdate: true,\n options: [\n { label: \"Comum\", value: \"Comum\" },\n { label: \"Day Trade\", value: \"Day Trade\" },\n { label: \"Fundos Imobiliários\", value: \"FII\" },\n ],\n }),\n market: ({ data }: any) => {\n const marketCorrect =\n data.market === \"Mercado a Vista Exercido\" ||\n data.market === \"Merc. Fracionário\";\n\n return SelectFormItem({\n name: \"market\",\n label: \"Mercado\",\n placeholder: \"Selecione\",\n options: [\n ...(marketCorrect ? [{ label: data.market, value: data.market }] : []),\n { label: \"Mercado à vista\", value: \"Mercado a Vista\" },\n ...(data.operacao !== \"FII\"\n ? [\n { label: \"Mercado de opções\", value: \"Mercado de opções\" },\n { label: \"Outros mercados\", value: \"Outros mercados\" },\n ]\n : []),\n ],\n onChange: (changed, values) =>\n values.operacao === \"FII\" && values.market !== \"Mercado a Vista\"\n ? \"Mercado a Vista\"\n : values.market,\n });\n },\n lendingSide: SelectFormItem({\n name: \"lendingSide\",\n label: \"Posição\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Doador\", value: \"Doador\" },\n { label: \"Tomador\", value: \"Tomador\" },\n ],\n }),\n};\n\nconst FormItemsDoacoesHerancas = {\n _id: TextFormItem({\n name: \"_id\",\n label: \"Id\",\n hidden: true,\n }),\n dateView: DateFormItem2({\n name: \"dateView\",\n label: \"Data\",\n mask: '99/99/9999',\n }),\n code: (placeholder: string) =>\n TextFormItem({\n name: \"code\",\n label: \"Ativo\",\n placeholder,\n rules: validationFieldRequired,\n }),\n quantity: (placeholder: string) =>\n NumberFormItem({\n name: \"quantity\",\n label: \"Quantidade\",\n placeholder,\n decimalScale: 12,\n rules: validationNumberFieldPositive,\n }),\n price: CurrencyFormItem({ name: \"price\", label: \"Custo médio de compra (por ação)\" }),\n};\n\nconst FormItemsCrypto = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n data: (month: number, year: number) =>\n DateFormItem({\n name: \"data\",\n label: `Dia do mês de ${months[month]}/${year}`,\n placeholder: `01/${zero(month + 1)}/${year}`,\n mask: `99/${zero(month + 1).replace(/[9]/g, `\\\\9`)}/${year\n .toString()\n .replace(/[9]/g, `\\\\9`)}`,\n rules: validationDateIsOnReferenceMonth(month, year),\n }),\n ativo: (placeholder: string) =>\n TextFormItem({\n name: \"ativo\",\n label: \"Ativo\",\n placeholder,\n rules: validationFieldRequired,\n }),\n quantidade: (placeholder: string) =>\n NumberFormItem({\n name: \"quantidade\",\n label: \"Quantidade\",\n placeholder,\n decimalScale: 12,\n rules: validationNumberFieldPositive,\n }),\n precoVenda: CurrencyFormItem({ name: \"precoVenda\", label: \"Preço de venda\" }),\n custoCompra: CurrencyFormItem({\n name: \"custoCompra\",\n label: \"Custo de compra\",\n }),\n taxas: CurrencyFormItem({ name: \"taxas\", label: \"Taxas\" }),\n ganho: CurrencyFormItem({\n name: \"ganho\",\n label: \"Ganho\",\n disabled: true,\n onChange: (changed, values) => {\n const precoVenda = changed.precoVenda\n ? currencyToNumber(changed.precoVenda)\n : values.precoVenda;\n const custoCompra = changed.custoCompra\n ? currencyToNumber(changed.custoCompra)\n : values.custoCompra;\n const taxas = changed.taxas\n ? currencyToNumber(changed.taxas)\n : values.taxas;\n return Number(\n Math.max(\n 0,\n Number(values.quantidade) * (precoVenda - custoCompra) - taxas\n ).toFixed(2)\n );\n },\n }),\n operacao: SelectFormItem({\n name: \"operacao\",\n label: \"Operação\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Comum\", value: \"comum\" },\n { label: \"Day Trade\", value: \"daytrade\" },\n ],\n }),\n mercado: SelectFormItem({\n name: \"mercado\",\n label: \"Mercado\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Mercado à vista\", value: \"mercado\" },\n { label: \"Mercado de opções\", value: \"mercadoOpcoes\" },\n { label: \"Outros mercados\", value: \"outros\" },\n ],\n }),\n};\n\nconst PrejuFormItems = {\n userPrejuizoComum: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"userPrejuizoComum\",\n label: \"PrejuÃzo Comum\",\n }),\n userPrejuizoDayTrade: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"userPrejuizoDayTrade\",\n label: \"PrejuÃzo Day Trade\",\n }),\n userPrejuizoFII: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"userPrejuizoFII\",\n label: \"PrejuÃzo FII\",\n }),\n};\n\nconst CorretagemFormItems = {\n userCustoCorretagemComum: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"userCustoCorretagemComum\",\n label: \"Operações Comum\",\n }),\n userCustoCorretagemDT: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"userCustoCorretagemDT\",\n label: \"Operações Day Trade\",\n }),\n userCustoCorretagemFII: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"userCustoCorretagemFII\",\n label: \"Operações FII\",\n }),\n};\n\nconst IrrfFormItem = {\n userIrrfComum: CurrencyFormItem({\n name: \"userIrrfComum\",\n label: \"IRRF Comum\",\n }),\n userIrrfDayTrade: CurrencyFormItem({\n name: \"userIrrfDayTrade\",\n label: \"IRRF Day Trade\",\n }),\n userIrrfFII: CurrencyFormItem({\n name: \"userIrrfFII\",\n label: \"IRRF FII\",\n }),\n userIrrfTotal: CurrencyFormItem({\n name: \"userIrrfTotal\",\n label: \"IRRF Total (Comum + Day Trade + FII)\",\n disabled: true,\n onChange: (changed, values) => {\n const userIrrfComum = changed.userIrrfComum\n ? currencyToNumber(changed.userIrrfComum)\n : values.userIrrfComum;\n const userIrrfDayTrade = changed.userIrrfDayTrade\n ? currencyToNumber(changed.userIrrfDayTrade)\n : values.userIrrfDayTrade;\n const userIrrfFII = changed.userIrrfFII\n ? currencyToNumber(changed.userIrrfFII)\n : values.userIrrfFII;\n return (\n Number(userIrrfComum ?? 0) +\n Number(userIrrfDayTrade ?? 0) +\n Number(userIrrfFII ?? 0)\n );\n },\n }),\n};\n\nexport const IrrfFormItemRows = [\n [IrrfFormItem.userIrrfComum],\n [IrrfFormItem.userIrrfDayTrade],\n [IrrfFormItem.userIrrfFII],\n [IrrfFormItem.userIrrfTotal],\n];\n\nexport const PrejuFormItemRows = (disabled: boolean) => [\n [PrejuFormItems.userPrejuizoComum(disabled)],\n [PrejuFormItems.userPrejuizoDayTrade(disabled)],\n [PrejuFormItems.userPrejuizoFII(disabled)],\n];\n\nexport const CorretagemFormItemRows = (disabled: boolean) => [\n [CorretagemFormItems.userCustoCorretagemComum(disabled)],\n [CorretagemFormItems.userCustoCorretagemDT(disabled)],\n [CorretagemFormItems.userCustoCorretagemFII(disabled)],\n];\n\nexport const DarfFormItemRows = (month: number, year: number) => [\n [FormItemsCrypto.id],\n [FormItemsCrypto.data(month, year), FormItemsCrypto.ativo(\"Ex: BTC\")],\n [FormItemsCrypto.quantidade(\"Ex: 0,00101\")],\n [FormItemsCrypto.precoVenda, FormItemsCrypto.custoCompra],\n [FormItemsCrypto.taxas],\n [FormItemsCrypto.ganho],\n];\n\nexport const DarfBolsaFormItemRows = (month: number, year: number) => [\n [FormItemsBolsa.id],\n [FormItemsBolsa.operacao, FormItemsBolsa.market],\n [FormItemsBolsa.date(month, year), FormItemsBolsa.code(\"Ex: PETR3\")],\n [FormItemsBolsa.quantity(\"Ex: 100\"), FormItemsBolsa.price],\n [FormItemsBolsa.avgBuyPrice, FormItemsBolsa.feeB3],\n [FormItemsBolsa.capitalGain],\n];\n\nexport const DoacoesHerancasRows = () => [\n [FormItemsDoacoesHerancas._id],\n [FormItemsDoacoesHerancas.code(\"Ex: PETR3\")],\n [FormItemsDoacoesHerancas.dateView],\n [FormItemsDoacoesHerancas.quantity(\"Ex: 100\")],\n [FormItemsDoacoesHerancas.price],\n];\n\nexport const DarfBolsaTabs: (\n data: IDarfBolsa,\n rest: any\n) => { class: string; tabs: { content: React.ReactNode }[] }[] = (\n data,\n rest\n) => {\n return [\n {\n class: \"header\",\n tabs: [\n {\n content: \"\",\n },\n {\n content: \"Comum\",\n },\n {\n content: \"Day Trade\",\n },\n {\n content: \"FII\",\n },\n ],\n },\n {\n class: \"sub-header\",\n tabs: [\n {\n content: \"Resultado\",\n },\n {\n content: formatCurrency(data.varTotaisComum ?? 0),\n },\n {\n content: formatCurrency(data.varTotaisDT ?? 0),\n },\n {\n content: formatCurrency(data.varTotaisFII ?? 0),\n },\n ],\n },\n {\n class: \"sub-header\",\n tabs: [\n {\n content: \"Ganhos tributáveis\",\n },\n {\n content: formatCurrency(data.ganhoComum ?? 0),\n },\n {\n content: formatCurrency(data.ganhoDT ?? 0),\n },\n {\n content: formatCurrency(data.ganhoFII ?? 0),\n },\n ],\n },\n {\n class: \"sub-header opacity\",\n tabs: [\n {\n content: (\n <>\n (-) PrejuÃzos a compensar\n {!rest.view && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={rest.handleEditPreju}\n />\n )}\n </>\n ),\n },\n {\n content: formatCurrency(\n data.userPrejuizoComum ?? data.prejuizoComum ?? 0\n ),\n },\n {\n content: formatCurrency(\n data.userPrejuizoDayTrade ?? data.prejuizoDayTrade ?? 0\n ),\n },\n {\n content: formatCurrency(\n data.userPrejuizoFII ?? data.prejuizoFII ?? 0\n ),\n },\n ],\n },\n {\n class: \"sub-header opacity\",\n tabs: [\n {\n content: \"(x) AlÃquota devida\",\n },\n {\n content: numberToPercentage(15, 0),\n },\n {\n content: numberToPercentage(20, 0),\n },\n {\n content: numberToPercentage(20, 0),\n },\n ],\n },\n {\n class: \"sub-header strong\",\n tabs: [\n {\n content: \"Imposto devido\",\n },\n {\n content: formatCurrency(data.impostoComumFinal ?? 0),\n },\n {\n content: formatCurrency(data.impostoDTFinal ?? 0),\n },\n {\n content: formatCurrency(data.impostoFIIFinal ?? 0),\n },\n ],\n },\n ];\n};\n","import { getLastBusinessDay } from \"../utils\";\n\nexport const getDolarQuote = (date: Date, quotes: any[]) => {\n const newDate15Day = new Date(new Date(date).setDate(15));\n let newDateLastMonth = new Date(\n newDate15Day.setMonth(newDate15Day.getMonth() - 1),\n );\n let isRuning = true;\n let count = 0;\n\n while (isRuning) {\n const lastBusinessDay = getLastBusinessDay(newDateLastMonth);\n const day =\n lastBusinessDay.getDate() <= 9\n ? `0${lastBusinessDay.getDate()}`\n : lastBusinessDay.getDate();\n const month =\n lastBusinessDay.getMonth() + 1 <= 9\n ? `0${lastBusinessDay.getMonth() + 1}`\n : lastBusinessDay.getMonth() + 1;\n const year = lastBusinessDay.getFullYear();\n\n const cotacaoCompra = quotes.find(q => `${day}/${month}/${year}` === q.dataHoraCotacao)?.cotacaoCompra\n if (cotacaoCompra || count === 5) {\n isRuning = false;\n return cotacaoCompra || 0;\n } else {\n newDateLastMonth = new Date(\n newDateLastMonth.setDate(newDateLastMonth.getDate() - 1),\n );\n }\n count += 1;\n\n }\n};\n\nexport const getQuoteFortnight = (date: Date, quotes: any) => {\n const newDate15Day = new Date(new Date(date).setDate(15));\n let newDateLastMonth = new Date(\n newDate15Day.setMonth(newDate15Day.getMonth() - 1),\n );\n let isRuning = true;\n let count = 0;\n\n while (isRuning) {\n const lastBusinessDay = getLastBusinessDay(newDateLastMonth);\n const day =\n lastBusinessDay.getDate() <= 9\n ? `0${lastBusinessDay.getDate()}`\n : lastBusinessDay.getDate();\n const month =\n lastBusinessDay.getMonth() + 1 <= 9\n ? `0${lastBusinessDay.getMonth() + 1}`\n : lastBusinessDay.getMonth() + 1;\n const year = lastBusinessDay.getFullYear();\n\n let cotacaoCompra;\n for (const key in quotes) {\n if (`${day}/${month}/${year}` === key) {\n cotacaoCompra = quotes[key]?.compra;\n }\n }\n if (cotacaoCompra || count === 5) {\n isRuning = false;\n return cotacaoCompra || 0;\n } else {\n newDateLastMonth = new Date(\n newDateLastMonth.setDate(newDateLastMonth.getDate() - 1),\n );\n }\n count += 1;\n\n }\n};\n","import { maxDarfPrice, minDarfPrice } from \"../../constants/darf\";\n\nexport const fator = (item: any) => {\n const value = (item.quantity || 0) * (item.sellPrice || 0);\n const code = item.code?.substring(0, 3)?.toUpperCase() || \"\";\n switch (code) {\n case \"WIN\":\n return value * 5;\n case \"WDO\":\n return value / 10;\n case \"DOL\":\n return value / 50;\n case \"IAP\":\n return value / 25;\n case \"ETN\":\n return value / 30;\n case \"ETH\":\n {\n if (item.code?.substring(3, 4)?.toUpperCase() == \"E\") return value\n else return value / 30\n }\n case \"SOY\":\n return value / 34;\n case \"CNY\":\n return value / 35;\n case \"EUR\":\n return value / 50;\n case \"ICF\":\n return value / 100;\n case \"KFE\":\n return value / 100;\n case \"OZ1\":\n return value / 250;\n case \"CCM\":\n {\n if (item.code?.substring(3, 4)?.toUpperCase() == \"E\") return value\n else return value / 450\n }\n case \"SFI\":\n return value / 450;\n case \"SJC\":\n return value / 450;\n case \"ACF\":\n return value / 508;\n case \"BGI\":\n return value / 330;\n case \"BIT\":\n {\n if (item.code?.substring(3, 4)?.toUpperCase() == \"H\") return value\n else return value / 0.1\n }\n default:\n return value;\n }\n};\n\nexport const vendasTotais = (item: any) => \n item.transactions.reduce((a: number, t: any) => a + fator(t), 0);\n\nconst exteriorTransactionsFilter = (el: any) =>\n (el.operation === \"SELL\" && !el?.type) ||\n (el.operation === \"SELL\" && el.manual) ||\n (el.operation === \"SELL\" &&\n (el.type === \"TRADE\" || el.type === \"WITHDRAW\")) ||\n el.type === \"INTEREST\";\n\nexport const vendasTotaisExt = (item: any) => {\n const vendasTotais = item.transactions?.filter(exteriorTransactionsFilter).reduce((a: number, t: any) => a + t.valor * t.cambioVenda, 0)\n \n return item.transactions ? vendasTotais : 0\n}\n \n\nexport const vendasIsentas = (item: any) => {\n const codigosIsentos = [\n \"FRTA3\",\n \"FRTA3F\",\n \"GSHP3\",\n \"GSHP3F\",\n \"NUTR3\",\n \"NUTR3F\",\n \"CRDE3\",\n \"CRDE3F\",\n \"PRNR3\",\n \"PRNR3F\",\n ];\n const vendasMercadoIsento = item.mercadoIsento || 0;\n const vendasMercadoComum =\n item.transactions\n ?.filter(\n (t: any) =>\n t.operacao === \"Comum\" &&\n !codigosIsentos.includes(t.code.toUpperCase())\n )\n ?.reduce((a: number, t: any) => a + fator(t), 0) || 0;\n return (\n vendasMercadoIsento + vendasMercadoComum\n );\n};\n\nexport const valueIsGreaterThanMin = (item: any) =>\n Math.max(\n 0,\n Number(\n (item?.impostoComumFinal || 0) +\n (item?.impostoDTFinal || 0) +\n (item?.impostoFIIFinal || 0)\n ) +\n (Number(item?.[\"impostoAcumulado\"] || 0) -\n Number(item?.[\"irrfTotal\"] || 0))\n ) >= minDarfPrice;\n\nexport const valueIsLessThanMax = (item: any) =>\n (item?.impostoTotalFinal || 0) <= maxDarfPrice;\n\nexport const showPayButton = (item: any) =>\n valueIsGreaterThanMin(item) &&\n valueIsLessThanMax(item) &&\n (item.status !== \"PAYED\" || !item.payed);\n\nexport const impostoCharge = (data?: any) => {\n const valorPrincipal = Math.max(\n 0,\n Number(\n (data?.impostoComumFinal || 0) +\n (data?.impostoDTFinal || 0) +\n (data?.impostoFIIFinal || 0)\n ) +\n (Number(data?.[\"impostoAcumulado\"] || 0) -\n Number(data?.[\"irrfTotal\"] || 0))\n );\n return (\n valorPrincipal +\n (valorPrincipal < minDarfPrice\n ? 0\n : (data?.multaAux ?? 0) + (data?.jurosAux ?? 0))\n );\n};\n","import { Collapse } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const PosicaoCardStyled = styled(Collapse.Panel)`\n margin-bottom: 4px;\n border: none !important;\n border-radius: 4px !important;\n background-color: var(--velotax-background-color-ghost);\n\n &:last-of-type {\n margin-bottom: 0;\n }\n\n .ant-collapse-header {\n height: 72px;\n background-color: transparent;\n padding: 24px 72px 24px 32px !important;\n .ant-collapse-arrow {\n right: 32px !important;\n }\n\n .header {\n width: 100%;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .title {\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n span {\n margin-left: 8px;\n font-weight: 600;\n font-size: 0.875rem;\n }\n }\n\n .posicao {\n font-weight: 600;\n font-size: 1.125rem;\n color: var(--velotax-font-color-light);\n }\n }\n }\n\n .ant-collapse-content {\n border: none;\n background-color: transparent;\n border-radius: 0 0 4px 4px !important;\n\n .ant-collapse-content-box {\n padding: 0 32px 32px;\n color: var(--velotax-font-color-light);\n & > div {\n & > span:first-child {\n width: 160px;\n display: inline-block;\n color: var(--velotax-font-color);\n }\n & > span:not(:first-child) {\n margin-left: 16px;\n font-weight: 500;\n .valorUSD {\n font-size: 11px;\n font-weight: 100;\n margin-left: 8px;\n color: var(--velotax-font-color);\n /* &.success {\n color: var(--ant-success-color);\n }\n &.error {\n color: var(--ant-error-color);\n } */\n }\n }\n }\n }\n }\n\n .hr-datails {\n margin: 15px 10px;\n opacity: 0.3;\n }\n\n .row-section {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n\n .recharts-wrapper {\n transform: translateX(12px);\n }\n }\n .chart-section {\n flex-grow: 1;\n width: 300px;\n overflow: visible;\n margin: 1rem 0 0 2rem;\n\n .recharts-surface {\n margin-left: 0 !important;\n }\n\n .recharts-text {\n font-weight: 300;\n font-size: 13px;\n }\n }\n\n .recharts-surface {\n overflow: visible;\n }\n\n .chart-tooltip {\n width: 200px;\n height: 60px;\n background-color: white;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.2);\n padding: 0.5rem 1rem;\n display: flex;\n flex-direction: column;\n\n text {\n &:first-of-type {\n font-weight: 500;\n }\n &:last-of-type {\n color: var(--ant-primary-8);\n }\n }\n }\n\n .info-section {\n margin-top: 8px;\n div {\n display: flex;\n span {\n &:first-of-type {\n width: 160px;\n color: var(--velotax-font-color);\n }\n &:not(:first-of-type) {\n margin-left: 16px;\n color: var(--velotax-font-color);\n }\n }\n }\n h5 {\n color: var(--velotax-font-color-light);\n }\n }\n\n .info-title {\n font-size: 13px;\n margin: 1rem 0 0 0;\n\n &:first-of-type {\n margin: 0;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-collapse-header {\n height: 64px;\n padding: 20px 48px 20px 16px !important;\n .ant-collapse-arrow {\n right: 16px !important;\n }\n .header {\n .title {\n min-width: 100px;\n font-size: 1rem;\n span {\n margin-left: 8px;\n font-size: 0.675rem;\n }\n }\n .posicao {\n font-size: 0.875rem;\n }\n }\n }\n .row-section {\n flex-wrap: wrap;\n .chart-section {\n margin: 0;\n }\n }\n .ant-collapse-content {\n .ant-collapse-content-box {\n padding: 0 16px 24px 16px;\n & > div {\n & > span:first-child {\n width: 128px;\n font-size: 0.75rem;\n letter-spacing: -0.5px;\n }\n & > span:not(:first-child) {\n font-size: 0.75rem;\n letter-spacing: -0.8px;\n }\n }\n }\n }\n }\n`;\n","import moment from \"moment\";\nimport { Typography } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { AiOutlineMinusCircle, AiOutlinePlusCircle } from \"react-icons/ai\";\nimport Loading from \"../../Loading\";\nimport { PosicaoCardStyled } from \"./styles\";\nimport { Posicao } from \"../../../contexts/CarteiraContext\";\nimport { CustoMedioModal } from \"../../../constants/darfBolsa\";\nimport { formatCurrency, numberToPercentageWallet } from \"../../../utils\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\n\nconst negativeToPositive = (n: number) => (n < 0 ? n * -1 : n);\n\nconst signal = (n: number) => (n > 0 ? \"+\" : n < 0 ? \"-\" : \"\");\n\nconst className = (n: number) => (n === 0 ? \"\" : n > 0 ? \"success\" : \"error\");\n\nexport const LucroPrejuizo: React.FC<{\n n?: number;\n p?: number;\n cotacao?: number;\n}> = ({ n, p, cotacao }) => (\n <span className={className(n || 0)}>\n {signal(n || 0)}\n {formatCurrency(negativeToPositive(n || 0))} ({signal(n || 0)}\n {numberToPercentageWallet(negativeToPositive(p || 0))})\n {cotacao && (\n <span className={`valorUSD ${className(n || 0)}`}>\n {signal(n || 0)}\n {formatCurrency(negativeToPositive(n ? n / cotacao : 0), \"US$ \")}\n </span>\n )}\n </span>\n);\n\nexport const HidenValue: React.FC<{\n block?: boolean;\n strong?: boolean;\n currency?: boolean;\n}> = ({ block, strong, currency = true }) => {\n const value = `${currency ? \"R$ \" : \"\"}****`;\n const content = strong ? <strong>{value}</strong> : value;\n return block ? <div>{content}</div> : <span>{content}</span>;\n};\n\ninterface PosicaoCardProps {\n key: string;\n posicao?: Partial<Posicao>;\n hideValues?: boolean;\n setHelpModal: Dispatch<SetStateAction<any>>;\n details?: any;\n loading?: boolean;\n cotacaoVenda?: number;\n}\n\nexport const PosicaoHeader = (\n posicao?: Partial<Posicao>,\n hideValues?: boolean\n) => {\n return (\n <div className=\"header\">\n <div className=\"title\" style={{ width: \"20px\", flexGrow: 1 }}>\n {posicao?.codigo || \"GOOGL\"}\n <span\n className={\n posicao?.categoria === \"Bonds\"\n ? className(posicao?.lucroPrejuizoTotal || 0)\n : className(posicao?.lucroPrejuizoDiario || 0)\n }\n hidden={posicao?.precoAtual ? false : true}>\n {posicao?.categoria === \"Bonds\"\n ? signal(posicao?.lucroPrejuizoTotal || 0)\n : signal(posicao?.lucroPrejuizoDiario || 0)}{\" \"}\n {numberToPercentageWallet(\n posicao?.categoria === \"Bonds\"\n ? negativeToPositive(posicao?.lucroPrejuizoTotalPercentual || 0)\n : negativeToPositive(posicao?.lucroPrejuizoDiarioPercentual || 0)\n )}\n </span>\n </div>\n <div className=\"posicao\">\n {hideValues ? (\n <HidenValue />\n ) : (\n (posicao?.precoAtual || posicao?.posicao)\n ? formatCurrency(\n posicao?.categoria === \"TesouroDireto\"\n ? posicao?.precoAtual || 0\n : posicao?.posicao || 0\n )\n : formatCurrency(negativeToPositive(posicao?.lucroPrejuizoTotal || 0))\n )}\n </div>\n </div>\n );\n};\n\nexport const PosicaoBody = (\n posicao: Partial<Posicao>,\n setHelpModal: Dispatch<SetStateAction<any>>,\n hideValues?: boolean,\n details?: any,\n loading?: boolean,\n cotacaoVenda?: number\n) => {\n return (\n <>\n <div>\n <span>Quantidade:</span>\n <span>\n {hideValues ? <HidenValue currency={false} /> : posicao.quantidade}\n </span>\n </div>\n <div hidden={posicao?.precoAtual ? false : true}>\n {posicao.categoria === \"TesouroDireto\" ? (\n <span>Valor atualizado:</span>\n ) : (\n <span>Preço atual:</span>\n )}\n <span>\n {hideValues ? (\n <HidenValue />\n ) : (\n formatCurrency(posicao.precoAtual || 0)\n )}\n {cotacaoVenda && (\n <span className=\"valorUSD\">\n {formatCurrency(\n posicao.precoAtual ? posicao.precoAtual / cotacaoVenda : 0,\n \"US$ \"\n )}\n </span>\n )}\n </span>\n </div>\n <div>\n {posicao?.loan?.typeLoan === \"Tomador\" && (\n <>\n <span>Preço de venda:</span>\n <span>\n {hideValues ? (\n <HidenValue />\n ) : (\n formatCurrency(posicao.precoVenda || 0)\n )}\n </span>\n </>\n )}\n </div>\n {posicao.hasPosition2019 && posicao?.loan?.typeLoan !== \"Tomador\" && (\n <div\n style={{\n cursor:\n posicao.custoMedio === 0 || !posicao.custoMedio\n ? \"pointer\"\n : \"default\",\n }}\n onClick={() =>\n posicao.custoMedio === 0 || !posicao.custoMedio\n ? setHelpModal(CustoMedioModal)\n : null\n }>\n <span>Custo médio de compra: </span>\n <span>\n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n <InfoCircleOutlined className=\"info-circle-red\" />\n ) : (\n formatCurrency(posicao.custoMedio)\n )}\n {cotacaoVenda && posicao.custoMedio && (\n <span className=\"valorUSD\">\n {formatCurrency(\n posicao.avgPriceUsd ? posicao.avgPriceUsd : 0,\n \"US$ \"\n )}\n </span>\n )}\n </span>\n </div>\n )}\n {!posicao.hasPosition2019 && posicao?.loan?.typeLoan !== \"Tomador\" && (\n <div>\n {posicao.categoria === \"TesouroDireto\" ? (\n <span>Valor Aplicado:</span>\n ) : (\n <span>Custo médio de compra:</span>\n )}\n <span>\n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n \"N/A\"\n ) : hideValues ? (\n <HidenValue />\n ) : (\n formatCurrency(posicao.custoMedio)\n )}\n {cotacaoVenda && posicao.custoMedio && (\n <span className=\"valorUSD\">\n {formatCurrency(\n posicao.avgPriceUsd ? posicao.avgPriceUsd : 0,\n \"US$ \"\n )}\n </span>\n )}\n </span>\n </div>\n )}\n {posicao.categoria !== \"TesouroDireto\" &&\n posicao.categoria !== \"Bonds\" && (\n <div hidden={posicao?.precoAtual ? false : true}>\n <span>Lucro/prejuÃzo diário: </span>\n {hideValues ? (\n <HidenValue />\n ) : (\n <LucroPrejuizo\n n={posicao.lucroPrejuizoDiario}\n p={posicao.lucroPrejuizoDiarioPercentual}\n cotacao={cotacaoVenda}\n />\n )}{\" \"}\n </div>\n )}\n {posicao.hasPosition2019 && (\n <div\n style={{\n cursor:\n posicao.lucroPrejuizoTotal === 0 || !posicao.lucroPrejuizoTotal\n ? \"pointer\"\n : \"default\",\n }}\n onClick={() =>\n posicao.lucroPrejuizoTotal === 0 || !posicao.lucroPrejuizoTotal\n ? setHelpModal(CustoMedioModal)\n : null\n }>\n <span>Lucro/prejuÃzo total:</span>{\" \"}\n {posicao.lucroPrejuizoTotal === 0 || !posicao.lucroPrejuizoTotal ? (\n <InfoCircleOutlined className=\"info-circle-red\" />\n ) : (\n <LucroPrejuizo\n n={posicao.lucroPrejuizoTotal}\n p={posicao.lucroPrejuizoTotalPercentual}\n cotacao={cotacaoVenda}\n />\n )}\n </div>\n )}\n {!posicao.hasPosition2019 && (\n <div hidden={posicao?.precoAtual ? false : true}>\n <span>Lucro/prejuÃzo total: </span>\n {posicao.custoMedio === 0 || !posicao.custoMedio ? (\n \"N/A\"\n ) : hideValues ? (\n <HidenValue />\n ) : (\n <LucroPrejuizo\n n={posicao.lucroPrejuizoTotal}\n p={posicao.lucroPrejuizoTotalPercentual}\n cotacao={cotacaoVenda}\n />\n )}\n </div>\n )}\n {details &&\n (details?.marketCap !== \"N/A\" ||\n details?.beta !== \"N/A\" ||\n details?.peRatio !== \"N/A\" ||\n details?.earningDate !== \"N/A\" ||\n details?.dividendYield !== \"N/A\" ||\n details?.targetPrice !== \"N/A\" ||\n details?.enterpriseValueRevenue !== \"N/A\" ||\n details?.enterpriseValueEbitda !== \"N/A\") && (\n <>\n <hr className=\"hr-datails\" />\n <div className=\"row-section\">\n <div className=\"info-section\">\n <Typography.Title level={5} className=\"info-title\">\n Negociação\n </Typography.Title>\n <div>\n <span>Captalização de mercado:</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : (\n <>\n {formatCurrency(\n Number(details?.marketCap || 0) / 1000000000\n )}{\" \"}\n B\n </>\n )}\n </span>\n </div>\n <div>\n <span>Preço-alvo da ação:</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : typeof details?.targetPrice === \"string\" ? (\n details?.targetPrice\n ) : (\n formatCurrency(details?.targetPrice)\n )}\n </span>\n </div>\n <div>\n <span>Dividend yield (1YFW):</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : typeof details?.dividendYield === \"string\" ? (\n details?.dividendYield\n ) : (\n `${(details?.dividendYield * 100)?.toFixed(2)}%`\n )}\n </span>\n </div>\n <div>\n <span>Divulgação de resultados:</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : (\n details?.earningDate\n )}\n </span>\n </div>\n <Typography.Title level={5} className=\"info-title\">\n Avaliação\n </Typography.Title>\n {/* <div>\n <span>Beta:</span>\n <span>\n {hideValues ? <HidenValue currency={false} /> : typeof details?.beta !== 'string' ? details?.beta?.toFixed(2) : details?.beta}\n </span>\n </div> */}\n <div>\n <span>EV/Receita (1YFW):</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : (\n `${\n typeof details?.enterpriseValueRevenue !== \"string\"\n ? `${details?.enterpriseValueRevenue?.toFixed(1)} x`\n : details?.enterpriseValueRevenue\n }`\n )}\n </span>\n </div>\n <div>\n <span>EV/EBITDA (1YFW):</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : (\n `${\n typeof details?.enterpriseValueEbitda !== \"string\"\n ? `${details?.enterpriseValueEbitda?.toFixed(1)} x`\n : details?.enterpriseValueEbitda\n }`\n )}\n </span>\n </div>\n <div>\n <span>P/E (1YFW):</span>\n <span>\n {hideValues ? (\n <HidenValue currency={false} />\n ) : (\n `${\n typeof details?.peRatio !== \"string\"\n ? `${details?.peRatio?.toFixed(1)}`\n : details?.peRatio\n } x`\n )}\n </span>\n </div>\n </div>\n {details?.chart?.length && (\n <div className=\"chart-section\">\n <ResponsiveContainer width=\"100%\" height={200}>\n <AreaChart\n data={details.chart}\n margin={{ top: 10, right: 10, left: 0, bottom: 0 }}>\n <defs>\n <linearGradient\n id=\"colorUv\"\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\">\n <stop\n offset=\"5%\"\n stopColor=\"#d49b00\"\n stopOpacity={0.8}\n />\n <stop\n offset=\"95%\"\n stopColor=\"#d49b00\"\n stopOpacity={0}\n />\n </linearGradient>\n </defs>\n <XAxis\n dataKey=\"date\"\n tickCount={4}\n type=\"category\"\n interval={80}\n tickFormatter={(v) => {\n const date = new Date(v);\n return `${date.getMonth() + 1}/${date.getFullYear()}`;\n }}\n />\n <YAxis orientation=\"right\" />\n <CartesianGrid strokeDasharray=\"3 3\" />\n <Tooltip\n content={({ payload, label }) => (\n <div className=\"chart-tooltip\">\n <text>\n {moment(new Date(label)).format(\"DD/MM/YYYY\")}\n </text>\n <text>\n Cotação:{\" \"}\n {formatCurrency(Number(payload?.[0]?.value || 0))}\n </text>\n </div>\n )}\n />\n <Area\n type=\"monotone\"\n dataKey=\"price\"\n stroke=\"#d49b00\"\n fillOpacity={1}\n fill=\"url(#colorUv)\"\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n )}\n </div>\n </>\n )}\n {loading && (\n <div style={{ height: \"150px\" }}>\n <Loading />\n </div>\n )}\n </>\n );\n};\n\nexport const PosicaoCard = ({\n key,\n posicao,\n hideValues,\n setHelpModal,\n details,\n loading,\n cotacaoVenda,\n}: PosicaoCardProps) => (\n <PosicaoCardStyled key={key} header={PosicaoHeader(posicao, hideValues)}>\n {posicao\n ? PosicaoBody(\n posicao,\n setHelpModal,\n hideValues,\n details,\n loading,\n cotacaoVenda\n )\n : null}\n </PosicaoCardStyled>\n);\n\nexport const ExpandIcon = ({ isActive }: { isActive?: boolean }) =>\n isActive ? (\n <AiOutlineMinusCircle\n style={{\n fontSize: \"22px\",\n color: \"var(--ant-primary-color)\",\n }}\n />\n ) : (\n <AiOutlinePlusCircle\n style={{\n fontSize: \"22px\",\n color: \"var(--ant-primary-color)\",\n }}\n />\n );\n","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { BiCheck } from \"react-icons/bi\";\nimport { GrUpdate } from \"react-icons/gr\";\nimport { BsDownload } from \"react-icons/bs\";\nimport { AiOutlineLock } from \"react-icons/ai\";\nimport { Fragment, useEffect, useMemo, useState } from \"react\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n Collapse,\n Modal,\n Row,\n Typography,\n message,\n Select,\n Tooltip,\n Checkbox,\n} from \"antd\";\nimport {\n PieChart,\n Pie,\n Cell,\n Legend,\n ResponsiveContainer,\n Tooltip as RechartsTooltip,\n} from \"recharts\";\nimport Button from \"../../components/Button\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport AntButton from \"../../components/Button\";\nimport HandleTag from \"../../services/handleTag\";\nimport apiVeloPro from \"../../services/apiVeloPro\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport apiExterior from \"../../services/apiExterior\";\nimport { ReportTypeDrawer } from \"../ReportType/ReportType\";\nimport { Posicao, useCarteira } from \"../../contexts/CarteiraContext\";\nimport { chartColors, getProviderColor } from \"../../utils/walletCharts\";\nimport { BlurContent, Container, Content, IsentCardStyled } from \"./styles\";\nimport { ReactComponent as FiltroIcon } from \"../../assets/icons/filtro.svg\";\nimport { getNomeCorretora, serializePatrimonio } from \"../../utils/patrimonio\";\nimport {\n vendasIsentas,\n vendasTotaisExt,\n} from \"../../pages/HistoricBolsa/utils\";\nimport {\n ExpandIcon,\n HidenValue,\n LucroPrejuizo,\n PosicaoCard,\n} from \"./PosicaoCard\";\nimport {\n download,\n downloadPDF,\n formatCurrency,\n isMobile,\n numberToCurrency,\n} from \"../../utils\";\nimport { useNavigate } from \"react-router-dom\";\n\ntype ChartType = \"classe\" | \"posicoes\" | \"corretora\";\n\ninterface CarteiraProps {\n hideValues: boolean;\n}\n\nconst Months: any = {\n 0: \"Janeiro\",\n 1: \"Fevereiro\",\n 2: \"Março\",\n 3: \"Abril\",\n 4: \"Maio\",\n 5: \"Junho\",\n 6: \"Julho\",\n 7: \"Agosto\",\n 8: \"Setembro\",\n 9: \"Outubro\",\n 10: \"Novembro\",\n 11: \"Dezembro\",\n};\n\nexport const Carteira: React.FC<CarteiraProps> = ({ hideValues }: any) => {\n const {\n user,\n showUserPlanModal,\n hasPlan: hasPremiunPlan,\n hasPermissionExterior,\n hasPermissionGeneral,\n } = useAuth();\n const hasPlan =\n (hasPremiunPlan || hasPermissionExterior || hasPermissionGeneral)\n && !user?.user?.userPlanInfoVelotax?.type?.includes('BASIC');\n const { carteira, lastUpdate, loading, getCarteira, getPatrimonios, updateFilter, posicoesFilter, setPosicoesFilter } =\n useCarteira();\n\n const navigate = useNavigate();\n const [helpModal, setHelpModal] = useState<any>();\n const [loadingReport, setLoadingReport] = useState(false);\n const [chartType, setChartType] = useState<ChartType>(\"classe\");\n const [classesAtivosChart, setClassesAtivosChart] = useState<any>();\n const [corretorasAtivosChart, setCorretorasAtivosChart] = useState<any>();\n const [ativosChart, setAtivosChart] = useState<any>();\n const [vendasBolsa, setVendasBolsa] = useState<any>(0);\n const [corretoras, setCorretoras] = useState<string[]>([]);\n const [corretorasSemFiltro, setCorretorasSemFiltro] = useState<string[]>([]);\n const [vendasExterior, setVendasExterior] = useState<any>(0);\n const [checkboxCorretoras, setCheckboxCorretoras] = useState<string[]>([]);\n const [selectedCorretoras, setSelectedCorretoras] = useState<string[]>([]);\n const [reportDrawerWallet, setReportDrawerWallet] = useState(false);\n const [vendasRestantesBolsa, setVendasRestantesBolsa] = useState<any>(0);\n const [filterCorretoraAtivo, setFilterCorretoraAtivo] = useState<string[]>(\n []\n );\n const [vendasRestantesExterior, setVendasRestantesExterior] =\n useState<any>(0);\n const [showCorretoraFilterModal, setShowCorretoraFilterModal] =\n useState(false);\n const [showPosicoesFilterModal, setShowPosicoesFilterModal] = useState(false);\n const [activeKeys, setActiveKeys] = useState<string[]>([]);\n const [, setDetailedActiveKeys] = useState<string[]>([]);\n const [detailedLoadingIndex, setDetailedLoadingIndex] = useState<\n number | undefined\n >(undefined);\n const [detailedPositions, setDetailedPositions] = useState<any[]>([]);\n\n const checkAll = corretoras.length === checkboxCorretoras.length;\n const indeterminate =\n checkboxCorretoras.length > 0 &&\n checkboxCorretoras.length < corretoras.length;\n\n const onCloseHelpModal = () => setHelpModal(undefined);\n\n const largeChart =\n [\n ...(chartType === \"classe\"\n ? classesAtivosChart || []\n : chartType === \"corretora\"\n ? corretorasAtivosChart || []\n : ativosChart || []),\n ].length > 7;\n\n const carteiraCategorizada = useMemo(\n () =>\n (carteira?.posicoesSemFiltro || []).reduce(\n (acc, cur) => ({\n ...acc,\n [cur.categoria]: [...(acc[cur.categoria] || []), cur],\n }),\n {} as { [key: string]: Posicao[] }\n ) || {},\n [carteira.posicoesSemFiltro]\n );\n const carteiraCategorizadaFiltered = useMemo(\n () =>\n (carteira?.posicoes || []).reduce(\n (acc, cur) => ({\n ...acc,\n [cur.categoria]: [...(acc[cur.categoria] || []), cur],\n }),\n {} as { [key: string]: Posicao[] }\n ) || {},\n [carteira.posicoes]\n );\n\n const patrimonioTotalFiltrado = useMemo(\n () =>\n carteira?.posicoes?.reduce(\n (acc, cur) =>\n filterCorretoraAtivo.includes(cur.corretora)\n ? acc + cur.posicao\n : acc,\n 0\n ) || 0,\n [carteira?.posicoes, filterCorretoraAtivo]\n );\n\n const retornoFiltrado = useMemo(\n () =>\n carteira?.posicoes?.reduce(\n (acc, cur) =>\n filterCorretoraAtivo.includes(cur.corretora)\n ? {\n lucroPrejuizoDiario:\n acc.lucroPrejuizoDiario + cur.lucroPrejuizoDiario,\n lucroPrejuizoDiarioPercentualNumerator:\n acc.lucroPrejuizoDiarioPercentualNumerator +\n (cur.categoria === \"TesouroDireto\"\n ? 0\n : cur.resumo?.lucroPrejuizoDiarioPercentualNumerator),\n lucroPrejuizoDiarioPercentualDenominator:\n acc.lucroPrejuizoDiarioPercentualDenominator +\n (cur.categoria === \"TesouroDireto\"\n ? 0\n : cur.resumo?.lucroPrejuizoDiarioPercentualDenominator),\n lucroPrejuizoTotal:\n acc.lucroPrejuizoTotal + cur.lucroPrejuizoTotal,\n lucroPrejuizoTotalPercentualNumerator:\n acc.lucroPrejuizoTotalPercentualNumerator +\n cur.resumo?.lucroPrejuizoTotalPercentualNumerator,\n lucroPrejuizoTotalPercentualDenominator:\n acc.lucroPrejuizoTotalPercentualDenominator +\n cur.resumo?.lucroPrejuizoTotalPercentualDenominator,\n }\n : acc,\n {\n lucroPrejuizoDiario: 0,\n lucroPrejuizoDiarioPercentualNumerator: 0,\n lucroPrejuizoDiarioPercentualDenominator: 0,\n lucroPrejuizoTotal: 0,\n lucroPrejuizoTotalPercentualNumerator: 0,\n lucroPrejuizoTotalPercentualDenominator: 0,\n }\n ) || {\n lucroPrejuizoDiario: 0,\n lucroPrejuizoDiarioPercentualNumerator: 0,\n lucroPrejuizoDiarioPercentualDenominator: 0,\n lucroPrejuizoTotal: 0,\n lucroPrejuizoTotalPercentualNumerator: 0,\n lucroPrejuizoTotalPercentualDenominator: 0,\n },\n [carteira?.posicoes, filterCorretoraAtivo]\n );\n\n const onChangeActiveKeys = (keys: string | string[]) => {\n const isOpenEvent = keys.length > activeKeys.length;\n const lastOpened = keys[keys.length - 1];\n\n setActiveKeys(keys as string[]);\n let codigo =\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[3] ||\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[2];\n let market =\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[0] ||\n lastOpened?.replaceAll(\" \", \"\").split(\"-\")[1];\n let index = lastOpened?.replaceAll(\" \", \"\").split(\"-\")[1];\n if (\n lastOpened.includes(\"Imobiliário\") ||\n lastOpened.includes(\"Traded\") ||\n lastOpened.includes(\"Brazilian\")\n ) {\n codigo = lastOpened?.replaceAll(\" \", \"\").replace(\"-\", \"\").split(\"-\")[2];\n index = lastOpened?.replaceAll(\" \", \"\").replace(\"-\", \"\").split(\"-\")[1];\n }\n\n if (lastOpened && isOpenEvent) {\n setDetailedActiveKeys((detailedActiveKeys) => {\n if (\n !detailedActiveKeys.includes(lastOpened) &&\n keys.length > detailedActiveKeys.length\n ) {\n setDetailedLoadingIndex(Number(index));\n apiBolsa\n .get(`/xpinvestimentos/detalied/${codigo}`, {\n params: {\n exterior:\n market.toLowerCase() === \"exterior\" ? true : undefined,\n },\n })\n .then(({ data }: any) => {\n setDetailedPositions((positions) => [\n ...positions,\n {\n index,\n codigo: codigo,\n details: data,\n },\n ]);\n return [...detailedActiveKeys, lastOpened];\n })\n .finally(() => {\n setDetailedLoadingIndex(undefined);\n });\n }\n return detailedActiveKeys;\n });\n }\n };\n\n useEffect(() => {\n getCarteira();\n }, [getCarteira]);\n\n useEffect(() => {\n apiBolsa\n .get(\"/velotax/historic\", {\n params: {\n month: new Date().getMonth() + 1,\n },\n })\n .then((res) => {\n const isentas = vendasIsentas(res?.data);\n setVendasBolsa(isentas);\n setVendasRestantesBolsa(20000 - isentas);\n });\n }, []);\n\n useEffect(() => {\n apiExterior\n .get(\"/velotax/exterior/historic\", {\n params: {\n month: new Date().getMonth() + 1,\n },\n })\n .then((res) => {\n const isentas = vendasTotaisExt(res?.data)\n setVendasExterior(isentas);\n setVendasRestantesExterior(35000 - isentas);\n });\n }, []);\n\n useEffect(() => {\n const { classesAtivos, patrimonio, posicoes, corretoras, corretorasSemFiltro } =\n serializePatrimonio(carteira, selectedCorretoras);\n setClassesAtivosChart(classesAtivos);\n setCorretorasAtivosChart(patrimonio);\n setAtivosChart(posicoes);\n setCorretoras(corretoras);\n setCorretorasSemFiltro(corretorasSemFiltro)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, selectedCorretoras]);\n\n const downloadAction = async (type: string) => {\n try {\n setLoadingReport(true);\n if (type === \"pdf\") {\n const queryCorretoras =\n filterCorretoraAtivo?.length > 0\n ? `?corretoras=${JSON.stringify(filterCorretoraAtivo).replace(\n /\\]|\"|\\[/g,\n \"\"\n )}`\n : \"\";\n const res = await apiBolsa.get(\n `/xpinvestimentos/wallet/report${queryCorretoras}`\n );\n if (res.data.file && !isMobile()) {\n downloadPDF(res.data.file, \"Meus investimentos\");\n } else if (res.data.fileUrl && !isMobile()) {\n download(res.data.fileUrl);\n }\n message.success(\"O relatório foi enviado para o seu e-mail\");\n } else if (type === \"xlsx\") {\n if (filterCorretoraAtivo?.length > 0) {\n const res = await apiVeloPro.post(\n \"/clients/downloadRelatorioPatrimonioXlsx\",\n {\n username: user.user.cpf,\n corretoras: filterCorretoraAtivo,\n }\n );\n if (!isMobile()) download(res?.data?.fileUrl);\n message.success(\"O relatório foi enviado para o seu e-mail\");\n } else {\n const data = await getPatrimonios(user?.user?.cpf);\n if (!isMobile()) download(data.fileUrl);\n message.success(\"O relatório foi enviado para o seu e-mail\");\n }\n }\n } catch (err: any) {\n message.error(\n `Não foi possÃvel baixar o relatório de investimentos. Tente novamente mais tarde`\n );\n } finally {\n setLoadingReport(false);\n }\n };\n\n const renderLegend = (value: string, entry: any) => {\n return <span>{value}</span>;\n };\n\n const renderIsentCard = (categoria: string) => {\n if (categoria === \"Ações\") {\n const vendas = categoria === \"Ações\" ? vendasBolsa : vendasExterior;\n const restante =\n categoria === \"Ações\" ? vendasRestantesBolsa : vendasRestantesExterior;\n const limit = categoria === \"Ações\" ? 20000 : 35000;\n const tipVendas = vendas\n ? `R$ ${String(\n vendas.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n )}`\n : \"R$ 0,00\";\n const complete = vendas ? (vendas / limit) * 100 : 0;\n\n return (\n <IsentCardStyled>\n {restante <= 0 ? (\n <Typography.Text className=\"overviewTitleIsent\">\n O seu limite de vendas isentas foi atingido neste mês\n </Typography.Text>\n ) : (\n <Typography.Text className=\"overviewTitleIsent\">\n Você ainda possui{\" \"}\n <span style={{ fontWeight: \"700\" }}>\n {formatCurrency(restante)}{\" \"}\n </span>{\" \"}\n em vendas isentas em{\" \"}\n <span style={{ fontWeight: \"700\" }}>\n {Months[new Date().getMonth()]} {new Date().getFullYear()}\n </span>\n </Typography.Text>\n )}\n <div className=\"progress_container\">\n <Tooltip\n title={`Vendas no mês: ${tipVendas}`}\n getPopupContainer={(target) => target.parentElement!}\n >\n <div\n className=\"loading_bar\"\n style={{\n width: `${complete >= 100 ? 100 : complete}%`,\n borderBottomRightRadius: complete >= 100 ? \"50px\" : 0,\n borderTopRightRadius: complete >= 100 ? \"50px\" : 0,\n }}\n >\n <div className=\"progress_container_text_align_center\">\n {vendas > 5000 ? formatCurrency(vendas) : \"\"}\n </div>\n </div>\n </Tooltip>\n </div>\n {/* </Tooltip> */}\n </IsentCardStyled>\n );\n }\n };\n\n const renderCustomizedLabel = ({\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n percent,\n payload,\n }: any) => {\n const RADIAN = Math.PI / 180;\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n let fill = chartColors.find(\n (colors) => colors.background === payload.fill\n )?.label;\n if (payload.fill === \"#FCC102\") fill = \"#5a4709\";\n\n return (\n <text\n x={x}\n y={y}\n fill={fill}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fontSize={10}\n style={{ margin: \"10px\" }}\n >\n {percent * 100 > 5 && `${(percent * 100).toFixed(0)}%`}\n </text>\n );\n };\n\n return (\n <Container>\n {/* <Typography.Title level={1} className=\"page-title\">\n Meus investimentos\n {hasPlan && (\n <AntButton\n type=\"link\"\n size=\"large\"\n className=\"download-report-btn\"\n icon={!loadingReport ? <BsDownload /> : <LoadingOutlined />}\n onClick={() => downloadAction()}\n />\n )}\n <AntButton\n type=\"link\"\n size=\"large\"\n className=\"hide-values-btn\"\n icon={hideValues ? <BsEyeSlash /> : <BsEye />}\n />\n </Typography.Title> */}\n {/* <Toolbar>\n <StatusBar />\n </Toolbar> */}\n <Content className=\"velotax-content\">\n <div className=\"container-btn\">\n <AntButton\n type=\"text\"\n size=\"large\"\n icon={<FiltroIcon />}\n className=\"download-report-btn filter-btn\"\n onClick={() => setShowCorretoraFilterModal(true)}\n >\n Filtrar\n </AntButton>\n {hasPlan && <Tooltip\n title=\"Baixar Relatório de investimentos\"\n getPopupContainer={(target) => target.parentElement!}\n >\n <AntButton\n type=\"text\"\n size=\"large\"\n className=\"download-report-btn\"\n icon={loadingReport ? <LoadingOutlined /> : <BsDownload />}\n onClick={() => setReportDrawerWallet(true)}\n />\n </Tooltip>}\n </div>\n <Row align=\"middle\" className=\"patrimonio\">\n <Col xs={24} sm={14}>\n <Typography.Title level={2}>Investimento total:</Typography.Title>\n <Typography.Title level={1} style={{ color: \"white\" }}>\n {loading ? (\n <LoadingOutlined />\n ) : !hideValues ? (\n formatCurrency(\n filterCorretoraAtivo.length > 0\n ? patrimonioTotalFiltrado\n : carteira.patrimonioTotal\n )\n ) : (\n <HidenValue />\n )}\n </Typography.Title>\n </Col>\n <Col xs={24} sm={10} className=\"lucro-prejuizo\">\n <Row>\n <Col xs={12} sm={24}>\n <Typography.Paragraph>\n Retorno diário:{\" \"}\n {loading ? (\n <LoadingOutlined />\n ) : !hideValues ? (\n <LucroPrejuizo\n n={\n filterCorretoraAtivo.length > 0\n ? retornoFiltrado.lucroPrejuizoDiario\n : carteira.lucroPrejuizoDiario\n }\n p={\n filterCorretoraAtivo.length > 0\n ? retornoFiltrado.lucroPrejuizoDiarioPercentualNumerator /\n retornoFiltrado.lucroPrejuizoDiarioPercentualDenominator\n : carteira.lucroPrejuizoDiarioPercentual\n }\n />\n ) : (\n <HidenValue block strong />\n )}\n </Typography.Paragraph>\n </Col>\n <Col xs={12} sm={24}>\n <Typography.Paragraph>\n Retorno total:{\" \"}\n {loading ? (\n <LoadingOutlined />\n ) : !hideValues ? (\n <LucroPrejuizo\n n={\n filterCorretoraAtivo.length > 0\n ? retornoFiltrado.lucroPrejuizoTotal\n : carteira.lucroPrejuizoTotal\n }\n p={\n filterCorretoraAtivo.length > 0\n ? retornoFiltrado.lucroPrejuizoTotalPercentualNumerator /\n retornoFiltrado.lucroPrejuizoTotalPercentualDenominator\n : carteira.lucroPrejuizoTotalPercentual\n }\n />\n ) : (\n <HidenValue block strong />\n )}\n </Typography.Paragraph>\n </Col>\n </Row>\n </Col>\n </Row>\n <ReportTypeDrawer\n open={reportDrawerWallet}\n loading={loadingReport}\n setType={(type: string) => downloadAction(type)}\n onClose={() => setReportDrawerWallet(false)}\n />\n </Content>\n <Content className={clsx(\"velotax-content\", { largeChart })}>\n {loading ? (\n <Row justify=\"center\">\n <LoadingOutlined />\n </Row>\n ) : carteira?.posicoes?.length > 0 ? (\n <>\n {!loading ? (\n <ResponsiveContainer width=\"100%\">\n <>\n <PieChart\n {...(isMobile()\n ? {\n width: 300,\n height: 260,\n }\n : {\n width: 240,\n height: 240,\n })}\n >\n <Legend\n align=\"right\"\n layout=\"vertical\"\n iconType=\"square\"\n verticalAlign=\"middle\"\n formatter={renderLegend}\n />\n <Pie\n cx={isMobile() ? 100 : 115}\n cy=\"50%\"\n dataKey=\"value\"\n fill=\"#1634FF\"\n innerRadius={isMobile() ? 40 : 50}\n outerRadius={isMobile() ? 100 : 120}\n labelLine={false}\n legendType=\"circle\"\n label={renderCustomizedLabel}\n data={\n chartType === \"classe\"\n ? classesAtivosChart\n : chartType === \"posicoes\"\n ? ativosChart\n : corretorasAtivosChart\n }\n >\n {(chartType === \"classe\"\n ? classesAtivosChart\n : chartType === \"posicoes\"\n ? ativosChart\n : corretorasAtivosChart\n )?.map((entry: any, index: number) => (\n <Cell\n key={`cell-${index}`}\n fill={getProviderColor(entry.name, index)}\n />\n ))}\n </Pie>\n <RechartsTooltip\n formatter={(value, _, { payload }) => {\n return `${numberToCurrency(Number(value))} (${String(\n payload.percentage\n ).replace(\".\", \",\")}%)`;\n }}\n />\n </PieChart>\n <div className=\"select-container\">\n <Select\n size=\"large\"\n value={chartType}\n onChange={(value) => setChartType(value)}\n getPopupContainer={(target) => target.parentElement!}\n >\n <Select.Option value=\"classe\">\n Por classe de ativo\n </Select.Option>\n <Select.Option value=\"corretora\">\n Por corretora\n </Select.Option>\n <Select.Option value=\"posicoes\">Por ativo</Select.Option>\n </Select>\n </div>\n </>\n </ResponsiveContainer>\n ) : undefined}\n {!hasPlan ? (\n <>\n <Collapse\n expandIconPosition=\"right\"\n expandIcon={({ isActive }) => ExpandIcon({ isActive })}\n >\n {carteira.posicoes.slice(0, 1).map((posicao, index) => (\n <Fragment key={index}>\n {PosicaoCard({\n key: index.toString(),\n posicao,\n hideValues,\n setHelpModal,\n })}\n </Fragment>\n ))}\n </Collapse>\n <BlurContent>\n <Collapse\n collapsible=\"disabled\"\n className=\"blur-content\"\n expandIconPosition=\"right\"\n expandIcon={({ isActive }) => ExpandIcon({ isActive })}\n >\n {Array.from(Array(3).keys()).map((index) => (\n <Fragment key={index}>\n {PosicaoCard({\n key: index.toString(),\n hideValues,\n setHelpModal,\n posicao: {\n lucroPrejuizoDiario: 0.01,\n },\n })}\n </Fragment>\n ))}\n </Collapse>\n <div className=\"blur-content-title\">\n Contrate o plano premium para ver a lista completa de ativos\n <AntButton\n type=\"primary\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n // showUserPlanModal(true);\n navigate('/planos')\n HandleTag(\"54\");\n }}\n >\n PREMIUM\n </AntButton>\n </div>\n </BlurContent>\n </>\n ) : (\n <Collapse\n expandIconPosition=\"right\"\n defaultActiveKey={Object.keys(carteiraCategorizadaFiltered)}\n expandIcon={({ isActive }) => ExpandIcon({ isActive })}\n >\n {(filterCorretoraAtivo.length > 0\n ? Object.keys(carteiraCategorizadaFiltered).filter(\n (categoria) =>\n carteiraCategorizadaFiltered[categoria].filter((item: any) =>\n filterCorretoraAtivo.includes(item?.corretora)\n ).length > 0\n )\n : Object.keys(carteiraCategorizadaFiltered)\n ).map((categoria) => (\n <Collapse.Panel\n key={categoria}\n className=\"ativos-categoria\"\n header={\n <>\n <Typography.Title level={2}>\n {categoria === \"TesouroDireto\"\n ? \"Tesouro Direto\"\n : categoria}\n </Typography.Title>\n <span className=\"collapse-title-divider\" />\n <span className=\"collapse-title-hidden\" />\n </>\n }\n >\n <Collapse\n activeKey={activeKeys}\n expandIconPosition=\"right\"\n expandIcon={({ isActive }) => ExpandIcon({ isActive })}\n onChange={onChangeActiveKeys}\n >\n {renderIsentCard(categoria)}\n {(filterCorretoraAtivo.length > 0\n ? carteiraCategorizadaFiltered[categoria].filter((item: any) =>\n filterCorretoraAtivo.includes(item?.corretora)\n )\n : carteiraCategorizadaFiltered[categoria]\n )\n .sort(\n (a, b) =>\n ((b.categoria === \"TesouroDireto\"\n ? b.precoAtual\n : b.posicao) || 0) -\n ((a.categoria === \"TesouroDireto\"\n ? a.precoAtual\n : a.posicao) || 0)\n )\n .map((posicao, index) => (\n <Fragment key={`${categoria}-${index}`}>\n {PosicaoCard({\n key: `${categoria}-${index}-${posicao.codigo}`,\n posicao,\n hideValues,\n setHelpModal,\n cotacaoVenda:\n categoria === \"Exterior\" &&\n carteira.cotacaoVenda > 0\n ? carteira.cotacaoVenda\n : undefined,\n details: detailedPositions?.find(\n (el: any) =>\n el.codigo === posicao.codigo &&\n Number(el.index) === index\n )?.details,\n loading: detailedLoadingIndex === index,\n })}\n </Fragment>\n ))}\n </Collapse>\n </Collapse.Panel>\n ))}\n </Collapse>\n )}\n </>\n ) : (\n <Typography className=\"list-empty\" style={{ textAlign: \"center\" }}>\n Nenhuma posição encontrada\n </Typography>\n )}\n\n <Typography.Text className=\"last-update\">\n <AntButton\n type=\"link\"\n size=\"small\"\n loading={loading}\n icon={loading ? <LoadingOutlined /> : <GrUpdate />}\n onClick={() => getCarteira(true)}\n className=\"button-refresh-wallet\"\n />\n Atualizado em{\" \"}\n {moment(lastUpdate).utc().local().format(\"DD/MM/YYYY à [s] HH:mm\")}\n </Typography.Text>\n\n {hasPlan && carteira.posicoes?.length > 0 && (\n <ul className=\"messages\">\n {/* <li>\n <InfoCircleOutlined />\n As posições são atualizadas em até quatro dias úteis após sua\n negociação (D+4)\n </li> */}\n <li>\n <InfoCircleOutlined />\n As posições da B3 são atualizadas em até quatro dias úteis após sua negociação (D+4)\n </li>\n <li>\n <InfoCircleOutlined />\n As posições de exterior são atualizadas no meÌ‚s subsequente a sua negociação\n </li>\n <li>\n <InfoCircleOutlined />\n Bonds e/ou operações fora da bolsa de valores não são apresentadas\n na listagem acima.\n </li>\n {/* <li>\n <InfoCircleOutlined />\n Os preços dos ativos custodiados no exterior são convertidos para\n reais pela cotação do dólar de compra fixada pelo Banco Central do\n Brasil (PTAX) na data do último fechamento.\n </li>\n <li>\n <InfoCircleOutlined />O custo médio de compra de ativos no\n exterior é apresentado para fins ilustrativos de acompanhamento de\n carteira apenas. Para cálculo de imposto de renda, utilizar\n valores de aquisição considerando a origem dos recursos para\n cálculo de ganho de capital.\n </li> */}\n </ul>\n )}\n </Content>\n <Modal\n footer={null}\n visible={helpModal}\n title={helpModal?.title}\n onCancel={onCloseHelpModal}\n >\n {helpModal?.content}\n </Modal>\n <DrawerModal\n className=\"filter-modal\"\n title=\"Filtrar por corretora\"\n visible={showCorretoraFilterModal}\n onCancel={() => {\n setShowCorretoraFilterModal(false);\n }}\n bodyStyle={{paddingTop: '1rem'}}\n footer={\n <Button\n block\n size=\"large\"\n type=\"primary\"\n icon={<BiCheck />}\n onClick={() => {\n setShowCorretoraFilterModal(false);\n setSelectedCorretoras(checkboxCorretoras);\n setFilterCorretoraAtivo(\n checkboxCorretoras.map((corretora: string) =>\n getNomeCorretora({ shortName: corretora })\n )\n );\n updateFilter(posicoesFilter || [])\n }}\n >\n Confirmar\n </Button>\n }\n >\n <Row gutter={[24, 24]}>\n <Col span={24}>\n <Row gutter={[8, 8]}>\n <Col span={24}>\n <Typography.Text strong>Corretoras</Typography.Text>\n </Col>\n <Col span={24}>\n <Checkbox\n checked={checkAll}\n indeterminate={indeterminate}\n className=\"corretoras-allcheck\"\n onChange={(e: any) => {\n setPosicoesFilter([])\n setCheckboxCorretoras(e.target.checked ? corretorasSemFiltro : []);\n }}\n >\n Todas as corretoras\n </Checkbox>\n <Checkbox.Group\n value={checkboxCorretoras}\n onChange={(e: any) => {\n setPosicoesFilter([])\n setCheckboxCorretoras(e);\n }}\n >\n <Row gutter={[4, 4]}>\n {corretorasSemFiltro.map((corretora, i) => (\n <Col span={24} key={i}>\n <Checkbox value={corretora}>{corretora}</Checkbox>\n </Col>\n ))}\n </Row>\n </Checkbox.Group>\n </Col>\n </Row>\n </Col>\n </Row>\n <div className=\"ant-modal-header\" style={{padding: '8px 0', margin: '2rem 0'}}>\n <div className=\"ant-modal-title\">\n Filtrar por posições\n </div>\n </div>\n <Select\n mode=\"multiple\"\n allowClear\n style={{ width: '100%', margin: '1rem 0' }}\n placeholder=\"Filtrar posições\"\n value={posicoesFilter}\n onChange={(e) => {\n setCheckboxCorretoras([])\n setPosicoesFilter(e)\n }}\n options={Object.keys(carteiraCategorizada).map((categoria) => ({\n label: categoria,\n options: carteiraCategorizada[categoria].map((c: any) => ({\n label: c.codigo,\n value: c.codigo,\n }))\n }))}\n />\n </DrawerModal>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const NotificationContainer = styled.div`\n h3 {\n border-bottom: 2px solid var(--gray-2);\n padding-bottom: 0.5rem;\n color: var(--velotax-font-color-light);\n }\n\n .divider {\n width: 100%;\n max-width: 80px;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 1rem;\n }\n\n .illustration {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n position: relative;\n margin-top: 4rem;\n\n span {\n margin-right: 1rem;\n color: var(--gray-2);\n }\n\n h5 {\n font-weight: 500;\n color: var(--velotax-font-color-light);\n }\n\n button, span {\n display: flex;\n justify-content: center;\n align-items: center;\n color: black !important;\n }\n span {\n margin: 0 0 0 0.5rem;\n }\n button {\n max-width: 160px;\n height: 52px;\n margin-right: auto;\n margin-top: 1rem;\n }\n }\n\n .loading {\n display: flex; \n \n h5 {\n margin-left: 1rem;\n }\n }\n\n .card {\n background-color: var(--ant-primary-1);\n box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.15);\n border-radius: 6px;\n margin-bottom: 1rem;\n padding: 1rem;\n position: relative;\n cursor: pointer;\n\n &:hover {\n transition: 0.3s;\n background-color: var(--ant-primary-2);\n }\n\n .loading {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.2);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .header {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 8px;\n\n h5 {\n flex-grow: 1;\n margin-bottom: 0;\n }\n\n svg {\n color: var(--ant-primary-color);\n font-size: 20px;\n margin-right: 4px;\n }\n\n span {\n color: var(--velotax-font-color-ghost);\n }\n\n .actionButton {\n color: var(--gray-2);\n margin: 0;\n transition: 0.3s;\n cursor: pointer;\n\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n }\n }\n }\n\n .body {\n span {\n margin: 0;\n color: var(--black);\n font-weight: 400;\n }\n }\n }\n\n .viewed {\n background-color: var(--velotax-ghost);\n cursor: default;\n h5,\n svg,\n span {\n color: var(--velotax-font-color-ghost) !important;\n }\n &:hover {\n background-color: var(--velotax-ghost);\n }\n }\n\n .section {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 2rem;\n\n h5 {\n text-transform: uppercase;\n font-size: 14px;\n color: var(--velotax-font-color-light);\n }\n\n button {\n color: var(--gray-2);\n transition: 0.3s;\n text-transform: uppercase;\n font-size: 13px;\n font-weight: 500;\n &:hover {\n color: var(--ant-primary-color);\n transition: 0.3s;\n }\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/notification.d3262cf7.svg\";","import { useState } from \"react\";\nimport { Drawer, Typography, message } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineArrowLeft } from \"react-icons/ai\";\nimport { HiOutlineCurrencyDollar } from \"react-icons/hi\";\nimport api from \"../../services/apiBolsa\";\nimport { NotificationContainer } from \"./styles\";\nimport { isMobile } from \"../../utils\";\nimport notificationImage from \"../../assets/notification.svg\";\nimport { useNotification } from \"../../contexts/NotificationContext\";\n\ninterface IProps {\n open: boolean;\n onClose:\n | ((\n e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>\n ) => void)\n | undefined;\n}\n\nexport const NotificationDrawer = ({ open, onClose }: IProps) => {\n const { notification, setNotification, loading } = useNotification();\n const [loadingIndex, setLoadingIndex] = useState<number | \"all\" | null>(2);\n const lidas = (notification || []).filter((n) => n.viewed);\n const naoLidas = (notification || []).filter((n) => !n.viewed);\n\n const removeNotification = (index?: number) => {\n const notifications = notification.map((n, i: number) => {\n if (index === undefined || index === i)\n return { ...n, viewed: true, viewedDate: new Date() };\n return n;\n });\n\n setLoadingIndex(index === undefined ? \"all\" : index);\n api\n .patch(`/xpinvestimentos/notification`, {\n notifications,\n })\n .then(() => {\n setNotification(notifications);\n setLoadingIndex(null);\n })\n .catch(() => {\n message.error(\"Não foi possÃvel remover notificação\");\n });\n };\n\n return (\n <Drawer\n size=\"large\"\n placement=\"right\"\n onClose={onClose}\n visible={open}\n closeIcon={<AiOutlineArrowLeft />}\n title={\n <div onClick={onClose} style={{ cursor: \"pointer\" }}>\n Voltar\n </div>\n }\n {...(isMobile() ? { width: \"100%\" } : {})}\n >\n <NotificationContainer>\n <div>\n <Typography.Title level={3}>Notificações</Typography.Title>\n <div className=\"divider\" />\n </div>\n\n {(loading || !notification?.length) && (\n <div className=\"illustration\">\n <img src={notificationImage} alt=\"Notificações\" />\n {loading ? (\n <div className=\"loading\">\n <LoadingOutlined />\n <Typography.Title level={5}>\n Buscando notificações\n </Typography.Title>\n </div>\n ) : !notification?.length ? (\n <Typography.Title level={5}>\n Você não possui novas notificações.\n </Typography.Title>\n ) : (\n <></>\n )}\n </div>\n )}\n\n {}\n {!!naoLidas?.length && !loading && (\n <div className=\"section\">\n <Typography.Title level={5}>Não lidas</Typography.Title>\n <button onClick={() => removeNotification()}>\n Marcar todas como lida\n </button>\n </div>\n )}\n {!loading &&\n (notification || [])?.map((item, i) => {\n if (item.viewed) return <></>;\n return (\n <div key={i}>\n <div\n className=\"card\"\n onClick={() => {\n if (!(loadingIndex === i || loadingIndex === \"all\"))\n removeNotification(i);\n }}\n >\n {(loadingIndex === i || loadingIndex === \"all\") && (\n <div className=\"loading\">\n <LoadingOutlined />\n </div>\n )}\n <div className=\"header\">\n <HiOutlineCurrencyDollar />\n <Typography.Title level={5}>\n Rendimentos a receber\n </Typography.Title>\n {item?.date && (\n <Typography.Text>\n {new Date(item?.date)?.toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n })}\n </Typography.Text>\n )}\n </div>\n <div className=\"body\">\n <Typography.Text>{item.message}</Typography.Text>\n </div>\n </div>\n </div>\n );\n })}\n\n {/* Notificações Lidas */}\n {!!lidas?.length && !loading && (\n <div className=\"section\">\n <Typography.Title level={5}>Lidas</Typography.Title>\n </div>\n )}\n {!loading &&\n (notification || [])?.map((item, i) => {\n if (!item.viewed) return <></>;\n return (\n <div key={i}>\n <div className=\"card viewed\">\n <div className=\"header\">\n <HiOutlineCurrencyDollar />\n <Typography.Title level={5}>\n Rendimentos a receber\n </Typography.Title>\n {item?.date && (\n <Typography.Text>\n {new Date(item?.date)?.toLocaleDateString(\"pt-BR\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n })}\n </Typography.Text>\n )}\n </div>\n <div className=\"body\">\n <Typography.Text>{item.message}</Typography.Text>\n </div>\n </div>\n </div>\n );\n })}\n </NotificationContainer>\n </Drawer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const AvisosContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n\n .client-integration-card {\n padding: 24px;\n border-radius: 8px;\n background-color: var(--ant-primary-1);\n border: 1px solid var(--ant-primary-color);\n display: flex;\n align-items: start;\n margin-bottom: 1rem;\n &:last-of-type {\n /* margin-bottom: 48px; */\n }\n & > svg {\n min-width: 32px;\n min-height: 32px;\n color: var(--ant-primary-color);\n stroke: var(--ant-primary-color);\n &.fill {\n fill: var(--ant-primary-color);\n }\n }\n\n .client-integration-card-content {\n width: 100%;\n margin-left: 16px;\n h3 {\n color: #000;\n font-size: 16px;\n font-weight: 600;\n line-height: 24px;\n margin-bottom: 8px;\n }\n div.ant-typography {\n color: #000;\n font-size: 14px;\n font-weight: 300;\n line-height: 20px;\n width: calc(100% - 48px);\n }\n .ant-btn {\n padding: 0;\n border: none;\n height: 40px;\n font-size: 14px;\n font-weight: 500;\n margin: -12px 0;\n }\n button {\n display: flex;\n align-items: center;\n\n svg {\n margin-left: 4px;\n }\n }\n }\n }\n\n div:first-of-type {\n width: 100%;\n }\n\n .title {\n h3 {\n font-weight: 600;\n }\n }\n .divider {\n width: 100%;\n background-color: var(--ant-primary-color);\n height: 2px;\n margin-bottom: 2rem;\n }\n\n .plan-boxes {\n flex-wrap: nowrap;\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .ant-divider {\n margin: 8px 0;\n }\n\n .ant-btn {\n height: 56px;\n\n span {\n font-weight: 500;\n svg {\n display: none;\n }\n }\n }\n .total-contratado {\n display: none;\n }\n .dismiss {\n cursor: pointer;\n transition: 0.3s;\n &:hover {\n color: var(--ant-primary-7);\n transition: 0.3s;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-card-body {\n padding: 16px;\n }\n }\n`;\n","import { Drawer, DrawerProps, Modal, ModalProps } from \"antd\";\nimport { isMobile } from \"../../../utils\";\n\nexport interface DrawerModalProps\n extends Omit<ModalProps, \"visible\" | \"onCancel\" | \"getContainer\">,\n Omit<DrawerProps, \"visible\" | \"onClose\"> {\n visible?: boolean;\n onCancel?: (e: any) => void;\n // open?: boolean;\n}\n\nexport const DrawerModal: React.FC<DrawerModalProps> = ({\n height,\n visible,\n onCancel,\n children,\n className,\n getContainer,\n ...props\n}) => {\n return isMobile() ? (\n <Drawer\n destroyOnClose\n visible={visible}\n placement=\"bottom\"\n onClose={onCancel}\n height={height ?? \"calc(100% - 64px)\"}\n className={`modal-drawer ${className ? className : \"\"} ${\n !props.title ? \"untitled\" : \"\"\n } ${props.closable === false ? \"\" : \"drawer-closable\"}`}\n {...props}\n >\n {children}\n </Drawer>\n ) : (\n <Modal\n destroyOnClose\n footer={null}\n visible={visible}\n onCancel={onCancel}\n className={className}\n {...props}\n >\n {children}\n </Modal>\n );\n};\n","import styled from \"styled-components\";\n\nexport const B3Link = styled.a`\n margin: auto;\n font-size: 10px;\n text-align: center;\n white-space: normal;\n display: inline-block;\n word-break: break-all;\n color: rgb(1, 103, 153);\n\n &:hover {\n text-decoration: underline;\n color: rgb(1, 103, 153);\n }\n`;\n\nexport const CopyLink = styled.button`\n color: #0566cd;\n font-weight: 500;\n text-decoration: underline;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n`;\n\nexport const ShareItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n color: #06417f;\n }\n\n img {\n width: 40px;\n height: 40px;\n }\n\n p {\n font-size: 11px;\n margin: 0.5rem 0;\n }\n`;\n\nexport const Instructions = styled.p`\n font-size: 13px;\n margin-bottom: 4px;\n`;\n","export default __webpack_public_path__ + \"static/media/Integracao_XP_B3.635b7422.gif\";","export default __webpack_public_path__ + \"static/media/integracao_xp_exterior_fundo_branco.f35bdfb7.gif\";","import { Typography, Image, message } from \"antd\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport { B3Link, CopyLink, Instructions } from \"./styles\";\nimport b3IntegrationExample from \"../../../assets/Integracao_XP_B3.gif\";\nimport xpIntegrationExample from \"../../../assets/integracao_xp_exterior_fundo_branco.gif\";\n\nexport type TIntegrationModal = \"B3\" | \"XP International\" | null;\ninterface IProps {\n integrationModal: TIntegrationModal;\n setIntegrationModal: React.Dispatch<React.SetStateAction<TIntegrationModal>>;\n}\n\nconst b3Link =\n \"https://b3investidor.b2clogin.com/b3Investidor.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_FINTECH&client_id=069ecfdf-7471-48eb-be82-d50799c99e5c&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fwww.investidor.b3.com.br&scope=openid&response_type=code&prompt=login\";\n// const b3Encoded =\n// \"https%3A%2F%2Fb3investidor.b2clogin.com%2Fb3Investidor.onmicrosoft.com%2Foauth2%2Fv2.0%2Fauthorize%3Fp%3DB2C_1A_FINTECH%26client_id%3D069ecfdf-7471-48eb-be82-d50799c99e5c%26nonce%3DdefaultNonce%26redirect_uri%3Dhttps%253A%252F%252Fwww.investidor.b3.com.br%26scope%3Dopenid%26response_type%3Dcode%26prompt%3Dlogin\";\n\nexport const IntegrationModal = ({\n integrationModal,\n setIntegrationModal,\n}: IProps) => {\n return (\n <DrawerModal\n width={580}\n footer={null}\n visible={!!integrationModal}\n title={`Conecte com a ${integrationModal}`}\n onCancel={() => {\n setIntegrationModal(null);\n }}\n >\n {integrationModal === \"B3\" ? (\n <Typography.Text>\n Permita a conexão entre Velotax e B3 para leitura das operações\n realizadas na bolsa de valores.\n </Typography.Text>\n ) : (\n <Typography.Text>\n Permita a conexão entre Velotax e XP International para leitura das\n operações realizadas.\n </Typography.Text>\n )}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n margin: \"2rem 0\",\n }}\n >\n <Image\n width={430}\n src={\n integrationModal === \"B3\"\n ? b3IntegrationExample\n : xpIntegrationExample\n }\n />\n </div>\n\n {integrationModal === \"B3\" ? (\n <>\n <B3Link\n style={{ fontSize: \"14px\" }}\n href={b3Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {b3Link}\n </B3Link>\n\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"1rem 0\",\n }}\n >\n <CopyLink\n onClick={() => {\n navigator.clipboard.writeText(b3Link);\n message.success(\"Link copiado\");\n }}\n >\n Copiar link\n </CopyLink>\n </div>\n </>\n ) : (\n <>\n <Typography.Title\n level={5}\n style={{ color: \"#FFF\", fontSize: \"13px\" }}\n >\n Instruções\n </Typography.Title>\n <div>\n <Instructions>\n <strong>Passo 1</strong>. Acesse a aba de{\" \"}\n <strong>Investimento Global</strong> dentro do aplicativo da XP\n </Instructions>\n <Instructions>\n <strong>Passo 2</strong>. Deslize a tela para baixo e clique em{\" \"}\n <strong>Imposto de Renda e DARF</strong>\n </Instructions>\n <Instructions>\n <strong>Passo 3</strong>. Clique em{\" \"}\n <strong>Calcular Imposto de Renda</strong> e aceite os termos\n </Instructions>\n </div>\n </>\n )}\n </DrawerModal>\n );\n};\n","import { AvisosContainer } from \"./styles\";\nimport { useEffect, useState } from \"react\";\nimport { Button, Spin, Typography, message } from \"antd\";\nimport { FiArrowRight } from \"react-icons/fi\";\nimport { AiOutlineLink } from \"react-icons/ai\";\nimport { BiX } from \"react-icons/bi\";\nimport api from \"../../../services/api\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { IntegrationModal } from \"../IntegrationModal\";\nimport { useBroker } from \"../../../contexts/BrokerContext\";\n\nexport const Avisos = () => {\n const { user } = useAuth();\n const [dismissBolsa, setDismissBolsa] = useState(false);\n const [dismissExterior, setDismissExterior] = useState(false);\n const [loading, setLoading] = useState(false);\n const [integrationModal, setIntegrationModal] = useState<\n \"B3\" | \"XP International\" | null\n >(null);\n const { integration } = useBroker();\n\n const getCloseBanner = async () => {\n try {\n setLoading(true);\n const { data } = await api.post(\"user/xp/close-banner\", {\n cpf: user?.user?.cpf,\n });\n setDismissBolsa(data.closeBannerBolsaXp);\n setDismissExterior(data.closeBannerExteriorXp);\n } catch (error) {\n message.error(\"Algo deu errado, tente mais tarde!\");\n } finally {\n setLoading(false);\n }\n };\n\n const handleDismissBolsa = async () => {\n try {\n setLoading(true);\n setDismissBolsa(true);\n const { data } = await api.put(\"user/xp/close-banner\", {\n cpf: user?.user?.cpf,\n closeBannerBolsaXp: true,\n });\n setDismissBolsa(data.closeBannerBolsaXp);\n } catch (error) {\n message.error(\"Algo deu errado, tente mais tarde!\");\n } finally {\n setLoading(false);\n }\n };\n\n const handleDismissExterior = async () => {\n try {\n setLoading(true);\n setDismissExterior(true);\n const { data } = await api.put(\"user/xp/close-banner\", {\n cpf: user?.user?.cpf,\n closeBannerExteriorXp: true,\n });\n setDismissExterior(data.closeBannerExteriorXp);\n } catch (error) {\n message.error(\"Algo deu errado, tente mais tarde!\");\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n getCloseBanner();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <AvisosContainer>\n <div>\n <Spin spinning={loading}>\n {(!integration.integrated && !dismissBolsa) && (\n <div className=\"client-integration-card\">\n <AiOutlineLink />\n <div className=\"client-integration-card-content\">\n <Typography.Title level={3}>\n Integração com bolsa pendente\n </Typography.Title>\n <Typography.Paragraph>\n Conceda a permissão na B3 para que seja possÃvel acessar suas\n operações da bolsa de valores de forma automática.\n </Typography.Paragraph>\n <Button\n type=\"link\"\n onClick={() => {\n setIntegrationModal(\"B3\");\n }}\n >\n Saiba mais\n <FiArrowRight />\n </Button>\n </div>\n <BiX\n className=\"dismiss\"\n onClick={() => {\n handleDismissBolsa();\n }}\n />\n </div>\n )}\n {(!user.user.isIntegratedExterior && !dismissExterior) && (\n <div className=\"client-integration-card\">\n <AiOutlineLink />\n <div className=\"client-integration-card-content\">\n <Typography.Title level={3}>\n Conecte com a XP International\n </Typography.Title>\n <Typography.Paragraph>\n Conceda a permissão na XP International para que seja possÃvel\n acessar suas operações no exterior de forma automática.\n </Typography.Paragraph>\n <Button\n type=\"link\"\n onClick={() => {\n setIntegrationModal(\"XP International\");\n }}\n >\n Saiba mais\n <FiArrowRight />\n </Button>\n </div>\n <BiX\n className=\"dismiss\"\n onClick={() => {\n handleDismissExterior();\n }}\n />\n </div>\n )}\n </Spin>\n </div>\n <IntegrationModal\n integrationModal={integrationModal}\n setIntegrationModal={setIntegrationModal}\n />\n </AvisosContainer>\n );\n};\n","import { useState } from \"react\";\nimport { BiBell } from \"react-icons/bi\";\nimport { Badge, Tabs, Typography } from \"antd\";\nimport { BsEye, BsEyeSlash } from \"react-icons/bs\";\nimport { Container, Content } from \"./styles\";\nimport AntButton from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { Proventos } from \"../../components/Proventos\";\nimport { Carteira } from \"../../components/MeusInvestimentos/index\";\nimport { useNotification } from \"../../contexts/NotificationContext\";\nimport { NotificationDrawer } from \"../../components/Notification/Notification\";\nimport { Avisos } from \"../../components/MeusInvestimentos/Avisos\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\n\ninterface CarteiraProps {}\n\nexport const Wallet: React.FC<CarteiraProps> = () => {\n const { notification } = useNotification();\n const { integration } = useBroker();\n const {\n user,\n hasPlan: hasPremiunPlan,\n hasPermissionExterior,\n hasPermissionGeneral,\n } = useAuth();\n const hasPlan =\n (hasPremiunPlan || hasPermissionExterior || hasPermissionGeneral) && !user?.user?.userPlanInfoVelotax?.type?.includes('BASIC');\n\n const [notificationDrawerOpen, setNotificationDrawerOpen] = useState(false);\n const [hideValues, setHideValues] = useState(false);\n\n return (\n <Container className=\"velotax-container\">\n <div className=\"header\">\n <Typography.Title level={1} className=\"page-title\">\n Meus investimentos\n <AntButton\n type=\"link\"\n size=\"large\"\n className=\"hide-values-btn\"\n icon={hideValues ? <BsEyeSlash /> : <BsEye />}\n onClick={() => setHideValues((value) => !value)}\n />\n </Typography.Title>\n {hasPlan && (\n <div className=\"notification-button\">\n <Badge\n size=\"small\"\n showZero={false}\n offset={[-12, 48]}\n count={notification?.filter((n) => !n.viewed)?.length || 0}\n >\n <AntButton\n loading={false}\n icon={<BiBell />}\n onClick={() => {\n setNotificationDrawerOpen(true);\n }}\n />\n </Badge>\n </div>\n )}\n </div>\n <Content className=\"velotax-content carteira\">\n <Avisos />\n {(!integration.integrated && !user.user.isIntegratedExterior) ? (<></>) : (\n <Tabs className=\"tabs-wallet\">\n <Tabs.TabPane tab=\"INVESTIMENTOS\" key=\"item-1\">\n <Carteira hideValues={hideValues} />\n </Tabs.TabPane>\n <Tabs.TabPane tab=\"PROVENTOS\" key=\"item-2\">\n <Proventos hideValues={hideValues} />\n </Tabs.TabPane>\n </Tabs>\n )}\n </Content>\n <NotificationDrawer\n open={notificationDrawerOpen}\n onClose={() => setNotificationDrawerOpen(false)}\n />\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .page-title.conta {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n button {\n display: flex;\n align-items: center;\n height: 48px;\n padding: 0 24px;\n background-color: var(--velotax-background-color);\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n p {\n width: 700px;\n margin: 0 auto 0.3rem;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n span {\n cursor: pointer;\n font-weight: 500;\n color: var(--ant-primary-color);\n }\n }\n\n h4 {\n color: var(--velotax-font-color-light);\n }\n\n .ant-descriptions:last-of-type {\n .ant-descriptions-item {\n padding-bottom: 0;\n }\n }\n\n .ant-descriptions {\n h4,\n .ant-descriptions-item-content {\n color: var(--velotax-font-color-dark);\n }\n .ant-descriptions-header {\n margin-bottom: 0px;\n }\n }\n\n .excluir-conta-container {\n width: 700px;\n margin: 16px auto 0 auto;\n }\n\n .parametrizar-custos-container {\n width: 700px;\n margin: 0px auto;\n button { \n color: var(--ant-primary-color);\n background-color: var(--velotax-background-color);\n padding: 0.5rem 1rem;\n transition: .3s;\n \n &:hover{\n color: var(--ant-primary-color-hover);\n transition: .3s;\n }\n\n svg {\n margin-right: 0.5rem;\n transform: translateY(-1px);\n }\n }\n }\n\n .cancelar-plano-container {\n width: 700px;\n margin: -32px auto 32px;\n }\n\n .content-button {\n display: flex;\n margin: 16px auto 0;\n align-items: center;\n justify-content: right;\n }\n\n .velotax-content.conta {\n background-color: var(--white);\n }\n\n @media only screen and (max-device-width: 812px) {\n .page-title.conta {\n margin-bottom: 80px;\n button {\n left: 0;\n width: 100%;\n bottom: -64px;\n position: absolute;\n }\n }\n p {\n margin: 0 24px 24px;\n width: calc(100% - 48px);\n }\n .excluir-conta-container {\n width: 100%;\n padding: 0 8px;\n }\n .cancelar-plano-container {\n width: 100%;\n padding: 0 8px;\n margin: -12px auto 24px;\n }\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { useEffect, useState, useMemo } from \"react\";\nimport { AiFillWarning, AiOutlineUnlock } from \"react-icons/ai\";\nimport {\n Col,\n Descriptions,\n Form,\n Input,\n message,\n Modal,\n Row,\n Typography,\n} from \"antd\";\nimport { formatDate } from \"../../../utils\";\nimport HandleTag from \"../../../services/handleTag\";\nimport { UserPlans } from \"../../../constants/plans\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { apiPayment } from \"../../../services/apiPayment\";\nimport { PaymentModal } from \"../../../components/PaymentModal\";\nimport apiVeloPro from \"../../../services/apiVeloPro\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst KEY_PASS = \"DELETAR\";\n\nexport const MeuPlano: React.FC = () => {\n const navigate = useNavigate();\n const { user, getUserInfo, showUserPlanModal } = useAuth();\n const [data, setData] = useState<any>();\n const [loading, setLoading] = useState(false);\n const [cancelModal, showCancelModal] = useState(false);\n const pendingCancel =\n data?.signature?.useDate > 0 &&\n (!data?.signature?.status || data?.signature?.status === \"canceled\");\n\n const [changeCardModal, showChangeCardModal] = useState(false);\n\n const [formKey] = Form.useForm();\n const [keyPass, setKeyPass] = useState(\"\");\n\n const planBasicInfo = user?.user?.userPlanInfoVelotax;\n const [isVelopro, setVelopro] = useState(false);\n const [hasCreditCardInfo, setCreditCardInfo] = useState(true);\n\n const checkPlanVelopro = () => {\n apiVeloPro.get(`/clients/hasPlanActive/${user.user.userId}`).then(({ data }) => {\n if (data?.isPlanVelopro) setVelopro(true);\n else setVelopro(false);\n })\n .catch(() => message.error('Ocorreu um erro, tente novamente mais tarde.'));\n return;\n };\n\n useEffect(() => {\n checkPlanVelopro();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVelopro]);\n\n const currentPlan = useMemo(() => {\n const plansTypes: Record<string, string> = {\n VELOTAX_MAIN_CONCIERGE: \"Velotax Concierge Anual\",\n VELOTAX_MAIN_CONCIERGE_MONTH: \"Velotax Concierge Mensal\",\n VELOTAX_MAIN_PRO: \"Velotax Premium Anual\",\n VELOTAX_MAIN_PRO_MONTH: \"Velotax Premium Mensal\",\n VELOTAX_MAIN_BASIC: \"Velotax Basic Anual\",\n VELOTAX_MAIN_BASIC_MONTH: \"Velotax Basic Mensal\",\n XP_BASIC: \"XP Basic Anual\",\n XP_BASIC_MONTH: \"XP Basic Mensal\",\n XP_PRO: \"XP Premium Anual\",\n XP_PRO_MONTH: \"XP Premium Mensal\",\n XP_CONCIERGE: \"XP Concierge Anual\",\n XP_CONCIERGE_MONTH: \"XP Concierge Mensal\",\n };\n const genericTypes: Record<string, string> = {\n BASIC: 'Velotax Basic',\n PRO: 'Velotax Premium',\n CONCIERGE: 'Velotax Concierge'\n }\n\n const genericPlan = Object.keys(genericTypes).find(key => planBasicInfo?.type?.includes(key))\n\n if (\n planBasicInfo.type === \"VELOTAX_MAIN_PRO\" ||\n planBasicInfo.type === \"VELOTAX_MAIN_BASIC\" ||\n planBasicInfo.type === \"VELOTAX_MAIN_PRO_MONTH\"\n ) {\n setCreditCardInfo(false);\n }\n return (\n planBasicInfo?.active && planBasicInfo?.currentPlan?.period?.includes('mensal') \n ? (plansTypes[planBasicInfo.type] ?? \"Gratuito\").replace('Anual', 'Mensal')\n : (plansTypes[planBasicInfo.type] ?? \"Gratuito\")\n );\n }, [planBasicInfo?.active, planBasicInfo?.currentPlan?.period, planBasicInfo.type]);\n\n const showChangeCardButton = useMemo(\n () =>\n currentPlan !== \"Gratuito\" &&\n !pendingCancel &&\n data?.signature?.paymentForm !== \"pix\" &&\n !data?.signature?.fromAccountant,\n [\n currentPlan,\n pendingCancel,\n data?.signature?.fromAccountant,\n data?.signature?.paymentForm,\n ]\n );\n\n const getData = () => {\n setLoading(true);\n apiPayment\n .get(\"/user-plan/get-plan-details\")\n .then((ret) => {\n setLoading(false);\n setData(ret.data);\n })\n .catch(() => {\n message.error(\n \"Houve um erro ao buscar os detalhes contate nosso suporte\"\n );\n });\n };\n\n const cancelPlan = () => {\n HandleTag(\"60\");\n if (keyPass.toLowerCase() !== KEY_PASS.toLowerCase()) {\n message.error(`Digite ${KEY_PASS} corretamente!`);\n return;\n }\n\n if (isVelopro) {\n apiVeloPro.put(`/clients/cancelRecuring/${user.user.userId}`)\n .then(() => {\n message.success(\"Plano cancelado\");\n showCancelModal(false);\n getUserInfo();\n getData();\n })\n .catch(() => message.error('Ocorreu um erro ao cancelar a recorrência, tente novamente mais tarde.'));\n return;\n }\n\n apiPayment\n .post(\"/user-plan/cancel_signature\")\n .then((ret) => {\n message.success(\"Plano cancelado\");\n showCancelModal(false);\n getUserInfo();\n getData();\n })\n .catch(() => {\n message.error(\"Ocorreu um erro. Contate nosso suporte\");\n });\n };\n\n useEffect(() => {\n getData();\n }, []);\n\n const payForm: Record<string, string> = {\n pix: \"Pix\",\n credit_card: \"Cartão de Crédito\",\n concierge: \"Escritório\",\n };\n\n const planStatus = useMemo(\n () =>\n currentPlan === \"Gratuito\"\n ? \"Ativo\"\n : planBasicInfo?.active\n ? \"Ativo\"\n : \"Inativo\",\n [planBasicInfo?.active, currentPlan]\n );\n\n const isActive = useMemo(() => planStatus === \"Ativo\", [planStatus]);\n\n const onDeleteCancel = () => {\n showCancelModal(false);\n formKey.resetFields();\n setKeyPass(\"\");\n };\n\n const contentStyle = {\n fontSize: 15,\n marginBottom: 0,\n };\n\n return (\n <>\n <h1 className=\"page-title\">Dados do plano</h1>\n {loading ? (\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n <LoadingOutlined />{\" \"}\n </div>\n ) : (\n <>\n <div className=\"velotax-content plano\">\n <Descriptions\n contentStyle={contentStyle}\n title={<h4>{\"Plano Atual\"}</h4>}\n >\n <Descriptions.Item>{currentPlan}</Descriptions.Item>\n </Descriptions>\n <Descriptions\n contentStyle={{ ...contentStyle }}\n title={<h4>Status do Plano</h4>}\n >\n <Descriptions.Item\n style={{ display: \"flex\", alignItems: \"center\" }}\n >\n <div\n style={{\n width: 60,\n textAlign: \"center\",\n backgroundColor: isActive\n ? \"var(--velotax-green-amount)\"\n : \"var(--velotax-red-prejuizo)\",\n padding: 4,\n borderRadius: 4,\n fontWeight: 500,\n color: \"#FFFF\",\n }}\n >\n {planStatus}\n </div>\n {/* {pendingCancel && (\n <Tooltip\n overlayStyle={{ backgroundColor: \"#000000\", fontSize: 16 }}\n title={msgProcessingCancel}\n >\n <AiFillWarning\n style={{ marginLeft: 10 }}\n color=\"rgb(252, 210, 40)\"\n size={20}\n />\n </Tooltip>\n )} */}\n </Descriptions.Item>\n </Descriptions>\n {data?.signature?.next_billing_at &&\n planBasicInfo?.active &&\n !pendingCancel && (\n <Descriptions\n contentStyle={contentStyle}\n title={<h4>{\"Próxima Cobrança\"}</h4>}\n >\n <Descriptions.Item>\n {formatDate(data?.signature?.next_billing_at)}\n </Descriptions.Item>\n </Descriptions>\n )}\n {data?.signature?.start_at && planBasicInfo?.active && (\n <Descriptions\n contentStyle={contentStyle}\n title={<h4>{\"Data da Assinatura\"}</h4>}\n >\n {data?.signature?.start_at && (\n <Descriptions.Item>\n {formatDate(data?.signature?.start_at)}\n </Descriptions.Item>\n )}\n </Descriptions>\n )}\n {data?.signature?.dueDate && planBasicInfo?.active && (\n <Descriptions\n contentStyle={contentStyle}\n title={<h4>{\"Vencimento da Assinatura\"}</h4>}\n >\n {data?.signature?.dueDate && (\n <Descriptions.Item>\n {formatDate(data?.signature?.dueDate)}\n </Descriptions.Item>\n )}\n </Descriptions>\n )}\n {data?.signature?.paymentForm && planBasicInfo?.active && (\n <Descriptions\n contentStyle={contentStyle}\n title={<h4>{\"Forma de pagamento\"}</h4>}\n >\n <Descriptions.Item>\n {<>{payForm[data?.signature?.paymentForm]}</>}\n </Descriptions.Item>\n </Descriptions>\n )}\n\n {data?.signature?.paymentForm === \"credit_card\" &&\n planBasicInfo?.active && hasCreditCardInfo && (\n <Descriptions\n contentStyle={contentStyle}\n title={<h4>{\"Cartão de cobrança\"}</h4>}\n >\n {data?.signature?.card?.lastFourDigits && (\n <Descriptions.Item>\n {\n <>\n **** **** **** {data?.signature?.card?.lastFourDigits}\n </>\n }\n </Descriptions.Item>\n )}\n </Descriptions>\n )}\n\n {/* {currentPlan === \"Gratuito\" && (\n <div className=\"content-button\">\n <Button\n onClick={() => {\n showUserPlanModal(true);\n }}\n size=\"medium\"\n color=\"secondary\"\n variant=\"contained\"\n style={{\n display: \"flex\",\n justifyContent: \"right\",\n fontSize: 12,\n }}\n >\n CONTRATAR PLANO\n </Button>\n </div>\n )} */}\n\n {currentPlan === \"Gratuito\" && (\n <div className=\"content-button\">\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n startIcon={<AiOutlineUnlock size={22} />}\n onClick={() => {\n // showUserPlanModal(true);\n navigate('/planos')\n }}\n >\n CONTRATAR PLANO PREMIUM\n </Button>\n </div>\n )}\n\n {showChangeCardButton && (\n <Row justify=\"end\">\n <Col>\n <Button\n color=\"secondary\"\n variant=\"contained\"\n style={{ opacity: 0.8 }}\n onClick={() => {\n showChangeCardModal(true);\n }}\n >\n Alterar cartão de cobrança\n </Button>\n </Col>\n </Row>\n )}\n </div>\n {((currentPlan !== \"Gratuito\" &&\n !pendingCancel &&\n data?.signature?.paymentForm !== \"pix\") || isVelopro) && (\n <Row justify=\"end\" className=\"cancelar-plano-container\">\n <Col>\n <Button\n onClick={() => {\n HandleTag(\"59\");\n showCancelModal(true);\n }}\n style={{\n opacity: 0.8,\n color: \"var(--ant-error-color)\",\n }}\n >\n Cancelar Recorrência\n </Button>\n </Col>\n </Row>\n )}\n </>\n )}\n\n {changeCardModal && (\n <PaymentModal\n hideDarfDownload\n closeModal={() => {\n showChangeCardModal(false);\n getData();\n }}\n changeCardAction\n onSuccessGeneral={() => {\n showChangeCardModal(false);\n getData();\n }}\n planCurrent={UserPlans.find(\n (plan) => plan?.type === user?.user?.userPlanInfoVelotax?.type\n )}\n hidePixButton\n blockListCard={[data?.signature?.card?.id]}\n show={changeCardModal}\n onCancel={() => showChangeCardModal(false)}\n paymentData={{\n type: planBasicInfo.type,\n isPlan: true,\n }}\n callDarf={(value: boolean) => null}\n customInstallments={12}\n />\n )}\n\n <Modal\n cancelText=\"Não\"\n okText=\"Cancelar Plano\"\n onOk={cancelPlan}\n visible={cancelModal}\n onCancel={onDeleteCancel}\n >\n <p style={{ fontSize: 18 }}>Deseja realmente cancelar o plano ?</p>\n <Row gutter={[16, 16]} align=\"middle\">\n <Col span={10}>\n <AiFillWarning\n size={100}\n color=\"var(--ant-warning-color)\"\n style={{ display: \"block\", margin: \"0 auto\" }}\n />\n </Col>\n <Col span={14}>\n <Typography.Paragraph strong style={{ fontSize: \"1rem\" }}>\n Deseja realmente cancelar seu plano?\n </Typography.Paragraph>\n <Typography.Paragraph>\n <strong>Atenção:</strong> todos os seus dados de impostos,\n inclusive a memória dos cálculos e o histórico dos DARFs pagos,\n serão excluÃdos definitivamente da plataforma. Você poderá ser\n obrigado pela Receita Federal a apresentar tais informações, caso\n seja questionado.\n </Typography.Paragraph>\n </Col>\n <Col span={24}>\n <Typography style={{ fontSize: \"1rem\" }}>\n Digite <strong>{KEY_PASS}</strong> para prosseguir:\n </Typography>\n </Col>\n <Col span={24}>\n <Form\n form={formKey}\n onChange={(event: any) => {\n setKeyPass(event.target.value);\n }}\n >\n <Form.Item name=\"key\">\n <Input placeholder={KEY_PASS} />\n </Form.Item>\n </Form>\n </Col>\n </Row>\n </Modal>\n </>\n );\n};\n","import ReactInputMask from \"react-input-mask\";\nimport { FaUserShield } from \"react-icons/fa\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AiFillWarning } from \"react-icons/ai\";\nimport { Button, TextField } from \"@mui/material\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { CheckOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Form, message, Row, Modal, Input, Typography, Select } from \"antd\";\nimport api from \"../../services/api\";\nimport apiBolsa from '../../services/apiBolsa'\nimport { Container } from \"./styles\";\nimport { MeuPlano } from \"./MeuPlano\";\nimport { cpfInputMask } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport {\n validationCpf,\n validationDateNotRequired,\n validationEmail,\n validationFieldRequired,\n validationFullName,\n validationPassword,\n validationPhone,\n} from \"../../utils/formValidations\";\nimport { BsFillGearFill, BsInfoCircleFill } from \"react-icons/bs\";\nimport { useB3Integration } from \"../../contexts/B3IntegrationContext\";\n\nconst KEY_PASS = \"DELETAR\";\n\nconst MaskCPF = React.forwardRef<HTMLElement>((props, ref) => (\n <ReactInputMask {...props} mask={cpfInputMask} />\n));\n\nconst MaskBirth = React.forwardRef<HTMLElement>((props, ref) => (\n <ReactInputMask {...props} mask=\"99/99/9999\" />\n));\n\nconst MaskPhone = React.forwardRef<HTMLElement>((props, ref) => (\n <ReactInputMask {...props} mask=\"(99) 99999-9999\" />\n));\n\nexport const MinhaConta: React.FC = () => {\n const { user, setUser, signOut } = useAuth();\n const {\n handleIntegrate,\n loadingIntegration,\n } = useB3Integration();\n const [form] = Form.useForm();\n const [warningDeleteModal, showWarningDeleteModal] = useState(false);\n const navigate = useNavigate();\n const [formKey] = Form.useForm();\n const [loading, setLoading] = useState(loadingIntegration);\n const [showPassword, setShowPassword] = useState(false);\n const [keyPass, setKeyPass] = useState(\"\");\n const [fieldsError, setFieldsError] = useState<{ [key: string]: string[] }>(\n {}\n );\n const [modalParametrizacaoOpen, setModalParametrizacaoOpen] = useState(false);\n const [isMesa, setIsMesa] = useState(false);\n\n useEffect(() => {\n if (user?.user) {\n form.setFieldsValue({\n cpf: user.user.cpf,\n name: user.user.name,\n email: user.user.email,\n birthdate: user.user.birthdate ?? \"\",\n cellphone: user.user.cellphone ?? \"\",\n });\n }\n }, [user.user, form]);\n\n const getMesaOperacoes = useCallback(() => {\n apiBolsa.get('/xpinvestimentos/mesaOperacoes')\n .then((res) => {\n setIsMesa(res?.data?.isMesa || false)\n })\n .catch((err) => {\n message.error('Não foi possÃvel consultar informações de mesa de operações')\n })\n }, [])\n\n useEffect(() => {\n if(modalParametrizacaoOpen){\n getMesaOperacoes()\n }\n }, [getMesaOperacoes, modalParametrizacaoOpen]);\n\n const setMesaOperacoes = () => {\n apiBolsa.post('/xpinvestimentos/mesaOperacoes', { isMesa })\n .then((res) => {\n if(res?.status === 202) {\n message.warning(res?.data?.message)\n } else {\n message.success('Suas informações foram salvas')\n getMesaOperacoes()\n handleIntegrate({onlyPrepareBolsa: true})\n }\n })\n .catch(() => {\n message.error('Não foi possÃvel atualizar suas informações de mesa de operações')\n })\n }\n\n const onFinish = (data: any) => {\n if (loading) {\n return;\n }\n setLoading(true);\n api\n .put(\"/configuracoes/minhaConta\", {\n email: data.email,\n birthdate: data.birthdate,\n cellphone: data.cellphone,\n name: data.name,\n ...(showPassword\n ? {\n pass: data.pass,\n currentPass: data.currentPass,\n }\n : {}),\n })\n .then(() => {\n message.config({\n top: 50,\n });\n message.success(\"Dados atualizados com sucesso\");\n setLoading(false);\n setUser({\n ...user,\n user: {\n ...user.user,\n email: data.email,\n birthdate: data.birthdate,\n cellphone: data.cellphone,\n name: data.name,\n },\n });\n })\n .catch((err) => {\n message.error(\n err.response?.data?.message ||\n \"Erro ao atualizar dados. Tente novamente mais tarde!\"\n );\n setLoading(false);\n });\n };\n\n const removeAccount = () => {\n showWarningDeleteModal(true);\n };\n\n const onFieldsChange = () => {\n setFieldsError(\n form\n .getFieldsError()\n .reduce((acc, cur) => ({ ...acc, [cur.name?.[0]]: cur.errors }), {})\n );\n };\n\n const onCancel = () => {\n if (loading) {\n return;\n }\n navigate(\"/carteira\");\n };\n\n const handlePassword = () => {\n setShowPassword((show) => !show);\n };\n\n const sendDeleteReq = () => {\n if (keyPass.toLowerCase() !== KEY_PASS.toLowerCase()) {\n message.error(`Digite ${KEY_PASS} corretamente!`);\n return;\n }\n api\n .post(\"/user/remove-user\", {\n from: \"CALCULADORAV2\",\n pass: keyPass,\n cpf: user.user.cpf,\n })\n .then(() => {\n message.success(\"Conta excluÃda com sucesso\");\n signOut();\n })\n .catch((err) => {\n message.error(err?.response?.data?.message);\n });\n };\n\n const onDeleteCancel = () => {\n showWarningDeleteModal(false);\n formKey.resetFields();\n setKeyPass(\"\");\n };\n\n return (\n <Container className=\"velotax-container\">\n <MeuPlano />\n <h1 className=\"page-title conta\">\n Dados do usuário\n <Button\n size=\"large\"\n variant=\"text\"\n color=\"secondary\"\n onClick={() => navigate(\"/gestaoacesso\")}\n startIcon={<FaUserShield color=\"var(--ant-primary-color)\" />}\n >\n Gestão de acessos\n </Button>\n </h1>\n <div className=\"velotax-content conta\">\n <Form\n form={form}\n size=\"large\"\n layout=\"vertical\"\n onFinish={onFinish}\n onFieldsChange={onFieldsChange}\n >\n <Form.Item name=\"name\" rules={validationFullName}>\n <TextField\n disabled={loading}\n variant=\"standard\"\n label=\"Nome completo\"\n error={fieldsError[\"name\"]?.length > 0}\n />\n </Form.Item>\n\n <Form.Item name=\"cpf\" rules={validationCpf}>\n <TextField\n label=\"CPF\"\n disabled={true}\n variant=\"standard\"\n InputLabelProps={{ shrink: true }}\n InputProps={{ inputComponent: MaskCPF as any }}\n />\n </Form.Item>\n\n <Form.Item name=\"birthdate\" rules={validationDateNotRequired}>\n <TextField\n label=\"Nascimento\"\n variant=\"standard\"\n disabled={loading}\n error={fieldsError[\"birthdate\"]?.length > 0}\n InputProps={{ inputComponent: MaskBirth as any }}\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n\n <Form.Item name=\"email\" rules={validationEmail}>\n <TextField\n type=\"email\"\n label=\"Email\"\n variant=\"standard\"\n disabled={loading}\n />\n </Form.Item>\n\n <Form.Item name=\"cellphone\" rules={validationPhone}>\n <TextField\n label=\"Celular\"\n variant=\"standard\"\n disabled={loading}\n error={fieldsError[\"cellphone\"]?.length > 0}\n InputProps={{ inputComponent: MaskPhone as any }}\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n\n <Button\n color=\"secondary\"\n onClick={handlePassword}\n style={{ padding: 0 }}\n >\n {showPassword ? \"Não alterar senha\" : \"Alterar senha\"}\n </Button>\n\n {showPassword && (\n <Row gutter={[16, 16]}>\n <Col span={12}>\n <Form.Item name=\"currentPass\" rules={validationFieldRequired}>\n <TextField\n type=\"password\"\n variant=\"standard\"\n label=\"Senha atual\"\n error={fieldsError[\"currentPass\"]?.length > 0}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"pass\" rules={validationPassword}>\n <TextField\n type=\"password\"\n variant=\"standard\"\n label=\"Nova senha\"\n error={fieldsError[\"pass\"]?.length > 0}\n />\n </Form.Item>\n </Col>\n </Row>\n )}\n\n <br />\n <br />\n\n <Row gutter={[16, 16]} justify=\"space-between\">\n <Col>\n <Button\n size=\"large\"\n color=\"primary\"\n variant=\"outlined\"\n onClick={onCancel}\n >\n Cancelar\n </Button>\n </Col>\n <Col>\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n endIcon={<CheckOutlined />}\n startIcon={loading && <LoadingOutlined />}\n >\n Salvar\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n <Row justify=\"end\" className=\"excluir-conta-container\">\n <Col>\n <Button\n size=\"small\"\n disabled={loading}\n onClick={removeAccount}\n style={{\n opacity: 0.8,\n color: \"var(--ant-error-color)\",\n }}\n >\n Excluir Conta\n </Button>\n </Col>\n </Row>\n <Row className=\"parametrizar-custos-container\">\n <Col>\n <Button onClick={() => setModalParametrizacaoOpen(true)}>\n <BsFillGearFill />\n Parametrizar custos de corretagem\n </Button>\n </Col>\n </Row>\n <Modal\n title=\"Parametrização XP\"\n footer={false}\n onCancel={() => setModalParametrizacaoOpen(false)}\n bodyStyle={{ paddingTop: '1rem' }}\n visible={modalParametrizacaoOpen}\n className=\"parametrizacao-modal\"\n >\n <Row style={{ marginBottom: '2rem' }}>\n <Col>\n <Typography.Text style={{ fontWeight: '500' }}>\n <BsInfoCircleFill />\n Funcionalidade exclusiva para investidores que realizam suas operações via Mesa de Operações (assessor).\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Typography.Text>\n Selecione a parametrização de custos de corretagem:\n </Typography.Text>\n\n </Col>\n </Row>\n <Row>\n <Col span={24}>\n <Select\n size='large'\n value={isMesa ? 'Mesa de operações' : 'Não considerar'}\n onChange={(e: any) => {setIsMesa(e === 'Mesa de operações' ? true : false)}}\n options={[\n { label: 'Não considerar', value: 'Não considerar' },\n { label: 'Mesa de operações', value: 'Mesa de operações' }\n ]}\n defaultValue={isMesa ? 'Mesa de operações' : 'Não considerar'} />\n </Col>\n </Row>\n <Row gutter={[16, 16]} justify=\"end\">\n <Col>\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n endIcon={<CheckOutlined />}\n startIcon={loading && <LoadingOutlined />}\n onClick={() => {\n setMesaOperacoes()\n setModalParametrizacaoOpen(false)\n }}\n >\n Salvar\n </Button>\n </Col>\n </Row>\n </Modal>\n <Modal\n okText=\"Excluir\"\n cancelText=\"Cancelar\"\n title=\"Exclusão de conta\"\n onOk={sendDeleteReq}\n onCancel={onDeleteCancel}\n visible={warningDeleteModal}\n >\n <Row gutter={[16, 16]} align=\"middle\">\n <Col span={10}>\n <AiFillWarning\n size={100}\n color=\"var(--ant-warning-color)\"\n style={{ display: \"block\", margin: \"0 auto\" }}\n />\n </Col>\n <Col span={14}>\n <Typography.Paragraph strong style={{ fontSize: \"1rem\" }}>\n Deseja realmente excluir sua conta?\n </Typography.Paragraph>\n <Typography.Paragraph>\n Lembre-se de que todos os seus dados também serão excluÃdos. Caso\n possua um plano ativo, você também perderá todas as\n funcionalidades.\n </Typography.Paragraph>\n </Col>\n <Col span={24}>\n <Typography style={{ fontSize: \"1rem\" }}>\n Digite <strong>{KEY_PASS}</strong> para prosseguir:\n </Typography>\n </Col>\n <Col span={24}>\n <Form\n form={formKey}\n onChange={(event: any) => {\n setKeyPass(event.target.value);\n }}\n >\n <Form.Item name=\"key\">\n <Input placeholder={KEY_PASS} />\n </Form.Item>\n </Form>\n </Col>\n </Row>\n </Modal>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n h1 {\n font-weight: 400;\n font-size: 1.5rem;\n line-height: 2rem;\n color: var(--velotax-font-color-light);\n width: 700px;\n margin: 0 auto 16px;\n padding-bottom: 16px;\n position: relative;\n\n &::after {\n content: \"\";\n left: 0;\n bottom: 0;\n width: 100px;\n height: 2px;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n p {\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n width: 700px;\n margin: 0 auto 32px;\n }\n @media only screen and (max-device-width: 812px) {\n min-height: 100%;\n padding: 24px 0 0;\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 16px;\n }\n p {\n width: calc(100% - 48px);\n padding: 0 0 24px;\n margin: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 24px;\n margin: 0 auto;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n h3 {\n color: var(--velotax-font-color);\n }\n\n span.link {\n cursor: pointer;\n color: var(--ant-primary-color);\n }\n\n .ant-typography:not(h3) {\n text-align: justify;\n }\n\n a.ant-typography,\n .ant-typography a {\n color: var(--ant-primary-color);\n }\n\n .ant-typography i strong {\n font-size: 13px;\n letter-spacing: 0.625px;\n word-spacing: 0.625px;\n }\n\n iframe {\n max-width: 100%;\n }\n\n .ant-list {\n margin-bottom: 1em;\n }\n\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n border-radius: 8px;\n background-color: transparent;\n border: 1px solid var(--velotax-font-color-ghost);\n .ant-collapse-item {\n .ant-collapse-header {\n padding: 16px;\n font-size: 1.125rem;\n color: var(--velotax-font-color-light);\n .ant-collapse-arrow {\n font-size: 0.875rem;\n }\n }\n .ant-collapse-content {\n border-bottom: 1px solid;\n color: var(--velotax-font-color-light);\n background-color: var(--velotax-background-color);\n border-color: var(--velotax-font-color-ghost);\n }\n }\n\n .ant-collapse-item:last-child {\n .ant-collapse-content {\n border-bottom: none;\n border-radius: 0 0 8px 8px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n width: 100%;\n border-radius: 0;\n\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n border-radius: 0;\n border: none;\n }\n }\n`;\n","import { Divider, Typography } from \"antd\";\n\nexport const CompaniesExemptList = {\n title: \"Lista de empresas isentas\",\n content: (<div>\n <Typography.Paragraph>\n <strong>\n Lista de ações que, se vendidas com lucro até o dia 31/12/2023, \n são isentas de Impostos de Renda com base na lei 13.043, de 13 de novembro de 2014:\n </strong>\n </Typography.Paragraph>\n <Typography.Paragraph>\n - NUTRIPLANT (NUTR3)<br />\n - PETRORIO (PRIO3)*<br />\n - GENERAL SHOPPING (GSHP3)<br />\n - POMIFRUTAS (FRTA3)<br />\n - CR2 EMPREENDIMENTOS IMOBILIÃRIOS (CRDE3)<br />\n - SINQIA (SQIA3)*<br />\n - BRASIL AGRO (AGRO3)<br />\n - PRINER (PRNR3)\n </Typography.Paragraph> \n <Divider />\n <Typography.Text strong italic>\n * Válido para ações compradas antes do follow-on. A Sinqia e a Petrorio \n fizeram uma oferta de ações em setembro de 2019 e fevereiro de 2021, \n respectivamente. Caso você tenha comprado essas ações antes das datas das \n respectivas ofertas, você tem direito a isenção de imposto de renda sobre seus ganhos.\n </Typography.Text>\n </div>)\n};","import { useState } from \"react\";\nimport { List, Typography, Modal, Collapse } from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport { CompaniesExemptList } from \"../../constants/regulation\";\n\ninterface RegulationProps {}\n\nexport const Regulation: React.FC<RegulationProps> = () => {\n const [showListModal, setShowListModal] = useState(false);\n\n const handleListModal = () => {\n setShowListModal((show) => !show);\n };\n return (\n <Container>\n <h1>Regras de IR utilizadas pelo Velotax</h1>\n <p>\n Entenda quais são as normativas da Receita Federal que utilizamos para\n calcular automaticamente o seu imposto de renda\n </p>\n <Content>\n <Collapse accordion>\n <Collapse.Panel header=\"Bolsa de valores\" key=\"bolsa\">\n <Typography.Title level={3}>\n Entendendo o que é renda variável\n </Typography.Title>\n <Typography.Paragraph>\n O mercado de renda variável compreende ativos cuja remuneração ou\n retorno de capital não pode ser dimensionado no momento da\n aplicação. São eles as ações, quotas ou quinhões de capital, o\n ouro, ativo financeiro, e os contratos negociados nas bolsas de\n valores, de mercadorias, de futuros e assemelhadas.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, arts.\n 56, 58 e 60 a 62)\n </Typography.Text>\n <Typography.Title level={3}>\n Qual imposto de renda incide sobre operações de renda variável\n </Typography.Title>\n <Typography.Paragraph>\n O ganhos lÃquidos são constituÃdos pela diferença positiva entre o\n valor de venda do ativo e o seu custo de aquisição. Os ganhos\n lÃquidos auferidos em operações realizadas em bolsas de valores,\n de mercadorias, de futuros, e assemelhadas, inclusive day trade,\n serão tributados à s seguintes alÃquotas:\n </Typography.Paragraph>\n <List>\n <List.Item>\n a) 15%, nas operações realizadas nos mercados à vista, a termo,\n de opções e de futuros;\n </List.Item>\n <List.Item>b) 20%, no caso de operação day trade;</List.Item>\n <List.Item>\n c) 20%, no caso de operação com fundos imobiliários (FIIs).\n </List.Item>\n </List>\n <Typography.Text strong italic>\n (Lei nº 11.033, de 21 de dezembro de 2004, art. 2º, caput, incisos\n I e II, e §§ 1º e 2º; e Instrução Normativa RFB nº 1.585, de 31 de\n agosto de 2015, arts. 57, 63 e 65)\n </Typography.Text>\n <Typography.Title level={3}>\n Quando o imposto deve ser pago\n </Typography.Title>\n <Typography.Paragraph>\n O imposto sobre a renda deve ser pago até o último dia útil do mês\n subsequente à quele em que os ganhos houverem sido apurados.\n <br />\n <br />O código a ser utilizado no Documento de Arrecadação das\n Receitas Federais (DARF) para pagamento desse tributo é 6015.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 56, § 5º)\n </Typography.Text>\n <Typography.Title level={3}>\n Operações isentas de imposto de renda\n </Typography.Title>\n <Typography.Paragraph>\n A isenção de imposto de renda aplica-se para transações realizadas\n em mercados comuns e que se encaixem nas situações abaixo:\n </Typography.Paragraph>\n <List>\n <List.Item>\n a) com ações, no mercado à vista de bolsas de valores ou mercado\n de balcão, se o total das alienações desse ativo, realizadas no\n mês, não exceder a R$ 20.000,00 (vinte mil reais);\n </List.Item>\n <List.Item>\n b) com ações de pequenas e médias empresas a que se refere o\n art. 16 da Lei nº 13.043, de 13 de novembro de 2014;\n <br />\n <Typography.Link onClick={handleListModal}>\n Clique aqui para ver a lista de empresas isentas\n </Typography.Link>\n </List.Item>\n <List.Item>\n c) com ouro, ativo financeiro, se o total das alienações desse\n ativo, realizadas no mês, não exceder a R$ 20.000,00 (vinte mil\n reais);\n </List.Item>\n </List>\n <Typography.Paragraph>\n A isenção acima não se aplica, entre outras, à s operações de day\n trade, à s negociações de cotas de fundos de investimentos\n imobiliários (FIIs) e fundos de investimento em Ãndice de ações,\n aos resgates de cotas de fundos ou clubes de investimento em ações\n e à alienação de ações efetivada em operações de exercÃcio de\n opções e no vencimento ou liquidação antecipada de contratos a\n termo.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 11.033, de 21 de dezembro de 2004, art.3º, inciso I; Lei\n nº 13.043, de 13 de novembro de 2014, art. 16; e Instrução\n Normativa RFB nº 1.585 , de 31 de agosto de 2015, art. 59, incisos\n I e II e § 2º)\n </Typography.Text>\n <Typography.Title level={3}>\n O que é operação day trade\n </Typography.Title>\n <Typography.Paragraph>\n Considera-se day trade a operação ou a conjugação de operações\n iniciadas e encerradas em um mesmo dia, com <u>o mesmo ativo,</u>{\" \"}\n <u>em uma mesma instituição intermediadora (isto é, corretora)</u>\n , em que a quantidade negociada tenha sido liquidada, total ou\n parcialmente. Na apuração do resultado da operação day trade são\n considerados, pela ordem, o primeiro negócio de compra com o\n primeiro de venda ou o primeiro negócio de venda com o primeiro de\n compra, sucessivamente.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 9.959, de 27 de janeiro de 2000, art. 8º; Lei nº 12.350,\n de 20 de dezembro de 2010, art. 45; e Instrução Normativa RFB nº\n 1.585, de 31 de agosto de 2015, art. 65)\n </Typography.Text>\n <Typography.Title level={3}>\n Compensação de perdas passadas\n </Typography.Title>\n <Typography.Paragraph>\n As perdas incorridas nas operações de renda variável nos mercados\n à vista, de opções, futuros, a termo e assemelhados, poderão ser\n compensadas com os ganhos lÃquidos auferidos, no próprio mês ou\n nos meses subsequentes, em outras operações realizadas em qualquer\n das modalidades operacionais previstas nesses mercados.\n </Typography.Paragraph>\n <Typography.Paragraph>\n <strong>Atenção:</strong> as perdas incorridas em operações\n comuns, somente poderão ser compensadas com ganhos lÃquidos\n auferidos em operações da mesma espécie (comuns), realizadas no\n mês ou meses subsequentes. Do mesmo modo, as perdas incorridas em\n operações day trade somente são compensáveis com os ganhos\n lÃquidos auferidos nessas operações, e perdas incorridas em FIIs\n são compensáveis com os ganhos lÃquidos auferidos em FIIs.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Regulamento do Imposto sobre a Renda – RIR/2018, art. 841, §§ 1º\n e 2º, aprovado pelo Decreto nº 9.580, de 22 de novembro de 2018; e\n Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 64)\n </Typography.Text>\n <Typography.Title level={3}>\n Dedução de despesas operacionais\n </Typography.Title>\n <Typography.Paragraph>\n As despesas efetivamente pagas destacadas na nota de corretagem ou\n no extrato da conta-corrente para a realização de operações de\n compra ou venda (corretagens, emolumentos etc.) podem ser\n consideradas na apuração do ganho lÃquido, sendo acrescidas ao\n preço de compra e deduzidas do preço de venda dos ativos ou\n contratos negociados.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 8.383, de 30 de dezembro de 1991, art. 27; e Regulamento\n do Imposto sobre a Renda - RIR/2018, art. 841, caput e § 2º,\n aprovado pelo Decreto nº 9.580, de 22 de novembro de 2018; e\n Instrução Normativa RFB nº 1.585, de 31 de agosto de 2015, art.\n 56, § 3º)\n </Typography.Text>\n <Typography.Title level={3}>\n O que é o Portal da B3\n </Typography.Title>\n <Typography.Paragraph>\n O Portal da B3 armazena os saldos e os históricos de transação de\n forma consolidada para os investidores da bolsa de valores.\n <br />\n <br />\n Caso você nunca tenha se cadastrado no Portal da B3, faça o seu{\" \"}\n <Typography.Link\n target=\"_blank\"\n href=\"https://www.investidor.b3.com.br/\"\n >\n cadastro aqui\n </Typography.Link>\n . Só precisa ter o seu CPF e a data de nascimento em mãos.\n </Typography.Paragraph>\n {/*Remover os vÃdeos do passo a posso pois são baseados na calculadora antiga*/}\n {/* <Typography.Title level={3}>\n Ajustando manualmente o Velotax\n </Typography.Title>\n <Typography.Paragraph>\n Apesar do sistema do Velotax ser o mais automático possÃvel, algumas\n informações não estão disponÃveis na B3. Portanto os investidores\n devem ter atenção para ajustar manualmente na{\" \"}\n <Link to={`/${currentBroker.path}/darf`}>Calculadora</Link> os pontos\n abaixo.\n </Typography.Paragraph> */}\n {/* <Typography.Paragraph>\n <Collapse ghost>\n <Panel header=\"Onde encontrar suas notas corretagem\" key=\"1\">\n <iframe\n src=\"https://www.youtube.com/embed/hPbto5NvL6M\"\n title=\"Onde encontrar suas notas corretagem\"\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes de custo médio\" key=\"2\">\n <iframe\n src=\"https://www.youtube.com/embed/ABLC__0cFys\"\n title=\"Ajustes de custo médio\"\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes de prejuÃzos acumulados\" key=\"3\">\n <iframe\n src=\"https://www.youtube.com/embed/rVxHUk6S2y8\"\n frameBorder=\"0\"\n title=\"Ajustes de prejuÃzos acumulados\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes de desdobramentos e agrupamentos\" key=\"4\">\n <iframe\n src=\"https://www.youtube.com/embed/0yQaV0Wds2k\"\n frameBorder=\"0\"\n title=\"Ajustes de desdobramentos e agrupamentos\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes de operações vendidas e opções\" key=\"5\">\n <iframe\n src=\"https://www.youtube.com/embed/nMG4DDExw88\"\n frameBorder=\"0\"\n title=\"Ajustes de operações vendidas e opções\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes de operações de day trade\" key=\"6\">\n <iframe\n src=\"https://www.youtube.com/embed/d2Z7dTs4YTk\"\n frameBorder=\"0\"\n title=\"Ajustes de operações de day trade\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes de amortizações de FII\" key=\"7\">\n <iframe\n src=\"https://www.youtube.com/embed/s5ffyFXYZ9E\"\n frameBorder=\"0\"\n title=\"Ajustes de amortizações de FII\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n <Panel header=\"Ajustes para IPOs, follow-ons e subscrição\" key=\"8\">\n <iframe\n src=\"https://www.youtube.com/embed/iXTH8XYlduQ\"\n frameBorder=\"0\"\n title=\"Ajustes para IPOs, follow-ons e subscrição\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n </Panel>\n </Collapse>\n </Typography.Paragraph> */}\n <Typography.Title level={3}>\n Ainda tem dúvidas? Acesse:\n </Typography.Title>\n <Typography.Link\n target=\"_blank\"\n href=\"https://velotax.zendesk.com/hc/pt-br\"\n >\n Central de Ajuda\n </Typography.Link>\n , onde nosso time de suporte responde suas dúvidas\n </Collapse.Panel>\n\n <Collapse.Panel header=\"Criptoativos\" key=\"cripto\">\n <Typography.Title level={3}>\n Entendendo o que são criptoativos\n </Typography.Title>\n <Typography.Paragraph>\n Os criptoativos são a representação digital de valor denominada em\n sua própria unidade de conta, cujo preço pode ser expresso em\n moeda soberana local ou estrangeira, transacionado eletronicamente\n com a utilização de criptografia e de tecnologias de registros\n distribuÃdos, que pode ser utilizado como forma de investimento,\n instrumento de transferência de valores ou acesso a serviços, e\n que não constitui moeda de curso legal.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Alguns exemplos de criptoativos são Bitcoins, Altcoins (Ether,\n Ripple, Litecoin, entre outros) e Payment Tokens (Chiliz, Binance\n Coin, Chainlink, entre outros). Eles podem ser equiparados a\n ativos financeiros sujeitos a ganho de capital e devem ser\n declarados pelo seu valor de aquisição.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n </Typography.Text>\n <Typography.Title level={3}>\n Qual imposto de renda incide sobre ganhos com criptoativos\n </Typography.Title>\n <Typography.Paragraph>\n Os ganhos obtidos com a alienação de criptoativos cujo total\n alienado no mês seja superior a R$ 35.000,00 são tributados, a\n tÃtulo de ganho de capital, segundo alÃquotas progressivas\n estabelecidas em função do lucro:\n </Typography.Paragraph>\n <List>\n <List.Item>\n a) 15% sobre a parcela dos ganhos que não ultrapassar R$\n 5.000.000,00;\n </List.Item>\n <List.Item>\n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00\n e não ultrapassar R$ 10.000.000,00;\n </List.Item>\n <List.Item>\n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e\n não ultrapassar R$ 30.000.000,00; e\n </List.Item>\n <List.Item>\n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$\n 30.000.000,00.\n </List.Item>\n </List>\n <Typography.Text strong italic>\n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n </Typography.Text>\n <Typography.Title level={3}>\n Quando o imposto deve ser pago\n </Typography.Title>\n <Typography.Paragraph>\n O recolhimento do imposto sobre a renda deve ser feito até o\n último dia útil do mês seguinte ao da transação de venda.\n </Typography.Paragraph>\n <Typography.Paragraph>\n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (DARF) para pagamento desse tributo é 4600.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n </Typography.Text>\n <Typography.Title level={3}>\n Operações isentas de imposto de renda\n </Typography.Title>\n <Typography.Paragraph>\n A isenção relativa à s alienações de até R$ 35.000,00 mensais deve\n observar o conjunto de criptoativos ou moedas virtuais alienados\n no Brasil ou no exterior, independente de seu nome (bitcoin,\n ethereum, litecoin, tether ...). Caso o total alienado no mês\n ultrapasse esse valor, o ganho de capital relativo a todas as\n alienações estará sujeito à tributação.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n </Typography.Text>\n <Typography.Title level={3}>\n Como converter de dólares (US$) para reais (R$)\n </Typography.Title>\n <Typography.Paragraph>\n Para a conversão de valores em reais, o valor expresso em moeda\n estrangeira deve ser convertido em dólar dos Estados Unidos da\n América e convertido em moeda nacional pela cotação do dólar dos\n Estados Unidos da América fixada, para venda, pelo Banco Central\n do Brasil (BCB) para a data da operação ou saldo, extraÃda do\n boletim de fechamento PTAX divulgado pelo BCB.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n </Typography.Text>\n <Typography.Title level={3}>\n Compensação de perdas passadas\n </Typography.Title>\n <Typography.Paragraph>\n Como os ganhos em criptoativos estão sujeitos as regulações de\n ganho de capital, as perdas passadas em criptoativos não podem ser\n compensadas dos ganhos futuros. As operações em criptoativos são\n tratadas de maneira singular, não sendo possÃvel compensar os\n prejuÃzos de algumas operações com lucros de outras.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Mesmo para operações no mesmo mês, de forma conservadora, valem as\n disposições acima: informar cada operação de venda, sem compensar\n lucros com perdas.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa SRF nº 84, de 11 de outubro de 2001, art. 2º,\n parágrafo único)\n </Typography.Text>\n <Typography.Title level={3}>\n Dedução de despesas operacionais\n </Typography.Title>\n <Typography.Paragraph>\n As despesas com corretagem na venda de criptoativos podem ser\n abatidas do ganho de capital a ser tributado.\n </Typography.Paragraph>\n <Typography.Title level={3}>\n Ainda tem dúvidas? Acesse:\n </Typography.Title>\n -{\" \"}\n <Typography.Link\n target=\"_blank\"\n href=\"https://velotax.zendesk.com/hc/pt-br\"\n >\n Central de Ajuda\n </Typography.Link>\n , onde nosso time de suporte responde suas dúvidas\n </Collapse.Panel>\n\n <Collapse.Panel header=\"Exterior\" key=\"exterior\">\n <Typography.Title level={3}>\n Entendendo quais ativos no exterior estão sujeitos a tributação\n </Typography.Title>\n <Typography.Paragraph>\n A alienação de bens ou direitos e liquidação ou resgate de\n aplicações financeiras, de propriedade de pessoa fÃsica,\n adquiridos em moeda estrangeira estarão sujeitos as regras de\n tributação sobre ganho de capital.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Caso você tenha realizado operações que importem na alienação\n (venda) de bens ou direitos adquiridos em moeda estrangeira, como\n ações e outros ativos financeiros em bolsa de valores, de\n mercadorias, de futuros ou assemelhadas, você deverá efetuar o\n cálculo de ganho de capital tributável e o recolhimento do imposto\n devido segundo as alÃquotas progressivas estabelecidas em função\n do lucro.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 13.254, de 13 de janeiro de 2016; Lei nº 13.428, de 30 de\n março de 2017; Instrução Normativa SRF nº 118, de 27 de dezembro\n de 2000; Instrução Normativa SRF nº 84, de 11 de outubro de 2001,\n art. 3º; Instrução Normativa RFB nº 1.627, de 11 de março de 2016;\n e Instrução Normativa RFB nº 1.704, de 31 de março de 2017)\n </Typography.Text>\n <Typography.Title level={3}>\n Qual imposto de renda incide sobre ganhos na venda de ativos no\n exterior\n </Typography.Title>\n <Typography.Paragraph>\n Os ganhos obtidos com a alienação de investimentos no exterior\n cujo total alienado no mês seja superior a R$ 35.000,00 são\n tributados, a tÃtulo de ganho de capital, segundo alÃquotas\n progressivas estabelecidas em função do lucro:\n </Typography.Paragraph>\n <List>\n <List.Item>\n a) 15% sobre a parcela dos ganhos que não ultrapassar R$\n 5.000.000,00;\n </List.Item>\n <List.Item>\n b) 17,5% sobre a parcela dos ganhos que exceder R$ 5.000.000,00\n e não ultrapassar R$ 10.000.000,00;\n </List.Item>\n <List.Item>\n c) 20% sobre a parcela dos ganhos que exceder R$ 10.000.000,00 e\n não ultrapassar R$ 30.000.000,00;\n </List.Item>\n <List.Item>\n d) 22,5% sobre a parcela dos ganhos que ultrapassar R$\n 30.000.000,00.\n </List.Item>\n </List>\n <Typography.Text strong italic>\n (Lei nº 8.981, de 20 de janeiro de 1995, art. 21; Lei nº 13.259,\n de 16 de março de 2016; e Ato Declaratório Interpretativo RFB nº\n 3, de 27 de abril de 2016)\n </Typography.Text>\n <Typography.Title level={3}>\n Quando o imposto deve ser pago\n </Typography.Title>\n <Typography.Paragraph>\n O recolhimento do imposto sobre a renda deve ser feito até o\n último dia útil do mês seguinte ao da transação de venda.\n </Typography.Paragraph>\n <Typography.Paragraph>\n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (DARF) para pagamento desse tributo é 8523.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 5.172, de 25 de outubro de 1966 - Código Tributário\n Nacional - CTN, art. 118; Lei nº 8.981, de 20 de janeiro de 1995,\n art. 21; Instrução Normativa SRF nº 84, de 11 de outubro de 2001;\n Instrução Normativa SRF nº 599, de 28 de dezembro de 2005; e Ato\n Declaratório Interpretativo RFB nº 3, de 27 de abril de 2016)\n </Typography.Text>\n <Typography.Title level={3}>\n Operações isentas de imposto de renda\n </Typography.Title>\n <Typography.Paragraph>\n A isenção relativa à s alienações de até R$ 35.000,00 mensais deve\n observar o conjunto de instrumentos financeiros negociados em\n bolsa de valores no exterior, como ETFs (Exchange Traded Funds),\n REITs (Real Estate Investment Trust), ADRs (American Depositary\n Receipt) e Stocks (ações). Caso o total alienado no mês ultrapasse\n esse valor, o ganho de capital relativo a todas as alienações\n estará sujeito à tributação.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 9.250, de 26 de dezembro de 1995, art. 22, I e II; Lei nº\n 10.406, de 10 de janeiro de 2002, art. 1.725; Instrução Normativa\n SRF nº 599, de 28 de dezembro de 2005, art. 1º; Solução de\n Consulta Cosit nº 320, de 20 de junho de 2017; e Solução de\n Consulta Cosit nº 264, de 24 de junho de 2019)\n </Typography.Text>\n <Typography.Title level={3}>\n Como funciona o cálculo do imposto de renda no exterior\n </Typography.Title>\n <Typography.Paragraph>\n Na hipótese de bens ou direitos adquiridos e aplicações\n financeiras realizadas em moeda estrangeira com rendimentos\n auferidos originariamente em reais, o ganho de capital corresponde\n à diferença positiva, em reais, entre o valor de venda e o custo\n de aquisição da aplicação financeira.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Neste caso, o valor de venda deve ser convertido para reais pela\n cotação do dólar fixada para compra, pelo Banco Central do Brasil,\n para a data do recebimento. Já o custo de aquisição deve ser\n convertido em reais pela cotação do dólar fixada para venda para a\n data do pagamento.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Caso os rendimentos auferidos utilizados na aquisição sejam\n originariamente em moeda estrangeira, o ganho de capital\n corresponde à diferença positiva, em dólares dos Estados Unidos da\n América, entre o valor de venda e o custo de aquisição da\n aplicação, convertida em moeda nacional mediante a utilização da\n cotação do dólar fixada, para compra, pelo Banco Central do\n Brasil, para a data do recebimento\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Medida Provisória nº 2.158-35, de 24 de agosto de 2001, art. 24;\n Lei nº 8.981, de 20 de janeiro de 1995, art. 21; Instrução\n Normativa SRF nº 208, de 27 de setembro de 2002; Instrução\n Normativa SRF nº 118, de 27 de dezembro de 2000; Solução de\n Consulta Interna Cosit nº 5, de 15 de fevereiro de 2013; e Solução\n de Consulta Cosit nº 33, de 26 de fevereiro de 2015)\n </Typography.Text>\n <Typography.Title level={3}>\n Como converter de dólares (US$) para reais (R$)\n </Typography.Title>\n <Typography.Paragraph>\n Para a conversão de valores em reais, o valor expresso em moeda\n estrangeira deve ser convertido em dólar dos Estados Unidos da\n América e convertido em moeda nacional pela cotação do dólar dos\n Estados Unidos da América fixada, para compra ou venda, pelo Banco\n Central do Brasil (BCB) para a data da operação ou saldo, extraÃda\n do boletim de fechamento PTAX divulgado pelo BCB.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa RFB nº 1.888, de 3 de maio de 2019)\n </Typography.Text>\n <Typography.Title level={3}>\n Compensação de perdas passadas\n </Typography.Title>\n <Typography.Paragraph>\n Como os ganhos na venda de ativos no exterior estão sujeitos as\n regulações de ganho de capital, as perdas passadas em ativos no\n exterior não podem ser compensadas dos ganhos futuros. As\n operações com ativos no exterior são tratadas de maneira singular,\n não sendo possÃvel compensar os prejuÃzos de algumas operações com\n lucros de outras.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Mesmo para operações no mesmo mês, de forma conservadora, valem as\n disposições acima: informar cada operação de venda, sem compensar\n lucros com perdas.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Instrução Normativa SRF nº 84, de 11 de outubro de 2001, art. 2º,\n parágrafo único)\n </Typography.Text>\n <Typography.Title level={3}>\n Dedução de despesas operacionais\n </Typography.Title>\n <Typography.Paragraph>\n As despesas com corretagem na venda de ativos no exterior podem\n ser abatidas do ganho de capital a ser tributado.\n </Typography.Paragraph>\n <Typography.Title level={3}>\n Ainda tem dúvidas? Acesse:\n </Typography.Title>\n -{\" \"}\n <Typography.Link\n target=\"_blank\"\n href=\"https://velotax.zendesk.com/hc/pt-br\"\n >\n Central de Ajuda\n </Typography.Link>\n , onde nosso time de suporte responde suas dúvidas\n </Collapse.Panel>\n\n {/* <Collapse.Panel header=\"Autônomos/Aluguel\" key=\"autonomos\">\n <Typography.Title level={3}>\n Imposto de Renda sobre Rendimentos\n </Typography.Title>\n <Typography.Paragraph>\n Os rendimentos recebidos de outras pessoas fÃsicas ou de fontes no\n exterior que ultrapassem o valor isento de R$1.903,98 por mês\n estarão sujeitos ao recolhimento mensal do imposto de renda.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Nessa categoria, os principais rendimentos tributados incluem,\n entre outros:\n </Typography.Paragraph>\n <List style={{ marginLeft: \"40px\" }}>\n <Typography.Paragraph>\n a) Autônomos, incluindo trabalhos sem vÃnculo empregatÃcio;\n </Typography.Paragraph>\n <Typography.Paragraph>\n b) Aluguéis, incluindo a locação e sublocação de bens móveis e\n imóveis;\n </Typography.Paragraph>\n <Typography.Paragraph>\n c) Pensão, incluindo pensão alimentÃcia e alimentos\n provisionais;\n </Typography.Paragraph>\n <Typography.Paragraph>\n d) Exterior, incluindo quaisquer valores recebidos de fontes do\n exterior.\n </Typography.Paragraph>\n </List>\n <Typography.Text strong italic>\n (Regulamento do Imposto sobre a Renda - RIR/2018, arts. 118 a 121\n e art. 123, aprovado pelo Decreto nº 9.580, de 22 de novembro de\n 2018; Instrução Normativa RFB nº 1.500, de 29 de outubro de 2014,\n arts. 24, § 4º, 53 e 54; Instrução Normativa RFB nº 1.531, de 19\n de dezembro de 2014)\n </Typography.Text>\n <Typography.Title level={3}>Autônomos</Typography.Title>\n <Typography.Paragraph>\n Inclui os profissionais não-assalariados que recebem de outras\n pessoas fÃsicas, e que possuem rendimentos advindos da prestação\n de serviços de representante comercial autônomo, intermediação na\n realização de negócios por conta de terceiros, prestação de\n serviços de transporte de passageiros, prestação de serviços de\n transporte de cargas, entre outros trabalhos sem vÃnculo\n empregatÃcio.\n </Typography.Paragraph>\n <Typography.Title level={3}>Aluguéis</Typography.Title>\n <Typography.Paragraph>\n Inclui proprietários de imóveis que possuem rendimentos de\n aluguéis, considerando que:\n </Typography.Paragraph>\n <List style={{ marginLeft: \"40px\" }}>\n <Typography.Paragraph>\n (a) Apenas o valor lÃquido do aluguel é tributado. As despesas\n de IPTU, condomÃnio, cobrança/recebimento e aluguel no caso de\n imóvel sublocado podem ser descontadas do rendimento;\n </Typography.Paragraph>\n <Typography.Paragraph>\n (b) Se você tiver mais de um imóvel e receber mais de um aluguel\n por mês, será necessário considerar a quantia total dos aluguéis\n recebidos.\n </Typography.Paragraph>\n </List>\n <Typography.Text>\n A data do pagamento, para efeito de incidência do imposto, será\n considerada aquela em que o locatário pagar o aluguel ao\n proprietário do bem ou à administradora.\n </Typography.Text>\n <Typography.Title level={3}>Pensão AlimentÃcia</Typography.Title>\n <Typography.Paragraph>\n Inclui os alimentandos que recebem pensão alimentÃcia. A pensão\n alimentÃcia pode ser recebida não apenas pelos filhos, mas por\n qualquer pessoa que tenha recebido esse benefÃcio por decisão\n judicial, acordo homologado judicialmente ou por escritura\n pública. O contribuinte é o beneficiário da pensão, ainda que\n tenha sido paga a seu representante legal.\n </Typography.Paragraph>\n <Typography.Title level={3}>Exterior</Typography.Title>\n <Typography.Paragraph>\n Inclui pessoas fÃsicas com rendimentos ou quaisquer outros valores\n recebidos de fontes do exterior. Neste caso, é importante observar\n a possÃvel existência de{\" \"}\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/legislacao/acordos-internacionais/acordos-para-evitar-a-dupla-tributacao/acordos-para-evitar-a-dupla-tributacao\"\n >\n acordos, convenções e tratados internacionais\n </a>{\" \"}\n firmados entre o Brasil e o paÃs de origem dos rendimentos para\n evitar a bitributação.\n </Typography.Paragraph>\n <Typography.Title level={3}>\n Qual imposto de renda incide\n </Typography.Title>\n <Typography.Paragraph>\n O imposto sobre rendimentos é calculado sobre o total recebido no\n mês, mediante a aplicação da seguinte tabela progressiva mensal:\n </Typography.Paragraph>\n <List style={{ marginLeft: \"40px\" }}>\n <Typography.Paragraph>\n a) Até R$ 1.903,98 não há impostos a pagar;\n </Typography.Paragraph>\n <Typography.Paragraph>\n b) De R$ 1.903,99 até R$ 2.826,65, a alÃquota é de 7,5% sobre os\n rendimentos, com parcela a deduzir de R$ 142,80;\n </Typography.Paragraph>\n <Typography.Paragraph>\n c) De R$ 2.826,66 até R$ 3.751,05, a alÃquota é de 15% sobre os\n rendimentos, com parcela a deduzir de R$ 354,80;\n </Typography.Paragraph>\n <Typography.Paragraph>\n d) De R$ 3.751,06 até R$ 4.664,68, a alÃquota é de 22,5% sobre\n os rendimentos, com parcela a deduzir de R$ 636,13;\n </Typography.Paragraph>\n <Typography.Paragraph>\n e) Acima de R$ 4.664,68, a alÃquota é de 27,5% sobre os\n rendimentos, com parcela a deduzir de R$ 869,36.\n </Typography.Paragraph>\n </List>\n <Typography.Text strong italic>\n (Lei nº 11.482, de 31 de maio de 2007, arts. 1º e 3º; Lei nº\n 12.024, de 27 de agosto de 2009, art. 3º; Regulamento do Imposto\n sobre a Renda - RIR/2018, art. 121, aprovado pelo Decreto nº\n 9.580, de 22 de novembro de 2018; Instrução Normativa RFB nº\n 1.500, de 29 de outubro de 2014, arts. 53 a 57 e 65; Solução de\n Consulta Interna Cosit nº 3, de 8 de fevereiro de 2012; e Solução\n de Consulta Interna Cosit nº 6, de 25 de maio de 2015)\n </Typography.Text>\n <Typography.Title level={3}>\n Quando o imposto deve ser pago\n </Typography.Title>\n <Typography.Paragraph>\n O recolhimento do imposto de renda deve ser feito até o último dia\n útil do mês seguinte ao recebimento dos rendimentos.\n </Typography.Paragraph>\n <Typography.Paragraph>\n O código a ser utilizado no Documento de Arrecadação das Receitas\n Federais (DARF) para pagamento desse tributo é 0190.\n </Typography.Paragraph>\n <Typography.Text strong italic>\n (Lei nº 8.383, de 30 de dezembro de 1991, art. 7º; e Instrução\n Normativa RFB nº 1.500, de 29 de outubro de 2014, arts. 53 a 57 e\n 67)\n </Typography.Text>\n <Divider />\n <iframe\n width=\"560\"\n height=\"315\"\n src=\"https://www.youtube.com/embed/GNf-E5NittE\"\n title=\"YouTube video player\"\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n ></iframe>\n <Divider />\n <Typography.Title level={3}>\n Deduções no imposto de renda\n </Typography.Title>\n <Typography.Paragraph>\n São admitidas as seguintes deduções na base de cálculo do imposto\n sobre rendimentos:\n </Typography.Paragraph>\n <List style={{ marginLeft: \"40px\" }}>\n <Typography.Paragraph>\n a) Contribuição previdenciária oficial, o INSS;\n </Typography.Paragraph>\n <Typography.Paragraph>\n b) Dependentes, sendo R$ 189,59 por dependente a partir do ano\n 2021;\n </Typography.Paragraph>\n <Typography.Paragraph>\n c) Pensão alimentÃcia, quando paga em cumprimento de decisão\n judicial, inclusive os alimentos provisionais, de acordo\n homologado judicialmente ou de escritura pública; e\n </Typography.Paragraph>\n <Typography.Paragraph>\n d) Despesas relacionadas à atividade do profissional autônomo\n </Typography.Paragraph>\n </List>\n <Typography.Paragraph>\n No caso de autônomos, somente as seguintes categorias de despesas\n podem ser deduzidas da base tributária:\n </Typography.Paragraph>\n <List style={{ marginLeft: \"40px\" }}>\n <Typography.Paragraph>\n i) Despesas trabalhistas;\n </Typography.Paragraph>\n <Typography.Paragraph>\n ii) Serviços de terceiros;\n </Typography.Paragraph>\n <Typography.Paragraph>\n iii) Despesas com custeio e funcionamento;\n </Typography.Paragraph>\n <Typography.Paragraph>\n iv) Propaganda, assinatura de jornais e revistas;\n </Typography.Paragraph>\n <Typography.Paragraph>v) Roupas especiais;</Typography.Paragraph>\n <Typography.Paragraph>\n vi) Contribuições a sindicatos, associações ou conselhos;\n </Typography.Paragraph>\n <Typography.Paragraph>\n vii) Despesas com congressos e seminários;\n </Typography.Paragraph>\n <Typography.Paragraph>\n viii) Honorários profissionais;\n </Typography.Paragraph>\n <Typography.Paragraph>\n ix) Imóvel residencial ou profissional;\n </Typography.Paragraph>\n <Typography.Paragraph>\n x) Manutenção e conservação;\n </Typography.Paragraph>\n <Typography.Paragraph>\n xi) Correios e transporte;\n </Typography.Paragraph>\n <Typography.Paragraph>\n xii) Instalações, máquinas e equipamentos;\n </Typography.Paragraph>\n <Typography.Paragraph>\n xii) Despesas Comuns como rateio sob forma de CondomÃnio;\n </Typography.Paragraph>\n <Typography.Paragraph>\n xiv) Outras despesas necessárias à atividade especÃfica e\n individual de cada contribuinte não contempladas anteriormente.\n </Typography.Paragraph>\n </List>\n <Typography.Text strong italic>\n (Lei nº 7.290, de 19 de dezembro de 1984; Lei nº 7.713, de 22 de\n dezembro de 1988, art. 9º; Regulamento do Imposto sobre a Renda -\n RIR/2018, arts. 39 e 158, § 1º, aprovado pelo Decreto nº 9.580, de\n 22 de novembro de 2018; e Parecer Normativo CST nº 122, de 8 de\n junho de 1974)\n </Typography.Text>\n <Typography.Title level={3}>\n Utilizando o Velotax para IR em Rendimentos\n </Typography.Title>\n <Typography.Paragraph>\n A{\" \"}\n <span\n className=\"link\"\n onClick={() => navigate(`/${currentBroker.path}/autonomos`)}\n >\n Calculadora\n </span>{\" \"}\n do Velotax para cálculo e pagamento de IR sobre rendimentos de\n pessoas fÃsicas ou fontes no exterior permite a inclusão manual de\n operações, e realiza os cálculos automaticamente seguindo as\n regras da Receita Federal.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Após inserir os seus rendimentos do mês, o Velotax calculará os\n seus impostos devidos de acordo com as regras acima e emitirá o\n seu DARF para pagamento.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Caso você esteja pagando em atraso, o Velotax também incluirá\n automaticamente os juros e multa devidos no seu DARF.\n </Typography.Paragraph>\n <Typography.Title level={3}>\n Ainda tem dúvidas? Acesse:\n </Typography.Title>\n <Typography.Paragraph>\n -{\" \"}\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://www.velotax.com.br/forum\"\n >\n Fórum\n </a>{\" \"}\n , onde nossa comunidade de usuários responde suas dúvidas\n </Typography.Paragraph>\n </Collapse.Panel> */}\n </Collapse>\n </Content>\n\n <Modal\n footer={null}\n visible={showListModal}\n onCancel={handleListModal}\n title={CompaniesExemptList?.title}\n width={1000}\n >\n {CompaniesExemptList?.content}\n </Modal>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n &.view-edit {\n padding: 0;\n }\n &.view {\n padding: 0;\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n .juridic-messages-container {\n opacity: 0.8;\n margin: 0 auto;\n padding: 24px 0 0;\n max-width: 700px;\n\n .message {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 1rem;\n }\n\n p {\n font-size: 0.85rem;\n font-weight: 400;\n text-align: justify;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n\n i {\n font-weight: bold;\n color: var(--velotax-font-color-light);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 64px;\n\n h1 {\n max-width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n .juridic-messages-container {\n margin: 0;\n width: 100%;\n p {\n margin-left: 0;\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n &.second.view,\n &.second.view-edit {\n padding: 0 32px 32px;\n }\n &.second {\n padding: 32px;\n }\n margin: 0 auto;\n max-width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n h3 {\n display: flex;\n align-items: center;\n font-size: 20px;\n column-gap: 16px;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n user-select: none;\n }\n h3.date-title {\n font-size: 24px;\n font-weight: 700;\n }\n .month-chevron {\n width: 32px;\n height: 32px;\n cursor: pointer;\n &.disabled {\n opacity: 0.15;\n cursor: default;\n }\n }\n .desc-label {\n display: flex;\n align-items: center;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n .desc-content {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n column-gap: 8px;\n svg {\n fill: var(--ant-primary-color);\n }\n span {\n align-self: center;\n }\n button {\n min-width: 32px;\n }\n }\n .ml-40 {\n margin-left: 40px;\n }\n .add {\n float: right;\n min-width: 128px;\n margin-bottom: 16px;\n }\n .ant-descriptions-view {\n border-radius: 4px !important;\n }\n .ant-descriptions-item-label {\n width: 50%;\n color: var(--velotax-font-color-light) !important;\n }\n .ant-descriptions-item-content {\n text-align: center;\n background-color: #3d3d3d !important;\n span {\n color: var(--velotax-font-color-light) !important;\n }\n }\n .ant-list.ant-list-split {\n clear: both;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .list-description {\n display: flex;\n flex-direction: column;\n }\n .min-darf-price {\n margin-top: 24px;\n display: flex;\n align-items: center;\n column-gap: 8px;\n }\n .text-center {\n display: block;\n text-align: center;\n }\n .ant-collapse-header {\n padding: 12px 0 !important;\n }\n .ant-collapse-content-box {\n padding: 16px 0 !important;\n }\n .ant-collapse\n > .ant-collapse-item\n > .ant-collapse-header\n .ant-collapse-arrow\n svg {\n transform: rotate(-90deg);\n }\n .ant-collapse-item-disabled {\n & > .ant-collapse-header {\n cursor: default;\n .ant-collapse-arrow {\n opacity: 0;\n }\n }\n }\n .ant-collapse-header-text {\n width: 100%;\n }\n .total-tax-header {\n width: calc(100% - 48px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n &.original {\n h3:last-of-type {\n width: 40%;\n }\n }\n h3 {\n margin: 0 0 8px;\n }\n }\n\n .no-plan-container {\n position: absolute;\n top: 0;\n left: 50%;\n width: 50%;\n z-index: 3;\n height: 100%;\n padding: 8px;\n display: flex;\n font-size: 16px;\n font-weight: 500;\n text-align: center;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n background-color: #fff4;\n border-radius: 0 8px 8px 0;\n backdrop-filter: blur(4px);\n border: 1px solid var(--velotax-background-color-ghost);\n border-left: none;\n .ant-btn {\n margin-top: 8px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n padding: 24px;\n border-radius: 0;\n &.first {\n padding: 24px;\n }\n &.second {\n padding: 24px !important;\n border-top: 1px solid #313131;\n }\n h3 {\n font-size: 18px;\n }\n .no-plan-container {\n font-size: 14px;\n line-height: 18px;\n }\n .anticon.anticon-right.ant-collapse-arrow {\n top: 24px;\n }\n .desc-content {\n column-gap: 2px;\n flex-direction: row;\n &.is-editting {\n row-gap: 8px;\n flex-direction: column;\n button {\n width: 100%;\n }\n }\n &:not(.is-editting) {\n span {\n line-height: 32px;\n }\n button {\n margin-top: -2px;\n }\n }\n &.ml-40 {\n margin-left: 0;\n }\n }\n }\n`;\n","import { useEffect, useState } from \"react\";\nimport { Col, Form, Modal, Row } from \"antd\";\nimport { FooterModal } from \"../FooterModal\";\n\ninterface FormModalProps {\n add: any;\n edit: any;\n title: string;\n onCancel: any;\n itemToEdit: any;\n visibility: boolean;\n hideFooter?: boolean;\n rows: any[];\n disableButtons?: boolean;\n preFormChildren?: React.ReactNode;\n loading?: boolean;\n cancelButtonText?: string;\n saveButtonText?: string;\n}\n\nexport const FormModal: React.FC<FormModalProps> = ({\n add,\n edit,\n rows,\n title,\n onCancel,\n visibility,\n itemToEdit,\n children,\n disableButtons,\n preFormChildren,\n hideFooter,\n loading,\n cancelButtonText,\n saveButtonText\n}) => {\n const [form] = Form.useForm();\n const [, setUpdate] = useState(false);\n\n useEffect(() => {\n if (!visibility) {\n form.resetFields();\n } else if (itemToEdit) {\n setUpdate((update) => !update);\n form.setFieldsValue(itemToEdit);\n }\n }, [visibility, form, itemToEdit]);\n\n const onValuesChange = (changedValues: any, values: any) => {\n const inputs = rows\n .flat()\n .map((input) =>\n typeof input === \"function\" ? input({ data: values }) : input\n );\n if (\n inputs\n .filter((item) => item.mustUpdate)\n .map((item) => item.name)\n .includes(Object.keys(changedValues)[0])\n ) {\n setUpdate((update) => !update);\n }\n const data = {\n ...values,\n ...inputs\n .filter((input) => input.onChange)\n .reduce(\n (acc, cur) => ({\n ...acc,\n [cur.name]: cur.onChange?.(changedValues, { ...values, ...acc }),\n }),\n {}\n ),\n };\n const dataEntries = Object.entries(data);\n form.setFields(dataEntries.map(([name, value]) => ({ name, value })));\n form.resetFields(\n dataEntries\n .filter(([, value]) => value === undefined || value === null)\n .map(([name]) => name)\n );\n };\n\n const onFinish = (data: any) => {\n if (itemToEdit) {\n edit(data);\n } else {\n add(data);\n }\n };\n\n return (\n <Modal\n footer={null}\n title={title}\n onCancel={onCancel}\n visible={visibility}\n bodyStyle={{ backgroundColor: \"var(--white)\" }}\n >\n {preFormChildren}\n <Form\n form={form}\n size=\"large\"\n layout=\"vertical\"\n onFinish={onFinish}\n onValuesChange={onValuesChange}\n >\n {rows.map((row, index) => (\n <Row key={index} gutter={[16, 16]}>\n {row\n .map((input: any) =>\n typeof input === \"function\"\n ? input({ data: form.getFieldsValue() })\n : input\n )\n .filter(\n (input: any) =>\n !(\n typeof input.hide === \"function\" &&\n input.hide({ data: form.getFieldsValue() })\n )\n )\n .map((input: any, index: number, array: any[]) => (\n <Col\n key={input.name}\n span={input.span ? input.span : 24 / array.length}\n style={input.align ? { alignSelf: input.align } : {}}\n >\n <Form.Item\n name={input.name}\n rules={input.rules}\n hidden={input.hidden}\n >\n {input.input}\n </Form.Item>\n </Col>\n ))}\n </Row>\n ))}\n {children}\n <br />\n {!hideFooter && (\n <FooterModal onCancel={onCancel} disabled={disableButtons} loading={loading} cancelButtonText={cancelButtonText} saveButtonText={saveButtonText} />\n )}\n </Form>\n </Modal>\n );\n};\n","import { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Divider, message, Modal, Typography } from \"antd\";\nimport apis from \"../../../../services/apis\";\nimport Button from \"../../../../components/Button\";\nimport { useAuth } from \"../../../../contexts/AuthContext\";\nimport { useBroker } from \"../../../../contexts/BrokerContext\";\nimport { errorMessage, monthsExtended } from \"../../../../utils\";\n\ninterface IntegrationModalProps {\n visible: boolean;\n onCancel: () => void;\n}\n\nexport const IntegrationModal: React.FC<IntegrationModalProps> = ({\n visible,\n onCancel,\n}) => {\n const { user } = useAuth();\n const navigate = useNavigate();\n const [loading, setLoading] = useState(false);\n const { currentBroker, integration, handleIntegrationInit, currentPage } =\n useBroker();\n\n const integrationDate = new Date(integration.lastUpdate);\n\n const handleIntegrate = () => {\n if (integration.key) {\n setLoading(true);\n (currentPage?.api || apis)\n .post(`${currentBroker.apiUrl}/integrate`, {\n key: integration.key,\n email: user.user.email,\n })\n .then(() => {\n setLoading(false);\n handleIntegrationInit();\n })\n .catch((err) => {\n setLoading(false);\n if (err?.response?.data?.message?.includes(\"Aguarde\")) {\n message.error(err?.response?.data?.message);\n } else {\n message.error(errorMessage);\n }\n });\n } else {\n navigate(`/${currentBroker.path}/integration`);\n }\n };\n\n return (\n <Modal\n footer={null}\n visible={visible}\n onCancel={onCancel}\n title=\"Faça a integração novamente\"\n >\n <Typography>\n A sua última integração foi feita no mês de{\" \"}\n {monthsExtended[integrationDate.getMonth()]} de{\" \"}\n {integrationDate.getFullYear()}. Para gerenciar operações e gerar DARFs\n dos meses seguintes ao da última integração, você precisa integrar\n novamente.\n </Typography>\n <Divider />\n <Button\n size=\"large\"\n type=\"primary\"\n loading={loading}\n disabled={loading}\n onClick={handleIntegrate}\n style={{ marginLeft: \"auto\" }}\n >\n Integrar\n </Button>\n </Modal>\n );\n};\n","import { Typography } from \"antd\";\n\nexport const DatePickerExtraFooter: React.FC = () => {\n return (\n <>\n <Typography.Text strong>Situação:</Typography.Text>\n <div className=\"sample-regular\">\n <span>Imposto apurado</span>\n </div>\n <div className=\"sample-pending\">\n <span>Imposto devido</span>\n </div>\n </>\n );\n};\n","import React, { useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Divider, message, Modal, Row } from \"antd\";\nimport { Button } from \"@mui/material\";\n\ninterface IDeleteConfirmationModalProps {\n title: string;\n visibility: boolean;\n body: React.ReactNode;\n onCancel: () => void;\n onOk?: () => Promise<any>;\n updateData?: () => void;\n setVisibility: (param: any) => void;\n buttonLabel?: string;\n showToast?: boolean;\n successMessage?: string;\n}\n\nconst DeleteConfirmationModal: React.FC<IDeleteConfirmationModalProps> = ({\n title,\n visibility,\n onCancel,\n onOk,\n body,\n updateData,\n setVisibility,\n buttonLabel,\n showToast = true,\n successMessage\n}) => {\n const [loading, setLoading] = useState(false);\n const handleOnOk = () => {\n setLoading(true);\n const finish = () => {\n setLoading(false);\n updateData?.();\n setVisibility(false);\n showToast && message.success(successMessage || \"Deletado com sucesso\");\n };\n if (onOk) {\n onOk()\n .then(() => finish())\n .catch((err) => {\n showToast && message.error(\"Algo deu errado\");\n setLoading(false);\n });\n } else {\n finish();\n }\n };\n return (\n <Modal\n title={title}\n footer={null}\n destroyOnClose\n onCancel={onCancel}\n visible={visibility}\n maskClosable={false}\n >\n <p>{body}</p>\n <Divider />\n <Row gutter={16}>\n <Col span={12}>\n <Button\n size=\"large\"\n color=\"inherit\"\n variant=\"contained\"\n disabled={loading}\n onClick={onCancel}\n className=\"full-width\"\n >\n Cancelar\n </Button>\n </Col>\n <Col span={12}>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading}\n onClick={handleOnOk}\n className=\"full-width\"\n >\n {loading && <LoadingOutlined />}\n {buttonLabel || \"Deletar\"}\n </Button>\n </Col>\n </Row>\n </Modal>\n );\n};\n\nexport default DeleteConfirmationModal;\n","import clsx from \"clsx\";\nimport { months } from \"../../../../utils\";\nimport {\n YearResumeStatusCSSClassEnum,\n YearResumeStatusFromBackEnum,\n} from \"../../../../constants/darf\";\n\nexport interface YearResume {\n year: number;\n months: {\n month: number;\n payed: boolean;\n status: keyof typeof YearResumeStatusFromBackEnum;\n }[];\n}\n\ninterface DatePickerMonthCellProps {\n event: moment.Moment;\n yearResume: YearResume[];\n}\n\nexport const DatePickerMonthCell: React.FC<DatePickerMonthCellProps> = ({\n event,\n yearResume,\n}) => {\n const date = new Date();\n const year = event.year();\n const month = event.month();\n const item = yearResume\n .find((list) => list.year === year)\n ?.months.find((item) => item.month - 1 === month);\n const disabled = year === date.getFullYear() && month >= date.getMonth();\n return (\n <div\n className={clsx(\n \"ant-picker-cell-inner\",\n item && !disabled ? YearResumeStatusCSSClassEnum[item.status] : \"\"\n )}\n >\n {months[month]}\n </div>\n );\n};\n","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { BsCalendar3, BsDownload } from \"react-icons/bs\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { BiChevronLeft, BiChevronRight } from \"react-icons/bi\";\nimport { AiOutlineDelete, AiOutlineLock } from \"react-icons/ai\";\nimport { useCallback, useEffect, useMemo, useState, ReactNode } from \"react\";\nimport { LoadingOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n Collapse,\n DatePicker,\n Descriptions,\n List,\n message,\n Modal,\n Row,\n Skeleton,\n Space,\n Spin,\n Tooltip,\n Typography,\n} from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\nimport AntButton from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { FormModal } from \"../../components/FormModal\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport apis, { NOT_AUTHORIZED } from \"../../services/apis\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\nimport { IntegrationModal } from \"./Components/IntegrationModal\";\nimport { DatePickerExtraFooter } from \"./Components/DatePickerExtraFooter\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport {\n DatePickerMonthCell,\n YearResume,\n} from \"./Components/DatePickerMonthCell\";\nimport {\n antDatePickerLocale,\n download,\n errorMessage,\n formatCurrency,\n monthsExtended,\n} from \"../../utils\";\nimport {\n DarfResultDescriptions,\n DarfFormItemRows,\n defaultDarf,\n DarfModal,\n IDarf,\n DarfImpostosDevidosDescriptions,\n minDarfPrice,\n maxDarfPrice,\n YearResumeStatusFromBackEnum,\n yearConfigPL4173,\n} from \"../../constants/darf\";\n\ninterface DarfProps {\n item: Page;\n view?: boolean;\n viewEdit?: boolean;\n closeModal?: () => void;\n darf?: {\n id: string;\n fullPath?: string;\n };\n date?: {\n year?: number;\n month?: number;\n };\n}\n\nexport const Darf: React.FC<DarfProps> = ({\n item,\n view,\n date,\n darf,\n viewEdit,\n closeModal,\n}) => {\n const {\n user,\n hasPlan: hasPremiunPlan,\n showUserPlanModal,\n userPlanModal,\n } = useAuth();\n const hasPlan = hasPremiunPlan;\n\n const navigate = useNavigate();\n const { state } = useLocation();\n const { currentBroker, currentPage } = useBroker();\n const today = new Date();\n const queryYear = (state as any)?.year as number;\n const queryMonth = (state as any)?.month as number;\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const maxPixPayment = 10000;\n const maxCreditCardPayment = 10000;\n\n const initialMonth = queryMonth\n ? queryMonth - 1\n : today.getMonth() - 1 >= 0\n ? today.getMonth() - 1\n : 11;\n const initialYear = queryYear\n ? queryYear\n : today.getMonth() - 1 >= 0\n ? today.getFullYear()\n : today.getFullYear() - 1;\n const defaultValue = moment({ month: initialMonth, year: initialYear });\n const currentDate = moment({\n month: currentMonth,\n year: currentYear,\n }).subtract(1, \"M\");\n window.history.replaceState({}, document.title);\n\n const year = date?.year ?? initialYear;\n const month = date?.month ?? initialMonth;\n const oldModel = year < yearConfigPL4173;\n\n const [asset, setAsset] = useState<any>();\n const [loading, setLoading] = useState(true);\n const [emitting, setEmitting] = useState(false);\n const [darfModal, setDarfModal] = useState<any>();\n const [helpModal, setHelpModal] = useState<any>();\n const [paymentModal, setPaymentModal] = useState(false);\n const [paymentData, setPaymentData] = useState<IDarf>();\n const [, setYear] = useState(initialYear);\n const [, setMonth] = useState(initialMonth);\n const [data, setData] = useState<IDarf>(defaultDarf);\n const [showAssetModal, setShowAssetModal] = useState(false);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [yearResume, setYearResume] = useState<YearResume[]>([]);\n const [gettingYearResume, setGettingYearResume] = useState(false);\n const [datePickerYear, setDatePickerYear] = useState(initialYear);\n const [notAuthorized, setNotAuthorized] = useState(false);\n const [showNotAuthorizedModal, setShowNotAuthorizedModal] = useState(false);\n const [loadingDarfButton, setLoadingDarfButton] = useState<boolean>(false);\n\n const transactionFeature = item.features[0];\n const taxFeature = item.features[1];\n const yearResumeFeature = item.features[2];\n\n // const userPlanInfoStatus = useMemo(\n // () => user.user.userPlanInfoVelotax,\n // [user.user.userPlanInfoVelotax]\n // );\n\n const { emitted } = useMemo(() => {\n if (gettingYearResume) {\n }\n const monthResume = yearResume\n .find((resume) => resume.year === year)\n ?.months.find((m) => m.month - 1 === month);\n return {\n emitted:\n monthResume?.status === YearResumeStatusFromBackEnum.PAYED ||\n monthResume?.status === YearResumeStatusFromBackEnum.NOT_PAYED,\n payed: !!monthResume?.payed,\n status: monthResume?.status,\n };\n }, [yearResume, year, month, gettingYearResume]);\n\n const getDarf = useCallback(\n (id: string) => {\n view && setLoading(true);\n view &&\n (currentPage?.api || apis)\n .get(`${taxFeature.apiUrl}/${id}`)\n .then((response) => {\n setYear(response.data?.year);\n setMonth(response.data?.month - 1);\n setData({\n ...response.data,\n emitted: true,\n });\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n },\n [view, taxFeature.apiUrl, currentPage]\n );\n\n const getYearResume = useCallback(\n (year: number, force?: boolean, url?: string) => {\n setGettingYearResume(true);\n !view &&\n year <= new Date().getFullYear() &&\n year >= currentBroker.initialYear &&\n (force ||\n (!yearResumeFeature.disabled &&\n !yearResume.find((resume) => resume.year === year))) &&\n (currentPage?.api || apis)\n .get(yearResumeFeature.apiUrl, { params: { year } })\n .then((response) => {\n const index = yearResume.findIndex(\n (resume) => resume.year === year\n );\n if (index >= 0) {\n setYearResume((yearResume) => {\n yearResume.splice(index, 1, response.data);\n return yearResume;\n });\n } else {\n setYearResume((yearResume) => [...yearResume, response.data]);\n }\n\n if (url) {\n download(url);\n }\n })\n .catch((err) => console.log(err))\n .finally(() => setGettingYearResume(false));\n },\n [\n yearResumeFeature,\n yearResume,\n view,\n currentBroker.initialYear,\n currentPage,\n ]\n );\n\n const getTaxes = useCallback(() => {\n (!hasPlan || !view) && setLoading(true);\n (!hasPlan || !view) &&\n (currentPage?.api || apis)\n .get(transactionFeature.apiUrl, { params: { month: month + 1, year } })\n .then((response) => {\n setData(response.data);\n setNotAuthorized(false);\n })\n .catch((err) => {\n setData(defaultDarf);\n if (err?.response?.data === NOT_AUTHORIZED) {\n setNotAuthorized(true);\n setShowNotAuthorizedModal(true);\n } else {\n setNotAuthorized(false);\n message.error(errorMessage);\n }\n })\n .finally(() => setLoading(false));\n }, [view, currentPage?.api, transactionFeature.apiUrl, month, year, hasPlan]);\n\n const handleDarf = (justSave?: boolean) => {\n setEmitting(true);\n onCloseDarfModal();\n (currentPage?.api || apis)\n .post(taxFeature.apiUrl, {\n ...data,\n year,\n month: month + 1,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: data.memoriaCalculo,\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n insertPix: true,\n justSave,\n payed: false,\n })\n .then((res) => {\n setData((data) => ({ ...data, emitted: true }));\n getYearResume(year, true, justSave ? \"\" : res.data.darfUrl);\n setEmitting(false);\n closeModal?.();\n if (!justSave) {\n message.success(\"O DARF foi enviado para o seu e-mail\");\n }\n })\n .catch((err) => {\n message.error(err?.response?.data?.message || errorMessage);\n setEmitting(false);\n });\n };\n\n const handleRegularize = (regular: boolean) => {\n setEmitting(true);\n (currentPage?.api || apis)\n .post(\"transaction/regularize\", {\n year,\n month: month + 1,\n regular,\n impostoDevido: data.impostoDevido,\n totalImpostoDevido: data.totalImpostoDevido,\n })\n .then((res) => {\n getYearResume(year, true, res.data.darfUrl);\n getTaxes();\n message.success(\"Dados salvos\");\n handleNavigateToHistoric();\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setEmitting(false));\n };\n\n const onChangeMonth = (value: moment.Moment | null, dateString: string) => {\n const [month, year] = dateString.split(\"-\");\n setMonth(parseInt(month) - 1);\n setYear(parseInt(year));\n };\n\n const unsetAsset = () => {\n setAsset(undefined);\n };\n\n const handleCloseDeleteModal = () => {\n setShowDeleteModal(false);\n unsetAsset();\n };\n\n const handleCloseAssetModal = () => {\n setShowAssetModal(false);\n unsetAsset();\n };\n\n const onCloseHelpModal = () => {\n setHelpModal(undefined);\n };\n\n const onCloseDarfModal = () => {\n setDarfModal(undefined);\n };\n\n const handleOpenDarfModal = () => {\n setDarfModal(DarfModal(emitted, onCloseDarfModal, () => handleDarf()));\n };\n\n const handleOpenPaymentModal = () => {\n setPaymentModal(!paymentModal);\n };\n\n const handleAdd = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n event.stopPropagation();\n setShowAssetModal(true);\n };\n\n const handleEdit = (item: any, index: number) => {\n setShowAssetModal(true);\n setAsset({\n ...item,\n data: moment.utc(item.data.toLocaleString()).format(\"DD/MM/YYYY\"),\n dataVenda: moment\n .utc(item?.dataVenda?.toLocaleString())\n ?.format(\"DD/MM/YYYY\"),\n dataCompra: moment\n .utc(item?.dataCompra?.toLocaleString())\n ?.format(\"DD/MM/YYYY\"),\n });\n };\n\n const handleRemove = (item: any, index: number) => {\n setShowDeleteModal(true);\n setAsset(item);\n };\n\n const addAsset = (asset: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .post(`${transactionFeature.apiUrl}?manual=true`, asset, {\n headers: {\n \"x-email\": user.user.email,\n },\n })\n .then(() => {\n getTaxes();\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseAssetModal();\n });\n };\n\n const editAsset = (data: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .put(`${transactionFeature.apiUrl}/${data.id}`, data)\n .then(() => {\n getTaxes();\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseAssetModal();\n });\n };\n\n const removeAsset = () => {\n setLoading(true);\n (currentPage?.api || apis)\n .delete(`${transactionFeature.apiUrl}/${asset.id}`)\n .then(() => {\n getTaxes();\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseDeleteModal();\n });\n };\n\n const handlePlanModal = () => {\n navigate('/planos')\n };\n\n const handleSaveMonth = async () => {\n setLoadingDarfButton(true);\n try {\n const retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n const hasExteriorCalcActive =\n retPlanInfo?.data?.permissions?.[\"crypto-xpinvestimentos\"];\n\n retPlanInfo.data.active || hasExteriorCalcActive\n ? handleDarf(true)\n : handlePlanModal();\n } catch (err) {\n console.error(err);\n }\n setLoadingDarfButton(false);\n };\n\n const handleEventDarfButton = async () => {\n setLoadingDarfButton(true);\n let retPlanInfo = {\n data: {\n active: false,\n },\n };\n try {\n retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n } catch (err) {\n console.error(err);\n }\n setLoadingDarfButton(false);\n\n !retPlanInfo.data.active ? handlePlanModal() : handleOpenPaymentModal();\n };\n\n const handleLabelButton: ReactNode = useMemo(() => {\n // if (!userPlanInfoStatus) return \"Assinar Plano Emissão de DARF\";\n\n if (data?.totalImpostoDevido <= maxDarfPrice) return \"Pagar DARF\";\n else {\n if (emitted) return \"Pagar DARF\";\n else return taxFeature?.buttonLabel;\n }\n }, [data?.totalImpostoDevido, emitted, taxFeature?.buttonLabel]);\n\n const downloadAction = (record: any) => {\n (currentPage?.api || apis)\n .get(`/darf/download/${record._id}`)\n .then((res) => {\n if (res.data.url) {\n download(res.data.url);\n }\n });\n };\n\n const handleNavigateToHistoric = () => {\n navigate(item.settings?.historicUrl ?? `/${currentBroker.path}/historic`, {\n state: { year },\n });\n };\n\n useEffect(() => {\n getTaxes();\n }, [getTaxes, month, year]);\n\n useEffect(() => {\n if (view && darf) {\n getDarf(darf.id);\n }\n }, [getDarf, view, darf]);\n\n useEffect(() => {\n getYearResume(year);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const dataToPayment = {\n ...data,\n year,\n month: month + 1,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: data.memoriaCalculo,\n };\n\n setPaymentData(dataToPayment);\n }, [data.totalImpostoDevido, data, month, user.user.name, year]);\n\n const impostoCharge = useMemo(() => {\n const taxes = (data.impostoDevido ?? 0) + (data.impostoAcumulado ?? 0)\n const isExceedTax = taxes < minDarfPrice;\n const additionalTax = oldModel ? data.multa + data.juros : 0;\n return !view\n ? taxes +\n (isExceedTax ? additionalTax : 0)\n : Math.max(\n taxes +\n (isExceedTax ? additionalTax : 0),\n 0\n );\n }, [data, view, oldModel]);\n\n return (\n <Container className={clsx({ view, \"view-edit\": viewEdit })}>\n <Content className={clsx(\"first\", { view, \"view-edit\": viewEdit })}>\n <Space direction=\"vertical\" className=\"full-width\">\n <Row gutter={[16, 16]} align=\"middle\" justify=\"space-between\">\n <Col xs={24} sm={16}>\n <Typography.Title level={3} className=\"date-title\">\n <BsCalendar3 />\n {!view && !viewEdit && (\n <>\n {currentBroker.initialYear === year && month === 0 ? (\n <div className=\"month-chevron empty\" />\n ) : (\n <BiChevronLeft\n className=\"month-chevron\"\n onClick={() => {\n if (month === 0) {\n setYear((year: number) => {\n const newYear = year - 1;\n getYearResume(newYear);\n setDatePickerYear(newYear);\n return newYear;\n });\n setMonth(11);\n } else {\n setMonth((month) => month - 1);\n }\n }}\n />\n )}\n </>\n )}\n {monthsExtended[month]} de {year}\n {!view && !viewEdit && (\n <>\n {currentYear === year && currentMonth - 1 === month ? (\n <div className=\"month-chevron empty\" />\n ) : (\n <BiChevronRight\n className=\"month-chevron\"\n onClick={() => {\n if (month === 11) {\n setYear((year) => {\n const newYear = year + 1;\n getYearResume(newYear);\n setDatePickerYear(newYear);\n return newYear;\n });\n setMonth(0);\n } else {\n setMonth((month) => month + 1);\n }\n }}\n />\n )}\n </>\n )}\n </Typography.Title>\n </Col>\n {!view && !viewEdit && (\n <Col xs={24} sm={8}>\n <DatePicker\n size=\"large\"\n picker=\"month\"\n format=\"MM-YYYY\"\n disabled={loading}\n allowClear={false}\n inputReadOnly={true}\n onChange={onChangeMonth}\n suffixIcon={<BsCalendar3 />}\n defaultValue={defaultValue}\n locale={antDatePickerLocale}\n value={moment({ year: datePickerYear, month })}\n onSelect={(e) => {\n if (e.month() === month && year !== datePickerYear) {\n onChangeMonth(e, `${month + 1}-${datePickerYear}`);\n }\n }}\n onPanelChange={(e) => {\n getYearResume(e.year());\n setDatePickerYear(e.year());\n }}\n getPopupContainer={(trigger) => trigger.parentElement!}\n renderExtraFooter={() =>\n yearResumeFeature.disabled ? (\n <></>\n ) : (\n <DatePickerExtraFooter />\n )\n }\n disabledDate={(current) =>\n current &&\n (current > currentDate.endOf(\"month\") ||\n current < moment(`${currentBroker.initialYear}-01-01`) ||\n current < moment(`2020-01-01`))\n }\n monthCellRender={(e) => (\n <DatePickerMonthCell event={e} yearResume={yearResume} />\n )}\n />\n </Col>\n )}\n </Row>\n </Space>\n </Content>\n <Content className={clsx(\"second\", { view, \"view-edit\": viewEdit })}>\n <Space direction=\"vertical\" className=\"full-width\">\n {hasPlan && view && darf?.fullPath && (\n <Row justify=\"end\">\n <Col>\n <Button\n variant=\"text\"\n color=\"secondary\"\n style={{ marginTop: \"-32px\" }}\n onClick={() => downloadAction(darf)}\n startIcon={\n <BsDownload\n size={16}\n style={{\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n >\n BAIXAR DARF\n </Button>\n </Col>\n </Row>\n )}\n\n <div style={{ position: \"relative\" }}>\n {!hasPlan && (\n <div className=\"no-plan-container\">\n <Typography>\n Contrate o plano premium para ver os impostos devidos\n </Typography>\n <AntButton\n type=\"primary\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n closeModal?.();\n }}\n >\n PREMIUM\n </AntButton>\n </div>\n )}\n\n <Descriptions size=\"small\" bordered column={1}>\n {DarfImpostosDevidosDescriptions.map((description) => (\n <Descriptions.Item\n key={description.id}\n label={description.label(setHelpModal)}\n >\n {loading ? (\n <Spin />\n ) : description.render ? (\n description.render(data, view)\n ) : (\n formatCurrency(\n Number(data[description.id as keyof IDarf] || 0)\n )\n )}\n </Descriptions.Item>\n ))}\n </Descriptions>\n </div>\n\n <br />\n\n <Collapse\n ghost\n bordered={false}\n defaultActiveKey={!hasPlan ? [\"1\"] : []}\n expandIconPosition=\"right\"\n {...(!hasPlan ? { collapsible: \"disabled\" } : {})}\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <Typography.Title level={3}>\n Vendas realizadas no mês\n </Typography.Title>\n }\n >\n {!notAuthorized && !view && (\n <Button\n className=\"add\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading}\n onClick={handleAdd}\n startIcon={<PlusOutlined />}\n >\n Adicionar\n </Button>\n )}\n <List\n loading={loading}\n itemLayout=\"horizontal\"\n dataSource={data.memoriaCalculo}\n renderItem={(item, index) => (\n <List.Item\n actions={\n notAuthorized || view\n ? []\n : [\n <AntButton\n type=\"text\"\n onClick={() => handleEdit(item, index)}\n icon={<FaRegEdit size={18} />}\n />,\n <AntButton\n type=\"text\"\n onClick={() => handleRemove(item, index)}\n icon={<AiOutlineDelete size={18} />}\n />,\n ]\n }\n >\n <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={\n <strong>\n {item.ativoTranslated\n ? item.ativoTranslated\n : item.ativo}\n </strong>\n }\n description={\n <div className=\"list-description\">\n <div>\n Data de liquidação:{\" \"}\n {moment\n .utc(item?.data?.toLocaleString())\n .format(\"DD/MM/YYYY\")}\n </div>\n {/* <div>\n Data de liquidação:{\" \"}\n <strong>\n {formatCurrency(\n item.ganho ??\n item.quantidade *\n (item.precoVenda - item.custoCompra) -\n item.taxas ??\n 0\n )}\n </strong>\n </div> */}\n {item.quantidade && (\n <div>Quantidade: {item.quantidade}</div>\n )}\n {view && (\n <>\n <div>\n Valor de venda:{\" \"}\n <strong>\n {formatCurrency(item.precoVenda)}\n </strong>\n </div>\n <div>\n Valor de compra:{\" \"}\n <strong>\n {formatCurrency(item.custoCompra)}\n </strong>\n </div>\n <div>\n Taxas:{\" \"}\n <strong>{formatCurrency(item.taxas)}</strong>\n </div>\n </>\n )}\n <div>Ganho: {formatCurrency(item.ganho)}</div>\n </div>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n </Collapse.Panel>\n </Collapse>\n\n {hasPlan && <br />}\n\n {hasPlan && (\n <div\n className=\"total-tax-header original\"\n style={{ width: \"100%\" }}\n >\n <Typography.Title level={3}>Imposto total</Typography.Title>\n <Typography.Title level={3} className=\"text-center\">\n {loading ? (\n <Spin style={{ marginRight: \"32px\" }} />\n ) : (\n formatCurrency(impostoCharge)\n )}\n </Typography.Title>\n </div>\n )}\n\n {hasPlan && (\n <Descriptions size=\"small\" bordered column={1}>\n {DarfResultDescriptions.map((description, i) => {\n if(['impostoAcumulado', 'multa', 'juros'].includes(description.id) && !oldModel) return <></>\n return (\n <Descriptions.Item\n key={description.id}\n label={description.label(setHelpModal)}\n style={{\n display: i === 3 ? \"none\" : \"table-cell\",\n }}\n >\n {loading ? (\n <Spin />\n ) : description.Component ? (\n <description.Component\n data={data}\n year={year}\n month={month}\n loading={loading}\n setDataCripto={setData}\n url={transactionFeature.apiUrl}\n disabled={!notAuthorized && !view}\n view={view}\n />\n ) : (\n formatCurrency(\n Number(data[description.id as keyof IDarf] || 0)\n )\n )}\n </Descriptions.Item>\n )\n })}\n </Descriptions>\n )}\n\n {!notAuthorized && !view && (\n <>\n <Row\n justify=\"end\"\n gutter={[16, 16]}\n className=\"column-reverse\"\n style={{ marginTop: \"16px\" }}\n >\n {!(month === currentMonth && year === currentYear) &&\n (data.impostoDevido + data.impostoAcumulado ?? 0) <\n minDarfPrice &&\n data.memoriaCalculo.filter(\n (el: any) =>\n (el.operation === \"SELL\" &&\n (el.type === \"TRADE\" || el.type === \"WITHDRAW\")) ||\n el.type === \"INTEREST\"\n )?.length > 0 && (\n <Col xs={24}>\n <br />\n <Tooltip\n title={\n <>\n O valor do imposto devido é menor que{\" \"}\n {formatCurrency(minDarfPrice)}. Você não precisa\n emitir um DARF para este mês.\n </>\n }\n >\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading || emitting}\n onClick={() => handleRegularize(true)}\n startIcon={emitting && <LoadingOutlined />}\n >\n Salvar sem emitir DARF\n </Button>\n </Tooltip>\n </Col>\n )}\n {data.impostoDevido + data.impostoAcumulado >= minDarfPrice && (\n <Col xs={24}>\n <br />\n <Tooltip\n getPopupContainer={(target) => target.parentElement!}\n title={\n month === currentMonth && year === currentYear\n ? \"Aguarde o encerramento do mês para pagar seu DARF\"\n : \"\"\n }\n >\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={handleEventDarfButton}\n startIcon={\n (emitting || loadingDarfButton) && <LoadingOutlined />\n }\n disabled={\n loading ||\n emitting ||\n loadingDarfButton ||\n (month === currentMonth && year === currentYear)\n }\n >\n {handleLabelButton}\n </Button>{\" \"}\n </Tooltip>\n </Col>\n )}\n </Row>\n {!(month === currentMonth && year === currentYear) && (\n <Row\n justify=\"end\"\n align=\"middle\"\n gutter={[16, 16]}\n style={{ marginTop: \"16px\" }}\n >\n <Col>\n <Button\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n onClick={handleSaveMonth}\n disabled={loading || emitting}\n startIcon={emitting && <LoadingOutlined />}\n >\n Salvar apenas\n </Button>\n </Col>\n </Row>\n )}\n </>\n )}\n {!view && false && (\n <>\n <IntegrationModal\n visible={showNotAuthorizedModal}\n onCancel={() => setShowNotAuthorizedModal(false)}\n />\n <div className=\"juridic-messages-container\">\n <div className=\"message\">\n <p>\n (1) Os cálculos de imposto de renda foram realizados levando\n em consideração somente as operações de compra e venda\n realizadas na Xtage. Caso você tenha realizado operações com\n criptoativos em outras corretoras, realize as alterações\n manualmente.\n </p>\n </div>\n <div className=\"message\">\n <p>\n (2) Caso você tenha realizado a transferência de custódia de\n outras corretoras de criptoativos para a Xtage, realize\n manualmente a inserção do custo médio de compra dos\n respectivos ativos transferidos.\n </p>\n </div>\n <div className=\"message\">\n <p>\n (3) O Usuário é exclusivamente responsável pela conferência\n e validação das informações utilizadas na apuração do\n imposto devido, conforme{\" \"}\n <a\n rel=\"noreferrer\"\n href=\"https://velotax-termos-e-condicoes.s3.us-east-1.amazonaws.com/Termos%20de%20Uso%20-%20Velotax%20v1.pdf\"\n target=\"_blank\"\n >\n Termos e Condições Gerais de Uso.\n </a>\n </p>\n </div>\n </div>\n </>\n )}\n </Space>\n </Content>\n\n <Modal\n footer={null}\n visible={helpModal}\n title={helpModal?.title}\n onCancel={onCloseHelpModal}\n >\n {helpModal?.content}\n </Modal>\n <Modal\n visible={darfModal}\n title={darfModal?.title}\n footer={darfModal?.footer}\n onCancel={onCloseDarfModal}\n zIndex={1001}\n >\n {darfModal?.content}\n </Modal>\n <FormModal\n add={addAsset}\n edit={editAsset}\n itemToEdit={asset}\n visibility={showAssetModal}\n onCancel={handleCloseAssetModal}\n rows={DarfFormItemRows(month, year)}\n title={asset ? \"Editar ativo\" : \"Adicionar ativo\"}\n />\n <PaymentModal\n item={item}\n fromDarf\n show={paymentModal}\n emitting={emitting}\n disablePixOption={data?.totalImpostoDevido > maxPixPayment}\n disableCreditCardOption={\n data?.totalImpostoDevido > maxCreditCardPayment\n }\n onCancel={handleOpenPaymentModal}\n paymentData={{\n ...paymentData,\n impostoTotalFinal: data.totalImpostoDevido + data.impostoAcumulado,\n }}\n callDarf={() => {\n // HandleTag(\"67\");\n handleOpenDarfModal();\n }}\n maxPixValue={maxPixPayment}\n maxCCValue={maxCreditCardPayment}\n selectedYear={year}\n />\n <DeleteConfirmationModal\n title=\"Remover ativo\"\n visibility={showDeleteModal}\n onCancel={handleCloseDeleteModal}\n setVisibility={setShowDeleteModal}\n onOk={() => Promise.resolve(removeAsset())}\n body=\"Você realmente quer deletar esse ativo?\"\n />\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const CardContainer = styled.div`\n width: 160px;\n height: 180px;\n border-radius: 8px;\n transition: opacity 0.3s ease-in-out;\n background-color: var(--velotax-background-color);\n cursor: pointer;\n position: relative;\n box-shadow: 0px 10px 20px 4px rgba(0, 0, 0, 0.2);\n\n &.disabled {\n cursor: default;\n :before {\n content: \"Em breve!\";\n top: 6px;\n left: -6px;\n position: absolute;\n color: #000;\n width: auto;\n height: auto;\n padding: 4px 8px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-primary-color);\n }\n }\n\n &,\n a,\n .MuiButtonBase-root {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n border-radius: 8px;\n }\n\n a,\n .MuiButtonBase-root {\n width: 100%;\n height: 100%;\n padding: 16px;\n }\n\n figure {\n margin: 0 0 4px;\n\n svg {\n width: 32px;\n height: 32px;\n &:not(.no-fill) {\n fill: var(--ant-primary-color);\n }\n }\n }\n\n .ant-btn.ant-btn-primary.btn-premium {\n top: 16px;\n right: -6px;\n }\n\n &#irpf {\n box-shadow: none;\n animation-name: irpf-card;\n animation-duration: 1.75s;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n }\n\n @keyframes irpf-card {\n 0% {\n box-shadow: 0px 0px 8px 4px var(--ant-primary-color-outline);\n }\n 50% {\n box-shadow: 0px 0px 1px 1px var(--ant-primary-color-outline);\n }\n 100% {\n box-shadow: 0px 0px 8px 4px var(--ant-primary-color-outline);\n }\n }\n\n .content {\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.125rem;\n color: var(--velotax-font-color-light);\n\n .ant-typography {\n color: inherit;\n position: relative;\n text-align: left;\n text-transform: uppercase;\n\n .available-until {\n position: absolute;\n bottom: -24px;\n left: 8px;\n width: calc(100% - 16px);\n opacity: 0.8;\n font-weight: 300;\n font-size: 0.5625rem;\n letter-spacing: 0.25px;\n line-height: 11px;\n text-align: center;\n }\n }\n\n .description {\n left: 16px;\n bottom: 16px;\n position: absolute;\n opacity: 0.7;\n font-size: 13px;\n font-weight: 300;\n max-width: calc(100% - 32px);\n text-align: left;\n .ant-typography {\n text-transform: none;\n }\n\n .warning {\n transform: translateY(4px);\n color: var(--ant-warning-color);\n margin-right: 4px;\n font-size: 16px;\n }\n }\n }\n\n &.add {\n background-color: var(--velotax-background-color-ghost);\n border: 2px solid var(--velotax-background-color);\n svg {\n fill: var(--velotax-font-color-ghost);\n }\n .content {\n color: var(--velotax-font-color-ghost);\n }\n }\n`;\n","import { ReactNode } from \"react\";\nimport { ButtonBase } from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { CardContainer } from \"./styles\";\nimport { isMobile } from \"../../../utils\";\n\ninterface CardProps {\n id: string;\n icon: ReactNode;\n children: ReactNode;\n link?: string;\n className?: string;\n disabled?: boolean;\n onClick?: () => void;\n}\n\nconst Container: React.FC<Pick<CardProps, \"link\">> = ({ children, link }) => {\n return link && link.includes(\"http\") ? (\n <a\n href={link}\n {...(!isMobile()\n ? {\n target: \"_blank\",\n rel: \"noreferrer\",\n }\n : {})}\n >\n {children}\n </a>\n ) : (\n <>{children}</>\n );\n};\n\nexport const Card = ({\n id,\n icon,\n link,\n onClick,\n children,\n disabled,\n className,\n}: CardProps) => {\n const navigate = useNavigate();\n\n const handleClick = () => {\n if (disabled) return;\n if (onClick) {\n onClick();\n } else if (link && !link.includes(\"http\")) {\n navigate(link);\n }\n };\n\n return (\n <CardContainer id={id} className={className} onClick={handleClick}>\n <ButtonBase disabled={disabled} disableTouchRipple={disabled}>\n <Container link={link}>\n <figure>{icon}</figure>\n <div className=\"content\">{children}</div>\n </Container>\n </ButtonBase>\n </CardContainer>\n );\n};\n","import { Typography } from \"antd\";\nimport { GiProfit } from \"react-icons/gi\";\nimport { AiOutlineApi } from \"react-icons/ai\";\nimport { RiFileList3Line } from \"react-icons/ri\";\nimport { HiOutlineCalculator } from \"react-icons/hi\";\nimport { MdSwapVerticalCircle } from \"react-icons/md\";\nimport { isMobile } from \"../../utils\";\nimport { FaHandHoldingUsd } from \"react-icons/fa\";\n\nexport const itensBolsa = [\n {\n id: \"darf\",\n link: \"/xpinvestimentos/bolsa-historic\",\n content: <Typography>Calculadora de DARF</Typography>,\n description: <Typography>Cálculo de IR e emissão de DARF</Typography>,\n icon: (\n <HiOutlineCalculator\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n },\n // {\n // premium: true,\n // id: \"anual-report\",\n // link: \"/xpinvestimentos/bolsa-report\",\n // content: <Typography>Informe de rendimentos (2022)</Typography>,\n // description: <Typography>Relatório para declaração do IRPF</Typography>,\n // icon: (\n // <RiFileList3Line className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n // ),\n // },\n {\n id: \"report\",\n premium: true,\n link: \"/xpinvestimentos/bolsa-report\",\n content: (\n <Typography>\n Relatórios {!isMobile() && \"(padrão Receita Federal)\"}\n </Typography>\n ),\n icon: (\n <RiFileList3Line className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n ),\n description: (\n <Typography>Relatórios auxiliares para declaração de IR</Typography>\n ),\n },\n {\n id: \"dividendos\",\n link: \"/xpinvestimentos/bolsa-dividendos\",\n premium: true,\n content: <Typography>Dividendos</Typography>,\n description: <Typography>Gestão dos dividendos recebidos</Typography>,\n icon: <GiProfit className=\"no-fill\" color=\"var(--ant-primary-color)\" />,\n },\n {\n id: \"insert-manual\",\n link: \"/xpinvestimentos/bolsa-insert-manual\",\n content: <Typography>Posição 31/12/2019</Typography>,\n icon: (\n <MdSwapVerticalCircle\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n },\n {\n id: \"doacoes-heranca\",\n link: \"/xpinvestimentos/bolsa-doacoes-heranca\",\n content: <Typography>Doações e heranças</Typography>,\n icon: (\n <FaHandHoldingUsd\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n },\n {\n id: \"integration\",\n link: \"/xpinvestimentos/bolsa-integration\",\n content: <Typography>Notas de corretagem</Typography>,\n icon: <AiOutlineApi className=\"no-fill\" color=\"var(--ant-primary-color)\" />,\n },\n];\n","import { Typography } from \"antd\";\n// import { GiProfit } from \"react-icons/gi\";\nimport { AiOutlineApi } from \"react-icons/ai\";\n// import { RiFileList3Line } from \"react-icons/ri\";\nimport { HiOutlineCalculator } from \"react-icons/hi\";\n// import { MdSwapVerticalCircle } from \"react-icons/md\";\n// import { isMobile } from \"../../utils\";\n\nexport const itensCrypto = [\n {\n premium: true,\n id: \"darf\",\n link: \"/xpinvestimentos/cripto-historic\",\n content: <Typography>Calculadora de DARF</Typography>,\n description: <Typography>Cálculo de IR e emissão de DARF</Typography>,\n icon: (\n <HiOutlineCalculator\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n },\n // {\n // premium: true,\n // id: \"anual-report\",\n // link: \"/xpinvestimentos/bolsa-report\",\n // content: <Typography>Informe de rendimentos (2022)</Typography>,\n // description: <Typography>Relatório para declaração do IRPF</Typography>,\n // icon: (\n // <RiFileList3Line className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n // ),\n // },\n // {\n // premium: true,\n // id: \"report\",\n // link: \"/xpinvestimentos/cripto-report\",\n // content: (\n // <Typography>\n // Relatórios {!isMobile() && \"(padrão Receita Federal)\"}\n // </Typography>\n // ),\n // icon: (\n // <RiFileList3Line className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n // ),\n // description: (\n // <Typography>Relatórios auxiliares para declaração de IR</Typography>\n // ),\n // },\n // {\n // id: \"dividendos\",\n // link: \"/xpinvestimentos/bolsa-dividendos\",\n // premium: true,\n // content: <Typography>Dividendos</Typography>,\n // description: <Typography>Gestão dos dividendos recebidos</Typography>,\n // icon: <GiProfit className=\"no-fill\" color=\"var(--ant-primary-color)\" />,\n // },\n // {\n // premium: true,\n // id: \"insert-manual\",\n // link: \"/xpinvestimentos/bolsa-insert-manual\",\n // content: <Typography>Posição 31/12/2019</Typography>,\n // icon: (\n // <MdSwapVerticalCircle\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // },\n {\n id: \"integration\",\n premium: true,\n link: \"/xpinvestimentos/cripto-integration\",\n content: <Typography>Notas de corretagem</Typography>,\n description: <Typography>Carregar notas de corretagem</Typography>,\n\n icon: <AiOutlineApi className=\"no-fill\" color=\"var(--ant-primary-color)\" />,\n },\n];\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 16px;\n .ant-typography {\n text-align: center;\n color: var(--velotax-font-color);\n }\n h1 {\n font-size: 32px;\n }\n div.ant-typography {\n font-size: 18px;\n }\n @media only screen and (max-device-width: 812px) {\n h1 {\n font-size: 24px;\n }\n div.ant-typography {\n font-size: 14px;\n }\n }\n`;\n","import { Typography } from \"antd\";\nimport { Container } from \"./styles\";\n\ninterface PageInfoProps {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n}\n\nexport const PageInfo: React.FC<PageInfoProps> = ({ title, subtitle }) => {\n return (\n <Container>\n <Typography.Title level={1}>{title}</Typography.Title>\n {subtitle && <Typography.Paragraph>{subtitle}</Typography.Paragraph>}\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n width: 100%;\n padding: 16px;\n border-radius: 8px;\n border: 1px solid var(--velotax-background-color-ghost);\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--velotax-font-color-ghost);\n }\n .price {\n display: flex;\n column-gap: 8px;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n h4 {\n font-size: 22px;\n margin: 8px 0 !important;\n color: var(--ant-primary-color);\n del,\n span.per-month {\n font-size: 14px;\n }\n del {\n opacity: 0.8;\n color: var(--velotax-font-color);\n }\n }\n .ant-typography-danger {\n font-size: 11px;\n text-align: right;\n max-width: 120px;\n }\n }\n .ant-divider.ant-divider-horizontal {\n margin: 16px 0;\n }\n .other-features,\n .included-features {\n .feature {\n display: flex;\n align-items: center;\n justify-content: space-between;\n span {\n font-weight: 500;\n }\n svg.fill {\n fill: var(--velotax-font-color);\n }\n svg:not(.fill) {\n stroke: var(--velotax-font-color);\n }\n &.disabled {\n opacity: 0.4;\n }\n .feature-desc {\n display: block;\n font-size: 10px;\n font-weight: 400;\n }\n }\n }\n .other-features {\n margin-bottom: 24px;\n }\n`;\n","import clsx from \"clsx\";\nimport { BiCheck, BiX } from \"react-icons/bi\";\nimport { Divider, Row, Typography } from \"antd\";\nimport Button from \"../../Button\";\nimport { Container } from \"./styles\";\nimport { formatCurrency } from \"../../../utils\";\nimport { OtherFeatures, Plan as IPlan } from \"../../../constants/plans\";\n\ninterface PlanProps {\n plan: IPlan;\n buyed: boolean;\n handleSelect: React.MouseEventHandler;\n}\n\nexport const Plan: React.FC<PlanProps> = ({ plan, buyed, handleSelect }) => {\n return (\n <Container>\n <Typography.Title level={3}>{plan.title}</Typography.Title>\n <div className=\"price\">\n <Typography.Title level={4}>\n {formatCurrency(plan.price)} <span className=\"per-month\">/ mês</span>\n <br />\n <Typography.Text delete>\n {formatCurrency(plan.originalPrice)}{\" \"}\n <span className=\"per-month\">/ mês</span>\n </Typography.Text>\n </Typography.Title>\n <Typography.Text type=\"danger\" strong>\n {plan.discount}% de desconto no plano anual\n </Typography.Text>\n </div>\n <div className=\"included-features\">\n {plan.includedFeatures.map((feature) => (\n <div className=\"feature\" key={feature.name}>\n <span>{feature.name}</span>\n <span>{feature.icon}</span>\n </div>\n ))}\n </div>\n <Divider />\n <div className=\"other-features\">\n {OtherFeatures.map((feature) => (\n <div\n key={feature.name}\n className={clsx(\"feature\", {\n disabled:\n plan.otherFeatures.findIndex((f) => feature.name === f.name) <\n 0,\n })}\n >\n <span>\n {feature.name}\n {feature.desc && (\n <span className=\"feature-desc\">{feature.desc}</span>\n )}\n </span>\n <span>\n {plan.otherFeatures.findIndex((f) => feature.name === f.name) <\n 0 ? (\n <BiX size={18} />\n ) : (\n <BiCheck size={18} color=\"var(--ant-success-color)\" />\n )}\n </span>\n </div>\n ))}\n </div>\n <Row justify=\"end\">\n {!buyed ? (\n <Button type=\"primary\" size=\"large\" onClick={handleSelect}>\n Selecionar\n </Button>\n ) : (\n <Button disabled type=\"text\" size=\"large\" onClick={handleSelect}>\n Plano Selecionado!\n </Button>\n )}\n </Row>\n </Container>\n );\n};","import { Col, Row } from \"antd\";\nimport Button from \"../../../../Button\";\nimport React, { Dispatch, SetStateAction } from \"react\";\n\ninterface IFooterProps {\n currentStep: number;\n handleProceed: () => void;\n setCurrentStep: Dispatch<SetStateAction<number>>;\n typePurchase: string;\n hideTerms: boolean;\n backtoRoot?: any;\n selectedCardId?: string;\n}\n\nconst Footer: React.FC<IFooterProps> = ({\n currentStep,\n setCurrentStep,\n handleProceed,\n typePurchase,\n hideTerms,\n selectedCardId,\n backtoRoot,\n}) => {\n return (\n <>\n {/*<Row style={{ marginTop: \"5px\" }}>\n {currentStep !== 2 && !hideTerms && (\n <Col xs={24} sm={24} md={24}>\n <Typography.Paragraph style={{ textAlign: \"center\", fontSize: 12 }}>\n Ao realizar o pagamento você concorda com as{\" \"}\n </Typography.Paragraph>\n </Col>\n )} \n </Row>*/}\n <Row\n align=\"middle\"\n gutter={[16, 16]}\n justify=\"space-between\"\n style={{ marginTop: \"10px\" }}\n >\n <Col xs={24} sm={24} md={24}>\n <Row gutter={[8, 8]} justify=\"space-between\">\n {currentStep !== 3 && currentStep !== 4 && (\n <Col span={24}>\n <Button\n size=\"large\"\n type=\"primary\"\n style={{width: '100%', color: 'black', fontWeight: 'bold'}}\n color=\"secondary\"\n onClick={handleProceed}\n >\n {currentStep === 1\n ? \"PROSSEGUIR\"\n : typePurchase === \"UNIQUE\"\n ? \"FINALIZAR PAGAMENTO\"\n : \"FINALIZAR COMPRA\"}\n </Button>\n </Col>\n )}\n {currentStep <= 2 && (\n <Col span={24}>\n <Button\n size=\"large\"\n type=\"link\"\n onClick={() => {\n if (currentStep === 1) {\n backtoRoot();\n return;\n }\n\n setCurrentStep((step) => step - 1);\n }}\n >\n <span className=\"xp-link uppercase\">Voltar</span>\n </Button>\n </Col>\n )}\n </Row>\n </Col>\n </Row>\n </>\n );\n};\n\nexport default Footer;\n","import styled from \"styled-components\";\nimport { Row } from \"antd\";\n\nexport const CardContent = styled.div`\n display: flex;\n background-color: transparent;\n align-items: center;\n width: 100%;\n justify-content: center;\n height: 115px;\n border-radius: 7px;\n margin-top: 10px;\n cursor: pointer;\n\n .full-container {\n margin: auto;\n\n .card-number {\n display: flex;\n }\n }\n`;\n\nexport const NewCardContent = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n h3 {\n color: var(--ant-primary-color);\n }\n`;\n\nexport const Content = styled(Row)`\n margin-top: 4%;\n\n .list-cards-content {\n height: 400px;\n width: auto;\n display: grid;\n grid-template-columns: 1fr;\n overflow-y: auto;\n }\n\n .rccs {\n transform: scale(55%);\n }\n`;\n","export const taxes: Array<number> = [\n 1.065, 1.105, 1.125, 1.145, 1.165, 1.185, 1.205, 1.225, 1.245, 1.265, 1.285,\n 1.305,\n];\n","import { Col, Row } from \"antd\";\nimport { taxes } from \"../constants/taxes\";\nimport { formatCurrency, numberToPercentage } from \"../utils\";\n\nexport default function getInstallments(\n value: number, // valor\n isPlan: boolean, // caso seja plano irá alterar a descrição\n fixedInstallments?: number //número de parcela fixo\n) {\n var _installments = [];\n var customInstallments = 12;\n\n if (value) {\n if (isPlan) {\n _installments.push({\n value: 12,\n label: (\n <span className=\"installments-select\">\n R$ {(value / 12).toFixed(2)}\n </span>\n ),\n });\n } else if (fixedInstallments) {\n _installments.push({\n value: 12,\n label: (\n <span className=\"installments-select\">\n {fixedInstallments}x R${\" \"}\n {(value / fixedInstallments).toFixed(2)}\n </span>\n ),\n });\n } else {\n let valorTaxa=0;\n if(value >=10 && value <=499.99){\n valorTaxa = 9.9\n }\n if(value >=500 && value <=999.99){\n valorTaxa = 14.9\n }\n if(value >=1000 && value <=1499.99){\n valorTaxa = 19.9\n }\n if(value >=1500 && value <=10000){\n valorTaxa = 29.9\n }\n \n const _valueTmp = value+valorTaxa;\n\n for (let i = 0; i < (customInstallments || 12); i++) {\n let _value = formatCurrency(((_valueTmp * taxes[i])) / (i + 1));\n \n\n let plural = i > 0 ? \"parcelas\" : \"parcela\";\n\n _installments.push({\n value: i + 1,\n label: (\n <Row\n align=\"middle\"\n justify=\"space-between\"\n className=\"installments-select\"\n gutter={[8, 0]}\n >\n <Col xs={24} sm={14} style={{ textAlign: \"start\" }}>\n {i + 1}x {plural} - {_value.props.prefix} {_value.props.value}\n </Col>\n <Col xs={24} sm={10} className=\"installment-tax\">\n Taxa de serviço: {numberToPercentage((taxes[i] - 1) * 100)}\n </Col>\n </Row>\n ),\n });\n }\n }\n }\n\n return _installments;\n}\n","import React, { useEffect, useState, useMemo, forwardRef } from \"react\";\nimport { message, Typography, Col, Form, Row } from \"antd\";\nimport { CardContent, NewCardContent, Content } from './styles'\nimport { apiPayment } from \"../../services/apiPayment\";\nimport Cards from \"react-credit-cards\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Plan as IPlan, UserPlan } from \"../../constants/plans\";\nimport getInstallmentsByPrice from '../../utils/getInstallmentsListByPrice';\nimport { formatCurrency } from '../../utils/format';\nimport { SelectLabled } from \"../../constants/inputs\";\n\ninterface ICardList {\n onSelectCard: (card: any) => void;\n selectedCardId: string;\n amount?: string;\n plan?: IPlan | UserPlan;\n value: number;\n onChangeInstallments?: (value: number) => void;\n installmentSelected?: number;\n}\n\nexport interface cardAttributes {\n id: string;\n first_six_digits: string;\n last_four_digits: string;\n brand: string;\n customer_id: string;\n holder_name: string;\n exp_month: number;\n exp_year: number;\n status: string;\n type: string;\n created_at: Date;\n updated_at: Date;\n billing_address: {\n street: string;\n zip_code: string;\n city: string;\n state: string;\n country: string;\n line_1: string;\n };\n}\n\nexport const CardList: React.FC<ICardList> = ({\n onSelectCard,\n selectedCardId,\n value,\n plan,\n onChangeInstallments,\n installmentSelected\n}) => {\n const [cardList, setCardList] = useState([]);\n const [loading, setLoading] = useState(false);\n\n\n const SelectInput = forwardRef((props, ref) => (\n <SelectLabled\n {...props}\n options={installments}\n value={\n fixedInstallments || plan?.type\n ? installments[0].value\n : installmentSelected\n }\n placeholder=\"Selecione a(s) parcela(s)\"\n onChange={onChangeInstallments}\n\n />\n ));\n\n const getCardList = () => {\n setLoading(true);\n apiPayment.get(`/payment/list_cards`).then((ret) => {\n setCardList(ret?.data?.list || []);\n\n if (ret?.data?.list?.length === 0 || !ret?.data?.list) {\n onSelectCard(undefined);\n }\n setLoading(false);\n }).catch((err) => {\n message.error('Ocorreu um erro ao buscar cartões');\n setLoading(false);\n });\n\n };\n\n useEffect(() => {\n getCardList();\n // eslint-disable-next-line\n }, []);\n\n\n const fixedInstallments = useMemo(() => !!plan?.type ? 12 : undefined, [plan?.type])\n\n const installments = useMemo(() => getInstallmentsByPrice(value, !!plan?.type, fixedInstallments), [plan, value, fixedInstallments]);\n\n\n return (\n <Content gutter={[16, 16]}>\n <div style={{ display: loading ? 'flex' : 'none', justifyContent: 'center', width: '100%' }}><LoadingOutlined style={{ color: 'var(--ant-primary-color)' }} /></div>\n {!loading &&\n <>\n <Col span={24} style={{ textAlign: \"center\" }}>\n {/* <Typography.Paragraph style={{ color: 'var(--ant-primary-color)' }}>{getMessage()}</Typography.Paragraph> */}\n <Typography.Paragraph\n style={{\n fontSize: 18,\n fontWeight: \"500\",\n textAlign: \"center\",\n textTransform: \"uppercase\",\n color: 'var(--ant-primary-color)',\n }}\n >\n {value ? (\n <strong> {formatCurrency(value ?? 0)}</strong>\n ) : undefined}\n\n </Typography.Paragraph>\n </Col>\n <Col span={24}><NewCardContent onClick={() => onSelectCard(undefined)}><h3>Novo Cartão</h3></NewCardContent></Col>\n <Col span={24}>\n <Row gutter={[16, 16]}>\n {cardList && cardList?.length > 0 && cardList?.map((card: cardAttributes) =>\n <Col span={12} style={{ display: 'flex', justifyContent: 'center' }}>\n <CardContent style={{\n backgroundColor: selectedCardId === card.id ? 'var(--ant-primary-color)' : 'transparent',\n }} onClick={() => onSelectCard(card)}>\n <Cards\n preview\n cvc={'***'}\n name={card.holder_name}\n expiry={`${card.exp_month <= 9 ? '0' : ''}${card.exp_month}/${card.exp_year}`}\n number={card.first_six_digits + '** *****' + card.last_four_digits}\n locale={{ valid: \"Validade\" }}\n callback={(issuer: any, isValid: boolean) => {\n console.log('cb issuer isvalid', issuer, isValid)\n }}\n />\n </CardContent>\n </Col>\n )}\n </Row>\n </Col>\n {value ? (\n <Col span={24}>\n <Form.Item\n name=\"installments\"\n >\n <SelectInput />\n </Form.Item>\n </Col>\n ) : (\n \"\"\n )}\n </>\n }\n </Content >\n );\n};\n","import { Focused } from \"react-credit-cards\";\nimport { Form, message, Spin } from \"antd\";\nimport React, {\n Dispatch,\n SetStateAction,\n useEffect,\n useState,\n useMemo,\n} from \"react\";\nimport Footer from \"./components/Footer\";\nimport { CardList } from \"../../CardList\";\nimport { CardForm } from \"./components/CardForm\";\nimport AddressForm from \"./components/AddressForm\";\nimport { apiPlan } from \"../../../services/apiPlan\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { ResultScreen } from \"./components/ResultScreen\";\nimport { removeSpecialCharacters } from \"../../../utils\";\nimport { Plan as IPlan, UserPlan } from \"../../../constants/plans\";\nimport { PendingScreen } from \"./components/ResultScreen/components/PendingScreen\";\nimport { useBroker } from \"../../../contexts/BrokerContext\";\nimport { apiPayment } from \"../../../services/apiPayment\";\nimport HandleTag from \"../../../services/handleTag\";\n\nexport enum ETypePurchase {\n MEI = \"MEI\",\n UNIQUE = \"UNIQUE\",\n VELOTAX_MAIN_BASIC = \"VELOTAX_MAIN_BASIC\",\n VELOTAX_MAIN_PRO = \"VELOTAX_MAIN_PRO\",\n VELOTAX_MAIN_CONCIERGE = \"VELOTAX_MAIN_CONCIERGE\",\n}\n\ninterface ICreditCardStepProps {\n status: string;\n initialized: boolean;\n handleBack?: () => void;\n typePurchase: ETypePurchase;\n handleSuccess?: (res: any) => void;\n setInitialized: Dispatch<SetStateAction<boolean>>;\n handleClosableModal: Dispatch<SetStateAction<boolean>>;\n plan?: IPlan | UserPlan;\n darfData?: any;\n getCardCurrentStep?: (value: number) => void;\n handleIdBack?: (event: any) => void;\n customInstallments?: number;\n backToRoot?: () => void;\n cupom?: any;\n changeCardAction?: boolean;\n closeMainModal?: () => void;\n}\n\nexport const CreditCardStep: React.FC<ICreditCardStepProps> = ({\n plan,\n handleBack,\n handleClosableModal,\n typePurchase,\n darfData,\n handleSuccess,\n handleIdBack,\n customInstallments,\n backToRoot,\n cupom,\n changeCardAction,\n closeMainModal,\n}) => {\n const [cardForm] = Form.useForm();\n const [addressForm] = Form.useForm();\n const { user } = useAuth();\n const [cvc, setCvc] = useState(\"\");\n const [name, setName] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [number, setNumber] = useState(\"\");\n const [expiry, setExpiry] = useState(\"\");\n const [focused, setFocused] = useState<Focused>();\n const [holderDocument, setHolderDocument] = useState(\"\");\n const [installments, setInstallments] = useState(1);\n\n const [selectedCard, setSelectedCard] = useState<any>();\n\n const [loading, setLoading] = useState(false);\n const [currentStep, setCurrentStep] = useState(1);\n const [isValidCardForm, setIsValidCardForm] = useState(false);\n const [isValidAddressForm, setIsValidAddressForm] = useState(false);\n\n const isPlan = useMemo(() => {\n return [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_CONCIERGE\",\n ].includes(plan?.type || \"\");\n }, [plan]);\n\n const value = useMemo(() => {\n if (isPlan) {\n var isMonth = (plan as any).interval === \"Mensal\";\n\n var planPrice = (!isMonth ? (plan?.price || 0) * 12 : plan?.price) || 0;\n\n if (cupom?.type === \"absolute\") {\n planPrice = planPrice - Number(cupom?.discountValue);\n } else if (cupom?.type === \"percent\") {\n planPrice = planPrice - planPrice * Number(cupom?.discountValue / 100);\n }\n\n planPrice = Number(planPrice.toFixed(2));\n\n return planPrice && isMonth ? planPrice * 12 : planPrice;\n }\n\n return darfData?.impostoTotalFinal;\n }, [\n darfData?.impostoTotalFinal,\n plan,\n isPlan,\n cupom?.discountValue,\n cupom?.type,\n ]);\n\n const { currentPage } = useBroker();\n\n const getCardInfo = () => {\n const addressInfo = addressForm.getFieldsValue();\n const monthExp = expiry?.split(\"/\")?.[0];\n const monthYear = expiry?.split(\"/\")?.[1];\n\n let cardInfo: any = {};\n\n const cardId = selectedCard?.id;\n\n if (cardId) {\n cardInfo.card_id = cardId;\n } else {\n cardInfo = {\n line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n city: addressInfo?.city,\n state: addressInfo?.state.toUpperCase(),\n holder_name: removeSpecialCharacters(name),\n number,\n exp_month: monthExp,\n exp_year: monthYear,\n holderDocument,\n cvv: cvc,\n };\n }\n\n return cardInfo;\n };\n\n useEffect(() => {\n if (currentStep < 0) {\n backToRoot && backToRoot();\n }\n }, [currentStep, backToRoot]);\n\n const getCustomerInfo = () => {\n let customerInfo;\n if (selectedCard?.customer_id) {\n customerInfo = { customer_id: selectedCard?.customer_id };\n } else {\n customerInfo = {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n phone,\n };\n }\n\n return customerInfo;\n };\n\n const createMeiPayment = () => {\n const addressInfo = addressForm.getFieldsValue();\n\n const url = \"/payment/plan/create_payment\";\n const monthExp = expiry?.split(\"/\")?.[0];\n const monthYear = expiry?.split(\"/\")?.[1];\n\n setLoading(true);\n handleClosableModal(false);\n (currentPage?.api || apiPlan)\n .post(url, {\n type: plan?.type,\n aceitouCGV: true,\n naoPossuiPendencia: true,\n paymentForm: \"credit_card\",\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n phone,\n },\n cardInfo: {\n cvv: cvc,\n holderDocument,\n number: number,\n exp_year: monthYear,\n exp_month: monthExp,\n holder_name: removeSpecialCharacters(name),\n country: \"BR\",\n city: addressInfo?.city,\n state: addressInfo?.state.toUpperCase(),\n zip_code: addressInfo?.cep?.replace(\"-\", \"\"),\n line_1: `${addressInfo?.neighborhood} - ${addressInfo?.street} - ${addressInfo?.number}`,\n },\n })\n .then((res: any) => {\n setCurrentStep(2);\n if (res?.data?.status?.toLowerCase() === \"active\") {\n setStatus(\"active\");\n }\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoading(false);\n handleClosableModal(true);\n });\n };\n\n const createPlanMainVelotax = () => {\n const url = \"/user-plan\";\n\n let cardInfo: any = getCardInfo();\n let clientInfo: any = getCustomerInfo();\n\n setLoading(true);\n handleClosableModal(false);\n\n apiPayment\n .post(url, {\n ...darfData,\n type: plan?.type,\n from: \"XP\",\n cupomCode: cupom?.cupomCode.toUpperCase(),\n paymentForm: \"credit_card\",\n installments: 12,\n cardInfo,\n clientInfo,\n acceptTerms: true,\n })\n .then((res: any) => {\n if (res.data.paymentId || res.data.paymentRecurringId) {\n handleSuccess && handleSuccess(res.data);\n if(cupom?.cupomCode.toUpperCase() === 'VELOTAXER20') {\n HandleTag('171')\n }\n }\n setCurrentStep(4);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoading(false);\n handleClosableModal(true);\n });\n };\n const createUniquePayment = () => {\n let url = \"/darf\";\n\n let cardInfo: any = getCardInfo();\n let clientInfo: any = getCustomerInfo();\n\n setLoading(true);\n handleClosableModal(false);\n\n (currentPage?.api || apiPlan)\n .post(url, {\n ...darfData,\n paymentForm: \"credit_card\",\n paymentInfo: {\n installments: installments,\n cardInfo: cardInfo,\n clientInfo: clientInfo,\n },\n })\n .then((res: any) => {\n if (handleIdBack) handleIdBack(res?.data);\n setCurrentStep(3);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoading(false);\n handleClosableModal(true);\n });\n };\n\n const changeCardService = async () => {\n let cardInfo: any = getCardInfo();\n\n setLoading(true);\n\n apiPayment\n .post(`/user-plan/change_signature_card`, {\n card: cardInfo,\n })\n .then((ret) => {\n message.success(\"Cartão atualizado com sucesso\");\n })\n .catch((err) => {\n message.error(\"Ocorreu um erro ao alterar cartão\");\n })\n .finally(() => {\n setLoading(false);\n closeMainModal && closeMainModal();\n });\n };\n\n const handleNextStep = () => {\n if (getConditionToDisable()) {\n if (currentStep === 1) cardForm.validateFields();\n if (currentStep === 2) addressForm.validateFields();\n message.warning(\"Preencha corretamente o formulário\");\n return;\n }\n if (currentStep === 1) {\n if (!darfData?.impostoTotalFinal) {\n HandleTag(\"57\");\n }\n setCurrentStep(2);\n } else if (currentStep === 2 || currentStep === 0) {\n if (changeCardAction) {\n changeCardService();\n } else if (typePurchase === \"MEI\") {\n createMeiPayment();\n } else if (typePurchase === \"UNIQUE\") {\n createUniquePayment();\n } else if ([\"VELOTAX_MAIN_BASIC\", \"VELOTAX_MAIN_PRO\", \"VELOTAX_MAIN_CONCIERGE\"].includes(typePurchase)) {\n createPlanMainVelotax();\n }\n }\n };\n\n const getConditionToDisable = () => {\n if (currentStep === 0 && !selectedCard?.id) return true;\n if (currentStep === 1 && !isValidCardForm) return true;\n if (currentStep === 2 && !isValidAddressForm) return true;\n return false;\n };\n\n const changeInstallments = (value: any) => {\n setInstallments(value);\n };\n\n return (\n <div>\n <Spin spinning={loading}>\n {currentStep === 0 && (\n <>\n <CardList\n installmentSelected={installments}\n onChangeInstallments={changeInstallments}\n plan={plan}\n value={value}\n selectedCardId={selectedCard?.id}\n onSelectCard={(card: any) => {\n setSelectedCard(card);\n\n if (!card) setCurrentStep(1);\n }}\n />\n </>\n )}\n\n {currentStep === 1 && (\n <>\n <br />\n <CardForm\n form={cardForm}\n number={number}\n setCvc={setCvc}\n setName={setName}\n focused={focused}\n setPhone={setPhone}\n setNumber={setNumber}\n setExpiry={setExpiry}\n setFocused={setFocused}\n setHolderDocument={setHolderDocument}\n setIsValidCardForm={setIsValidCardForm}\n uniqueValue={value}\n addInfo={{ isPlan }}\n signature={(plan as UserPlan)?.interval === \"Mensal\"}\n fixedInstallments={isPlan ? 12 : undefined}\n handleBack={changeInstallments}\n installmentSelected={installments}\n customInstallments={customInstallments}\n />\n </>\n )}\n\n {currentStep === 2 && (\n <>\n <br />\n <AddressForm\n form={addressForm}\n setLoading={setLoading}\n setIsValidAddressForm={setIsValidAddressForm}\n />\n </>\n )}\n\n {currentStep === 3 && (\n <ResultScreen\n plan={plan as IPlan}\n status={status}\n setCurrentStep={setCurrentStep}\n />\n )}\n\n {currentStep === 4 && <PendingScreen />}\n <Footer\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n hideTerms\n selectedCardId={selectedCard?.id}\n handleProceed={handleNextStep}\n typePurchase={typePurchase}\n backtoRoot={backToRoot}\n />\n </Spin>\n </div>\n );\n};\n\nexport default CreditCardStep;\n","import Payment from \"payment\";\nimport Masked from \"react-input-mask\";\nimport { TextField } from \"@mui/material\";\nimport { Focused } from \"react-credit-cards\";\nimport NumberFormat from \"react-number-format\";\nimport React, { forwardRef, useMemo } from \"react\";\nimport { Col, Form, FormInstance, Row } from \"antd\";\nimport { SelectLabled } from \"../../../../../constants/inputs\";\nimport getInstallmentsListByPrice from \"../../../../../utils/getInstallmentsListByPrice\";\nimport { cpfInputMask, getMuiInputCss } from \"../../../../../utils\";\nimport {\n validationAmexCVV,\n validationCardShelfLife,\n validationCpf,\n validationCreditCardNumber,\n validationCVV,\n validationFieldRequired,\n validationPhoneRequired,\n} from \"../../../../../utils/formValidations\";\n\ninterface ICardFormProps {\n number: string;\n focused?: Focused;\n form: FormInstance;\n uniqueValue?: number;\n setCvc: (cvc: string) => void;\n setName: (name: string) => void;\n setPhone: (value: string) => void;\n setNumber: (number: string) => void;\n setExpiry: (expiry: string) => void;\n setFocused: (focused: Focused) => void;\n setHolderDocument: (value: string) => void;\n setIsValidCardForm: (isValidCardForm: boolean) => void;\n handleBack: (event: any) => void;\n fixedInstallments?: number;\n signature?: boolean;\n installmentSelected?: number;\n customInstallments?: number;\n addInfo?: Record<string, any>;\n}\n\nconst CreditCardNumber = forwardRef((props, ref) => (\n <NumberFormat {...props} mask=\"_\" format=\"#### #### #### ####\" />\n));\n\nconst CreditCardNumberDiner = forwardRef((props, ref) => (\n <NumberFormat {...props} mask=\"_\" format=\"#### ###### ####\" />\n));\n\nconst CreditCardNumberAmex = forwardRef((props, ref) => (\n <NumberFormat {...props} mask=\"_\" format=\"#### ###### #####\" />\n));\n\nconst ExpiryInput = forwardRef((props, ref) => (\n <Masked {...props} mask=\"99/99\" />\n));\n\nconst PhoneInput = forwardRef((props, ref) => (\n <Masked {...props} mask=\"(99) 99999-9999\" />\n));\n\nconst CPFInput = forwardRef((props, ref) => (\n <Masked {...props} mask={cpfInputMask} />\n));\n\nconst CVVAmexInput = forwardRef((props, ref) => (\n <NumberFormat\n {...props}\n mask=\"_\"\n format=\"####\"\n className={`MuiInputBase-input MuiInput-input ${getMuiInputCss()}`}\n />\n));\n\nconst CVVInput = forwardRef((props, ref) => (\n <NumberFormat\n {...props}\n mask=\"_\"\n format=\"###\"\n className={`MuiInputBase-input MuiInput-input ${getMuiInputCss()}`}\n />\n));\n\nexport const CardForm: React.FC<ICardFormProps> = ({\n form,\n number,\n setCvc,\n setName,\n setPhone,\n setNumber,\n setExpiry,\n setFocused,\n setHolderDocument,\n setIsValidCardForm,\n uniqueValue,\n fixedInstallments,\n handleBack,\n signature,\n installmentSelected,\n customInstallments,\n addInfo\n}) => {\n const cardType = useMemo(() => Payment.fns.cardType(number), [number]);\n\n let installments = useMemo(\n () =>\n getInstallmentsListByPrice(\n uniqueValue || 0,\n !!signature,\n fixedInstallments\n ),\n [signature, fixedInstallments, uniqueValue]\n );\n\n const onValuesChange = (changed: any, values: any) => {\n setCvc(values.cvv ?? \"\");\n setExpiry(values.expiry ?? \"\");\n setName(values.holderName ?? \"\");\n setHolderDocument(values.cpf?.replace(/[_.-]/g, \"\") ?? \"\");\n setPhone(values.phone?.replace(/[()_-]/g, \"\").replace(\" \", \"\") ?? \"\");\n const key = Object.keys(changed)[0];\n setFocused(\n (key === \"holderName\" ? \"name\" : key === \"cvv\" ? \"cvc\" : key) as Focused\n );\n form.setFieldsValue({\n ...values,\n cpf: values.cpf?.replace(/[_.-]/g, \"\") ?? \"\",\n phone: values.phone?.replace(/[()_-]/g, \"\").replace(\" \", \"\") ?? \"\",\n });\n\n setTimeout(() => {\n form\n .validateFields()\n .then(() => setIsValidCardForm(true))\n .catch(() => setIsValidCardForm(false));\n }, 500);\n };\n\n const SelectInput = forwardRef((props, ref) => (\n <SelectLabled\n {...props}\n options={installments}\n value={\n fixedInstallments || signature\n ? installments[0].value\n : installmentSelected\n }\n placeholder=\"Selecione a(s) parcela(s)\"\n onChange={handleBack}\n label={signature ? \"Mensalidade\" : \"Parcelas\"}\n />\n ));\n\n return (\n <>\n <Form\n form={form}\n size=\"large\"\n layout=\"vertical\"\n onValuesChange={onValuesChange}\n >\n <Row gutter={[16, 16]}>\n <Col span={24}>\n <Form.Item name=\"number\" rules={validationCreditCardNumber}>\n <TextField\n variant=\"standard\"\n label=\"Número do cartão\"\n InputLabelProps={{\n shrink: true,\n }}\n onPaste={(e) => {\n (e.target as HTMLElement).setAttribute(\"pasted\", \"true\");\n const value = e.clipboardData.getData(\"text/plain\");\n setNumber(value);\n }}\n onChange={(e) => {\n if ((e.target as HTMLElement).getAttribute(\"pasted\")) {\n (e.target as HTMLElement).removeAttribute(\"pasted\");\n } else {\n setNumber(e.target.value);\n }\n }}\n InputProps={{\n inputComponent: (cardType === \"dinersclub\"\n ? CreditCardNumberDiner\n : cardType === \"amex\"\n ? CreditCardNumberAmex\n : CreditCardNumber) as any,\n }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"expiry\" rules={validationCardShelfLife}>\n <TextField\n variant=\"standard\"\n label=\"Data de vencimento\"\n placeholder=\"Data de vencimento\"\n InputProps={{\n inputComponent: ExpiryInput as any,\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item\n name=\"cvv\"\n rules={\n cardType === \"amex\" || cardType === \"discover\"\n ? validationAmexCVV\n : validationCVV\n }\n >\n <TextField\n variant=\"standard\"\n label=\"Código de segurança\"\n placeholder=\"Código de segurança\"\n InputProps={{\n inputComponent: (cardType === \"amex\" ||\n cardType === \"discover\"\n ? CVVAmexInput\n : CVVInput) as any,\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n </Form.Item>\n </Col>\n <Col span={24}>\n <Form.Item name=\"holderName\" rules={validationFieldRequired}>\n <TextField\n variant=\"standard\"\n label=\"Nome completo\"\n placeholder=\"Nome completo\"\n InputLabelProps={{\n shrink: true,\n }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"cpf\" rules={validationCpf}>\n <TextField\n variant=\"standard\"\n label=\"CPF do titular\"\n placeholder=\"CPF do titular\"\n InputProps={{\n inputComponent: CPFInput as any,\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"phone\" rules={validationPhoneRequired}>\n <TextField\n variant=\"standard\"\n label=\"Telefone\"\n placeholder=\"Telefone\"\n InputProps={{\n inputComponent: PhoneInput as any,\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n </Form.Item>\n </Col>\n {uniqueValue && !addInfo?.isPlan ? (\n <Col span={24}>\n <Form.Item name=\"installments\">\n <SelectInput />\n </Form.Item>\n </Col>\n ) : (\n \"\"\n )}\n </Row>\n </Form>\n </>\n );\n};\n","import axios from \"axios\";\n\nconst cep = axios.create({\n method: \"GET\",\n baseURL: \"https://viacep.com.br/ws/\",\n});\n\nexport default cep;\n","import React, { forwardRef } from \"react\";\nimport { TextField } from \"@mui/material\";\nimport NumberFormat from \"react-number-format\";\nimport { Col, Form, FormInstance, Row } from \"antd\";\nimport cep from \"../../../../../services/cep\";\nimport { getMuiInputCss } from \"../../../../../utils\";\nimport {\n validationCep,\n validationFieldRequired,\n validationStateAddress,\n} from \"../../../../../utils/formValidations\";\n\ninterface IAddressFormProps {\n form: FormInstance;\n setLoading: (loading: boolean) => void;\n setIsValidAddressForm: (isValidAddressForm: boolean) => void;\n}\n\nconst AddressForm: React.FC<IAddressFormProps> = ({\n form,\n setLoading,\n setIsValidAddressForm,\n}) => {\n const getAddressSuggestion = (value: string) => {\n if (value?.length === 8) {\n setLoading(true);\n cep\n .get(`${value}/json`)\n .then((res) => {\n const data = res.data;\n\n if (data.cep) {\n form.setFieldsValue({\n street: data.logradouro,\n neighborhood: data.bairro,\n city: data.localidade,\n state: data.uf,\n });\n } else {\n throw Error();\n }\n })\n .catch(() => {\n form.setFieldsValue({\n street: undefined,\n neighborhood: undefined,\n city: undefined,\n state: undefined,\n number: undefined,\n });\n })\n .finally(() => {\n onFieldsChange();\n setLoading(false);\n });\n }\n };\n\n const onFieldsChange = () => {\n form\n .validateFields()\n .then(() => setIsValidAddressForm(true))\n .catch(() => setIsValidAddressForm(false));\n };\n\n const CEPInput = forwardRef((props, ref) => (\n <NumberFormat\n {...props}\n mask=\"_\"\n format=\"#####-###\"\n defaultValue={(props as any).value}\n className={`MuiInputBase-input MuiInput-input ${getMuiInputCss()}`}\n onValueChange={(value) => getAddressSuggestion(value?.value)}\n ></NumberFormat>\n ));\n\n return (\n <>\n <Form\n form={form}\n size=\"large\"\n layout=\"vertical\"\n onChange={onFieldsChange}\n >\n <Row gutter={8}>\n <Col span={12}>\n <Form.Item name=\"cep\" rules={validationCep}>\n <TextField\n label=\"CEP\"\n variant=\"standard\"\n InputProps={{\n inputComponent: CEPInput as any,\n }}\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"street\" rules={validationFieldRequired}>\n <TextField\n label=\"Logradouro\"\n variant=\"standard\"\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n </Col>\n </Row>\n\n <Row gutter={8}>\n <Col span={12}>\n <Form.Item name=\"neighborhood\" rules={validationFieldRequired}>\n <TextField\n label=\"Bairro\"\n variant=\"standard\"\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"number\" rules={validationFieldRequired}>\n <TextField\n label=\"Número\"\n variant=\"standard\"\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n </Col>\n </Row>\n\n <Row gutter={8}>\n <Col span={12}>\n <Form.Item name=\"city\" rules={validationFieldRequired}>\n <TextField\n label=\"Cidade\"\n variant=\"standard\"\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item name=\"state\" rules={validationStateAddress}>\n <TextField\n label=\"Estado\"\n variant=\"standard\"\n inputProps={{ maxLength: 2 }}\n InputLabelProps={{ shrink: true }}\n />\n </Form.Item>\n </Col>\n </Row>\n </Form>\n </>\n );\n};\n\nexport default AddressForm;\n","import React from \"react\";\nimport { BiErrorAlt } from \"react-icons/bi\";\nimport { Col, Row, Typography } from \"antd\";\nimport Button from \"../../../../../../Button\";\n\ninterface IErrorScreenProps {\n setCurrentStep: (currentStep: number) => void;\n}\n\nexport const ErrorScreen: React.FC<IErrorScreenProps> = ({\n setCurrentStep,\n}) => {\n const callBack = (cb: Function) => {\n setCurrentStep(0);\n setTimeout(() => cb(), 200);\n };\n\n return (\n <Row justify=\"center\" style={{ marginTop: \"64px\" }}>\n <Col>\n <BiErrorAlt size={72} color=\"var(--ant-error-color)\" />\n </Col>\n\n <Col span={24} style={{ marginTop: \"24px\" }}>\n <Typography.Paragraph style={{ fontSize: 16, textAlign: \"center\" }}>\n Ocorreu um erro durante a confirmação do pagamento.\n </Typography.Paragraph>\n </Col>\n\n <Button\n size=\"large\"\n onClick={() => {\n callBack(() => {});\n }}\n >\n Escolher outra forma de pagamento\n </Button>\n </Row>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { MdCheck } from \"react-icons/md\";\nimport { Col, Row, Typography } from \"antd\";\nimport { Plan } from \"../../../../../../../constants/plans\";\nimport { useAuth } from \"../../../../../../../contexts/AuthContext\";\nimport { useBroker } from \"../../../../../../../contexts/BrokerContext\";\n\ninterface ConfirmedScreenProps {\n plan?: Plan;\n}\n\nexport const ConfirmedScreen: React.FC<ConfirmedScreenProps> = ({ plan }) => {\n const {\n user: { token },\n } = useAuth();\n const { getIntegrationStatus } = useBroker();\n\n useEffect(() => {\n getIntegrationStatus({ token, hideLoading: true });\n }, [getIntegrationStatus, token]);\n\n return (\n <Row justify=\"center\">\n <Col>\n <MdCheck color={\"var(--ant-success-color)\"} size={120} />\n </Col>\n <Col>\n <Typography.Paragraph\n strong\n style={{\n fontWeight: 500,\n fontSize: \"16px\",\n textAlign: \"center\",\n margin: \"16px 0 32px\",\n }}\n >\n {plan\n ? `Pagamento confirmado com sucesso! Parabéns você contratou o plano '\n ${plan?.title.toUpperCase()}'`\n : \"Pagamento realizado com sucesso!\"}\n </Typography.Paragraph>\n </Col>\n </Row>\n );\n};\n","import React, { Dispatch, SetStateAction } from \"react\";\nimport { Plan } from \"../../../../../constants/plans\";\nimport { ErrorScreen } from \"./components/ErrorScreen\";\nimport { ConfirmedScreen } from \"./components/ConfirmScreen\";\n\ninterface IResultScreen {\n plan?: Plan;\n setCurrentStep: Dispatch<SetStateAction<number>>;\n status?: string;\n}\n\nexport const ResultScreen: React.FC<IResultScreen> = ({\n plan,\n setCurrentStep,\n status = \"pending\",\n}) => {\n return (\n <>\n {status === \"active\" ? (\n <ConfirmedScreen plan={plan} />\n ) : (\n <ErrorScreen setCurrentStep={setCurrentStep} />\n )}\n </>\n );\n};\n","import React from \"react\";\nimport { Col, Row, Typography } from \"antd\";\nimport { BsClockHistory } from \"react-icons/bs\";\n\ninterface IPendingScreenProps {}\n\nexport const PendingScreen: React.FC<IPendingScreenProps> = () => {\n const getMessage = () =>\n \"Aguardando confirmação de pagamento no cartão, assim que confirmado o plano será ativado automaticamente.\";\n\n return (\n <Row justify=\"center\" style={{ marginTop: \"64px\" }}>\n <Col>\n <BsClockHistory size={72} color=\"var(--ant-primary-color)\" />\n </Col>\n\n <Col\n span={24}\n style={{\n display: \"flex\",\n marginTop: \"48px\",\n justifyContent: \"left\",\n }}\n >\n <Typography.Paragraph\n style={{\n textAlign: \"justify\",\n fontSize: 16,\n color: \"var(--velotax-font-color-dark)\",\n }}\n >\n {getMessage()}\n </Typography.Paragraph>\n </Col>\n </Row>\n );\n};\n","import { Form, Select } from \"antd\";\nimport React, { KeyboardEvent } from \"react\";\nimport ReactInputMask from \"react-input-mask\";\nimport { cnpjInputMask, isValidCNPJ } from \"../../utils\";\nimport {\n validationCnpj,\n validationFieldRequired,\n} from \"../../utils/formValidations\";\n\nexport enum MEIAtividadePrincipalEnum {\n SERVICO = \"Serviço\",\n COMERCIO_INDUSTRIA = \"Comércio e Indústria\",\n // COMERCIO_SERVICOS = \"Comércio e Serviços\",\n}\n\nexport const MEIAtividadePrincipalValue: {\n [key: number]: MEIAtividadePrincipalEnum;\n} = {\n 61.6: MEIAtividadePrincipalEnum.COMERCIO_INDUSTRIA,\n 65.6: MEIAtividadePrincipalEnum.SERVICO,\n // 66.6: MEIAtividadePrincipalEnum.COMERCIO_SERVICOS,\n};\n\nexport interface IdentificationData {\n companyCode: string;\n mainActivity: MEIAtividadePrincipalEnum;\n}\n\nexport const isValidAtividadePrincipal = (value: string) =>\n Object.values(MEIAtividadePrincipalEnum).includes(\n value as MEIAtividadePrincipalEnum\n );\n\nexport const validateIdentification = (data: IdentificationData) =>\n isValidCNPJ(data.companyCode) && isValidAtividadePrincipal(data.mainActivity);\n\ninterface Question {\n id: string;\n title: React.ReactNode;\n formItems: { name: string; FormItem: React.FC<{ tabIndex?: number }> }[];\n}\n\nexport const identificationQuestions: Question[] = [\n {\n id: \"companyCode\",\n title: \"Qual é o CNPJ do seu MEI?\",\n formItems: [\n {\n name: \"companyCode\",\n FormItem: ({ tabIndex }) => (\n <Form.Item name=\"companyCode\" rules={validationCnpj}>\n <ReactInputMask\n tabIndex={tabIndex}\n mask={cnpjInputMask}\n className=\"ant-input ant-input-lg\"\n />\n </Form.Item>\n ),\n },\n ],\n },\n {\n id: \"mainActivity\",\n title: \"Qual é a atividade principal do seu MEI?\",\n formItems: [\n {\n name: \"mainActivity\",\n FormItem: ({ tabIndex }) => (\n <Form.Item name=\"mainActivity\" rules={validationFieldRequired}>\n <Select\n tabIndex={tabIndex}\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\") {\n event.stopPropagation();\n }\n }}\n >\n <Select.Option value={MEIAtividadePrincipalEnum.SERVICO}>\n {MEIAtividadePrincipalEnum.SERVICO}\n </Select.Option>\n <Select.Option\n value={MEIAtividadePrincipalEnum.COMERCIO_INDUSTRIA}\n >\n {MEIAtividadePrincipalEnum.COMERCIO_INDUSTRIA}\n </Select.Option>\n </Select>\n </Form.Item>\n ),\n },\n ],\n },\n];\n","import { useState } from \"react\";\nimport { ModalProps } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Plan } from \"./Plan\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { Content, PlanModalStyled, Loading } from \"./styles\";\nimport { Plans, Plan as IPlan } from \"../../constants/plans\";\nimport CreditCardStep, { ETypePurchase } from \"../Payment/CreditCardStep\";\n\ninterface PlanModalProps extends ModalProps {\n modalPlans?: IPlan[];\n}\n\nexport const PlanModal: React.FC<PlanModalProps> = ({\n title,\n modalPlans,\n onCancel,\n ...rest\n}) => {\n const {\n integration: { plans },\n } = useBroker();\n\n const [plan, setPlan] = useState<IPlan>();\n const [loading, setLoading] = useState(false);\n const [closable, setClosable] = useState(true);\n\n const handleSelectPlan = (plan?: IPlan) => {\n setLoading(true);\n setTimeout(() => {\n setPlan(plan);\n setLoading(false);\n }, 500);\n };\n\n const handleDeselectPlan = () => {\n setPlan(undefined);\n };\n\n return (\n <PlanModalStyled\n footer={null}\n closable={closable}\n title={!plan ? title ?? \"Selecione um plano\" : \"Pagamento\"}\n onCancel={(e) => {\n handleDeselectPlan();\n onCancel?.(e);\n }}\n {...rest}\n >\n <Content>\n {loading && (\n <Loading>\n <LoadingOutlined color=\"var(--ant-primary-color)\" size={24} />\n </Loading>\n )}\n {!plan ? (\n (modalPlans || Plans).map((plan) => (\n <Plan\n plan={plan}\n key={plan.title}\n handleSelect={() => handleSelectPlan(plan)}\n buyed={\n (plans?.name === plan.type && plans.status === \"active\") ??\n false\n }\n />\n ))\n ) : (\n <CreditCardStep\n plan={plan}\n initialized={true}\n handleBack={handleDeselectPlan}\n typePurchase={ETypePurchase.MEI}\n handleClosableModal={setClosable}\n status=\"\"\n handleSuccess={() => {}}\n setInitialized={() => {}}\n getCardCurrentStep={(value: number) => {}}\n />\n )}\n </Content>\n </PlanModalStyled>\n );\n};\n","import { Modal } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 0 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0 16px 128px;\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n margin: 0 auto;\n max-width: 600px;\n border-radius: 16px;\n background-color: var(--velotax-background-color);\n h1 {\n margin: 0 0 8px;\n font-size: 20px;\n color: var(--velotax-font-color);\n }\n h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 400;\n color: var(--velotax-font-color);\n }\n .ant-list.ant-list-split {\n margin: 24px 0 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n button {\n margin: 0 auto;\n }\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n .ant-list.ant-list-split {\n .ant-list-item-action {\n display: grid;\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n }\n }\n`;\n\nexport const ConfirmModal = styled(Modal)`\n .p {\n font-size: 16px;\n strong {\n font-weight: 500;\n color: var(--ant-primary-color);\n }\n }\n`;\n","import { Tag } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n column-gap: 8px;\n`;\n\nexport const StyledTag = styled(Tag)`\n margin: 0;\n height: 32px;\n border-radius: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: default;\n font-size: 12px;\n font-weight: 500;\n`;\n","import { Divider, Typography } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\n\nexport enum MeiReportDasStatusEnum {\n EMITTED = \"EMITTED\",\n REQUESTED = \"REQUESTED\",\n}\n\nexport enum MeiReportStatusTextEnum {\n EMITTED = \"Emitido\",\n REQUESTED = \"Solicitado\",\n}\n\nexport enum MeiDasStatusTextEnum {\n EMITTED = \"Guia Emitida\",\n REQUESTED = \"Guia Solicitada\",\n}\n\nexport enum MeiDasStatusColorEnum {\n EMITTED = \"var(--ant-success-color)\",\n REQUESTED = \"var(--ant-primary-color)\",\n}\n\nexport const DasHelpModal = {\n title: \"Lista de guias MEI (DAS)\",\n content: (\n <div>\n <Typography.Paragraph>\n Confirme manualmente sempre que um DAS for pago com sucesso. Esta\n funcionalidade te ajuda a manter o controle dos seus pagamentos\n realizados.\n </Typography.Paragraph>\n <Divider />\n <Typography.Text strong italic>\n <InfoCircleOutlined />\n Atenção: a confirmação de pagamento é feita manualmente pelo\n usuário. O Velotax não realiza este monitoramento automaticamente.\n </Typography.Text>\n </div>\n ),\n};\n","import { Col, Row, Typography } from \"antd\";\nimport { ExteriorModalContainer } from \"./styles\";\nimport { formatCurrency, replaceDotByComma } from \"../../../utils\";\n\nexport enum ExteriorOperationType {\n TRADE = \"TRADE\",\n DEPOSIT = \"DEPOSIT\",\n WITHDRAW = \"WITHDRAW\",\n}\n\ninterface ExteriorModalContentProps {\n asset: any;\n}\n\nexport const InterestModal = ({ asset }: ExteriorModalContentProps) => {\n return (\n <ExteriorModalContainer>\n <Row gutter={[16, 8]} align=\"middle\" justify=\"space-between\">\n <Col span=\"24\">\n <Typography.Text strong className=\"exterior-content-title\">\n {asset.type === \"DIVIDEND\" ? \"Dividendos\" : \"Juros\"} recebidos\n </Typography.Text>\n </Col>\n <Col span={14}>Valor bruto:</Col>\n <Col span={10}>\n <strong>{formatCurrency(asset.valor, \"US$ \")}</strong>\n </Col>\n <Col span={14}>Taxa de corretagem:</Col>\n <Col span={10}>\n <strong>{formatCurrency(asset.fee, \"US$ \")}</strong>\n </Col>\n <Col span={14}>Data de liquidação:</Col>\n <Col span={10}>\n <strong>{asset.data}</strong>\n </Col>\n <Col span={14}>Cotação dólar:</Col>\n <Col span={10}>\n <strong>{replaceDotByComma(asset.cambioVenda)}</strong>\n </Col>\n <Col span={24}>\n <div className=\"exterior-capital-gain\">\n Rendimento total: \n <strong>{formatCurrency(asset.rendimentoAplicacao)}</strong>\n </div>\n </Col>\n </Row>\n </ExteriorModalContainer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n\n .errorCard {\n display: flex;\n flex-direction: column;\n justify-content: center;\n background-color: var(--ant-primary-1);\n height: 150px;\n margin-top: 35px;\n border-radius: 16px;\n border: 1px solid var(--ant-primary-color);\n padding-left: 30px;\n\n .errorTitle {\n color: #000;\n font-weight: 600;\n font-size: 18px;\n }\n\n .errorText {\n color: #000;\n }\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 700px;\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n &.info {\n align-items: flex-start;\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.85;\n margin: 0 auto 2.5rem;\n svg {\n margin-top: 4px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n margin: 0 auto;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n h1 {\n margin: 0 0 8px;\n font-size: 20px;\n color: var(--velotax-font-color);\n }\n h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 400;\n color: var(--velotax-font-color);\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px;\n border-radius: 0;\n width: 100%;\n .ant-list.ant-list-split {\n .ant-list-item-action {\n display: grid;\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n }\n }\n\n .monthError {\n text-align: center;\n .warning {\n transform: translateY(2px);\n color: var(--ant-warning-color);\n margin-right: 6px;\n font-size: 16px;\n }\n }\n`;\n\n\nexport const TitleContainer = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n`","import styled from \"styled-components\";\n\nexport const ExteriorModalContainer = styled.div`\n font-size: 1rem;\n color: var(--velotax-font-color-dark);\n\n strong {\n font-weight: 600;\n }\n\n .exterior-capital-gain {\n padding: 8px;\n margin: 24px auto;\n text-align: center;\n background-color: #eee;\n }\n`;\n","import { Col, Row, Typography } from \"antd\";\nimport { ExteriorModalContainer } from \"./styles\";\nimport { formatCurrency, replaceDotByComma } from \"../../../utils\";\n\nexport enum ExteriorOperationType {\n TRADE = \"TRADE\",\n DEPOSIT = \"DEPOSIT\",\n WITHDRAW = \"WITHDRAW\",\n}\n\ninterface ExteriorModalContentProps {\n asset: any;\n}\n\nexport const ExteriorModalContent = ({ asset }: ExteriorModalContentProps) => {\n return (\n <ExteriorModalContainer>\n <Row gutter={[16, 8]} align=\"middle\" justify=\"space-between\">\n <Col span={24}>\n Quantidade: <strong>{asset.quantidade}</strong>\n </Col>\n <Col span=\"24\">\n <Typography.Text strong className=\"exterior-content-title\">\n {asset.type === ExteriorOperationType.TRADE\n ? \"Compra\"\n : asset.type === ExteriorOperationType.DEPOSIT\n ? \"Depósito\"\n : asset.type === ExteriorOperationType.WITHDRAW\n ? \"Resgate\"\n : \"Compra\"}\n </Typography.Text>\n </Col>\n <Col span={14}>Origem BRA:</Col>\n <Col span={10}>\n <strong>{formatCurrency(asset.valueOriginBRA, \"US$ \")}</strong>\n </Col>\n <Col span={14}>Origem USA:</Col>\n <Col span={10}>\n <strong>{formatCurrency(asset.valueOriginEUA, \"US$ \")}</strong>\n </Col>\n {asset.type === ExteriorOperationType.TRADE && (\n <Col span=\"24\">\n <Typography.Text strong className=\"exterior-content-title\">\n Venda\n </Typography.Text>\n </Col>\n )}\n {asset.type === ExteriorOperationType.TRADE && (\n <>\n <Col span={14}>Valor bruto:</Col>\n <Col span={10}>\n <strong>{formatCurrency(asset.valor, \"US$ \")}</strong>\n </Col>\n </>\n )}\n <Col span={14}>Taxa de corretagem:</Col>\n <Col span={10}>\n <strong>{formatCurrency(asset.fee, \"US$ \")}</strong>\n </Col>\n <Col span={14}>Data de liquidação:</Col>\n <Col span={10}>\n <strong>{asset.data}</strong>\n </Col>\n <Col span={14}>Cotação dólar:</Col>\n <Col span={10}>\n <strong>{replaceDotByComma(asset.cambioVenda)}</strong>\n </Col>\n {(asset.type === ExteriorOperationType.DEPOSIT ||\n asset.type === ExteriorOperationType.WITHDRAW) && (\n <>\n <Col span={14}>Cotação dólar Referência:</Col>\n <Col span={10}>\n <strong>{replaceDotByComma(asset.cambioReferencia.toFixed(4))}</strong>\n </Col>\n </>\n )}\n <Col span={24}>\n <div className=\"exterior-capital-gain\">\n Ganho de capital: \n <strong>{formatCurrency(asset.type === \"INTEREST\" ? asset.ganho2 : asset.ganho)}</strong>\n </div>\n </Col>\n </Row>\n </ExteriorModalContainer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n margin: 0 auto;\n width: 700px;\n\n button {\n padding-left: 0px !important;\n padding-right: 0px !important;\n min-width: auto;\n }\n\n &.darf-bolsa,\n &.darf-exterior,\n &.historic-bolsa,\n &.integration-exterior,\n &.historic-exterior {\n margin-top: 24px;\n }\n\n &.dividendos-exterior {\n margin-top: -24px;\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n &.darf-bolsa,\n &.report-bolsa,\n &.dividendos-exterior,\n &.report-exterior,\n &.darf-exterior {\n padding: 0 24px;\n }\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Container } from \"./styles\";\n\ninterface BackButtonProps {\n to: string;\n className?: string;\n}\n\nexport const BackButton: React.FC<BackButtonProps> = ({ to, className }) => {\n const navigate = useNavigate();\n return (\n <Container className={className}>\n <Button\n variant=\"text\"\n color=\"secondary\"\n onClick={() => {\n navigate(to);\n }}\n >\n Voltar\n </Button>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const ExteriorModalContainer = styled.div`\n font-size: 1rem;\n color: var(--velotax-font-color-dark);\n\n strong {\n font-weight: 600;\n }\n\n .exterior-capital-gain {\n padding: 8px;\n margin: 24px auto;\n text-align: center;\n background-color: #eee;\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { Col, Modal, Row } from \"antd\";\n\nexport function ModalConfirmMail({\n action,\n closeFn,\n visible,\n}: {\n action: (sendMail: boolean) => void;\n visible: boolean;\n closeFn: () => void;\n}) {\n function handleClick(send: boolean) {\n action(send);\n closeFn();\n }\n\n return (\n <Modal\n title=\"Enviar por e-mail\"\n visible={visible}\n onCancel={() => closeFn()}\n closable={true}\n footer={\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n handleClick(true);\n }}>\n Sim\n </Button>\n </Col>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n handleClick(false);\n }}>\n Não\n </Button>\n </Col>\n </Row>\n }>\n <Row>\n <Col>Gostaria de receber o documento também por e-mail?</Col>\n </Row>\n </Modal>\n );\n}\n","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { BiChevronLeft, BiChevronRight } from \"react-icons/bi\";\nimport { AiOutlineDelete, AiOutlineLock } from \"react-icons/ai\";\nimport { BsCalendar3, BsDownload, BsEye } from \"react-icons/bs\";\nimport { LoadingOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport { useCallback, useEffect, useMemo, useState, ReactNode } from \"react\";\nimport {\n Col,\n Collapse,\n DatePicker,\n Descriptions,\n List,\n message,\n Modal,\n Row,\n Skeleton,\n Space,\n Spin,\n Tooltip,\n Typography,\n} from \"antd\";\nimport { Page } from \"../../constants/brokers\";\nimport AntButton from \"../../components/Button\";\nimport HandleTag from \"../../services/handleTag\";\nimport { Container, Content } from \"../Darf/styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { FormModal } from \"../../components/FormModal\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport { InterestModal } from \"./InterestModalContent\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport apis, { NOT_AUTHORIZED } from \"../../services/apis\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\nimport { ExteriorModalContent } from \"./ExteriorModalContent\";\nimport { IntegrationModal } from \"../Darf/Components/IntegrationModal\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport { DatePickerExtraFooter } from \"../Darf/Components/DatePickerExtraFooter\";\nimport {\n DatePickerMonthCell,\n YearResume,\n} from \"../Darf/Components/DatePickerMonthCell\";\nimport {\n antDatePickerLocale,\n download,\n errorMessage,\n formatCurrency,\n monthsExtended,\n numberToPercentageWallet,\n} from \"../../utils\";\nimport {\n DarfResultDescriptionsExterior,\n ExteriorFormItemRows,\n defaultDarf,\n DarfModal,\n IDarf,\n DarfImpostosDevidosDescriptions,\n minDarfPrice,\n maxDarfPrice,\n YearResumeStatusFromBackEnum,\n IQuotes,\n historicoVendasEmptyText,\n maxPixPayment,\n maxCreditCardPayment,\n yearConfigPL4173,\n ExteriorNewFormItemRows,\n} from \"../../constants/darf\";\nimport { CurrencyFormItem } from \"../../constants/formItems\";\nimport { useDarfExterior } from \"./useDarfExterior\";\nimport { ModalConfirmMail } from \"../../components/ModalConfirmMail\";\n\ninterface DarfProps {\n item: Page;\n selectedYear?: number;\n view?: boolean;\n viewEdit?: boolean;\n closeModal?: () => void;\n darf?: {\n id: string;\n fullPath?: string;\n };\n date?: {\n year?: number;\n month?: number;\n };\n}\n\nconst PrejuFormItems = {\n userPrejuizoExterior: (disabled: boolean) =>\n CurrencyFormItem({\n disabled,\n name: \"prejuizoExterior\",\n label: \"PrejuÃzo Exterior\",\n }),\n};\n\nexport const PrejuFormItemRows = (disabled: boolean) => [\n [PrejuFormItems.userPrejuizoExterior(disabled)],\n];\n\nexport const DarfExterior: React.FC<DarfProps> = ({\n view,\n item,\n date,\n darf,\n viewEdit,\n closeModal,\n selectedYear\n}) => {\n const { state } = useLocation();\n const { currentBroker, currentPage } = useBroker();\n const [openPrejuizoModal, setOpenPrejuizoModal] = useState(false);\n const navigate = useNavigate()\n const { user, hasPlan: hasPremiunPlan, hasPermissionExterior, hasPermissionGeneral } = useAuth();\n const { getBuyPrice, getFee, getGain, getSellPrice } = useDarfExterior()\n\n const today = new Date();\n const queryYear = (state as any)?.year as number;\n const queryMonth = (state as any)?.month as number;\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const initialMonth = queryMonth\n ? queryMonth - 1\n : today.getMonth() - 1 >= 0\n ? today.getMonth() - 1\n : 11;\n const initialYear = queryYear\n ? queryYear\n : today.getMonth() - 1 >= 0\n ? today.getFullYear()\n : today.getFullYear() - 1;\n const defaultValue = moment({ month: initialMonth, year: initialYear });\n const currentDate = moment({\n month: currentMonth,\n year: currentYear,\n }).subtract(1, \"M\");\n window.history.replaceState({}, document.title);\n\n const year = date?.year ?? initialYear;\n const month = date?.month ?? initialMonth;\n const oldModel = year < yearConfigPL4173;\n const currentDarfDate = new Date(year, month, 15)\n let dateAllowedOnBasic = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n if(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt) {\n dateAllowedOnBasic = new Date(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt);\n dateAllowedOnBasic.setMonth(dateAllowedOnBasic.getMonth() - 2)\n }\n const hideOnBasic = (currentDarfDate.getTime() < dateAllowedOnBasic.getTime() && user.user?.userPlanInfoVelotax?.type?.includes('BASIC'))\n const hasPlan = (hasPremiunPlan || hasPermissionExterior || hasPermissionGeneral) && !hideOnBasic;\n\n const [asset, setAsset] = useState<any>();\n const [loading, setLoading] = useState(false);\n const [, setYear] = useState(initialYear);\n const [, setMonth] = useState(initialMonth);\n const [emitting, setEmitting] = useState(false);\n const [darfModal, setDarfModal] = useState<any>();\n const [helpModal, setHelpModal] = useState<any>();\n const [data, setData] = useState<IDarf>(defaultDarf);\n const [paymentModal, setPaymentModal] = useState(false);\n const [paymentData, setPaymentData] = useState<IDarf>();\n const [quotations, setQuotations] = useState<IQuotes>({});\n const [notAuthorized, setNotAuthorized] = useState(false);\n const [movimentType, setMovimentType] = useState<string>(\"Venda de ativos\");\n const [showAssetModal, setShowAssetModal] = useState(false);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [yearResume, setYearResume] = useState<YearResume[]>([]);\n const [datePickerYear, setDatePickerYear] = useState(initialYear);\n const [gettingYearResume, setGettingYearResume] = useState(false);\n const [loadingDarfButton, setLoadingDarfButton] = useState<boolean>(false);\n const [showNotAuthorizedModal, setShowNotAuthorizedModal] = useState(false);\n const [reportData, setReportData] = useState<any>(null)\n\n const transactionFeature = item.features[0];\n const taxFeature = item.features[1];\n const yearResumeFeature = item.features[2];\n\n const memoriaCalculoFiltered = data.memoriaCalculo.filter(\n (el: any) =>\n (el.operation === \"SELL\" &&\n (el.type === \"TRADE\" || (el.type === \"WITHDRAW\" || el.type === \"WITHDRAWAL\"))) ||\n el.type === \"INTEREST\" ||\n (el.type === \"DIVIDEND\" && !oldModel)\n );\n\n const { emitted } = useMemo(() => {\n if (gettingYearResume) {\n }\n const monthResume = yearResume\n .find((resume) => resume.year === year)\n ?.months.find((m) => m.month - 1 === month);\n return {\n emitted:\n monthResume?.status === YearResumeStatusFromBackEnum.PAYED ||\n monthResume?.status === YearResumeStatusFromBackEnum.NOT_PAYED,\n payed: !!monthResume?.payed,\n status: monthResume?.status,\n };\n }, [yearResume, year, month, gettingYearResume]);\n\n const getDarf = useCallback(\n (id: string) => {\n view && setLoading(true);\n view &&\n (currentPage?.api || apis)\n .get(`${taxFeature.apiUrl}/${id}`)\n .then((response) => {\n setYear(response.data?.year);\n setMonth(response.data?.month - 1);\n setData({\n ...response.data,\n emitted: true,\n });\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n },\n [view, taxFeature.apiUrl, currentPage]\n );\n\n const getYearResume = useCallback(\n (year: number, force?: boolean, url?: string) => {\n setGettingYearResume(true);\n !view &&\n year <= new Date().getFullYear() &&\n year >= currentBroker.initialYear &&\n (force ||\n (!yearResumeFeature.disabled &&\n !yearResume.find((resume) => resume.year === year))) &&\n (currentPage?.api || apis)\n .get(yearResumeFeature.apiUrl, { params: { year } })\n .then((response) => {\n const index = yearResume.findIndex(\n (resume) => resume.year === year\n );\n if (index >= 0) {\n setYearResume((yearResume) => {\n yearResume.splice(index, 1, response.data);\n return yearResume;\n });\n } else {\n setYearResume((yearResume) => [...yearResume, response.data]);\n }\n\n if (url) {\n download(url);\n }\n })\n .catch((err) => console.log(err))\n .finally(() => setGettingYearResume(false));\n },\n [\n yearResumeFeature,\n yearResume,\n view,\n currentBroker.initialYear,\n currentPage,\n ]\n );\n\n const getTaxes = useCallback(() => {\n (!hasPlan || !view) && setLoading(true);\n (!hasPlan || !view) &&\n (currentPage?.api || apis)\n .get(transactionFeature.apiUrl, { params: { month: month + 1, year, atualizouImpostoAcumulado: true } })\n .then((response) => {\n setData(response.data);\n setNotAuthorized(false);\n })\n .catch((err) => {\n setData(defaultDarf);\n if (err?.response?.data === NOT_AUTHORIZED) {\n setNotAuthorized(true);\n setShowNotAuthorizedModal(true);\n } else {\n setNotAuthorized(false);\n message.error(errorMessage);\n }\n })\n .finally(() => setLoading(false));\n }, [hasPlan, view, currentPage?.api, transactionFeature.apiUrl, month, year]);\n\n const getQuotations = useCallback(() => {\n !view &&\n (currentPage?.api || apis)\n .get(\"/xp/get-cotacoes\")\n .then((response) => {\n const { value: cotacoes } = response.data;\n const pojo = {};\n for (let cotacao of cotacoes) {\n const {\n dataHoraCotacao,\n cotacaoCompra: compra,\n cotacaoVenda: venda,\n } = cotacao;\n const [year, month, day] = String(dataHoraCotacao)\n .split(\"T\")[0]\n .split(\"-\");\n Object.assign(pojo, {\n [`${day}/${month}/${year}`]: {\n compra,\n venda,\n },\n });\n }\n setQuotations(pojo);\n })\n .catch((err) => {\n setData(defaultDarf);\n if (err?.response?.data === NOT_AUTHORIZED) {\n setNotAuthorized(true);\n setShowNotAuthorizedModal(true);\n } else {\n setNotAuthorized(false);\n message.error(errorMessage);\n }\n });\n // eslint-disable-next-line\n }, [view]);\n\n const handleDarf = (justSave?: boolean) => {\n setEmitting(true);\n onCloseDarfModal();\n (currentPage?.api || apis)\n .post(taxFeature.apiUrl, {\n ...data,\n totalImpostoDevido: oldModel ? (data?.totalImpostoDevido ?? 0) : (data?.impostoDevido ?? 0),\n year,\n month: month + 1,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: data.memoriaCalculo,\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n insertPix: true,\n justSave,\n payed: false,\n noSendMail: true,\n })\n .then((res) => {\n setData((data) => ({ ...data, emitted: true }));\n getYearResume(year, true, justSave ? \"\" : res.data.darfUrl);\n setEmitting(false);\n // if (!justSave) {\n // oldModel\n // ? message.success(\"O DARF foi enviado para o seu e-mail\")\n // : message.success(\"O Relatório foi enviado para o seu e-mail\"); \n // }\n if (res.data.filePath) {\n setReportData({\n year: year,\n month: month,\n filePath: res.data.filePath,\n ...data\n })\n } else {\n closeModal?.();\n }\n })\n .catch((err) => {\n message.error(err?.response?.data?.message || errorMessage);\n setEmitting(false);\n });\n };\n\n const handleRegularize = (regular: boolean) => {\n setEmitting(true);\n (currentPage?.api || apis)\n .post(\"transaction/regularize\", {\n year,\n month: month + 1,\n regular,\n impostoDevido: data.impostoDevido,\n totalImpostoDevido: data.totalImpostoDevido,\n })\n .then((res) => {\n getYearResume(year, true, res.data.darfUrl);\n getTaxes();\n closeModal?.();\n message.success(\"Dados salvos\");\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setEmitting(false));\n };\n\n const onChangeMonth = (value: moment.Moment | null, dateString: string) => {\n const [month, year] = dateString.split(\"-\");\n setMonth(parseInt(month) - 1);\n setYear(parseInt(year));\n };\n\n const unsetAsset = () => {\n setAsset(undefined);\n };\n\n const handleCloseDeleteModal = () => {\n setShowDeleteModal(false);\n unsetAsset();\n };\n\n const handleCloseAssetModal = () => {\n setMovimentType(\"Venda de ativos\");\n setShowAssetModal(false);\n unsetAsset();\n };\n\n const onCloseHelpModal = () => {\n setHelpModal(undefined);\n };\n\n const onCloseDarfModal = () => {\n setDarfModal(undefined);\n };\n\n const handleOpenDarfModal = () => {\n setDarfModal(DarfModal(emitted, onCloseDarfModal, () => handleDarf()));\n };\n\n const handleOpenPaymentModal = () => {\n setPaymentModal(!paymentModal);\n };\n\n const handleAdd = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n event.stopPropagation();\n setShowAssetModal(true);\n };\n\n const handleEdit = (item: any, index: number) => {\n setShowAssetModal(true);\n const data = moment.utc(item.data.toLocaleString()).format(\"DD/MM/YYYY\");\n let i = 0;\n let key = data;\n while (!quotations[key] && i <= 7) {\n key = moment(key, \"DD/MM/YYYY\").subtract(1, \"days\").format(\"DD/MM/YYYY\");\n i++;\n }\n\n setAsset({\n ...item,\n data,\n cotacaoVenda: quotations[key]?.venda,\n cotacaoCompra: quotations[key]?.compra,\n dataVenda: moment\n .utc(item?.dataVenda?.toLocaleString())\n ?.format(\"DD/MM/YYYY\"),\n dataCompra: moment\n .utc(item?.dataCompra?.toLocaleString())\n ?.format(\"DD/MM/YYYY\"),\n });\n };\n\n const handleRemove = (item: any, index: number) => {\n setShowDeleteModal(true);\n setAsset(item);\n };\n\n const addAsset = (asset: any) => {\n setLoading(true);\n\n const ganho = getGain(asset, oldModel)\n const sellPrice = getSellPrice(asset, oldModel)\n const buyPrice = getBuyPrice(asset, oldModel)\n const fee = getFee(asset, oldModel)\n\n const dataToCreate = {\n ...{[sellPrice.key]: sellPrice.value},\n ...{[fee.key]: fee.value},\n ...{[ganho.key]: ganho.value},\n ...{[buyPrice.key]: buyPrice.value},\n data: asset.data, // date liquidação venda\n dataCompra: asset.dataCompra, // pegar a cotação\n operation: \"SELL\", // fixo\n type: \"TRADE\", // fixo\n ativo: asset.ativo, // Tiker que o usuário colocar (Ativo)\n year,\n month,\n quantidade: asset.quantidade,\n // \"saldoBRA\": 10000,\n // \"saldoEUA\": 870.7999999999993,\n // \"capitalGainBRA_BRL\": 0, (colocar no ganho)\n // \"capitalGainEUA_BRL\": 0,\n // ganho: asset.ganho, // (capitalGainBRA_BRL)\n cambioVenda: asset.cambioVenda, // (C) o cambio venda na pagina 1 ta na venda\n cambioCompra: asset.cambioCompra, // (C) o cambio venda na pagina 1 ta na venda\n // \"cambioReferencia\": 0,\n valueOriginEUA: asset.valueOriginEUA, // Origem USA (US$) ??\n movimentType: asset.movimentType\n };\n\n const dataFeeToCreate = {\n ...{[ganho.key]: ganho.value},\n // ganho: asset.ganhoFee,\n ...{[sellPrice.key]: sellPrice.value},\n valor: asset.valor, // (Valor Bruto (US$))\n ...{[fee.key]: fee.value}, // TODO: VALIDATE THIS\n fee: asset.fee, // (Taxa de Corretagem (US$)) \n //\n ativo: asset.ativo, // Tiker que o usuário colocar (Ativo)\n data: asset.dataFee,\n dataCompra: asset.dataFee, // date liquidação venda\n operation: \"BUY\", // fixo\n type: asset.movimentType === 'Dividendos' ? \"DIVIDEND\" : \"INTEREST\", // fixo\n year,\n month,\n rendimentoAplicacao: asset.ganhoFee, // (capitalGainBRA_BRL)\n cambioVenda: asset.cambioVendaFee, // (C) o cambio venda na pagina 1 ta na venda\n movimentType: asset.movimentType\n };\n \n (currentPage?.api || apis)\n .post(\n `${transactionFeature.apiUrl}?manual=true`,\n asset.movimentType !== \"Venda de ativos\"\n ? dataFeeToCreate\n : dataToCreate,\n {\n headers: {\n \"x-email\": user.user.email,\n },\n }\n )\n .then(() => {\n getTaxes();\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseAssetModal();\n });\n };\n\n const editAsset = (data: any) => {\n const ganho = getGain(data);\n const sellPrice = getSellPrice(data, oldModel)\n const buyPrice = getBuyPrice(data, oldModel)\n const fee = getFee(data, oldModel)\n // ...{[sellPrice.key]: sellPrice.value},\n // ...{[fee.key]: fee.value},\n // ...{[ganho.key]: ganho.value},\n // ...{[buyPrice.key]: buyPrice.value},\n const dataToEdit = {\n ...{[ganho.key]: ganho.value}, // (capitalGainBRA_BRL)\n ...{[fee.key]: fee.value},\n fee: data.fee, // (Taxa de Corretagem (US$))\n ...{[sellPrice.key]: sellPrice.value},\n valor: data.valor, // (Valor Bruto (US$))\n ...{[buyPrice.key]: buyPrice.value},\n valueOriginBRA: data.valueOriginBRA, // Origem BRA (US$) ??\n valueOriginEUA: data.valueOriginEUA, // Origem USA (US$) ??\n //\n data: data.data, // date liquidação venda\n dataCompra: data.dataCompra, // pegar a cotação\n operation: \"SELL\", // fixo\n type: \"TRADE\", // fixo\n ativo: data.ativo, // Tiker que o usuário colocar (Ativo)\n quantidade: data.quantidade,\n // \"saldoBRA\": 10000,\n // \"saldoEUA\": 870.7999999999993,\n // \"capitalGainBRA_BRL\": 0, (colocar no ganho)\n // \"capitalGainEUA_BRL\": 0,\n cambioVenda: data.cambioVenda, // (C) o cambio venda na pagina 1 ta na venda\n cambioCompra: data.cambioCompra, // (C) o cambio venda na pagina 1 ta na venda\n // \"cambioReferencia\": 0,\n };\n setLoading(true);\n (currentPage?.api || apis)\n .put(`${transactionFeature.apiUrl}/${asset._id}`, dataToEdit)\n .then(() => {\n getTaxes();\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseAssetModal();\n });\n };\n\n const removeAsset = () => {\n setLoading(true);\n (currentPage?.api || apis)\n .delete(`${transactionFeature.apiUrl}/${asset._id}`)\n .then(() => {\n getTaxes();\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseDeleteModal();\n });\n };\n\n const handlePlanModal = () => {\n navigate('/planos')\n };\n\n const handleSaveMonth = async () => {\n setLoadingDarfButton(true);\n try {\n const retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n const hasExteriorCalcActive = retPlanInfo?.data?.permissions?.[\"exterior-xpinvestimentos\"];\n\n retPlanInfo.data.active || hasExteriorCalcActive || hasPermissionGeneral\n ? handleDarf(true)\n : handlePlanModal();\n } catch (err) {\n console.error(err);\n }\n setLoadingDarfButton(false);\n };\n\n const handleEventDarfButton = async () => {\n setLoadingDarfButton(true);\n let retPlanInfo = {\n data: {\n active: false,\n permissions: {\n \"exterior-xpinvestimentos\": false,\n },\n },\n };\n try {\n retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n } catch (err) {\n console.error(err);\n }\n setLoadingDarfButton(false);\n\n const hasntPlan = !retPlanInfo.data.active;\n const hasExteriorCalcActive = retPlanInfo.data.permissions[\"exterior-xpinvestimentos\"];\n\n //@ts-ignore\n hasntPlan && !hasExteriorCalcActive && !retPlanInfo.data.cupomDueDate\n ? handlePlanModal()\n : handleOpenPaymentModal();\n };\n\n const handleLabelButton: ReactNode = useMemo(() => {\n if(!oldModel) return \"Emitir relatório\"\n else if (data?.totalImpostoDevido <= maxDarfPrice) return \"Pagar DARF\";\n else {\n if (emitted) return \"Emitir novo DARF\";\n else return taxFeature?.buttonLabel;\n }\n }, [data?.totalImpostoDevido, emitted, oldModel, taxFeature?.buttonLabel]);\n\n const sendReportMail = useCallback(() => {\n const reportType = reportData.type || 'darf';\n if (!reportData) {\n closeModal?.()\n message.error(\"Darf não encontrado!\")\n return;\n }\n (currentPage?.api || apis).get(`/darf/report/mail/${reportType}`, {\n params: {\n year: reportData?.year,\n month: reportData?.month + 1,\n filePath: reportData?.filePath,\n ...reportData,\n }\n }).then(() => {\n message.success(\"Relatório enviado para seu email.\")\n })\n .catch(() => {\n message.error(\"Houve um erro ao enviar seu relatório!\")\n })\n closeModal?.()\n }, [closeModal, currentPage?.api, reportData])\n\n const downloadAction = (record: any) => {\n (currentPage?.api || apis)\n .get(`/darf/download/${record._id}`)\n .then((res) => {\n if (res.data.url) {\n download(res.data.url);\n }\n });\n };\n\n const calcReturn = (\n sellPrice: number,\n buyPrice: number,\n quantity: number,\n fee: number,\n ganho?: number\n ) => {\n let ret = 0\n if(ganho) {\n const qtt = quantity ? quantity : 1;\n ret =\n sellPrice && buyPrice\n ? (sellPrice * qtt - (fee || 0)) / (buyPrice * qtt) - 1\n : 0;\n }\n return (\n <strong\n style={{\n color: `${ret >= 0\n ? \"var(--velotax-green-amount)\"\n : \"var(--velotax-red-prejuizo)\"\n }`,\n }}\n >\n {ret ? numberToPercentageWallet(ret) : \"-\"}\n </strong>\n );\n };\n\n useEffect(() => {\n getTaxes();\n }, [getTaxes, month, year]);\n\n useEffect(() => {\n getQuotations();\n }, [getQuotations, month, year, item]);\n\n useEffect(() => {\n if (view && darf) {\n getDarf(darf.id);\n }\n }, [getDarf, view, darf]);\n\n useEffect(() => {\n getYearResume(year);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const dataToPayment = {\n ...data,\n year,\n month: month + 1,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: data.memoriaCalculo,\n };\n\n setPaymentData(dataToPayment);\n }, [data.totalImpostoDevido, data, month, user.user.name, year]);\n\n const impostoCharge = useMemo(() => {\n // Para verificar se é janeiro (month == 0) e antes de 2024\n const taxes = (oldModel || month == 0)\n ? ((data.impostoDevido ?? 0) + (data.impostoAcumulado ?? 0)) - (data.irrfExterior ?? 0) \n : (data.impostoDevido ?? 0) - (data.irrfExterior ?? 0);\n const isExceedTax = taxes < minDarfPrice;\n const additionalTax = oldModel ? data.multa + data.juros : 0;\n return !view\n ? taxes +\n (isExceedTax ? 0 : additionalTax) \n : Math.max(\n taxes +\n (isExceedTax ? 0 : additionalTax) ,\n 0\n );\n }, [data, view, oldModel]);\n\n const verifyFromApi = (item = {} as any) => {\n return (Object.values(item).includes(item.saldoBRA) \n || Object.values(item).includes(item.rendimentoAplicacao)) && oldModel\n }\n\n return (\n <Container className={clsx({ view, \"view-edit\": viewEdit })}>\n <Content className={clsx(\"first\", { view, \"view-edit\": viewEdit })}>\n <Space direction=\"vertical\" className=\"full-width\">\n <Row gutter={[16, 16]} align=\"middle\" justify=\"space-between\">\n <Col xs={24} sm={16}>\n <Typography.Title level={3} className=\"date-title\">\n <BsCalendar3 />\n {!view && !viewEdit && (\n <>\n {currentBroker.initialYear === year && month === 0 ? (\n <div className=\"month-chevron empty\" />\n ) : (\n <BiChevronLeft\n className=\"month-chevron\"\n onClick={() => {\n if (month === 0) {\n setYear((year) => {\n const newYear = year - 1;\n getYearResume(newYear);\n setDatePickerYear(newYear);\n return newYear;\n });\n setMonth(11);\n } else {\n setMonth((month) => month - 1);\n }\n }}\n />\n )}\n </>\n )}\n {monthsExtended[month]} de {year}\n {!view && !viewEdit && (\n <>\n {currentYear === year && currentMonth - 1 === month ? (\n <div className=\"month-chevron empty\" />\n ) : (\n <BiChevronRight\n className=\"month-chevron\"\n onClick={() => {\n if (month === 11) {\n setYear((year) => {\n const newYear = year + 1;\n getYearResume(newYear);\n setDatePickerYear(newYear);\n return newYear;\n });\n setMonth(0);\n } else {\n setMonth((month) => month + 1);\n }\n }}\n />\n )}\n </>\n )}\n </Typography.Title>\n </Col>\n {!view && !viewEdit && (\n <Col xs={24} sm={8}>\n <DatePicker\n size=\"large\"\n picker=\"month\"\n format=\"MM-YYYY\"\n disabled={loading}\n allowClear={false}\n inputReadOnly={true}\n onChange={onChangeMonth}\n suffixIcon={<BsCalendar3 />}\n defaultValue={defaultValue}\n locale={antDatePickerLocale}\n value={moment({ year: datePickerYear, month })}\n onSelect={(e) => {\n if (e.month() === month && year !== datePickerYear) {\n onChangeMonth(e, `${month + 1}-${datePickerYear}`);\n }\n }}\n onPanelChange={(e) => {\n getYearResume(e.year());\n setDatePickerYear(e.year());\n }}\n getPopupContainer={(trigger) => trigger.parentElement!}\n renderExtraFooter={() =>\n yearResumeFeature.disabled ? (\n <></>\n ) : (\n <DatePickerExtraFooter />\n )\n }\n disabledDate={(current) =>\n current &&\n (current > currentDate.endOf(\"month\") ||\n current < moment(`${currentBroker.initialYear}-01-01`) ||\n current < moment(`2020-01-01`))\n }\n monthCellRender={(e) => (\n <DatePickerMonthCell event={e} yearResume={yearResume} />\n )}\n />\n </Col>\n )}\n </Row>\n </Space>\n </Content>\n\n <Content className={clsx(\"second\", { view, \"view-edit\": viewEdit })}>\n <Space direction=\"vertical\" className=\"full-width\">\n {hasPlan && view && darf?.fullPath && (\n <Row justify=\"end\">\n <Col>\n <Button\n variant=\"text\"\n color=\"secondary\"\n style={{ marginTop: \"-32px\" }}\n onClick={() => downloadAction(darf)}\n startIcon={\n <BsDownload\n size={16}\n style={{\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n >\n BAIXAR DARF\n </Button>\n </Col>\n </Row>\n )}\n\n {selectedYear && selectedYear <= 2023 && <>\n <div style={{ position: \"relative\" }}>\n {(!hasPlan || hideOnBasic) && (\n <div className=\"no-plan-container\">\n <Typography>\n Contrate o plano premium para ver os impostos devidos\n </Typography>\n <AntButton\n type=\"primary\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n closeModal?.();\n }}\n >\n PREMIUM\n </AntButton>\n </div>\n )}\n <Descriptions size=\"small\" bordered column={1}>\n {DarfImpostosDevidosDescriptions.map((description) => {\n if (description.id === 'prejuizoExterior' && oldModel) return null\n\n return (\n <Descriptions.Item\n key={description.id}\n label={description.label(\n setHelpModal,\n year\n // () => {setOpenPrejuizoModal(true)}\n )}\n >\n {loading ? (\n <Spin />\n ) : description.render ? (\n description.render(data, view, year)\n ) : (\n formatCurrency(\n Number(data[description.id as keyof IDarf] || 0)\n )\n )}\n </Descriptions.Item>\n )\n })}\n </Descriptions>\n </div>\n </>}\n\n <br />\n <Collapse\n ghost\n bordered={false}\n expandIconPosition=\"right\"\n defaultActiveKey={!hasPlan ? [\"1\"] : []}\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <Typography.Title level={3}>\n { selectedYear && selectedYear <= 2023?' Vendas realizadas no mês': 'Movimentações'}\n </Typography.Title>\n }\n >\n {!notAuthorized && !view && (\n <Button\n className=\"add\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading}\n onClick={handleAdd}\n startIcon={<PlusOutlined />}\n >\n Adicionar\n </Button>\n )}\n <List\n loading={loading}\n itemLayout=\"horizontal\"\n locale={{\n emptyText: historicoVendasEmptyText,\n }}\n dataSource={\n hideOnBasic ? [] :\n memoriaCalculoFiltered\n }\n renderItem={(item, index) => (\n <List.Item\n actions={\n notAuthorized || view\n ? []\n : [\n <AntButton\n type=\"text\"\n onClick={() => handleEdit(item, index)}\n icon={\n verifyFromApi(item) || (item.type !== 'TRADE' && !oldModel) ? (\n <BsEye size={18} />\n ) : (\n <FaRegEdit size={18} />\n )\n }\n />,\n <AntButton\n type=\"text\"\n onClick={() => handleRemove(item, index)}\n icon={<AiOutlineDelete size={18} />}\n />,\n ]\n }\n >\n {oldModel ? <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={\n <strong>{item.ativoTranslated ? item.ativoTranslated : item.ativo}</strong>\n }\n description={\n <div className=\"list-description\">\n <div>\n Data de liquidação:{\" \"}\n {moment\n .utc(item?.data?.toLocaleString())\n .format(\"DD/MM/YYYY\")}\n </div>\n <div>\n {item.type !== \"INTEREST\"\n ? \"Ganho\"\n : \"Rendimento total\"}\n :{\" \"}\n <strong>\n {formatCurrency(\n item.type === \"INTEREST\"\n ? item.rendimentoAplicacao\n : getGain(item, oldModel).value\n )}\n </strong>\n </div>\n {view && (\n <>\n <div>\n {item.type !== \"INTEREST\"\n ? \"Valor de venda\"\n : \"Valor bruto\"}\n :{\" \"}\n <strong>\n {formatCurrency(getSellPrice(item).value, \"US$ \")}\n </strong>\n </div>\n <div>\n Taxa de corretagem:{\" \"}\n <strong>\n {formatCurrency(getFee(item).value, \"US$ \")}\n </strong>\n </div>\n <div>\n Cotação dólar:{\" \"}\n <strong>{item.cambioVenda}</strong>\n </div>\n {item.type !== \"INTEREST\" && (\n <>\n <div>\n Valor de compra (Origem BRA):{\" \"}\n <strong>\n {formatCurrency(\n item.valueOriginBRA,\n \"US$ \"\n )}\n </strong>\n </div>\n <div>\n Valor de compra (Origem EUA):{\" \"}\n <strong>\n {formatCurrency(\n item.valueOriginEUA,\n \"US$ \"\n )}\n </strong>\n </div>\n </>\n )}\n </>\n )}\n </div>\n }\n />\n </Skeleton> : <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={\n <strong>{item.ativoTranslated ? item.ativoTranslated : item.ativo}</strong>\n }\n description={\n <div className=\"list-description\">\n <div>\n Data:{\" \"}\n {moment\n .utc(item?.data?.toLocaleString())\n .format(\"DD/MM/YYYY\")}\n </div>\n {item.type === \"TRADE\" && <div>Quantidade: {item.quantidade}</div>}\n <div>\n {item.type === \"TRADE\"\n ? \"Ganho\"\n : \"Rendimento total\"}\n :{\" \"}\n <strong>\n {formatCurrency(\n item.type !== \"TRADE\"\n ? item.rendimentoAplicacao\n : getGain(item, oldModel).value\n )}\n </strong>\n </div>\n {item.type === 'TRADE' && <div>\n Retorno: {calcReturn(\n getSellPrice(item, oldModel).value,\n getBuyPrice(item, oldModel).value,\n item.quantidade,\n getFee(item, oldModel).value,\n getGain(item, oldModel).value\n )}\n </div>}\n </div>\n }\n />\n </Skeleton>}\n </List.Item>\n )}\n />\n </Collapse.Panel>\n </Collapse>\n\n {hasPlan && <br />}\n\n {hasPlan && selectedYear && selectedYear <= 2023 && (\n <div\n className=\"total-tax-header original\"\n style={{ width: \"100%\" }}\n >\n <Typography.Title level={3}>Imposto total</Typography.Title>\n <Typography.Title level={3} className=\"text-center\">\n {loading ? (\n <Spin style={{ marginRight: \"32px\" }} />\n ) : (\n formatCurrency(Math.max(impostoCharge, 0))\n )}\n </Typography.Title>\n </div>\n )}\n\n {hasPlan && selectedYear && selectedYear <= 2023 && (\n <Descriptions size=\"small\" bordered column={1}>\n {DarfResultDescriptionsExterior.map((description, i) => {\n if(['multa', 'juros'].includes(description.id) && !oldModel) return <></>\n if(['impostoAcumulado'].includes(description.id) && !oldModel && month !== 0) return <></>\n return (\n <Descriptions.Item\n key={description.id}\n label={description.label(setHelpModal)}\n style={{\n display: \n i === 3 ? \"none\"\n : i === 4 && oldModel ? \"none\"\n : \"table-cell\",\n }}\n >\n {loading ? (\n <Spin />\n ) : description.Component ? (\n <description.Component\n data={data}\n year={year}\n month={month}\n loading={loading}\n setDataCripto={setData}\n url={transactionFeature.apiUrl}\n disabled={!notAuthorized && !view}\n view={view}\n />\n ) : (\n formatCurrency(\n Number(data[description.id as keyof IDarf] || 0)\n )\n )}\n </Descriptions.Item>\n )\n })}\n </Descriptions>\n )}\n\n {!notAuthorized && !view && (\n <>\n <Row\n justify=\"end\"\n gutter={[16, 16]}\n className=\"column-reverse\"\n style={{ marginTop: \"16px\" }}\n >\n {!(month === currentMonth && year === currentYear) &&\n oldModel &&\n (data.impostoDevido + data.impostoAcumulado - (data?.irrfExterior ?? 0) ?? 0) <\n minDarfPrice &&\n memoriaCalculoFiltered?.length > 0 && (\n <Col xs={24}>\n <br />\n <Tooltip\n title={\n <>\n O valor do imposto devido é menor que{\" \"}\n {formatCurrency(minDarfPrice)}. Você não precisa\n emitir um DARF para este mês.\n </>\n }\n >\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading || emitting}\n onClick={() => handleRegularize(true)}\n startIcon={emitting && <LoadingOutlined />}\n >\n Salvar sem emitir DARF\n </Button>\n </Tooltip>\n </Col>\n )}\n {(((data.impostoDevido + data.impostoAcumulado - (data?.irrfExterior ?? 0)) >= minDarfPrice) || (!oldModel && memoriaCalculoFiltered.length > 0 )) && (\n <>{selectedYear && selectedYear <= 2023 && <Col xs={24}>\n <br />\n <Tooltip\n getPopupContainer={(target) => target.parentElement!}\n title={\n month === currentMonth && year === currentYear && oldModel\n ? \"Aguarde o encerramento do mês para pagar seu DARF\"\n : \"\"\n }\n >\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n oldModel\n ? handleEventDarfButton()\n : handleDarf()\n }}\n startIcon={\n (emitting || loadingDarfButton) && <LoadingOutlined />\n }\n disabled={\n loading ||\n emitting ||\n loadingDarfButton ||\n (month === currentMonth && year === currentYear && oldModel)\n }\n >\n {handleLabelButton}\n </Button>{\" \"}\n </Tooltip>\n </Col>}</>\n )}\n </Row>\n {/* {!oldModel && (<Button onClick={() => handleDarf(false)} style={{color: \"red\"}}>TESTE</Button>)} */}\n {(!(month === currentMonth && year === currentYear) && oldModel) && (\n <Row\n justify=\"end\"\n align=\"middle\"\n gutter={[16, 16]}\n style={{ marginTop: \"16px\" }}\n >\n <Col>\n <Button\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n onClick={handleSaveMonth}\n disabled={loading || emitting}\n startIcon={emitting && <LoadingOutlined />}\n >\n Salvar apenas\n </Button>\n </Col>\n </Row>\n )}\n </>\n )}\n\n {!view && (\n <>\n <IntegrationModal\n visible={showNotAuthorizedModal}\n onCancel={() => setShowNotAuthorizedModal(false)}\n />\n <div className=\"juridic-messages-container\">\n <div className=\"message\">\n <p>\n (1) Os cálculos de imposto de renda foram realizados levando\n em consideração somente as operações de compra e venda\n realizadas na XP International. Caso você tenha realizado\n operações com ativos no exterior em outras corretoras,\n realize as alterações manualmente.\n </p>\n </div>\n {selectedYear && selectedYear <= 2023 && <>\n <div className=\"message\">\n <p>\n (2) Caso você tenha realizado a transferência de custódia de\n outras corretoras de ativos no exterior para a XP\n International, realize manualmente a inserção do custo médio\n de compra dos respectivos ativos transferidos.\n </p>\n </div>\n </>}\n \n {/* <div className=\"message\">\n <p>\n (3) O Usuário é exclusivamente responsável pela conferência e\n validação das informações utilizadas na apuração do imposto\n devido, conforme{\" \"}\n <a\n rel=\"noreferrer\"\n href=\"https://velotax-termos-e-condicoes.s3.us-east-1.amazonaws.com/Termos%20de%20Uso%20-%20Velotax%20v1.pdf\"\n target=\"_blank\"\n >\n Termos e Condições Gerais de Uso.\n </a>\n </p>\n </div> */}\n </div>\n </>\n )}\n {!view && !viewEdit && (\n <BackButton\n to=\"/xpinvestimentos/exterior\"\n className=\"darf-exterior\"\n />\n )}\n </Space>\n </Content>\n <Modal\n footer={null}\n visible={helpModal}\n title={helpModal?.title}\n onCancel={onCloseHelpModal}\n >\n {helpModal?.content}\n </Modal>\n <Modal\n visible={darfModal}\n title={darfModal?.title}\n footer={darfModal?.footer}\n onCancel={onCloseDarfModal}\n zIndex={1001}\n >\n {darfModal?.content}\n </Modal>\n <FormModal\n add={addAsset}\n edit={editAsset}\n itemToEdit={asset}\n visibility={showAssetModal}\n onCancel={handleCloseAssetModal}\n hideFooter={\n asset &&\n (Object.values(asset).includes(asset?.saldoBRA) ||\n Object.values(asset).includes(asset?.rendimentoAplicacao))\n && oldModel\n }\n rows={\n asset && (\n (Object.values(asset).includes(asset.saldoBRA) &&\n asset.saldoBRA !== 0 && oldModel) ||\n (!oldModel && asset.type !== 'TRADE')\n )\n ? []\n : oldModel ? ExteriorFormItemRows(\n month,\n year,\n quotations,\n editAsset,\n asset,\n movimentType,\n setMovimentType\n ) : ExteriorNewFormItemRows(\n month,\n year,\n quotations,\n editAsset,\n asset,\n movimentType,\n setMovimentType,\n false,\n )\n }\n title={\n asset\n ? asset.type !== \"TRADE\"\n ? \"Movimentação\"\n : (Object.values(asset).includes(asset.saldoBRA) && oldModel)\n ? asset.ativoTranslated || asset.ativo\n : oldModel ? \"Editar movimentação\"\n : asset.ativoTranslated || asset.ativo\n : \"Adicionar movimentação\"\n }\n children={\n !asset ? null : asset.type !== \"TRADE\" ? (\n <InterestModal asset={asset} />\n ) : (\n Object.values(asset).includes(asset.saldoBRA) && oldModel && (\n <ExteriorModalContent asset={asset} />\n )\n )\n }\n />\n {/* <Modal title=\"Editar prejuÃzos a compensar\" visible={openPrejuizoModal} \n onOk={() => {setOpenPrejuizoModal(false)}} \n onCancel={() => {setOpenPrejuizoModal(false)}}>\n <Typography.Title level={5}>PrejuÃzo a compensar</Typography.Title>\n <Input title=\"PrejuÃzo\"/>\n </Modal> */}\n <FormModal\n title=\"Editar prejuÃzos a compensar\"\n visibility={openPrejuizoModal}\n add={() => {}}\n edit={() => {}}\n onCancel={() => {setOpenPrejuizoModal(false)}}\n itemToEdit={{}}\n rows={PrejuFormItemRows(false)}\n />\n <PaymentModal\n item={item}\n fromDarf\n show={paymentModal}\n selectedYear={year}\n emitting={emitting}\n maxPixValue={maxPixPayment}\n closeDarfModal={closeModal}\n onCancel={handleOpenPaymentModal}\n maxCCValue={maxCreditCardPayment}\n disablePixOption={data?.totalImpostoDevido > maxPixPayment}\n callDarf={() => {\n HandleTag(\"67\");\n handleOpenDarfModal();\n }}\n disableCreditCardOption={\n data?.totalImpostoDevido > maxCreditCardPayment\n }\n paymentData={{\n ...paymentData,\n impostoTotalFinal: data.totalImpostoDevido + data.impostoAcumulado,\n }}\n />\n <DeleteConfirmationModal\n title=\"Remover ativo\"\n visibility={showDeleteModal}\n onCancel={handleCloseDeleteModal}\n setVisibility={setShowDeleteModal}\n onOk={() => Promise.resolve(removeAsset())}\n body=\"Você realmente quer deletar esse ativo?\"\n />\n <ModalConfirmMail\n visible={Boolean(reportData)}\n closeFn={() => setReportData(null)}\n action={(sendMail) => {\n if (sendMail) {\n sendReportMail()\n }\n }}\n />\n </Container>\n );\n};","import clsx from \"clsx\";\nimport { cpfInputMask, formatCurrency } from \"../../utils\";\nimport { VscClose } from \"react-icons/vsc\";\nimport { useState } from \"react\";\nimport backendRendimentos from \"../../services/rendimentos\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport NumberFormat from \"react-number-format\";\nimport { validationCpf } from \"../../utils/formValidations\";\nimport { currencyToNumber } from \"../../utils\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport Button from \"../../components/Button\";\nimport { List, Form, message } from \"antd\";\nimport {\n CurrencyFormItem,\n MaskFormItem,\n SelectFormItem,\n TextFormItem,\n} from \"../formItems\";\nconst minDarfPrice = 10;\nconst RendimentoFormItems = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n tipo: SelectFormItem({\n name: \"tipo\",\n label: \"Tipo\",\n placeholder: \"Selecione\",\n options: [\n { label: \"Trabalho Autônomo\", value: \"Trabalho Autônomo\" },\n { label: \"Aluguéis\", value: \"Aluguéis\" },\n { label: \"Pensão AlimentÃcia\", value: \"Pensão AlimentÃcia\" },\n { label: \"Exterior\", value: \"Exterior\" },\n { label: \"Outros\", value: \"Outros\" },\n ],\n }),\n valorRendimento: CurrencyFormItem({\n name: \"valorRendimento\",\n label: \"Rendimento\",\n }),\n cpfPagador: MaskFormItem({\n mask: cpfInputMask,\n rules: validationCpf,\n name: \"cpfPagador\",\n label: \"CPF do pagador\",\n hide: ({ data }: any) => data?.tipo !== \"Trabalho Autônomo\",\n onChange: (changed: any, values: any) =>\n changed.cpfPagador\n ? changed.cpfPagador.replace(/[_.-]/g, \"\")\n : values.cpfPagador,\n }),\n cpfBeneficiario: MaskFormItem({\n mask: cpfInputMask,\n rules: validationCpf,\n name: \"cpfBeneficiario\",\n label: \"CPF do beneficiário\",\n hide: ({ data }: any) => data?.tipo !== \"Trabalho Autônomo\",\n onChange: (changed: any, values: any) =>\n changed.cpfBeneficiario\n ? changed.cpfBeneficiario.replace(/[_.-]/g, \"\")\n : values.cpfBeneficiario,\n }),\n};\n\ninterface IEdit {\n value: any;\n id: string;\n isEditting: boolean;\n}\n\nexport enum YearResumeStatusFromBackEnum {\n PAYED = \"PAYED\",\n PENDING = \"PENDING\",\n REGULAR = \"REGULAR\",\n NOT_PAYED = \"NOT_PAYED\",\n}\n\nexport interface IDarf {\n payed?: boolean;\n emitted?: boolean;\n multa: number;\n juros: number;\n totalAlienado: number;\n totalGanho: number;\n aliquotaDevida: number;\n impostoDevido: number;\n impostoAcumulado: number;\n totalImpostoDevido: number;\n memoriaCalculo: any[];\n regular?: boolean;\n status?: keyof typeof YearResumeStatusFromBackEnum;\n}\nexport interface IDarfBolsa {\n payed?: boolean;\n emitted?: boolean;\n aliquotaComum?: number;\n aliquotaDT?: number;\n aliquotaFII?: number;\n alienacoesComum?: number;\n alienacoesDT?: number;\n alienacoesFII?: number;\n ganhoComum?: number;\n ganhoDT?: number;\n ganhoFII?: number;\n impostoComumFinal?: number;\n impostoDTFinal?: number;\n impostoFIIFinal?: number;\n impostoTotal?: number;\n impostoTotalFinal?: number;\n irrfComum?: number;\n irrfDayTrade?: number;\n irrfFII?: number;\n irrfTotal?: number;\n jurosAux?: number;\n mercadoOpcoesComum?: number;\n mercadoOpcoesDT?: number;\n mercadoOutrosComum?: number;\n mercadoOutrosDT?: number;\n mercadoOutrosFII?: number;\n mercadoVistaComum?: number;\n mercadoVistaDT?: number;\n multaAux?: number;\n memoriaCalculo: any[];\n impostoAcumulado?: number;\n impostoDevido?: number;\n multa?: number;\n juros?: number;\n prejuizoComum?: number;\n prejuizoDayTrade?: number;\n prejuizoFII?: number;\n userPrejuizoComum?: number;\n userPrejuizoDayTrade?: number;\n userPrejuizoFII?: number;\n userIrrfComum?: number;\n userIrrfDayTrade?: number;\n userIrrfFII?: number;\n userIrrfTotal?: number;\n varTotaisComum?: number;\n varTotaisDT?: number;\n varTotaisFII?: number;\n}\n\nexport const MinPriceModalProps = {\n title: <>DARF abaixo de {formatCurrency(minDarfPrice)}</>,\n content: (\n <div>\n <p>\n O sistema da Receita Federal não permite a emissão de um único DARF com\n valor abaixo de {formatCurrency(minDarfPrice)}.\n </p>\n <p>\n Caso sei DARF tenha ficado com um valor abaixo de{\" \"}\n {formatCurrency(minDarfPrice)}, o valor será repassado automaticamente\n para o mês seguinte e ficará visÃvel no campo{\" \"}\n <strong>\n <i>DARFs passados abaixo de {formatCurrency(minDarfPrice)}</i>\n </strong>\n .\n </p>\n </div>\n ),\n};\n\nconst MultaModalProps = {\n title: \"Multa de Atraso\",\n content: (\n <div>\n <p>\n O pagamento dos impostos deve ser feito sempre até o último dia útil do\n mês subsequente aos ganhos realizados.\n </p>\n <p>\n Caso você tenha atrasado no pagamento do seu DARF, a sua multa de atraso\n será de 0,33% por dia de atraso (chegando, no máximo, a 20%) sobre o\n valor do principal, calculados a partir do primeiro dia útil depois do\n dia do vencimento do DARF.\n </p>\n </div>\n ),\n};\n\nconst JurosModalProps = {\n title: \"Juros de Atraso\",\n content: (\n <div>\n <p>\n O pagamento dos impostos deve ser feito sempre até o último dia útil do\n mês subsequente aos ganhos realizados.\n </p>\n <p>\n Caso você tenha atrasado no pagamento do seu DARF, os seus juros de\n atraso serão equivalentes a taxa Selic acumulada até o mês anterior ao\n do pagamento, mais 1% no mês do pagamento, sobre o valor principal,\n contados a partir do mês subsequente ao vencimento do DARF.\n </p>\n </div>\n ),\n};\n\nexport const RendimentoFormItemRows = [\n [RendimentoFormItems.id],\n [RendimentoFormItems.tipo],\n [RendimentoFormItems.valorRendimento],\n [RendimentoFormItems.cpfPagador],\n [RendimentoFormItems.cpfBeneficiario],\n];\n\nexport const ImpostoTotalRendimentos = [\n {\n id: \"impostoDevido\",\n label: () => \"(+) Valor do principal\",\n Component: ({ data }: any) => {\n const impostoPrincipal =\n (data?.impostoDevido ?? 0) + (data?.impostoAcumulado ?? 0);\n\n return formatCurrency(impostoPrincipal);\n },\n },\n {\n id: \"impostoDevido\",\n label: () => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) Imposto devido\n </div>\n ),\n Component: ({ data }: any) =>\n formatCurrency(Number(data?.impostoDevido || 0)),\n },\n {\n id: \"impostoAcumulado\",\n label: (onClick: any) => (\n <div\n className=\"desc-label\"\n style={{ fontSize: \"12px\", paddingLeft: \"24px\" }}\n >\n (+) DARFs passados abaixo de R$ 10\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MinPriceModalProps)}\n />\n </div>\n ),\n Component: ({\n data,\n year,\n month,\n loading,\n disabled,\n setDataBolsa,\n setDataCripto,\n id,\n monthStock,\n user,\n }: any) => {\n const [edit, setEdit] = useState<IEdit>();\n const [editForm] = Form.useForm();\n const handleEditValue = (id: string) => {\n const value = data?.[id as keyof (IDarf | IDarfBolsa)];\n setEdit({ id, isEditting: true, value });\n editForm.setFieldsValue({ [id]: value });\n };\n\n const handleEditValueCancel = () => {\n setEdit(undefined);\n editForm.resetFields();\n };\n const handleEditValueConfirm = () => {\n if (edit && edit.value >= 0 && edit.value < minDarfPrice) {\n if (id !== \"\") {\n backendRendimentos\n .put(\"/rendimentos\", {\n _id: id,\n year,\n month: month + 1,\n [edit.id]: edit.value,\n })\n .then(() =>\n (setDataCripto ?? setDataBolsa)?.((data: any) => ({\n ...data,\n [edit.id]: edit.value,\n }))\n )\n .catch(() =>\n message.error(\n \"Algo inesperado aconteceu! Tente novamente mais tarde.\"\n )\n )\n .finally(() => handleEditValueCancel());\n } else {\n backendRendimentos\n .post(\"/rendimentos\", {\n monthStock,\n year,\n month: month + 1,\n juros: data.juros,\n multa: data.multa,\n userCode: user.user.cpf,\n total: data.impostoTotal,\n impostoDevido: data.impostoDevido,\n totalRendimentos: data.totalRendimentos,\n baseTributaria: data.baseTributaria,\n aliquotaDevida: data.aliquotaDevida,\n totalDependentes: data.totalDependentes,\n totalDespesas: data.totalDespesas,\n totalPrevidencia: data.totalPrevidencia,\n totalPensao: data.totalPensao,\n totalDeducoes: data.totalDeducoes,\n [edit.id]: edit.value,\n })\n .then(() =>\n (setDataCripto ?? setDataBolsa)?.((data: any) => ({\n ...data,\n [edit.id]: edit.value,\n }))\n )\n .catch(() =>\n message.error(\n \"Algo inesperado aconteceu! Tente novamente mais tarde.\"\n )\n )\n .finally(() => handleEditValueCancel());\n }\n } else {\n handleEditValueCancel();\n }\n };\n return edit && edit.isEditting && edit.id === \"impostoAcumulado\" ? (\n <div className=\"desc-content\">\n <Button icon={<VscClose />} onClick={handleEditValueCancel} />\n <Form\n form={editForm}\n onValuesChange={(changed) => {\n const value = currencyToNumber(changed.impostoAcumulado);\n editForm.setFieldsValue({ impostoAcumulado: value });\n setEdit((edit) => ({ ...edit!, value }));\n }}\n >\n <Form.Item\n name=\"impostoAcumulado\"\n rules={[\n {\n message: `Deve ser menor que ${minDarfPrice}`,\n validator: (rule, value) =>\n typeof value === \"number\" &&\n value >= 0 &&\n value < minDarfPrice\n ? Promise.resolve()\n : Promise.reject(),\n },\n ]}\n >\n <NumberFormat\n prefix=\"R$ \"\n decimalScale={2}\n disabled={loading}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n className=\"ant-input\"\n allowNegative={false}\n />\n </Form.Item>\n </Form>\n <Button\n type=\"primary\"\n onClick={handleEditValueConfirm}\n disabled={edit.value < 0 || edit.value >= minDarfPrice}\n >\n Ok\n </Button>\n </div>\n ) : (\n <div\n className={clsx(\"desc-content\", {\n \"ml-40\": disabled,\n })}\n >\n {formatCurrency(Number(data?.impostoAcumulado || 0))}\n {disabled && (\n <Button\n type=\"text\"\n icon={<FaRegEdit />}\n onClick={() => handleEditValue(\"impostoAcumulado\")}\n />\n )}\n </div>\n );\n },\n },\n {\n id: \"multa\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Multa de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(MultaModalProps)}\n />\n </div>\n ),\n Component: ({ data }: any) =>\n formatCurrency(\n Number(data?.[\"impostoDevido\"] || 0) +\n Number(data?.[\"impostoAcumulado\"] || 0) <\n minDarfPrice\n ? 0\n : Number(data?.[\"multa\"] || 0)\n ),\n },\n {\n id: \"juros\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (+) Juros e/ou encargos de atraso{\" \"}\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(JurosModalProps)}\n />\n </div>\n ),\n Component: ({ data }: any) =>\n formatCurrency(\n Number(data?.[\"impostoDevido\"] || 0) +\n Number(data?.[\"impostoAcumulado\"] || 0) <\n minDarfPrice\n ? 0\n : Number(data?.[\"juros\"] || 0)\n ),\n },\n];\n\nexport const RendimentosImpostosDevidos = [\n {\n id: \"totalRendimentos\",\n label: () => \"Total rendimentos\",\n render: (data: any) => formatCurrency(data?.totalRendimentos ?? 0),\n },\n {\n id: \"aliquotaDevida\",\n label: (onClick: any) => (\n <div className=\"desc-label\">\n (x) AlÃquota devida\n <Button\n type=\"text\"\n icon={<InfoCircleOutlined />}\n onClick={() => onClick(AliquotaModalProps)}\n />\n </div>\n ),\n render: (data: any) => `${data?.aliquotaDevida}%`,\n },\n {\n id: \"impostoDevido\",\n label: () => \"Imposto devido\",\n render: (data: any) => formatCurrency(data?.impostoDevido ?? 0),\n },\n];\n\nconst AliquotaModalProps = {\n title: \"AlÃquota sobre Ganho Carnê-Leão\",\n content: (\n <div>\n <p>\n O imposto sobre rendimentos é calculado sobre o total recebido no mês,\n mediante a aplicação da seguinte tabela progressiva mensal:\n </p>\n <List>\n <List.Item>a) Até R$ 1.903,98 não há impostos a pagar;</List.Item>\n <List.Item>\n b) De R$ 1.903,99 até R$ 2.826,65, a alÃquota é de 7,5% sobre os\n rendimentos, com parcela a deduzir de R$ 142,80;\n </List.Item>\n <List.Item>\n c) De R$ 2.826,66 até R$ 3.751,05, a alÃquota é de 15% sobre os\n rendimentos, com parcela a deduzir de R$ 354,80;\n </List.Item>\n <List.Item>\n d) De R$ 3.751,06 até R$ 4.664,68, a alÃquota é de 22,5% sobre os\n rendimentos, com parcela a deduzir de R$ 636,13; e\n </List.Item>\n <List.Item>\n e) Acima de R$ 4.664,68, a alÃquota é de 27,5% sobre os rendimentos,\n com parcela a deduzir de R$ 869,36.\n </List.Item>\n </List>\n </div>\n ),\n};\n","// Retorno: {calcReturn(item.valor ?? item.sellPrice_BRL, item.valueOriginBRA ?? item.buyPrice_BRL, item.quantidade, item.fee ?? item.fee_BRL, item.ganho ?? item.varTotalBRL)}\n\nexport function useDarfExterior() {\n const gainKeys = ['ganho', 'varTotalBRL'];\n const sellPriceKeys = ['valor', 'sellPrice_BRL'];\n const buyPriceKeys = ['valueOriginBRA', 'buyPrice_BRL'];\n const feeKeys = ['fee', 'fee_BRL'];\n\n function getByKey(item: any, keys: string[], isOldModel?: boolean) {\n if (isOldModel !== undefined) {\n if (isOldModel) {\n return { key: keys[0], value: item[keys[0]] ?? null };\n }\n return { key: keys[1], value: item[keys[1]] ?? null };\n }\n const k = keys.find((key) => item[key] !== null && item[key] !== undefined);\n const value = k ? item[k] : null;\n const key = k ?? keys[0];\n return { key, value };\n }\n\n function getGain(item: any, isOldModel?: boolean) {\n return getByKey(item, gainKeys, isOldModel)\n }\n\n function getSellPrice(item: any, isOldModel?: boolean) {\n return getByKey(item, sellPriceKeys, isOldModel)\n }\n\n function getBuyPrice(item: any, isOldModel?: boolean) {\n return getByKey(item, buyPriceKeys, isOldModel)\n }\n\n function getFee(item: any, isOldModel?: boolean) {\n return getByKey(item, feeKeys, isOldModel)\n }\n\n return { getBuyPrice, getGain, getSellPrice, getFee }\n}","import styled from \"styled-components\";\n\nexport const CardContainer = styled.div`\n width: 100%;\n height: 64px;\n cursor: pointer;\n position: relative;\n background-color: transparent;\n border-bottom: 1px solid var(--velotax-disabled);\n\n &,\n a,\n .MuiButtonBase-root {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n & > svg {\n width: 20px;\n height: 20px;\n stroke: var(--velotax-font-color-light);\n }\n }\n\n a,\n .MuiButtonBase-root {\n width: 100%;\n height: 100%;\n padding: 12px 12px 12px 0;\n }\n\n figure {\n margin: 0 16px 0 0;\n\n svg {\n width: 24px;\n height: 24px;\n &:not(.no-fill) {\n fill: var(--ant-primary-color);\n }\n }\n }\n\n .content {\n flex-grow: 1;\n display: flex;\n align-items: center;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.125rem;\n color: var(--velotax-font-color-light);\n\n .ant-typography {\n color: inherit;\n position: relative;\n text-align: left;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.not-free {\n .content {\n .content-children {\n width: 100%;\n .ant-row {\n width: 100%;\n .ant-col {\n width: 100%;\n .ant-typography {\n width: calc(100% - 64px);\n }\n }\n }\n }\n }\n }\n }\n`;\n","import { ReactNode } from \"react\";\nimport { ButtonBase } from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { HiOutlineChevronRight } from \"react-icons/hi\";\nimport { isMobile } from \"../../utils\";\nimport { CardContainer } from \"./style\";\n\ninterface CardXPProps {\n id: string;\n icon: ReactNode;\n children: ReactNode;\n link?: string;\n className?: string;\n disabled?: boolean;\n onClick?: () => void;\n}\n\nconst Container: React.FC<Pick<CardXPProps, \"link\">> = ({ children, link }) => {\n return link && link.includes(\"http\") ? (\n <a\n href={link}\n {...(!isMobile()\n ? {\n target: \"_blank\",\n rel: \"noreferrer\",\n }\n : {})}\n >\n {children}\n </a>\n ) : (\n <>{children}</>\n );\n};\n\nexport const CardXP: React.FC<CardXPProps> = ({\n id,\n icon,\n link,\n onClick,\n children,\n disabled,\n className,\n}) => {\n const navigate = useNavigate();\n\n const handleClick = () => {\n if (disabled) return;\n if (onClick) {\n onClick();\n } else if (link && !link.includes(\"http\")) {\n navigate(link);\n }\n };\n\n return (\n <CardContainer id={id} className={className} onClick={handleClick}>\n <ButtonBase disabled={disabled} disableTouchRipple={disabled}>\n <Container link={link}>\n <div className=\"content\">\n <figure>{icon}</figure>\n <div className=\"content-children\">{children}</div>\n </div>\n <HiOutlineChevronRight />\n </Container>\n </ButtonBase>\n </CardContainer>\n );\n};\n","import { Tooltip } from \"antd\";\nimport { Button } from \"@mui/material\";\n\nexport const PayButton: React.FC<{\n fullWidth?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n title?: React.ReactNode;\n isReport?: boolean\n}> = ({ onClick, fullWidth, disabled, title, isReport }) => (\n <Tooltip title={title} getPopupContainer={(target) => target.parentElement!}>\n <Button\n onClick={onClick}\n color=\"secondary\"\n variant=\"contained\"\n disabled={disabled}\n fullWidth={fullWidth}\n style={fullWidth ? { marginTop: \"16px\", height: \"40px\" } : {}}\n >\n {isReport ? 'Emitir relatório' : 'Pagar'}\n </Button>{\" \"}\n </Tooltip>\n);\n","import { Typography } from \"antd\";\nimport { GiProfit } from \"react-icons/gi\";\nimport { AiOutlineApi } from \"react-icons/ai\";\nimport { BiTransferAlt } from \"react-icons/bi\";\nimport { RiFileList3Line } from \"react-icons/ri\";\nimport { HiOutlineCalculator } from \"react-icons/hi\";\nimport { isMobile } from \"../../utils\";\n\nexport const itensExterior = [\n {\n id: \"darf\",\n premium: true,\n showToBasic: false,\n link: \"/xpinvestimentos/exterior-historic\",\n content: <Typography>Calculadora de DARF</Typography>,\n description: <Typography>Cálculo de IR e emissão de DARF</Typography>,\n icon: (\n <HiOutlineCalculator\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n },\n // {\n // premium: true,\n // id: \"anual-report\",\n // link: \"/xpinvestimentos/exterior-report\",\n // content: <Typography>Informe de rendimentos (2022)</Typography>,\n // description: <Typography>Relatório para declaração do IRPF</Typography>,\n // icon: (\n // <RiFileList3Line className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n // ),\n // },\n {\n id: \"report\",\n premium: true,\n basic: true,\n showToBasic: true,\n link: \"/xpinvestimentos/exterior-report\",\n content: (\n <Typography>\n {/* Relatórios {!isMobile() && \"(padrão Receita Federal)\"} */}\n Informe de rendimentos\n </Typography>\n ),\n description: (\n <Typography>Relatórios auxiliares para declaração de IR</Typography>\n ),\n icon: (\n <RiFileList3Line className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n ),\n },\n // {\n // id: \"dividendos\",\n // premium: true,\n // link: \"/xpinvestimentos/exterior-dividendos\",\n // content: <Typography>Dividendos</Typography>,\n // icon: <GiProfit className=\"no-fill\" color=\"var(--ant-primary-color)\" />,\n // description: <Typography>Gestão dos dividendos recebidos</Typography>,\n // },\n {\n id: \"insert-manual\",\n premium: false,\n link: \"/xpinvestimentos/transferencia-custodia\",\n content: <Typography>Transferência de custódia</Typography>,\n icon: (\n <BiTransferAlt className=\"no-fill\" color=\"var(--ant-primary-color)\" />\n ),\n // description: <Typography>Gestão de transferências de custódia</Typography>,\n },\n // {\n // id: \"integration\",\n // link: \"/xpinvestimentos/exterior-integration\",\n // content: <Typography>Integração com XP</Typography>,\n // icon: <AiOutlineApi className=\"no-fill\" color=\"var(--ant-primary-color)\" />,\n // },\n];\n","export default __webpack_public_path__ + \"static/media/check.d361ff1f.svg\";","import styled from \"styled-components\";\nimport check from \"../../../assets/icons/check.svg\";\n\nexport const PayDarfButtonContainer = styled.div`\n display: flex;\n cursor: pointer;\n position: relative;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n line-height: 16px;\n color: var(--white);\n height: 24px;\n border-radius: 12px;\n transition: filter 0.3s;\n padding: 4px 24px 4px 12px;\n background-color: var(--em-aberto);\n\n :hover {\n filter: contrast(0.75) brightness(1.15);\n }\n\n :after {\n content: \"\";\n top: 6px;\n right: 6px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n position: absolute;\n background-color: var(--white);\n }\n\n &.checked {\n background-color: var(--green);\n &::after {\n top: 5px;\n width: 14px;\n height: 14px;\n background-size: 100%;\n background-position: center;\n background-repeat: no-repeat;\n background-color: var(--green);\n background-image: url(${check});\n }\n }\n`;\n","import clsx from \"clsx\";\nimport { Tooltip } from \"antd\";\nimport { PayDarfButtonContainer } from \"./styles\";\n\ninterface PayDarfButtonProps {\n checked?: boolean;\n onChange?: () => void;\n checkedChildren?: React.ReactNode;\n unCheckedChildren?: React.ReactNode;\n}\n\nexport const PayDarfButton: React.FC<PayDarfButtonProps> = ({\n checked,\n onChange,\n checkedChildren,\n unCheckedChildren,\n}) => {\n return (\n <Tooltip\n title={checked ? \"\" : \"Clique para sinalizar se o imposto foi pago\"}\n >\n <PayDarfButtonContainer className={clsx({ checked })} onClick={onChange}>\n {checked ? checkedChildren : unCheckedChildren}\n </PayDarfButtonContainer>\n </Tooltip>\n );\n};\n","import axios from 'axios';\n\nexport const instanceMsCalc = axios.create({\n baseURL: process.env.REACT_APP_MS_CALC_URL ?? 'http://localhost:5001',\n headers: { Authorization: process.env.REACT_APP_AUTH_TOKEN ?? '' },\n});","import { Collapse, Image, Typography } from \"antd\";\nimport { DrawerModal, DrawerModalProps } from \"../../components/DrawerModal\";\nimport xpIntegrationExample from \"../../assets/integracao_xp_exterior_fundo_branco.gif\";\n\nexport const ModalIntegrationExterior: React.FC<DrawerModalProps> = (props) => (\n <DrawerModal\n closable\n maskClosable={false}\n title=\"Relatórios indisponÃveis\"\n {...props}\n >\n <Typography.Paragraph>\n Os seus relatórios estão indisponÃveis para download. Isso pode ocorrer\n por alguns motivos:\n </Typography.Paragraph>\n <ol style={{ marginLeft: \"16px\" }}>\n <li>Você não realizou transações com a sua conta XP International; ou</li>\n <li>\n Você ainda não permitiu a conexão entre XP e Velotax dentro do\n aplicativo XP\n </li>\n </ol>\n <Typography.Paragraph strong>\n Caso você ainda não tenha permitido a conexão, siga o passo a passo\n abaixo.\n </Typography.Paragraph>\n\n <Collapse\n className=\"collapse\"\n style={{ border: \"1px solid var(--velotax-font-color)\" }}\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <Typography.Text strong style={{ fontSize: \"1rem\" }}>\n Como conectar Velotax e XP International?\n </Typography.Text>\n }\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n margin: \"2rem 0\",\n }}\n >\n <Image width={430} src={xpIntegrationExample} />\n </div>\n <Typography.Title level={5} style={{ fontSize: \"14px\" }}>\n Instruções\n </Typography.Title>\n <ul style={{ fontSize: \"13px\" }}>\n <li>\n <strong>Passo 1</strong>. Acesse a aba de{\" \"}\n <strong>Investimento Global</strong> dentro do aplicativo da XP\n </li>\n <li>\n <strong>Passo 2</strong>. Deslize a tela para baixo e clique em{\" \"}\n <strong>Imposto de Renda e DARF</strong>\n </li>\n <li>\n <strong>Passo 3</strong>. Clique em{\" \"}\n <strong>Calcular Imposto de Renda</strong> e aceite os termos\n </li>\n </ul>\n </Collapse.Panel>\n </Collapse>\n </DrawerModal>\n);\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n svg {\n width: 20px;\n height: 20px;\n min-width: 20px;\n }\n .ant-checkbox {\n margin-top: -2px;\n }\n\n .checkbox-wrapper {\n display: flex;\n align-items: center;\n margin-left: 12px;\n\n .label {\n margin-left: 6px;\n }\n }\n\n .loading-wrapper {\n display: flex;\n align-items: center;\n margin-left: -2px;\n svg {\n width: 20px;\n height: 20px;\n }\n }\n\n .ant-checkbox-wrapper {\n margin-left: 0;\n display: flex;\n align-items: center;\n\n & + label {\n margin-top: 12px;\n }\n\n .ant-checkbox-checked .ant-checkbox-inner {\n background-color: var(--ant-primary-color);\n border-color: var(--ant-primary-color);\n }\n\n .ant-checkbox-inner {\n background: transparent;\n border: 2px solid var(--ant-primary-color);\n width: 20px;\n height: 20px;\n border-radius: 2px;\n }\n }\n\n .ant-checkbox + span {\n margin-left: -10px;\n }\n`;\n","import { Checkbox, Row } from \"antd\";\nimport { IoMdGlobe } from \"react-icons/io\";\nimport { BiHomeAlt } from \"react-icons/bi\";\nimport { IconBaseProps } from \"react-icons\";\nimport { RiStockLine } from \"react-icons/ri\";\nimport React, { useEffect, useState } from \"react\";\nimport { BsCurrencyBitcoin } from \"react-icons/bs\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Container } from \"./styles\";\n\ninterface IProps {\n data: string[];\n saveModules: (\n modules: string[],\n moduleName: string,\n deleted: boolean\n ) => void;\n loading: any;\n}\n\ninterface ISelect {\n id: string;\n icon: IconBaseProps;\n label: string;\n}\n\nconst VelotaxCalculatorsSelect: ISelect[] = [\n {\n id: \"bolsa\",\n icon: <RiStockLine size={36} />,\n label: \"Investimentos na Bolsa de Valores\",\n },\n {\n id: \"cripto\",\n icon: <BsCurrencyBitcoin width=\"36px\" height=\"36px\" />,\n label: \"Investimentos em Criptoativos\",\n },\n {\n id: \"exterior\",\n icon: <IoMdGlobe size={36} />,\n label: \"Investimentos no exterior\",\n },\n {\n id: \"autonomos\",\n icon: <BiHomeAlt size={36} />,\n label: \"Autônomos e Aluguel\",\n },\n];\n\nexport const SelectBoxes: React.FC<IProps> = ({\n data = {},\n saveModules,\n loading,\n}) => {\n const [values, setValues] = useState<string[]>((data || []) as string[]);\n\n useEffect(() => {\n if (Array.isArray(data)) {\n setValues(data);\n }\n }, [data]);\n\n const handleSetValue = (\n array: string[],\n moduleName: string,\n deleted: boolean\n ) => {\n setValues(array);\n saveModules(array, moduleName, deleted);\n };\n\n const handleChange = (value: string): void => {\n if (values.includes(value)) {\n handleSetValue(\n values.filter((vl) => vl !== value),\n value,\n true\n );\n } else {\n handleSetValue([...values, value], value, false);\n }\n };\n\n return (\n <Container>\n {VelotaxCalculatorsSelect.map((op: any, index: number) => (\n <Row style={{ marginBottom: \"8px\" }} key={op.id + index}>\n {loading?.[op.id] === true ? (\n <div className=\"loading-wrapper\">\n <LoadingOutlined />\n <div\n className={`checkbox-wrapper ${\n loading?.[op.id] === true ? \"loading\" : \"\"\n }`}\n >\n {op.icon && op.icon}\n <div className=\"label\">{op.label}</div>\n </div>\n </div>\n ) : (\n <Checkbox\n disabled={Object.keys(loading).some(\n (key: string) => loading[key] === true\n )}\n checked={values.includes(op.id)}\n onChange={() => handleChange(op.id)}\n >\n <div className=\"checkbox-wrapper\">\n {op.icon && op.icon}\n <div className=\"label\">{op.label}</div>\n </div>\n </Checkbox>\n )}\n </Row>\n ))}\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n margin: 0 auto;\n max-width: 600px;\n border-radius: 16px;\n background-color: var(--velotax-background-color);\n h1 {\n font-size: 24px;\n margin: 0 0 24px;\n position: relative;\n color: var(--velotax-font-color);\n\n &::before {\n content: \"\";\n top: 0;\n width: 4px;\n left: -32px;\n height: 100%;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n border-radius: 0;\n min-height: calc(100vh - 64px);\n h2 {\n &::before {\n left: -24px;\n }\n }\n }\n`;\n\nexport const CalculatorsSelect = styled.div`\n h2 {\n font-size: 18px;\n font-weight: 500;\n margin: 0 0 24px;\n color: var(--velotax-font-color);\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n &.view-edit {\n padding: 0;\n }\n &.view {\n padding: 0;\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n & > span.ant-typography {\n display: block;\n width: 700px;\n margin: 0 auto 1rem;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n span {\n cursor: pointer;\n font-weight: 500;\n color: var(--ant-primary-color);\n }\n }\n\n .edition-button-corretagem {\n display: flex;\n align-items: center;\n margin-top: 12px;\n background: var(--velotax-background-color);\n\n button {\n display: flex;\n align-items: center;\n\n span {\n margin-left: 8px;\n }\n }\n }\n\n .juridic-messages-container {\n width: 100%;\n opacity: 0.8;\n padding: 24px 0 0;\n\n .message {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n margin-bottom: 1rem;\n }\n\n p {\n font-size: 0.75rem;\n font-weight: 400;\n text-align: justify;\n line-height: 1.4rem;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n\n i {\n font-weight: bold;\n color: var(--velotax-font-color-light);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 64px;\n\n .juridic-messages-container {\n margin: 0;\n width: 100%;\n p {\n margin-left: 0;\n }\n }\n\n h1 {\n max-width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n & > span.ant-typography {\n width: 100%;\n margin: 0 auto 1rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const ButtonContent = styled.div`\n width: 700px;\n margin: 0 auto 8px;\n div {\n display: flex;\n justify-content: flex-end;\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n div {\n width: 100%;\n padding: 16px 24px 0;\n button {\n span {\n font-size: 11px;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 576px) {\n div {\n button {\n width: 100%;\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n &.second.view,\n &.second.view-edit {\n padding: 0 32px 32px;\n }\n &.second {\n padding: 32px;\n border: none;\n background-color: transparent;\n }\n .ant-divider {\n margin: 8px 0 24px;\n }\n h3.date-title {\n font-size: 24px;\n font-weight: 700;\n }\n margin: 0 auto;\n max-width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n h3 {\n display: flex;\n align-items: center;\n column-gap: 16px;\n font-size: 20px;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n user-select: none;\n }\n .desc-label {\n display: flex;\n align-items: center;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n .month-chevron {\n width: 32px;\n height: 32px;\n cursor: pointer;\n &.disabled {\n opacity: 0.15;\n cursor: default;\n }\n }\n .desc-content {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n column-gap: 8px;\n svg {\n fill: var(--ant-primary-color);\n }\n span {\n align-self: center;\n }\n button {\n min-width: 32px;\n }\n }\n .market {\n opacity: 0.6;\n font-weight: bold;\n }\n .ml-40 {\n margin-left: 40px;\n }\n .btn-icon {\n padding: 0;\n width: 48px;\n display: flex;\n .MuiTouchRipple-root {\n width: 48px;\n }\n }\n .add {\n float: right;\n min-width: 128px;\n margin-bottom: 16px;\n }\n .ant-descriptions-view {\n border-radius: 4px !important;\n .ant-descriptions-item-label {\n width: 60%;\n padding: 10px 16px;\n color: var(--velotax-font-color-light) !important;\n }\n .ant-descriptions-item-content {\n padding: 10px 16px;\n text-align: center;\n background-color: #3d3d3d !important;\n span {\n color: var(--velotax-font-color-light) !important;\n }\n }\n }\n .ant-list.ant-list-split {\n clear: both;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .list-description {\n display: flex;\n flex-direction: column;\n }\n .min-darf-price {\n margin-top: 24px;\n display: flex;\n align-items: center;\n column-gap: 8px;\n }\n .text-center {\n display: block;\n text-align: center;\n }\n .ant-collapse-header {\n padding: 12px 0 !important;\n }\n .ant-collapse-content-box {\n padding: 16px 0 !important;\n }\n .ant-collapse\n > .ant-collapse-item\n > .ant-collapse-header\n .ant-collapse-arrow\n svg {\n transform: rotate(-90deg);\n }\n .ant-collapse-item-disabled {\n & > .ant-collapse-header {\n cursor: default;\n .ant-collapse-arrow {\n opacity: 0;\n }\n }\n }\n .ant-collapse-header-text {\n width: 100%;\n }\n .total-tax-header {\n width: calc(100% - 48px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n &.original {\n h3:last-of-type {\n width: 40%;\n }\n }\n h3 {\n margin: 0 0 8px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n padding: 24px;\n border-radius: 0;\n &.first {\n padding: 24px;\n }\n &.second {\n padding: 24px !important;\n border-top: 1px solid #313131;\n }\n h3 {\n font-size: 18px;\n }\n .anticon.anticon-right.ant-collapse-arrow {\n top: 24px;\n }\n .desc-content {\n column-gap: 2px;\n flex-direction: row;\n &.is-editting {\n row-gap: 8px;\n flex-direction: column;\n button {\n width: 100%;\n }\n }\n &:not(.is-editting) {\n span {\n line-height: 32px;\n }\n button {\n margin-top: -2px;\n }\n }\n &.ml-40 {\n margin-left: 0;\n }\n }\n .market {\n font-size: 11px;\n letter-spacing: -0.1px;\n }\n }\n`;\n\nexport const BolsaOperations = styled.div`\n border-radius: 4px;\n position: relative;\n color: var(--velotax-font-color-light);\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-background-color-ghost);\n\n .no-plan {\n span {\n user-select: none;\n }\n }\n\n .no-plan-container {\n position: absolute;\n top: 55px;\n left: 40%;\n width: 60%;\n z-index: 3;\n display: flex;\n padding: 8px;\n font-size: 16px;\n font-weight: 500;\n text-align: center;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n background-color: #fff4;\n border-radius: 0 0 8px 0;\n height: calc(100% - 55px);\n backdrop-filter: blur(4px);\n border-left: 1px solid var(--velotax-background-color-ghost);\n .ant-btn {\n margin-top: 8px;\n }\n }\n\n div.strong span {\n font-weight: 700 !important;\n }\n div.opacity {\n opacity: 0.8;\n }\n\n div.header,\n div.sub-header,\n div.row {\n display: grid;\n grid-template-columns: 2fr 1fr 1fr 1fr;\n span + span {\n text-align: center;\n justify-content: center;\n }\n }\n\n div.sub-header,\n div.row {\n height: auto;\n min-height: 48px;\n border-top: none;\n & + div.sub-header {\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n & > span + span {\n background-color: #3d3d3d;\n }\n & > span {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n border-left: none;\n & + span {\n border-left: 1px solid var(--velotax-background-color-ghost);\n }\n }\n &:last-of-type > span:last-of-type {\n border-radius: 0 0 4px 0;\n }\n }\n\n div.header {\n padding: 16px;\n border-radius: 4px 4px 0 0;\n background-color: var(--velotax-background-color-ghost);\n span {\n font-weight: 700;\n }\n button {\n display: none;\n }\n }\n\n div.sub-header {\n font-size: 14px;\n & > span {\n font-weight: 300;\n }\n }\n\n div.row {\n opacity: 0.85;\n font-size: 13px;\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n\n @media only screen and (max-device-width: 812px) {\n position: relative;\n overflow-x: hidden;\n span {\n font-size: 12px;\n button {\n max-width: 24px;\n min-width: 24px;\n }\n }\n .no-plan-container {\n left: 50%;\n width: 50%;\n font-size: 14px;\n line-height: 18px;\n }\n div.header,\n div.sub-header,\n div.row {\n width: 200%;\n height: auto;\n min-height: 48px;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n div.sub-header,\n div.row {\n & > span {\n padding: 12px;\n }\n }\n\n div.header {\n padding: 16px 0;\n }\n div.header > span + span {\n padding: 0 8px;\n justify-content: space-between;\n }\n\n div.header > span:first-of-type,\n div.sub-header > span:first-of-type {\n position: sticky;\n left: 0;\n }\n div.header > span.show,\n div.sub-header > span.show {\n opacity: 1;\n z-index: 2;\n }\n div.header > span,\n div.sub-header > span {\n opacity: 0;\n z-index: 1;\n }\n div.header > span {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n }\n div.header {\n button {\n display: flex;\n }\n }\n div.header > span.show svg polyline {\n stroke: var(--velotax-font-color);\n }\n }\n`;\n","import { v4 } from \"uuid\";\nimport { message } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n Dispatch,\n SetStateAction,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { errorMessage } from \"../utils\";\nimport apiBolsa from \"../services/apiBolsa\";\nimport { useAuth } from \"../contexts/AuthContext\";\nimport { useBroker } from \"../contexts/BrokerContext\";\nimport moment from \"moment\";\n\ninterface IOldTransactionsContext {\n changed: boolean;\n loadingPut: boolean;\n loadingGet: boolean;\n setLoadingPut: Dispatch<SetStateAction<boolean>>;\n setLoadingGet: Dispatch<SetStateAction<boolean>>;\n oldPositionEdit: any;\n doacaoHerancaEdit: any;\n oldPositionList: any[];\n doacoesHerancas: any[];\n showAddPositionModal: boolean;\n setOldPositionEdit: Dispatch<SetStateAction<any>>;\n setDoacaoHerancaEdit: Dispatch<SetStateAction<any>>;\n setShowAddPositionModal: Dispatch<SetStateAction<boolean>>;\n downloadOldTransactionsExcel: () => Promise<Blob | null>;\n downloadDoacoesHerancasExcel: () => Promise<Blob | null>;\n saveOldPositions: () => void;\n saveDoacoesHerancas: () => void;\n addOldPosition: (item: any) => void;\n addDoacaoHeranca: (item: any) => void;\n editOldPosition: (item: any) => void;\n editDoacaoHeranca: (item: any) => void;\n handleEditOldPosition: (item: any, index: number) => void;\n handleRemoveOldPosition: (item: any, index: number) => void;\n handleRemoveDoacaoHeranca: (item: any, index: number) => void;\n handleEditDoacaoHeranca: (item: any, index: number) => void;\n getOldTransactionsInit: () => void;\n getDoacoesHerancasInit: () => void;\n}\n\nconst OldTransactionsContext = createContext({} as IOldTransactionsContext);\n\nexport const OldTransactionsProvider: React.FC = ({ children }) => {\n const { user } = useAuth();\n const navigate = useNavigate();\n const { initIntegration, currentBroker } = useBroker();\n const [changed, setChanged] = useState(false);\n const [loadingGet, setLoadingGet] = useState(false);\n const [loadingPut, setLoadingPut] = useState(false);\n const [oldPositionEdit, setOldPositionEdit] = useState<any>({});\n const [doacaoHerancaEdit, setDoacaoHerancaEdit] = useState<any>({});\n const [oldPositionList, setOldPositionList] = useState<any>(null);\n const [doacoesHerancas, setDoacoesHerancas] = useState<any>(null);\n const [showAddPositionModal, setShowAddPositionModal] = useState(false);\n\n const handleEditOldPosition = (item: any, index: number) => {\n setShowAddPositionModal(true);\n setOldPositionEdit(item);\n };\n\n const handleEditDoacaoHeranca = (item: any, index: number) => {\n setShowAddPositionModal(true);\n setDoacaoHerancaEdit(item);\n };\n\n const handleRemoveOldPosition = (item: any, index: number) => {\n const pojo = oldPositionList\n .filter((e: any) =>\n \"lendingSide\" in item ? e.lendingSide : !e.lendingSide\n )\n .find((item: any, i: number) => i === index);\n const listOldPosition = oldPositionList.filter(\n (item: any) => JSON.stringify(pojo) !== JSON.stringify(item)\n );\n setOldPositionList(listOldPosition);\n setChanged(true);\n };\n\n const handleRemoveDoacaoHeranca = (item: any, index: number) => {\n const itemParam = item;\n const list = doacoesHerancas.map(\n (item: any) => {\n const newOrders = item?.orders.filter((or: any) => {\n delete or.dateView;\n if (JSON.stringify(itemParam) !== JSON.stringify(or)) return or;\n })\n return { ...item, orders: newOrders };\n }\n );\n setDoacoesHerancas(list);\n setChanged(true);\n }\n\n const editOldPosition = (editItem: any) => {\n const listOldPositions = oldPositionList.map((item: any) =>\n editItem.id === item.id\n ? {\n ...item,\n ...editItem,\n price: editItem?.avgBuyPrice,\n operation:\n editItem?.lendingSide && editItem?.lendingSide === \"Tomador\"\n ? \"V\"\n : \"C\",\n }\n : item\n );\n setOldPositionList(listOldPositions);\n setShowAddPositionModal(false);\n setOldPositionEdit({});\n setChanged(true);\n };\n\n const editDoacaoHeranca = (editItem: any) => {\n const list = doacoesHerancas.map((item: any) => {\n const newOrders = item?.orders.map((or: any) => {\n delete or.dateView;\n const newDate = new Date(\n `${moment(editItem?.dateView, 'DD/MM/YYYY', true).format(\n 'YYYY-MM-DD',\n )}T03:00:00.000Z`);\n return editItem?._id === or?._id\n ? {\n ...or,\n date: newDate,\n code: editItem?.code,\n price: editItem?.price,\n quantity: editItem?.quantity,\n totalValue: editItem?.price * editItem?.quantity,\n }\n : or\n })\n return { ...item, orders: newOrders };\n }\n );\n setDoacoesHerancas(list);\n setShowAddPositionModal(false);\n setDoacaoHerancaEdit({});\n setChanged(true);\n };\n\n const addOldPosition = (item: any) => {\n const listOldPosition: any[] = [...oldPositionList];\n const newPostion = {\n operation:\n item?.lendingSide && item?.lendingSide === \"Tomador\" ? \"V\" : \"C\",\n avgBuyPrice: item?.avgBuyPrice,\n price: item?.avgBuyPrice,\n code: item?.code,\n feeB3: item?.feeB3 || 0,\n institution: \"Desconhecida\",\n date: new Date(2019, 11, 31),\n market: \"Mercado a Vista\",\n quantity: item?.quantity,\n month: 11,\n year: 2019,\n id: v4(),\n };\n\n if (item.lendingSide)\n Object.assign(newPostion, { lendingSide: item?.lendingSide });\n listOldPosition.push(newPostion);\n\n setOldPositionList(listOldPosition);\n setShowAddPositionModal(false);\n setChanged(true);\n };\n\n const addDoacaoHeranca = (addItem: any) => {\n const list = [...doacoesHerancas];\n const month = Number((addItem?.dateView)?.split('/')[1]);\n const year = Number((addItem?.dateView)?.split('/')[2]);\n const now = new Date();\n const newDate = new Date(\n `${moment(addItem?.dateView, 'DD/MM/YYYY', true).format(\n 'YYYY-MM-DD',\n )}T03:00:00.000Z`);\n const retExisting = doacoesHerancas.filter((item: any) => {\n const newOrders = item?.orders;\n if (item?.month == month && item?.year == year) {\n newOrders.push(\n {\n code: addItem?.code,\n operation: \"C\",\n date: newDate,\n quantity: addItem?.quantity,\n price: addItem?.price,\n totalValue: addItem?.price * addItem?.quantity,\n totalFeeNota: 0,\n name: addItem?.code,\n market: \"Mercado a Vista\",\n expirationDate: null,\n institution: \"Desconhecida\",\n operationType: \"Credito\"\n }\n )\n return { ...item, orders: newOrders };\n }\n })\n if (!retExisting || retExisting.length == 0) {\n const newOperation = {\n cpf: user?.user?.cpf,\n month: month,\n year: year,\n provider: 'b3',\n createdAt: now,\n updatedAt: now,\n orders: [\n {\n code: addItem?.code,\n operation: \"C\",\n date: newDate,\n quantity: addItem?.quantity,\n price: addItem?.price,\n totalValue: addItem?.price * addItem?.quantity,\n totalFeeNota: 0,\n name: addItem?.code,\n market: \"Mercado a Vista\",\n expirationDate: null,\n institution: \"Desconhecida\",\n operationType: \"Credito\"\n }\n ]\n };\n \n list.push(newOperation);\n }\n\n setDoacoesHerancas(list);\n setShowAddPositionModal(false);\n setChanged(true);\n };\n\n const saveOldPositions = useCallback(async () => {\n const orders = oldPositionList.map((item: any) => ({\n ...item,\n id: undefined,\n }));\n try {\n setLoadingPut(true);\n await apiBolsa.post(\"/operation\", { orders });\n // message.success(\"Dados salvos com sucesso!\");\n navigate(`/${currentBroker?.path}/bolsa-historic`);\n } catch (err) {\n message.error(errorMessage);\n throw Error;\n } finally {\n setLoadingPut(false);\n }\n }, [oldPositionList, currentBroker, navigate]);\n\n const saveDoacoesHerancas = useCallback(async () => {\n const operations = doacoesHerancas.map((item: any) => {\n const newOrders = item?.orders.map((or: any) => {\n return { ...or }\n })\n return { ...item, orders: newOrders };\n }\n )\n try {\n setLoadingPut(true);\n await apiBolsa.post(\"/operation/donations\", { operations });\n message.success(\"Dados salvos com sucesso!\");\n } catch (err) {\n message.error(errorMessage);\n throw Error;\n } finally {\n navigate(`/${currentBroker?.path}/bolsa-historic`);\n setLoadingPut(false);\n }\n }, [doacoesHerancas, currentBroker, navigate]);\n\n const downloadOldTransactionsExcel = async () => {\n return await apiBolsa\n .get(\"/operation/download?month=12&year=2019\", {\n responseType: \"blob\",\n })\n .then((res) => {\n return res.data\n })\n .catch(() => {\n message.error(errorMessage);\n return null\n })\n }\n\n const downloadDoacoesHerancasExcel = async () => {\n return await apiBolsa\n .get(\"/operation/download/donations?operationType=Credito\", {\n responseType: \"blob\",\n })\n .then((res) => {\n return res.data\n })\n .catch(() => {\n message.error(errorMessage);\n return null\n })\n }\n\n const getOldTransactionsInit = useCallback(\n (setShowModalPrePreenchida?: (p: boolean) => void) => {\n setLoadingGet(true);\n apiBolsa\n .get(\"/operation?month=12&year=2019\", {})\n .then((response) => {\n setOldPositionList(\n response.data?.[0]?.orders.length\n ? response.data?.[0].orders.map((item: any) => ({\n ...item,\n avgBuyPrice: item.price,\n id: item._id,\n }))\n : []\n );\n setLoadingGet(false);\n })\n .catch(() => {\n setLoadingGet(false);\n setOldPositionList([]);\n message.error(errorMessage);\n })\n .finally(() => setShowModalPrePreenchida?.(false));\n },\n [setOldPositionList]\n );\n\n const getDoacoesHerancasInit = useCallback(\n (setShowModalPrePreenchida?: (p: boolean) => void) => {\n setLoadingGet(true);\n apiBolsa\n .get(\"/operation/donations?operationType=Credito\", {})\n .then((response) => {\n setDoacoesHerancas(response.data || []);\n setLoadingGet(false);\n })\n .catch(() => {\n setLoadingGet(false);\n setDoacoesHerancas([]);\n message.error(errorMessage);\n })\n .finally(() => setShowModalPrePreenchida?.(false));\n },\n [setDoacoesHerancas]\n );\n\n useEffect(() => {\n if (user?.user?.cpf) {\n getOldTransactionsInit();\n }\n }, [getOldTransactionsInit, initIntegration, user.user]);\n\n return (\n <OldTransactionsContext.Provider\n value={{\n changed,\n loadingPut,\n setLoadingPut,\n loadingGet,\n setLoadingGet,\n oldPositionList,\n doacoesHerancas,\n oldPositionEdit,\n doacaoHerancaEdit,\n setOldPositionEdit,\n setDoacaoHerancaEdit,\n showAddPositionModal,\n setShowAddPositionModal,\n downloadOldTransactionsExcel,\n downloadDoacoesHerancasExcel,\n addOldPosition,\n addDoacaoHeranca,\n editOldPosition,\n editDoacaoHeranca,\n saveOldPositions,\n saveDoacoesHerancas,\n handleEditOldPosition,\n handleRemoveOldPosition,\n handleRemoveDoacaoHeranca,\n handleEditDoacaoHeranca,\n getOldTransactionsInit,\n getDoacoesHerancasInit\n }}\n >\n {children}\n </OldTransactionsContext.Provider>\n );\n};\nexport const useOldTransactions = () => useContext(OldTransactionsContext);","import FileSaver from \"file-saver\";\nimport { message } from \"antd\";\n\nexport const handleDownloadSheet = async (buffer: any, title: string) => {\n try {\n const data = Uint8Array.from(buffer)\n const blob = new Blob([data], { type: 'attach.contentType' });\n FileSaver.saveAs(blob, `${title}.xlsx`);\n } catch (error: any) {\n message.error(error)\n }\n}\n","import { Table, Typography } from \"antd\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport Button from \"../Button\";\nimport { useNavigate } from \"react-router-dom\";\n\ninterface ModalZeroBuyPrice {\n title?: string;\n visible?: boolean;\n dataZeroBuyPrice: any[];\n setModalZeroBuyPrice: Function;\n setIgnoreZeroBuyPrice: Function;\n}\n\nexport const ModalZeroBuyPrice: React.FC<ModalZeroBuyPrice> = ({\n title,\n visible,\n dataZeroBuyPrice,\n setModalZeroBuyPrice,\n setIgnoreZeroBuyPrice\n}) => {\n const navigate = useNavigate();\n\n return (\n <DrawerModal\n footer={null}\n visible={visible}\n width={600}\n title={title}\n className=\"modalZeroBuyPrice\"\n onCancel={() => setModalZeroBuyPrice(false)}\n >\n <Typography.Text>\n Neste mês, verificamos que alguns de seus ativos estão com custo de compra igual a zero.\n </Typography.Text>\n <Table\n style={{ marginTop: '20px', marginBottom: '20px'}}\n pagination={false}\n dataSource={dataZeroBuyPrice}\n locale={{ emptyText: \"Nenhuma operação disponÃvel\" }}\n columns={[\n {\n align: \"center\",\n title: \"Ativo\",\n dataIndex: \"code\",\n render: (value) => (\n <strong style={{ fontWeight: \"700\" }}>{value}</strong>\n ),\n },\n {\n align: \"center\",\n title: \"Motivo\",\n dataIndex: \"reason\",\n render: (value) => (\n <>\n {value?.text ?\n <>\n {value?.text}\n <a onClick={() => { navigate(value?.link) }} target=\"_blank\" rel=\"noreferrer\">\n {\" \"} {value?.textLink} {\" \"}\n </a>\n </>\n :\n <>\n Entre em contato através de\n <a href=\"mailto:suporte@velotax.com.br\" target=\"_blank\" rel=\"noreferrer\">\n {\" \"} suporte@velotax.com.br {\" \"}\n </a>\n para avaliarmos a situação.\n </>\n }\n </>\n ),\n },\n ]}\n />\n <Button\n block\n size=\"large\"\n type=\"primary\"\n style={{\n width: '100%',\n display: 'flex',\n textAlign: 'justify',\n whiteSpace: 'normal',\n wordWrap: 'break-word',\n padding: '10px',\n fontSize: '13px',\n marginBottom: '20px'\n }}\n onClick={() => {\n setIgnoreZeroBuyPrice(true);\n setModalZeroBuyPrice(false);\n }}\n >\n ESTOU CIENTE. EMITIR DARF, MESMO COM O CUSTO DE COMPRA ZERADO.\n </Button>\n </DrawerModal>\n )\n}","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { BsCalendar3, BsDownload } from \"react-icons/bs\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { GrFormNext, GrFormPrevious } from \"react-icons/gr\";\nimport { BiChevronLeft, BiChevronRight } from \"react-icons/bi\";\nimport {\n AiOutlineDelete,\n AiOutlineDownload,\n AiOutlineLock,\n} from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n PlusOutlined,\n QuestionCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n ReactNode,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Col,\n Collapse,\n DatePicker,\n Descriptions,\n List,\n message,\n Modal,\n Row,\n Skeleton,\n Space,\n Spin,\n Tooltip,\n Typography,\n} from \"antd\";\nimport apis from \"../../services/apis\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport { Page } from \"../../constants/brokers\";\nimport AntButton from \"../../components/Button\";\nimport HandleTag from \"../../services/handleTag\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { FormModal } from \"../../components/FormModal\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\nimport { Container, Content, BolsaOperations } from \"./styles\";\nimport { historicoVendasEmptyText, yearConfigPL4173 } from \"../../constants/darf\";\nimport { IntegrationModal } from \"../Darf/Components/IntegrationModal\";\nimport { useOldTransactions } from \"../../contexts/OldTransactionsContext\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport { DatePickerExtraFooter } from \"../Darf/Components/DatePickerExtraFooter\";\nimport {\n DatePickerMonthCell,\n YearResume,\n} from \"../Darf/Components/DatePickerMonthCell\";\nimport {\n DarfModal,\n DarfResultDescriptions,\n minDarfPrice,\n maxDarfPrice,\n IDarfBolsa,\n defaultDarfBolsa,\n DarfBolsaFormItemRows,\n PrejuFormItemRows,\n YearResumeStatusFromBackEnum,\n DarfBolsaTabs,\n IrrfFormItemRows,\n CorretagemFormItemRows,\n} from \"../../constants/darfBolsa\";\nimport {\n antDatePickerLocale,\n download,\n errorMessage,\n formatCurrency,\n getZeroBuyPrice,\n isMobile,\n monthsExtended,\n numberToPercentageWallet,\n} from \"../../utils\";\nimport { handleDownloadSheet } from \"../../utils/handleDownloadSheet\";\nimport { ModalZeroBuyPrice } from \"../../components/ModalZeroBuyPrice\";\n\ninterface DarfBolsaProps {\n item: Page;\n view?: boolean;\n viewEdit?: boolean;\n closeModal?: () => void;\n darf?: {\n id: string;\n fullPath?: string;\n };\n date?: {\n year?: number;\n month?: number;\n };\n darfBolsaRef: React.MutableRefObject<any>;\n}\n\nexport const DarfBolsa: React.FC<DarfBolsaProps> = ({\n view,\n item,\n date,\n darf,\n viewEdit,\n closeModal,\n darfBolsaRef,\n}) => {\n const navigate = useNavigate();\n const { state } = useLocation();\n const { oldPositionList } = useOldTransactions();\n const { currentBroker, currentPage } = useBroker();\n const {\n user,\n showUserPlanModal,\n userPlanModal,\n hasPlan: hasPremiumPlan,\n hasPermissionGeneral,\n } = useAuth();\n \n const today = new Date();\n const queryYear = (state as any)?.year as number;\n const queryMonth = (state as any)?.month as number;\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const [hasItems, sethasItems] = useState(false);\n const maxPixPayment = 10000;\n const maxCreditCardPayment = 10000;\n\n const initialMonth = queryMonth\n ? queryMonth - 1\n : today.getMonth() - 1 >= 0\n ? today.getMonth() - 1\n : 11;\n const initialYear = queryYear\n ? queryYear\n : today.getMonth() - 1 >= 0\n ? today.getFullYear()\n : today.getFullYear() - 1;\n const defaultValue = moment({ month: initialMonth, year: initialYear });\n const currentDate = moment({\n month: currentMonth,\n year: currentYear,\n }).subtract(1, \"M\");\n window.history.replaceState({}, document.title);\n\n const year = date?.year ?? initialYear;\n const month = date?.month ?? initialMonth;\n const currentDarfDate = new Date(year, month, 15)\n let dateAllowedOnBasic = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n if(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt) {\n dateAllowedOnBasic = new Date(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt);\n dateAllowedOnBasic.setMonth(dateAllowedOnBasic.getMonth() - 2)\n }\n const hideOnBasic = (currentDarfDate.getTime() < dateAllowedOnBasic.getTime() && user.user?.userPlanInfoVelotax?.type?.includes('BASIC'))\n const hasPlan = (hasPremiumPlan || hasPermissionGeneral) && !hideOnBasic;\n\n const [asset, setAsset] = useState<any>();\n const [, setYear] = useState(initialYear);\n const [, setMonth] = useState(initialMonth);\n const [loading, setLoading] = useState(false);\n const [emitting, setEmitting] = useState(false);\n const [darfModal, setDarfModal] = useState<any>();\n const [helpModal, setHelpModal] = useState<any>();\n const [paymentModal, setPaymentModal] = useState(false);\n const [dataToEditPreju, setDataToEditPreju] = useState();\n const [showAssetModal, setShowAssetModal] = useState(false);\n const [paymentData, setPaymentData] = useState<IDarfBolsa>();\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [data, setData] = useState<IDarfBolsa>(defaultDarfBolsa);\n const [buffer, setBuffer] = useState<Array<any>>();\n const [yearResume, setYearResume] = useState<YearResume[]>([]);\n const [gettingYearResume, setGettingYearResume] = useState(false);\n const [datePickerYear, setDatePickerYear] = useState(initialYear);\n const [editedAccumulatedTax, setEditedAccumulatedTax] = useState(false);\n const [showNotAuthorizedModal, setShowNotAuthorizedModal] = useState(false);\n const [loadingDarfButton, setLoadingDarfButton] = useState<boolean>(false);\n const [showEditPrejuConfirmation, setShowEditPrejuConfirmation] =\n useState<boolean>(false);\n\n useImperativeHandle(darfBolsaRef, () => {\n return {\n editedAccumulatedTax,\n setEditedAccumulatedTax,\n handleDarf: (justSave?: boolean) => {\n handleDarf(justSave);\n },\n };\n });\n\n const isAntesTerceiroDiaUtil = () => {\n const today = moment();\n\n // Verifica se a data de hoje é um sábado\n if (today.isoWeekday() === 6) {\n return false;\n }\n\n // Verifica se a data de hoje é anterior ao terceiro dia útil\n const firstDayOfMonth = moment(today).startOf('month');\n let businessDaysCount = 0;\n\n while (businessDaysCount < 2) {\n if (firstDayOfMonth.isoWeekday() < 6) {\n businessDaysCount++;\n }\n\n firstDayOfMonth.add(1, 'day');\n }\n\n return today.isBefore(firstDayOfMonth);\n }\n\n const thirdBusinessDayAndMonth = (item: any) => {\n if (disableCurrentMonth(item))\n return { disabled: true, title: \"Aguarde o encerramento do mês para pagar seu DARF\" }\n else if (item.month + 1 == currentMonth && item.year == currentYear && isAntesTerceiroDiaUtil())\n return { disabled: true, title: \"Aguarde o terceiro dia útil deste mês para pagar seu DARF\" }\n else return { disabled: false, title: \"\" }\n }\n\n const hideOldPositionsText =\n oldPositionList?.length < 1 || oldPositionList === null;\n\n const valorPrincipal = Math.max(\n 0,\n Number(\n (data.impostoComumFinal || 0) +\n (data.impostoDTFinal || 0) +\n (data.impostoFIIFinal || 0)\n ) +\n (Number(data[\"impostoAcumulado\"] || 0) - Number(data[\"irrfTotal\"] || 0))\n );\n const impostoCharge = useMemo(() => {\n const additionalTax = (data.multaAux ?? 0) + (data.jurosAux ?? 0)\n return (\n valorPrincipal +\n (valorPrincipal < minDarfPrice\n ? 0\n : additionalTax)\n );\n }, [data, valorPrincipal]);\n\n const transactionFeature = item.features[0];\n const taxFeature = item.features[1];\n const yearResumeFeature = item.features[2];\n const prejuizoFeature = item.features[3];\n const irrfFeature = item.features[4];\n\n const { emitted } = useMemo(() => {\n if (gettingYearResume) {\n }\n const monthResume = yearResume\n .find((resume) => resume.year === year)\n ?.months.find((m) => m.month - 1 === month);\n return {\n emitted:\n monthResume?.status === YearResumeStatusFromBackEnum.PAYED ||\n monthResume?.status === YearResumeStatusFromBackEnum.NOT_PAYED,\n payed: !!monthResume?.payed,\n status: monthResume?.status,\n };\n }, [yearResume, year, month, gettingYearResume]);\n\n const handleLabelButton: ReactNode = useMemo(() => {\n // if (!userPlanInfoStatus) return \"Assinar Plano Emissão de DARF\";\n\n if ((data?.impostoTotalFinal || 0) <= maxDarfPrice) return \"Pagar DARF\";\n else {\n if (emitted) return \"Emitir novo DARF\";\n else return taxFeature?.buttonLabel;\n }\n }, [data?.impostoTotalFinal, taxFeature?.buttonLabel, emitted]);\n\n const getDarf = useCallback(\n (id: string) => {\n view && setLoading(true);\n view &&\n (currentPage?.api || apis)\n .get(`${taxFeature.apiUrl}/${id}`)\n .then((response) => {\n setYear(response.data?.year);\n setMonth(response.data?.month - 1);\n setData({\n ...response.data,\n emitted: true,\n });\n })\n .catch((err) => {\n message.error(err.response?.data?.message || errorMessage);\n })\n .finally(() => setLoading(false));\n },\n [view, taxFeature.apiUrl, currentPage]\n );\n\n const getYearResume = useCallback(\n (year: number, force?: boolean, url?: string) => {\n setGettingYearResume(true);\n !view &&\n year <= new Date().getFullYear() &&\n year >= moment(`2020-01-01`).get(\"year\") &&\n (force ||\n (!yearResumeFeature.disabled &&\n !yearResume.find((resume) => resume.year === year))) &&\n (currentPage?.api || apis)\n .get(yearResumeFeature.apiUrl, { params: { year } })\n .then((response) => {\n const index = yearResume.findIndex(\n (resume) => resume.year === year\n );\n if (index >= 0) {\n setYearResume((yearResume) => {\n yearResume.splice(index, 1, response.data);\n return yearResume;\n });\n } else {\n setYearResume((yearResume) => [...yearResume, response.data]);\n }\n if (url) {\n download(url);\n }\n })\n .catch((err) => console.log(err))\n .finally(() => setGettingYearResume(false));\n },\n [yearResumeFeature, yearResume, view, currentPage]\n );\n\n const getTaxes = useCallback(\n (\n nAtualizarDarfsPassadas?: boolean,\n nAtualizarIrrf?: boolean,\n atualizouImpostoAcumulado?: boolean,\n nAtualizarPrejuizosAcumulados?: boolean,\n atualizarTotalmente?: boolean,\n atualizouCorretagem?: boolean\n ) => {\n (!hasPlan || !view) && setLoading(true);\n (!hasPlan || !view) &&\n (currentPage?.api || apis)\n .get(transactionFeature.apiUrl, {\n params: {\n month: month + 1,\n year,\n nAtualizarDarfsPassadas: nAtualizarDarfsPassadas || false,\n nAtualizarIrrf: nAtualizarIrrf || false,\n atualizouImpostoAcumulado: atualizouImpostoAcumulado || false,\n nAtualizarPrejuizosAcumulados:\n nAtualizarPrejuizosAcumulados || false,\n atualizarTotalmente: atualizarTotalmente || false,\n atualizouCorretagem: atualizouCorretagem || false,\n },\n })\n .then((response) => {\n if (response.data.memoriaCalculo) {\n setData({\n ...response.data,\n multa: response.data.multaAux,\n juros: response.data.jurosAux,\n impostoDevido: response.data.impostoTotal,\n memoriaCalculo: response.data.memoriaCalculo.map(\n (memoCalc: any) => ({\n ...memoCalc,\n date: moment(memoCalc.date.slice(0, 10)).format(\n \"DD/MM/YYYY\"\n ),\n originalDate: memoCalc.date,\n market:\n memoCalc.market === \"Opção de Compra\" ||\n memoCalc.market === \"Opção de Venda\"\n ? \"Mercado de opções\"\n : memoCalc.market,\n })\n ),\n });\n }\n // setNotAuthorized(false);\n })\n .catch((err) => {\n setData(defaultDarfBolsa);\n if (err?.response?.data === \"NOT_AUTHORIZED\") {\n // setNotAuthorized(true);\n setShowNotAuthorizedModal(true);\n } else {\n // setNotAuthorized(false);\n message.error(errorMessage);\n }\n })\n .finally(() => setLoading(false));\n },\n [month, year, transactionFeature, view, hasPlan, currentPage]\n );\n\n const handleDarf = (justSave?: boolean) => {\n setEmitting(true);\n onCloseDarfModal();\n (currentPage?.api || apis)\n .post(taxFeature.apiUrl, {\n ...data,\n memoriaCalculo: [],\n transactions: data.memoriaCalculo,\n totalImpostoDevido: data.impostoTotalFinal,\n impostoDevido: data.impostoTotal,\n juros: data.jurosAux,\n multa: data?.multaAux,\n year,\n month: month + 1,\n name: user.user.name,\n insertPix: true,\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n justSave,\n payed: false,\n })\n .then((res) => {\n setData((data) => ({ ...data, emitted: true }));\n getYearResume(year, true, justSave ? \"\" : res.data.darfUrl);\n setEmitting(false);\n closeModal?.();\n if (!justSave) {\n message.success(\"O DARF foi enviado para o seu e-mail\");\n }\n })\n .catch((err) => {\n message.error(err.response?.data?.message || errorMessage);\n setEmitting(false);\n });\n };\n\n const handleRegularize = (regular: boolean) => {\n setEmitting(true);\n (currentPage?.api || apis)\n .post(\"transaction/regularize\", {\n year,\n month: month + 1,\n regular,\n impostoAcumulado:\n (data.impostoTotal ?? 0) + (data.impostoAcumulado ?? 0),\n })\n .then((res) => {\n getYearResume(year, true, res.data.darfUrl);\n getTaxes(false, false, false, true);\n message.success(\"Dados salvos\");\n closeModal?.();\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setEmitting(false));\n };\n\n const onChangeMonth = (value: moment.Moment | null, dateString: string) => {\n const [month, year] = dateString.split(\"-\");\n setMonth(parseInt(month) - 1);\n setYear(parseInt(year));\n };\n\n const unsetAsset = () => {\n setAsset(undefined);\n };\n\n const handleCloseDeleteModal = () => {\n setShowDeleteModal(false);\n unsetAsset();\n };\n\n const handleCloseAssetModal = () => {\n setShowAssetModal(false);\n unsetAsset();\n };\n\n const onCloseHelpModal = () => {\n setHelpModal(undefined);\n };\n\n const onCloseDarfModal = () => {\n setDarfModal(undefined);\n };\n\n const handleOpenDarfModal = () => {\n setDarfModal(DarfModal(emitted, onCloseDarfModal, () => handleDarf()));\n };\n\n const handleOpenPaymentModal = () => {\n setPaymentModal(!paymentModal);\n };\n\n const handleAdd = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n event.stopPropagation();\n setShowAssetModal(true);\n };\n\n const handleEdit = (item: any, index: number) => {\n setShowAssetModal(true);\n setAsset({\n ...item,\n id: item._id,\n feeB3: item.fee,\n price: item.sellPrice,\n avgBuyPrice: item.buyPrice,\n data: moment.utc(item.date.toLocaleString()).format(\"DD/MM/YYYY\"),\n });\n };\n\n const handleRemove = (item: any, index: number) => {\n setShowDeleteModal(true);\n setAsset(item);\n };\n\n const addAsset = (asset: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .post(transactionFeature.apiUrl, {\n ...asset,\n operation: \"V\",\n avgSellPrice: asset.price,\n totalValue: asset.price * asset.quantity,\n })\n .then(() => {\n getTaxes(true, false, false, true, true);\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseAssetModal();\n });\n };\n\n const editAsset = (asset: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .put(`${transactionFeature.apiUrl}/${asset.id}`, {\n ...asset,\n operation: \"V\",\n avgSellPrice: asset.price,\n totalValue: asset.price * asset.quantity,\n })\n .then(() => {\n getTaxes(true, false, false, true, true);\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseAssetModal();\n });\n };\n\n const removeAsset = () => {\n setLoading(true);\n (currentPage?.api || apis)\n .delete(`${transactionFeature.apiUrl}/${asset.id ?? asset._id}`, {\n params: {\n year,\n month,\n },\n })\n .then(() => {\n getTaxes(true, false, false, true, true);\n getYearResume(year, true);\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n handleCloseDeleteModal();\n });\n };\n\n /* Manipular as tabs de imposto no mobile */\n const [tab, setTab] = useState(1);\n const bolsaOperationsRef = useRef<HTMLDivElement>(null);\n\n const handleNext = () => {\n setTab((tab) => tab + 1);\n const span = document.querySelector(\"div.sub-header > span.show\");\n bolsaOperationsRef.current?.scrollBy({ left: span?.clientWidth ?? 155 });\n };\n\n const handlePrev = () => {\n setTab((tab) => tab - 1);\n const span = document.querySelector(\"div.sub-header > span.show\");\n bolsaOperationsRef.current?.scrollBy({ left: -(span?.clientWidth ?? 155) });\n };\n /* Fim da manipulação das tabs de imposto no mobile */\n\n /* Editar prejuÃzo acumulado */\n const [resetedPreju, setResetedPreju] = useState(false);\n const [showPrejuModal, setShowPrejuModal] = useState(false);\n const [showCorretagemModal, setShowCorretagemModal] = useState(false);\n const [loadingResetPreju] = useState(false);\n const [loadingEditPreju, setLoadingEditPreju] = useState(false);\n const [ignoreZeroBuyPrice, setIgnoreZeroBuyPrice] = useState(false);\n const [dataZeroBuyPrice, setDataZeroBuyPrice] = useState<any[]>([]);\n const [modalZeroBuyPrice, setModalZeroBuyPrice] = useState(false);\n\n const preju = useMemo(\n () => ({\n userPrejuizoComum: resetedPreju\n ? data.prejuizoComum\n : data.userPrejuizoComum ?? data.prejuizoComum,\n userPrejuizoDayTrade: resetedPreju\n ? data.prejuizoDayTrade\n : data.userPrejuizoDayTrade ?? data.prejuizoDayTrade,\n userPrejuizoFII: resetedPreju\n ? data.prejuizoFII\n : data.userPrejuizoFII ?? data.prejuizoFII,\n }),\n [data, resetedPreju]\n );\n\n const custoCorretagem = useMemo(\n () => ({\n userCustoCorretagemComum: data.userCustoCorretagemComum || 0,\n userCustoCorretagemDT: data.userCustoCorretagemDT || 0,\n userCustoCorretagemFII: data.userCustoCorretagemFII || 0,\n }),\n [data]\n );\n\n // const handleResetPreju = () => {\n // setResetedPreju(true);\n // };\n\n // const handleResetPreju = () => {\n // setLoadingResetPreju(true);\n // (currentPage?.api || apis)\n // .put(`${prejuizoFeature.apiUrl}/update-all?month=${month + 1}&year=${year}`)\n // .then(() => {\n // message.success('PrejuÃzos resetados com sucesso.');\n // getTaxes(false, false, false, true, true);\n // })\n // .catch(() => {\n // message.error(\"Não foi possÃvel resetar os valores\");\n // })\n // .finally(() => {\n // setLoadingResetPreju(false);\n // handleClosePrejuModal();\n // });\n // };\n\n const handleEditPreju = () => {\n setResetedPreju(false);\n setShowPrejuModal(true);\n };\n\n const handleEditPrejuData = (preju: any) => {\n setDataToEditPreju(preju);\n setShowEditPrejuConfirmation(true);\n };\n\n const handleEditCorretagem = () => {\n setShowCorretagemModal(true);\n };\n\n const handleClosePrejuModal = () => {\n setShowPrejuModal(false);\n };\n\n const handleCloseCorretagemModal = () => {\n setShowCorretagemModal(false);\n };\n\n const editPreju = () => {\n setLoadingEditPreju(true);\n setShowEditPrejuConfirmation(false);\n\n (currentPage?.api || apis)\n .put(\n `${prejuizoFeature.apiUrl}?month=${month + 1}&year=${year}`,\n dataToEditPreju\n )\n .then((res) => {\n message.success(\"Dados salvos\");\n getTaxes(true, true, false, true);\n setLoadingEditPreju(false);\n handleClosePrejuModal();\n })\n .catch(() => {\n message.error(errorMessage);\n setLoadingEditPreju(false);\n handleClosePrejuModal();\n });\n };\n\n const editCorretagem = (data: any) => {\n handleCloseCorretagemModal();\n (currentPage?.api || apis)\n .put(\n `/xpinvestimentos/custoCorretagem?month=${month + 1}&year=${year}`,\n data\n )\n .then((res) => {\n message.success(\"Dados salvos\");\n getTaxes(true, true, false, true, false, true);\n })\n .catch(() => {\n message.error(errorMessage);\n });\n };\n /* Fim do editar prejuÃzo acumulado */\n\n /* Editar IRRF */\n const [showIrrfModal, setShowIrrfModal] = useState(false);\n\n const irrf = useMemo(\n () => ({\n userIrrfComum: data.irrfComum,\n userIrrfDayTrade: data.irrfDayTrade,\n userIrrfFII: data.irrfFII,\n userIrrfTotal: data.irrfTotal,\n }),\n [data]\n );\n\n // const handleResetIrrf = () => {\n // setResetedIrrf(true);\n // };\n\n const handleEditIrrf = () => {\n setShowIrrfModal(true);\n };\n\n const handleCloseIrrfModal = () => {\n setShowIrrfModal(false);\n };\n\n const editIrrf = (data: any) => {\n handleCloseIrrfModal();\n (currentPage?.api || apis)\n .put(`${irrfFeature.apiUrl}?month=${month + 1}&year=${year}`, data)\n .then((response) => {\n message.success(\"Dados salvos\");\n getTaxes(true, true, false, true);\n })\n .catch(() => {\n message.error(errorMessage);\n });\n };\n /* Fim do editar prejuÃzo acumulado */\n\n useEffect(() => {\n // if (month === 0) {\n getTaxes(true, true, false, true, false);\n // } else {\n // getTaxes(false, false, false, false, true);\n // }\n }, [getTaxes, month, year]);\n\n useEffect(() => {\n if (view && darf) {\n getDarf(darf.id);\n }\n }, [getDarf, view, darf]);\n\n useEffect(() => {\n getYearResume(year);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const dataToPayment = {\n ...data,\n year,\n month: month + 1,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: data.memoriaCalculo,\n };\n\n setPaymentData(dataToPayment);\n }, [data.impostoTotalFinal, data, month, user.user.name, year]);\n\n useEffect(() => {\n if (data?.memoriaCalculo?.length > 0) sethasItems(!hideOnBasic);\n setBuffer(data?.buffer?.data);\n }, [data, hideOnBasic]);\n\n const handlePlanModal = () => {\n navigate('/planos')\n };\n\n useEffect(()=> {\n if (ignoreZeroBuyPrice) handleEventDarfButton();\n }, [ignoreZeroBuyPrice])\n\n const handleEventDarfButton = async () => {\n setLoadingDarfButton(true);\n let retPlanInfo = {\n data: {\n active: false,\n },\n };\n try {\n retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n } catch (err) {\n console.error(err);\n }\n setLoadingDarfButton(false);\n\n if (!ignoreZeroBuyPrice) {\n const hasZeroBuyPrice = await getZeroBuyPrice(data?.memoriaCalculo);\n if (hasZeroBuyPrice.length > 0) {\n setModalZeroBuyPrice(true);\n setDataZeroBuyPrice(hasZeroBuyPrice);\n return;\n }\n }\n\n //@ts-ignore\n !retPlanInfo.data.active && !retPlanInfo.data.cupomDueDate\n ? handlePlanModal()\n : handleOpenPaymentModal();\n };\n\n const handleSaveMonth = async () => {\n setLoadingDarfButton(true);\n try {\n const retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n\n retPlanInfo.data.active || hasPermissionGeneral\n ? handleDarf(true)\n : handlePlanModal();\n } catch (err) {\n console.error(err);\n }\n setLoadingDarfButton(false);\n };\n\n const downloadAction = (record: any) => {\n apiBolsa.get(`/darf/download/${record._id}`).then((res) => {\n if (res.data.url) {\n download(res.data.url);\n }\n });\n };\n\n const calcReturn = (\n sellPrice: number,\n buyPrice: number,\n quantity: number,\n fee: number\n ) => {\n \n const qtt = quantity ? quantity : 1;\n const ret =\n sellPrice && buyPrice\n ? (sellPrice * qtt - (fee || 0)) / (buyPrice * qtt) - 1\n : 0;\n return (\n <strong\n style={{\n color: `${ret >= 0\n ? \"var(--velotax-green-amount)\"\n : \"var(--velotax-red-prejuizo)\"\n }`,\n }}\n >\n {ret ? numberToPercentageWallet(ret) : \"-\"}\n </strong>\n );\n };\n\n const disableCurrentMonth = (item: any) =>\n item.year === currentYear && item.month === currentMonth;\n\n return (\n <Container className={clsx({ view, \"view-edit\": viewEdit })}>\n <Content className={clsx(\"first\", { view, \"view-edit\": viewEdit })}>\n <Space direction=\"vertical\" className=\"full-width\">\n <Row gutter={[16, 16]} align=\"middle\" justify=\"space-between\">\n <Col xs={24} sm={16}>\n <Typography.Title level={3} className=\"date-title\">\n <BsCalendar3 />\n {!view && !viewEdit && (\n <>\n {currentBroker.initialYear === year && month === 0 ? (\n <div className=\"month-chevron empty\" />\n ) : (\n <BiChevronLeft\n className=\"month-chevron\"\n onClick={() => {\n if (month === 0) {\n setYear((year) => {\n const newYear = year - 1;\n getYearResume(newYear);\n setDatePickerYear(newYear);\n return newYear;\n });\n setMonth(11);\n } else {\n setMonth((month) => month - 1);\n }\n }}\n />\n )}\n </>\n )}\n {monthsExtended[month]} de {year}\n {!view && !viewEdit && (\n <>\n {currentYear === year && currentMonth - 1 === month ? (\n <div className=\"month-chevron empty\" />\n ) : (\n <BiChevronRight\n className=\"month-chevron\"\n onClick={() => {\n if (month === 11) {\n setYear((year) => {\n const newYear = year + 1;\n getYearResume(newYear);\n setDatePickerYear(newYear);\n return newYear;\n });\n setMonth(0);\n } else {\n setMonth((month) => month + 1);\n }\n }}\n />\n )}\n </>\n )}\n </Typography.Title>\n </Col>\n {!view && !viewEdit && (\n <Col xs={24} sm={8}>\n <DatePicker\n size=\"large\"\n picker=\"month\"\n format=\"MM-YYYY\"\n disabled={loading}\n allowClear={false}\n inputReadOnly={true}\n onChange={onChangeMonth}\n suffixIcon={<BsCalendar3 />}\n defaultValue={defaultValue}\n locale={antDatePickerLocale}\n value={moment({ year: datePickerYear, month })}\n onSelect={(e) => {\n if (e.month() === month && year !== datePickerYear) {\n onChangeMonth(e, `${month + 1}-${datePickerYear}`);\n }\n }}\n onPanelChange={(e) => {\n getYearResume(e.year());\n setDatePickerYear(e.year());\n }}\n getPopupContainer={(trigger) => trigger.parentElement!}\n renderExtraFooter={() =>\n yearResumeFeature.disabled ? (\n <></>\n ) : (\n <DatePickerExtraFooter />\n )\n }\n disabledDate={(current) =>\n current &&\n (current > currentDate.endOf(\"month\") ||\n current < moment(`${currentBroker.initialYear}-01-01`) ||\n current < moment(`2020-01-01`))\n }\n monthCellRender={(e) => (\n <DatePickerMonthCell event={e} yearResume={yearResume} />\n )}\n />\n </Col>\n )}\n </Row>\n </Space>\n </Content>\n\n <Content className={clsx(\"second\", { view, \"view-edit\": viewEdit })}>\n <Space direction=\"vertical\" className=\"full-width\">\n {hasPlan && view && darf?.fullPath && (\n <Row justify=\"end\">\n <Col>\n <Button\n variant=\"text\"\n color=\"secondary\"\n style={{ marginTop: \"-32px\" }}\n onClick={() => downloadAction(darf)}\n startIcon={\n <BsDownload\n size={16}\n style={{\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n >\n BAIXAR DARF\n </Button>\n </Col>\n </Row>\n )}\n <BolsaOperations ref={bolsaOperationsRef}>\n {(!hasPlan || hideOnBasic) && (\n <div className=\"no-plan-container\">\n <Typography>\n Contrate o plano premium para ver os impostos devidos\n </Typography>\n <Button\n color=\"secondary\"\n variant=\"contained\"\n startIcon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n closeModal?.();\n }}\n >\n PREMIUM\n </Button>\n </div>\n )}\n {DarfBolsaTabs(data, {\n handleEditPreju,\n handleEditCorretagem,\n view,\n month,\n year,\n }).map((container, rowIndex) => (\n <div key={rowIndex} className={container.class}>\n {container.tabs.map((item, colIndex) => (\n <span\n key={colIndex}\n className={clsx(\n colIndex === 0 || tab === colIndex ? \"show\" : \"\",\n {\n \"no-plan\": !hasPlan && rowIndex > 0 && colIndex > 0,\n }\n )}\n >\n {rowIndex === 0 && (\n <AntButton\n type=\"text\"\n icon={<GrFormPrevious />}\n onClick={\n !hasPlan || colIndex === 0 || tab === 1\n ? undefined\n : handlePrev\n }\n style={{\n visibility:\n !hasPlan || colIndex === 0 || tab === 1\n ? \"hidden\"\n : \"visible\",\n }}\n />\n )}\n {!hasPlan && rowIndex > 0 && colIndex > 0\n ? formatCurrency(13443)\n : isMobile() && !hasPlan && rowIndex === 0\n ? \"\"\n : item.content}\n {rowIndex === 0 && (\n <AntButton\n type=\"text\"\n icon={<GrFormNext />}\n onClick={\n !hasPlan || colIndex === 0 || tab === 3\n ? undefined\n : handleNext\n }\n style={{\n visibility:\n !hasPlan || colIndex === 0 || tab === 3\n ? \"hidden\"\n : \"visible\",\n }}\n />\n )}\n </span>\n ))}\n </div>\n ))}\n </BolsaOperations>\n\n {/* <div className=\"edition-button-corretagem\">\n <button onClick={handleEditCorretagem}>\n {view ? <BsEye /> : <FaRegEdit />}\n <span>\n {view\n ? \"Exibir taxas de corretagem\"\n : \"Inserir soma das taxas de corretagem (opcional)\"}\n </span>\n </button>\n {!view && (\n <button onClick={() => setHelpModal(CorretagemModalProps)}>\n <InfoCircleOutlined />\n </button>\n )}\n </div> */}\n\n <br />\n\n <Collapse\n ghost\n bordered={false}\n expandIconPosition=\"right\"\n defaultActiveKey={!hasPlan ? [\"1\"] : []}\n {...(!hasPlan ? { collapsible: \"disabled\" } : {})}\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <Typography.Title level={3}>\n Vendas realizadas no mês\n </Typography.Title>\n }\n >\n {hasItems && (\n <Button\n variant=\"contained\"\n disabled={loading}\n onClick={() => handleDownloadSheet(buffer, \"Vendas\")}\n style={{\n alignItems: \"center\",\n fontSize: \"13px\",\n paddingRight: \"0\",\n justifyContent: \"end\",\n backgroundColor: \"transparent\",\n color: \"#fbc105\",\n }}\n startIcon={\n <AiOutlineDownload\n style={{\n width: \"16px\",\n height: \"16px\",\n marginRight: \"4px\",\n fill: \"#fbc105\",\n }}\n />\n }\n >\n Baixar planilha\n </Button>\n )}\n {!view && (\n <Button\n color=\"secondary\"\n variant=\"contained\"\n className=\"add\"\n disabled={loading}\n onClick={handleAdd}\n startIcon={<PlusOutlined />}\n >\n Adicionar\n </Button>\n )}\n <List\n loading={loading}\n itemLayout=\"horizontal\"\n locale={{\n emptyText: historicoVendasEmptyText,\n }}\n dataSource={\n user?.user?.cpf === '01268936324' ?\n data.memoriaCalculo?.sort(\n (a, b) =>\n new Date(b.originalDate).getTime() -\n new Date(a.originalDate).getTime()\n ).slice(0, 5) :\n hideOnBasic ? [] :\n data.memoriaCalculo?.sort(\n (a, b) =>\n new Date(b.originalDate).getTime() -\n new Date(a.originalDate).getTime()\n )}\n renderItem={(item, index) => (\n <List.Item\n actions={\n view\n ? []\n : [\n <AntButton\n type=\"text\"\n onClick={() => handleEdit(item, index)}\n icon={<FaRegEdit size={16} />}\n />,\n <AntButton\n type=\"text\"\n onClick={() => handleRemove(item, index)}\n icon={<AiOutlineDelete size={16} />}\n />,\n ]\n }\n >\n <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={<strong>{item.code}</strong>}\n description={\n <div className=\"list-description\">\n <div>\n Data:{\" \"}\n {moment(item.date, [\n \"DD/MM/YYYY\",\n \"YYYY-MM-DD\",\n ]).format(\"DD/MM/YYYY\")}\n </div>\n <div>Quantidade: {item.quantity}</div>\n {view && (\n <>\n <div>\n Custo médio de compra:{\" \"}\n <strong>\n {formatCurrency(item.buyPrice)}\n </strong>\n </div>\n <div>\n Preço de venda:{\" \"}\n <strong>\n {formatCurrency(item.sellPrice)}\n </strong>\n </div>\n </>\n )}\n <div>\n Ganho:{\" \"}\n <strong>\n {formatCurrency(item.capitalGain)}\n </strong>\n </div>\n <div>\n Retorno:{\" \"}\n {calcReturn(\n item?.sellPrice,\n item?.buyPrice,\n item?.quantity,\n item?.fee\n )}\n </div>\n </div>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n {\n user?.user?.cpf === '01268936324' &&\n <Button\n variant=\"contained\"\n disabled={loading}\n onClick={() => handleDownloadSheet(buffer, \"Vendas\")}\n style={{\n alignItems: \"center\",\n fontSize: \"13px\",\n paddingRight: \"0\",\n justifyContent: \"end\",\n backgroundColor: \"transparent\",\n color: \"#fbc105\",\n }}\n startIcon={\n <AiOutlineDownload\n style={{\n width: \"16px\",\n height: \"16px\",\n marginRight: \"4px\",\n fill: \"#fbc105\",\n }}\n />\n }\n >\n Baixar lista completa de operações de vendas.\n </Button>\n }\n </Collapse.Panel>\n </Collapse>\n\n {hasPlan && <br />}\n\n {hasPlan && (\n <div\n className=\"total-tax-header original\"\n style={{ width: \"100%\" }}\n >\n <Typography.Title level={3}>Imposto total</Typography.Title>\n <Typography.Title level={3} className=\"text-center\">\n {loading ? (\n <Spin style={{ marginRight: \"32px\" }} />\n ) : (\n formatCurrency(impostoCharge)\n )}\n </Typography.Title>\n </div>\n )}\n\n {hasPlan && (\n <Descriptions size=\"small\" bordered layout=\"horizontal\">\n {DarfResultDescriptions.map((description) => {\n return (\n <Descriptions.Item\n span={24}\n key={description.id}\n label={description.label(setHelpModal)}\n >\n {loading ? (\n <Spin />\n ) : description.Component ? (\n <description.Component\n data={data}\n year={year}\n view={view}\n month={month}\n disabled={!view}\n loading={loading}\n getTaxes={getTaxes}\n setDataBolsa={setData}\n url={transactionFeature.apiUrl}\n valorPrincipal={valorPrincipal}\n setEditedAccumulatedTax={setEditedAccumulatedTax}\n handleEdit={\n description.id === \"irrfTotal\"\n ? handleEditIrrf\n : undefined\n }\n />\n ) : (\n formatCurrency(\n Number(data[description.id as keyof IDarfBolsa] || 0)\n )\n )}\n </Descriptions.Item>\n )\n })}\n </Descriptions>\n )}\n\n {!view && (\n <>\n <Row\n justify=\"end\"\n gutter={[16, 16]}\n className=\"column-reverse\"\n style={{ marginTop: \"16px\" }}\n >\n {!(month === currentMonth && year === currentYear) &&\n valorPrincipal < minDarfPrice &&\n data?.memoriaCalculo?.length > 0 && (\n <Col xs={24}>\n <br />\n <Tooltip\n title={\n <>\n O valor do imposto devido é menor que{\" \"}\n {formatCurrency(minDarfPrice)}. Você não precisa\n emitir um DARF para este mês.\n </>\n }\n >\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loading || emitting}\n startIcon={emitting && <LoadingOutlined />}\n // onClick={() => {\n // handleRegularize(true);\n // }}\n onClick={handleSaveMonth}\n >\n Salvar sem emitir DARF\n </Button>\n </Tooltip>\n </Col>\n )}\n {valorPrincipal >= minDarfPrice && (\n <Col xs={24}>\n <br />\n <Tooltip\n getPopupContainer={(target) => target.parentElement!}\n title={\n thirdBusinessDayAndMonth(date).title\n }\n >\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => handleEventDarfButton()}\n startIcon={\n (emitting || loadingDarfButton) && <LoadingOutlined />\n }\n disabled={\n loading ||\n emitting ||\n loadingDarfButton ||\n thirdBusinessDayAndMonth(date).disabled\n }\n >\n {handleLabelButton}\n </Button>{\" \"}\n </Tooltip>\n </Col>\n )}\n </Row>\n {!(month === currentMonth && year === currentYear) && (\n <Row\n justify=\"end\"\n align=\"middle\"\n gutter={[16, 16]}\n style={{ marginTop: \"16px\" }}\n >\n <Col>\n <Button\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n onClick={handleSaveMonth}\n disabled={loading || emitting}\n startIcon={emitting && <LoadingOutlined />}\n >\n Salvar apenas\n </Button>\n </Col>\n </Row>\n )}\n </>\n )}\n\n {!view && (\n <div className=\"juridic-messages-container\">\n <div className=\"message\">\n {!hideOldPositionsText && (\n <p>\n <QuestionCircleOutlined /> Você tinha investimentos em\n 31/12/2019 e ainda não preencheu o seu custo médio?{\" \"}\n <span\n onClick={() =>\n navigate(`/${currentBroker.path}/bolsa-insert-manual`)\n }\n style={{\n cursor: \"pointer\",\n color: \"var(--ant-primary-color)\",\n }}\n >\n Clique aqui.\n </span>\n </p>\n )}\n </div>\n {/* <div className=\"message\">\n <p>\n ({hideOldPositionsText ? 1 : 2}) A Receita Federal admite a\n dedução dos custos de corretagem na apuração do ganho lÃquido\n em operações de renda variável. Entretanto, não há\n obrigatoriedade do usufruto do benefÃcio da dedução por parte\n dos investidores (Instrução Normativa RFB nº 1.585, de 31 de\n agosto de 2015, art. 56, § 3º). As informações advindas\n somente da integração com a B3 não consideram o benefÃcio da\n dedução dos custos de corretagem da XP, incluindo somente as\n tarifas de liquidação, registro, termo/opções e emolumentos da\n B3. Caso deseje descontar os seus custos de corretagem dos\n ganhos tributáveis, você pode adicionar manualmente as taxas\n de corretagem em cada operação no campo “Taxas†ou carregar\n suas\n <span\n onClick={() =>\n navigate(\n item.settings?.integrationPath ??\n `/${currentBroker.path}/integration`\n )\n }\n style={{\n cursor: \"pointer\",\n color: \"var(--ant-primary-color)\",\n }}\n >\n {\" \"}\n notas de corretagem.\n </span>\n </p>\n </div> */}\n {/* <div className=\"message\"> */}\n {/* <p>\n ({hideOldPositionsText ? 2 : 3}) As taxas apresentadas incluem\n somente as tarifas de liquidação, registro, termo/opções e\n emolumentos da B3. Caso deseje, você pode adicionar manualmente as\n taxas de corretagem em cada operação.\n </p> */}\n {/* </div> */}\n {/* <div className=\"message\">\n <p>\n ({hideOldPositionsText ? 2 : 3}) Para preencher\n automaticamente os seus prejuÃzos acumulados, você deve salvar\n os meses na ordem do mais antigo para o mais recente.\n </p>\n </div> */}\n {/* <div className=\"message\">\n <p>\n ({hideOldPositionsText ? 3 : 4}) O Usuário é\n exclusivamente responsável pela conferência e validação\n das informações utilizadas na apuração do imposto devido,\n conforme{\" \"}\n <a\n rel=\"noreferrer\"\n href=\"https://velotax-termos-e-condicoes.s3.us-east-1.amazonaws.com/Termos%20de%20Uso%20-%20Velotax%20v1.pdf\"\n target=\"_blank\"\n >\n Termos e Condições Gerais de Uso.\n </a>\n </p>\n </div> */}\n </div>\n )}\n </Space>\n </Content>\n <Modal\n footer={null}\n visible={helpModal}\n title={helpModal?.title}\n onCancel={onCloseHelpModal}\n >\n {helpModal?.content}\n </Modal>\n\n <FormModal\n add={editPreju}\n edit={() => { }}\n rows={[]}\n itemToEdit={null}\n visibility={showEditPrejuConfirmation}\n saveButtonText={\"Sim\"}\n title={\"Editar prejuÃzos\"}\n onCancel={() => setShowEditPrejuConfirmation(false)}\n >\n <div\n style={{\n color: \"var(--velotax-font-color-dark)\",\n }}\n >\n Você tem certeza que deseja editar os valores calculados de prejuÃzos\n acumulados?\n </div>\n </FormModal>\n\n <Modal\n visible={darfModal}\n title={darfModal?.title}\n footer={darfModal?.footer}\n onCancel={onCloseDarfModal}\n zIndex={1001}\n >\n {darfModal?.content}\n </Modal>\n <FormModal\n add={addAsset}\n edit={editAsset}\n itemToEdit={asset}\n visibility={showAssetModal}\n onCancel={handleCloseAssetModal}\n rows={DarfBolsaFormItemRows(month, year)}\n title={asset ? \"Editar ativo\" : \"Adicionar ativo\"}\n />\n <FormModal\n add={() => { }}\n edit={(data: any) => handleEditPrejuData(data)}\n itemToEdit={preju}\n loading={loadingEditPreju}\n disableButtons={loadingResetPreju || loadingEditPreju}\n rows={PrejuFormItemRows(loadingResetPreju || loadingEditPreju)}\n visibility={showPrejuModal}\n onCancel={handleClosePrejuModal}\n title=\"Editar prejuÃzos a compensar\"\n // preFormChildren={\n // <Button\n // size=\"medium\"\n // color=\"secondary\"\n // variant=\"outlined\"\n // onClick={handleResetPreju}\n // disabled={loadingResetPreju || loadingEditPreju}\n // startIcon={loadingResetPreju && <LoadingOutlined />}\n // style={{ display: \"flex\", margin: \"0 0 16px auto\" }}\n // >\n // Resetar valores\n // </Button>\n // }\n />\n\n <FormModal\n add={() => { }}\n edit={editCorretagem}\n itemToEdit={custoCorretagem}\n rows={CorretagemFormItemRows(!!view)}\n visibility={showCorretagemModal}\n onCancel={handleCloseCorretagemModal}\n title=\"Taxas de corretagem\"\n hideFooter={view}\n >\n {/* <Divider />\n <Row gutter={[16, 16]} align=\"middle\">\n <Col span={24}>\n <Typography>\n Caso altere algum desses valores, você pode voltar aos valores\n calculados automaticamente pelo sistema (clique em aplicar e\n salvar):\n </Typography>\n </Col>\n <Col xs={24} sm={14}>\n <Row>\n <Col span={16}>PrejuÃzo Comum:</Col>\n <Col span={8}>{formatCurrency(data.prejuizoComum ?? 0)}</Col>\n <Col span={16}>PrejuÃzo Day Trade:</Col>\n <Col span={8}>{formatCurrency(data.prejuizoDayTrade ?? 0)}</Col>\n <Col span={16}>PrejuÃzo FII:</Col>\n <Col span={8}>{formatCurrency(data.prejuizoFII ?? 0)}</Col>\n </Row>\n </Col>\n <Col xs={24} sm={10}>\n <Button onClick={handleResetPreju} style={{ marginLeft: \"auto\" }}>\n Aplicar\n </Button>\n </Col>\n </Row> */}\n </FormModal>\n <FormModal\n add={() => { }}\n edit={editIrrf}\n itemToEdit={irrf}\n rows={IrrfFormItemRows}\n visibility={showIrrfModal}\n onCancel={handleCloseIrrfModal}\n title=\"Editar IRRF\"\n >\n {/* <Divider />\n <Row gutter={[16, 16]} align=\"middle\">\n <Col span={24}>\n <Typography>\n Caso altere algum desses valores, você pode voltar aos valores\n calculados automaticamente pelo sistema (clique em aplicar e\n salvar):\n </Typography>\n </Col>\n <Col xs={24} sm={14}>\n <Row>\n <Col span={16}>IRRF Comum:</Col>\n <Col span={8}>{formatCurrency(data.irrfComum ?? 0)}</Col>\n <Col span={16}>IRRF Day Trade:</Col>\n <Col span={8}>{formatCurrency(data.irrfDayTrade ?? 0)}</Col>\n <Col span={16}>IRRF FII:</Col>\n <Col span={8}>{formatCurrency(data.irrfFII ?? 0)}</Col>\n <Col span={16}>IRRF Total:</Col>\n <Col span={8}>{formatCurrency(data.irrfTotal ?? 0)}</Col>\n </Row>\n </Col>\n <Col xs={24} sm={10}>\n <Button onClick={handleResetIrrf} style={{ marginLeft: \"auto\" }}>\n Aplicar\n </Button>\n </Col>\n </Row> */}\n </FormModal>\n <PaymentModal\n fromDarf\n item={item}\n show={paymentModal}\n emitting={emitting}\n selectedYear={year}\n maxPixValue={maxPixPayment}\n closeDarfModal={closeModal}\n onCancel={handleOpenPaymentModal}\n maxCCValue={maxCreditCardPayment}\n disablePixOption={(data?.impostoTotalFinal || 0) > maxPixPayment}\n paymentData={{ ...paymentData, impostoTotalFinal: impostoCharge }}\n disableCreditCardOption={\n (data?.impostoTotalFinal || 0) > maxCreditCardPayment\n }\n callDarf={() => {\n HandleTag(\"64\");\n handleOpenDarfModal();\n }}\n />\n <DeleteConfirmationModal\n showToast={false}\n title=\"Remover ativo\"\n visibility={showDeleteModal}\n onCancel={handleCloseDeleteModal}\n setVisibility={setShowDeleteModal}\n onOk={() => Promise.resolve(removeAsset())}\n body=\"Você realmente quer deletar esse ativo?\"\n />\n <IntegrationModal\n visible={showNotAuthorizedModal}\n onCancel={() => setShowNotAuthorizedModal(false)}\n />\n {!view && !viewEdit && (\n <BackButton to=\"/xpinvestimentos/bolsa\" className=\"darf-bolsa\" />\n )}\n <ModalZeroBuyPrice\n visible={modalZeroBuyPrice}\n title={'Atenção'}\n dataZeroBuyPrice={dataZeroBuyPrice}\n setIgnoreZeroBuyPrice={setIgnoreZeroBuyPrice}\n setModalZeroBuyPrice={setModalZeroBuyPrice}\n >\n </ModalZeroBuyPrice>\n </Container>\n );\n};\n","import { Modal } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n padding: 0 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0 16px 128px;\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n min-width: 40vw;\n max-width: 500px;\n border-radius: 16px;\n background-color: var(--velotax-background-color);\n\n h2 {\n font-size: 24px;\n position: relative;\n color: var(--velotax-font-color);\n &::before {\n content: \"\";\n position: absolute;\n width: 4px;\n top: 0;\n left: -32px;\n height: 100%;\n background-color: var(--ant-primary-color);\n }\n }\n h3 {\n font-size: 20px;\n display: flex;\n align-items: center;\n column-gap: 8px;\n color: var(--velotax-font-color);\n }\n\n .ant-list.ant-list-split {\n margin-top: 24px;\n padding: 0 0 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 8px;\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n }\n .list-description {\n display: flex;\n flex-direction: column;\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n h2 {\n &::before {\n left: -24px;\n }\n }\n }\n`;\n\nexport const ConfirmModal = styled(Modal)`\n .p {\n font-size: 16px;\n strong {\n font-weight: 500;\n color: var(--ant-primary-color);\n }\n }\n`;\n","import { Typography } from \"antd\";\nimport { RiMoneyDollarCircleLine, RiFileSearchLine } from \"react-icons/ri\";\n\nexport const cards = [\n // {\n // id: \"irpf\",\n // icon: (\n // <AiOutlineFileSearch\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // content: (\n // <Typography>\n // Declaração IRPF\n // <br />\n // 2023 no Velotax\n // </Typography>\n // ),\n // },\n {\n id: \"anual-report\",\n icon: (\n <RiFileSearchLine\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n content: <Typography>RELATÓRIOS ANUAIS</Typography>,\n description: (\n <Typography>\n Relatórios auxiliares para preenchimento da DIRPF\n </Typography>\n ),\n },\n // {\n // id: \"gain\",\n // icon: (\n // <RiMoneyDollarCircleLine\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // content: <Typography>INFORMES DE GANHO DE CAPITAL</Typography>,\n // description: (\n // <Typography>\n // Relatórios auxiliares para acompanhamento do ganho de capital (GCAP)\n // </Typography>\n // ),\n // },\n];\n","import styled from \"styled-components\";\n\nexport const ReportContainer = styled.div`\n height: 100%;\n display: flex;\n padding: 64px 32px;\n\n & > .content {\n margin: 0 auto;\n width: 700px;\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h3 {\n display: flex;\n align-items: center;\n column-gap: 16px;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n }\n\n div.ant-typography {\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n }\n\n .ant-typography.destak {\n margin: 48px 0;\n display: block;\n font-weight: 700;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n padding-left: 16px;\n border-left: 4px solid var(--ant-primary-color);\n }\n\n .cards {\n margin: 32px 0 0;\n padding-bottom: 32px;\n width: 100%;\n display: grid;\n row-gap: 1rem;\n column-gap: 1rem;\n grid-template-columns: repeat(2, 1fr);\n\n & > div {\n width: 100%;\n }\n\n .card-antd {\n position: relative;\n\n a {\n top: 0;\n left: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n color: var(--velotax-font-color);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n height: auto;\n padding: 24px 0 0;\n\n & > .content {\n width: 100%;\n h1 {\n width: 100%;\n padding: 0 24px 12px;\n margin: 0 auto 1.5rem;\n :after {\n left: 24px;\n }\n }\n\n & > div.ant-typography {\n padding: 0 24px;\n }\n }\n\n .cards {\n width: 100%;\n padding: 0 24px;\n margin: 32px 0;\n grid-template-columns: repeat(2, 1fr);\n\n & > div {\n width: auto;\n height: 240px;\n }\n }\n }\n`;\n\nexport const Container = styled.div`\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 700px;\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n &.info {\n align-items: flex-start;\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.85;\n margin: 0 auto 2.5rem;\n svg {\n margin-top: 4px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .ant-list.ant-list-split {\n margin: 24px 0 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li > button {\n font-size: 16px;\n color: var(--ant-primary-color);\n }\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n font-size: 16px;\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n .historic-month-status {\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 0;\n color: var(--black);\n display: flex;\n &.payed,\n &.regular {\n background-color: var(--ant-success-color);\n }\n &.pending {\n background-color: var(--ant-error-color);\n }\n &.not-payed {\n background-color: var(--ant-warning-color);\n }\n }\n .ant-btn.ant-btn-text {\n color: var(--ant-primary-color);\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 32px;\n border-radius: 0;\n width: 100%;\n .ant-list.ant-list-split {\n .ant-list-item-action {\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\nexport const Content = styled.div`\n padding: 32px;\n min-width: 40vw;\n max-width: 500px;\n border-radius: 16px;\n background-color: var(--velotax-background-color);\n\n h2 {\n font-size: 24px;\n position: relative;\n &::before {\n content: \"\";\n position: absolute;\n width: 4px;\n top: 0;\n left: -32px;\n height: 100%;\n background-color: var(--ant-primary-color);\n }\n }\n .last-update {\n letter-spacing: 1px;\n }\n div.ant-typography {\n font-size: 18px;\n }\n .ant-typography {\n color: var(--velotax-font-color);\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n border-radius: 0;\n min-height: calc(100vh - 64px);\n h2 {\n &::before {\n left: -24px;\n }\n }\n }\n`;\n","import { RiDownloadCloudLine } from \"react-icons/ri\";\nimport { Button as MaterialButton } from \"@mui/material\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n List,\n message,\n Modal,\n Row,\n Select,\n Skeleton,\n Typography,\n} from \"antd\";\nimport { cards } from \"./items\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport { Card } from \"../Exterior/Cards\";\nimport Button from \"../../components/Button\";\nimport { Page } from \"../../constants/brokers\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { ReportContainer, Container, Content } from \"./styles\";\nimport {\n download,\n errorMessage,\n getInitialYear,\n isMobile,\n monthsExtended,\n zero,\n} from \"../../utils\";\nimport { ModalConfirmMail } from \"../../components/ModalConfirmMail\";\nimport { useWebSocket } from \"../../contexts/Notification.context\";\n\ninterface ReportProps {\n item: Page;\n}\n\nexport interface ReportStatus {\n description?: string;\n started?: boolean;\n finished?: boolean;\n error?: boolean;\n alert?: boolean;\n processing?: boolean;\n}\n\nconst ReportAlertTitle = (\n <Typography\n style={{\n fontSize: \"14px\",\n display: \"flex\",\n columnGap: \"8px\",\n lineHeight: \"18px\",\n alignItems: \"flex-start\",\n }}\n >\n <InfoCircleOutlined style={{ fontSize: \"16px\", marginTop: \"2px\" }} />{\" \"}\n <span>\n Os relatórios estão disponÃveis somente no plano premium.{\" \"}\n <strong>Contrate o seu plano.</strong>\n </span>\n </Typography>\n);\n\nexport const ReportBolsa: React.FC<ReportProps> = ({ item }) => {\n const {\n user,\n ssoToken\n } = useAuth();\n const { state } = useLocation();\n const navigate = useNavigate();\n\n const today = new Date();\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const stateYear = (state as any)?.year;\n const initialYear = getInitialYear(currentYear, currentMonth);\n window.history.replaceState({}, document.title);\n\n const { currentPage } = useBroker();\n\n const [action, setAction] = useState<string>();\n\n const [data, setData] = useState<any[]>();\n // const [infoModal, toggleModal] = useState(null);\n const [loading, setLoading] = useState(false);\n const { report, setReport } = useWebSocket();\n const [modalConfirm, setModalConfirm] = useState(false);\n const [itemToReport, setItemToReport] = useState<any>();\n const [downloading, setDownloading] = useState(false);\n const [loadingLinks] = useState(false);\n const [year, setYear] = useState(stateYear ?? initialYear);\n\n const historicFeature = item.features[0];\n const downloadFeature = item.features[1];\n // const sendEmailFeature = item.features[2];\n\n const userPlanInfoStatus = useMemo(\n () => user.user?.userPlanInfoVelotax,\n [user.user?.userPlanInfoVelotax]\n );\n\n const yearOptions = Array.from(Array(initialYear - 2020 + 1))\n .map((y, i) => ({\n value: 2020 + i,\n label: `${2020 + i}`,\n }))\n .reverse();\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n const getHistoric = useCallback(() => {\n if (!action) return;\n if (action === \"anual-report\")\n return setData(\n Array.from(Array(new Date().getFullYear() - 2022))\n .map((y, i) => ({\n year: 2022 + i,\n label: `${2022 + i}`,\n }))\n .reverse()\n );\n\n setLoading(true);\n (currentPage?.api || apiBolsa)\n .get(historicFeature.apiUrl, { params: { year } })\n .then((response) => setData((response.data ?? []).reverse()))\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n }, [historicFeature, year, currentPage, action]);\n\n // const getDowloadLinks = useCallback(\n // (data: any[], action: string) => {\n // setLoadingLinks(true);\n // const dataLinks = data.map((item) =>\n // !!item._id\n // ? (currentPage?.api || apiBolsa).post(\n // `${downloadFeature.apiUrl}/${action}`,\n // {\n // id: item._id,\n // year: item.year,\n // month: item.month,\n // }\n // )\n // : Promise.resolve({ data: item })\n // );\n // Promise.allSettled(dataLinks).then((response) => {\n // setData(\n // response.map((item, index) =>\n // item.status === \"fulfilled\" && item.value.data?.file\n // ? {\n // ...data?.[index],\n // url: `data:application/pdf;base64,${item.value.data.file}`,\n // }\n // : data?.[index]\n // )\n // );\n // setLoadingLinks(false);\n // });\n // },\n // [currentPage, downloadFeature]\n // );\n\n // const sendDarfToEmail = (reportId: string) => {\n // (currentPage?.api || apiBolsa)\n // .get(`${sendEmailFeature.apiUrl}/${reportId}`)\n // .then(() => {\n // message.success(\"O DARF foi enviado para o seu e-mail\");\n // })\n // .catch((error) => {\n // console.log(error);\n // });\n // };\n\n useEffect(()=> {\n if (report) {\n const mobileAction = isMobile()\n if (!mobileAction) {\n download(report);\n }\n setDownloading(false);\n setReport(\"\");\n }\n }, [report])\n\n const downloadAction = async (sendEmail: boolean) => {\n const act = itemToReport?.action || action;\n setDownloading(true);\n\n const mobileAction = isMobile();\n \n if (mobileAction) {\n message.info(\"Preparando seu relatório.\");\n } else {\n message.info(\"Iniciando download do seu relatório.\");\n }\n apiBolsa\n .post(`${downloadFeature.apiUrl}/`, {\n cpf: user.user.cpf,\n userId: user.user.userId,\n provider: \"xp\",\n month: itemToReport.month,\n year: itemToReport.year,\n type: (act === \"anual-report\") ? \"b3-anual\" : \"b3-gain\",\n sendEmail: sendEmail || mobileAction,\n isPro: false\n })\n .then(async (res) => {\n if (!res?.data?.status) {\n message.error(res?.data?.message)\n return;\n }\n })\n .catch(({ response }) =>\n message.error(response?.data?.message ?? errorMessage)\n )\n };\n\n const handleActionButton = (id: string) => {\n setAction(id);\n // if (!hasPlan) {\n // handlePlanModal();\n // } else {\n // setAction(id);\n // }\n };\n\n useEffect(() => {\n getHistoric();\n }, [getHistoric, year]);\n\n return (\n <ReportContainer>\n <div className=\"content\">\n <Typography.Title level={1}>Relatórios</Typography.Title>\n <Typography.Paragraph>\n Confira os relatórios{\" \"}\n {action !== \"anual-report\" ? \"auxiliares\" : \"anuais\"} para a\n declaração do seu IR na bolsa de valores.\n </Typography.Paragraph>\n\n {!action && (\n <div className=\"cards\">\n {cards.map((item) => (\n <Card\n id={item.id}\n key={item.id}\n disabled={item.id !== \"anual-report\" && loading}\n icon={\n (loading) && item.id === \"anual-report\" ? (\n <LoadingOutlined />\n ) : (\n item.icon\n )\n }\n onClick={() => !loading && handleActionButton(item.id)}\n >\n {item.id === \"irpf\" ? (\n <>\n <a\n {...(!isMobile() ? { target: \"_blank\" } : {})}\n href={\n !process.env.REACT_APP_NODE_ENV?.includes(\"dev\")\n ? `https://irpf.velotax.com.br/p/sso/${ssoToken}`\n : `https://irpfdev.velotax.com.br/p/sso/${ssoToken}`\n }\n >\n {\" \"}\n </a>\n {item.content}\n </>\n ) : (\n <>\n {item.content}\n {item.description && (\n <div className=\"description\">{item.description}</div>\n )}\n </>\n )}\n </Card>\n ))}\n </div>\n )}\n {!action && (\n <BackButton to=\"/xpinvestimentos/bolsa\" className=\"report-bolsa\" />\n )}\n {action && (\n <Container>\n <Content>\n <Typography.Paragraph>Selecione o ano:</Typography.Paragraph>\n {action !== \"anual-report\" && (\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n />\n )}\n <List\n loading={loading || downloading}\n dataSource={\n data?.filter(\n (item) =>\n action === \"anual-report\" ||\n item.year === year ||\n item.year === currentYear\n ) ?? []\n }\n itemLayout=\"horizontal\"\n renderItem={(item, index) => {\n const show2024Report = localStorage.getItem('show2024Report') === 'show';\n // if (item.year === 2024 && action === \"anual-report\" && !show2024Report) return <></>\n return (\n <List.Item\n actions={[\n <Button\n type=\"text\"\n size=\"large\"\n href={item.url}\n disabled={loadingLinks}\n onClick={() => {\n setItemToReport(item);\n if (isMobile()) {\n downloadAction(true);\n }\n else {\n setModalConfirm(true);\n }\n }}\n download={`Relatório-${item.year}-${zero(\n item.month\n )}.pdf`}\n >\n Baixar\n {loadingLinks ? (\n <LoadingOutlined size={16} />\n ) : (\n <RiDownloadCloudLine size={16} />\n )}\n </Button>,\n ]}\n >\n <Skeleton title={true} loading={item.loading} active>\n <List.Item.Meta\n title={\n action !== \"anual-report\"\n ? `${monthsExtended[item.month - 1]}`\n : `${item.year}`\n }\n />\n </Skeleton>\n </List.Item>\n )\n }}\n />\n <Button\n type=\"link\"\n size=\"large\"\n onClick={() => handleActionButton(\"\")}\n style={{ marginTop: \"1rem\" }}\n >\n Voltar\n </Button>\n </Content>\n </Container>\n )}\n {/* <Modal\n title=\"Informe de Rendimentos\"\n maskClosable={false}\n visible={!!infoModal}\n onCancel={() => {\n toggleModal(null);\n }}\n footer={false}\n >\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col span={24}>\n <MaterialButton\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n if (!loading && !downloading) {\n downloadAction({ ...(infoModal ?? {}), action: \"anual-report\" });\n }\n }}\n >\n {loading || downloading ? (\n <>\n <LoadingOutlined />\n {downloading ? \"Baixando\" : \"Gerando\"} informe\n </>\n ) : isMobile() ? (\n \"Enviar informe por email\"\n ) : (\n \"Baixar informe\"\n )}\n </MaterialButton>\n </Col>\n <Col xs={24} sm={12}>\n <MaterialButton\n fullWidth\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n disabled={loading || downloading}\n onClick={() => {\n if (!loading && !downloading) {\n navigate(\"/xpinvestimentos/bolsa-historic\");\n }\n }}\n >\n Ir para calculadora de DARF\n </MaterialButton>\n </Col>\n </Row>\n </Modal> */}\n <ModalConfirmMail\n closeFn={() => {setModalConfirm(false)}}\n visible={modalConfirm}\n action={(sendMail) => {\n downloadAction(sendMail);\n setModalConfirm(false);\n }}\n />\n </div>\n </ReportContainer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .ant-list {\n padding: 0;\n border-radius: 4px;\n background-color: var(--velotax-background-color-ghost);\n .ant-list-item {\n padding: 16px;\n &.error-border {\n border: 1px solid var(--ant-error-color);\n }\n :first-child {\n border-radius: 4px 4px 0 0;\n }\n :last-child {\n border-radius: 0 0 4px 4px;\n }\n }\n .error-border + .error-border {\n border-top: none;\n }\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .alert-icon {\n fill: var(--ant-error-color) !important;\n }\n\n .row-margin {\n margin-top: 24px;\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { Col, List, Row, Skeleton, Tooltip, Typography } from \"antd\";\nimport { Dispatch, SetStateAction, useEffect, useState } from \"react\";\nimport { AiOutlineDelete, AiOutlineInfoCircle } from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n PlusCircleOutlined,\n DownloadOutlined,\n} from \"@ant-design/icons\";\nimport { Container } from \"./styles\";\nimport { formatCurrency } from \"../../../../utils\";\nimport AntButton from \"../../../../components/Button\";\nimport { FormModal } from \"../../../../components/FormModal\";\nimport { AddTransactionGOVFormItemRows } from \"../../../../constants/darfBolsa\";\n\nexport interface OldTransactionsProps {\n changed: boolean;\n loadingPut: boolean;\n loadingGet: boolean;\n setLoadingPut: Dispatch<SetStateAction<boolean>>;\n setLoadingGet: Dispatch<SetStateAction<boolean>>;\n oldPositionEdit: any;\n oldPositionList: any[];\n showAddPositionModal: boolean;\n downloadOldTransactionsExcel: () => Promise<null | Blob>;\n setOldPositionEdit: Dispatch<SetStateAction<any>>;\n setShowAddPositionModal: Dispatch<SetStateAction<boolean>>;\n saveOldPositions: () => void;\n addOldPosition: (item: any) => void;\n editOldPosition: (item: any) => void;\n handleEditOldPosition: (item: any, index: number) => void;\n handleRemoveOldPosition: (item: any, index: number) => void;\n getOldTransactionsInit: () => void;\n}\n\nexport const OldTransactions: React.FC<OldTransactionsProps> = ({\n loadingGet,\n loadingPut,\n oldPositionList,\n downloadOldTransactionsExcel,\n setOldPositionEdit,\n setShowAddPositionModal,\n handleEditOldPosition,\n handleRemoveOldPosition,\n addOldPosition,\n editOldPosition,\n showAddPositionModal,\n oldPositionEdit,\n}) => {\n const [hasLendingPosition, setHasLendingPosition] = useState(false);\n const [downloading, setDownloading] = useState(false);\n\n useEffect(() => {\n if (oldPositionEdit?._id || oldPositionEdit?.id) {\n if (oldPositionEdit?.lendingSide) {\n setHasLendingPosition(true);\n } else {\n setHasLendingPosition(false);\n }\n }\n }, [oldPositionEdit]);\n\n async function handleDownloadOldTransactions() {\n setDownloading(true);\n const file = await downloadOldTransactionsExcel();\n if (file) {\n const blob = new Blob([file], { type: \"xlsx\" });\n const element = document.createElement(\"a\");\n element.href = URL.createObjectURL(blob);\n element.download = \"carteira_31-12-19.xlsx\";\n document.body.appendChild(element);\n element.click();\n element.remove();\n }\n setDownloading(false);\n }\n\n return (\n <Container>\n <Row justify=\"end\" align=\"top\" gutter={[16, 16]}>\n <Col flex={1} offset={0}>\n <Typography.Title style={{ justifySelf: \"center\" }} level={2}>\n Ativos em carteira\n </Typography.Title>\n </Col>\n <Col flex={1}>\n <Row justify=\"space-between\" align=\"middle\">\n {oldPositionList.length === 0 ? (\n <div />\n ) : (\n <Button\n size=\"small\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={oldPositionList.length === 0}\n startIcon={\n loadingPut || loadingGet || downloading ? (\n <LoadingOutlined />\n ) : (\n <DownloadOutlined />\n )\n }\n onClick={handleDownloadOldTransactions}>\n BAIXAR EXCEL\n </Button>\n )}\n <Button\n size=\"small\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n setOldPositionEdit({});\n setHasLendingPosition(false);\n setShowAddPositionModal(true);\n }}\n startIcon={\n loadingPut || loadingGet ? (\n <LoadingOutlined />\n ) : (\n <PlusCircleOutlined />\n )\n }>\n Adicionar Posição\n </Button>\n </Row>\n </Col>\n <Col span={24}>\n <List\n loading={loadingGet}\n itemLayout=\"horizontal\"\n dataSource={\n oldPositionList?.filter(\n (oldPosition) => !oldPosition.lendingSide\n ) ?? []\n }\n renderItem={(item, index) => (\n <List.Item\n className={item.price === 0 ? \"error-border\" : \"\"}\n actions={[\n ...(item.price === 0\n ? [\n <Tooltip title=\"Preencha o custo médio!\">\n <AntButton\n icon={\n <AiOutlineInfoCircle\n className=\"alert-icon\"\n size={20}\n />\n }\n type=\"text\"\n />\n </Tooltip>,\n ]\n : []),\n <AntButton\n type=\"text\"\n disabled={loadingPut}\n icon={<FaRegEdit />}\n onClick={() => handleEditOldPosition(item, index)}\n />,\n <AntButton\n type=\"text\"\n disabled={loadingPut}\n icon={<AiOutlineDelete />}\n onClick={() => handleRemoveOldPosition(item, index)}\n />,\n ]}>\n <Skeleton active title={false} loading={loadingGet}>\n <List.Item.Meta\n title={<div>{item.code}</div>}\n description={\n <>\n <div className=\"list-description\">\n <div>\n Quantidade: <strong>{item.quantity}</strong>\n </div>\n <div>\n Custo médio:{\" \"}\n <strong>{formatCurrency(item.price ?? 0)}</strong>\n </div>\n </div>\n </>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n </Col>\n </Row>\n <Row className=\"row-margin\" justify=\"end\" align=\"top\" gutter={[16, 16]}>\n <Col flex={1} offset={0}>\n <Typography.Title level={2}>Empréstimo de ativos</Typography.Title>\n </Col>\n <Col>\n <Button\n size=\"small\"\n color=\"secondary\"\n variant=\"contained\"\n startIcon={\n loadingPut || loadingGet ? (\n <LoadingOutlined />\n ) : (\n <PlusCircleOutlined />\n )\n }\n onClick={() => {\n setOldPositionEdit({});\n setHasLendingPosition(true);\n setShowAddPositionModal(true);\n }}>\n Adicionar Posição\n </Button>\n </Col>\n <Col span={24}>\n <List\n loading={loadingGet}\n itemLayout=\"horizontal\"\n dataSource={\n oldPositionList?.filter(\n (oldPosition) => oldPosition.lendingSide\n ) ?? []\n }\n renderItem={(item, index) => (\n <List.Item\n className={item.price === 0 ? \"error-border\" : \"\"}\n actions={[\n ...(item.price === 0\n ? [\n <Tooltip title=\"Preencha o custo médio!\">\n <AntButton\n icon={\n <AiOutlineInfoCircle\n className=\"alert-icon\"\n size={20}\n />\n }\n type=\"text\"\n />\n </Tooltip>,\n ]\n : []),\n <AntButton\n type=\"text\"\n disabled={loadingPut}\n icon={<FaRegEdit />}\n onClick={() => handleEditOldPosition(item, index)}\n />,\n <AntButton\n type=\"text\"\n disabled={loadingPut}\n icon={<AiOutlineDelete />}\n onClick={() => handleRemoveOldPosition(item, index)}\n />,\n ]}>\n <Skeleton active title={false} loading={loadingGet}>\n <List.Item.Meta\n title={<div>{item.code}</div>}\n description={\n <>\n <div className=\"list-description\">\n <div>\n Quantidade: <strong>{item.quantity}</strong>\n </div>\n <div>\n Custo médio:{\" \"}\n <strong>{formatCurrency(item.price ?? 0)}</strong>\n </div>\n </div>\n </>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n </Col>\n </Row>\n\n <FormModal\n add={addOldPosition}\n edit={editOldPosition}\n visibility={showAddPositionModal}\n rows={AddTransactionGOVFormItemRows(hasLendingPosition)}\n onCancel={() => {\n setShowAddPositionModal(false);\n setHasLendingPosition(false);\n }}\n title={\n oldPositionEdit?._id || oldPositionEdit?.id\n ? \"Editar ativo\"\n : \"Adicionar ativo\"\n }\n itemToEdit={\n oldPositionEdit.id || oldPositionEdit._id\n ? oldPositionEdit\n : undefined\n }\n />\n </Container>\n );\n};\n","import { Typography } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { BolsaManualData, Question } from \"./interfaces\";\nimport {\n OldTransactions,\n OldTransactionsProps,\n} from \"../Darf/Components/OldTransactions\";\n\nexport const validateBolsaManualData = (data: BolsaManualData) => {\n return true;\n};\n\nexport const questions: Question[] = [\n // {\n // id: \"possuiInvestimentosBolsa2019\",\n // title: \"Você tinha investimentos em 31/12/2019?\",\n // formItems: [\n // {\n // name: \"possuiInvestimentosBolsa2019\",\n // FormItem: () => (\n // <Form.Item\n // name=\"possuiInvestimentosBolsa2019\"\n // rules={validationFieldRequired}\n // >\n // <Radio.Group>\n // <Radio value={true}>Sim</Radio>\n // <Radio value={false}>Não</Radio>\n // </Radio.Group>\n // </Form.Item>\n // ),\n // },\n // ],\n // },\n {\n id: \"posicoesBolsa2019\",\n title: \"Complete sua carteira de 31/12/2019\",\n subTitle: (\n <>\n <InfoCircleOutlined />\n A B3 armazena dados somente a partir de 2020. Por isso, você precisará preencher manualmente o custo médio dos\n seus investimentos em 31/12/2019. Você pode encontrar essas informações na sua Declaração de Imposto de Renda de 2019/2020.\n </>\n ),\n children: (\n <Typography style={{ marginTop: \"32px\", textAlign: \"right\" }}>\n Lembre-se de clicar em finalizar para salvar seus dados\n </Typography>\n ),\n formItems: [\n {\n name: \"posicoesBolsa2019\",\n FormItem: ({ rest }) => (\n <OldTransactions {...(rest as OldTransactionsProps)} />\n ),\n },\n ],\n },\n];\n","import styled from \"styled-components\";\n\nexport const BolsaManualContainer = styled.div`\n height: 100%;\n overflow-y: hidden;\n .btn-preencher-pos2019 {\n margin-bottom: 3rem;\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .ant-collapse {\n border: none;\n\n .ant-collapse-item {\n margin-bottom: 8px;\n border-radius: 4px;\n background-color: var(--velotax-ghost-white);\n border: 2px solid var(--velotax-ghost-white);\n &.ant-collapse-item-active {\n .ant-collapse-header {\n border-radius: 4px 4px 0 0;\n background-color: var(--velotax-background-color);\n .ant-typography {\n color: var(--ant-primary-color);\n button {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n }\n &.ant-collapse-item-disabled {\n .ant-collapse-header {\n cursor: pointer;\n }\n }\n &.collapse-skip-btn {\n .ant-spin-nested-loading {\n width: 100%;\n }\n .ant-collapse-header {\n padding: 0;\n .collapse-skip-btn-content {\n padding: 24px 32px;\n }\n }\n }\n .ant-collapse-header {\n border-radius: 4px;\n padding: 24px 32px;\n background-color: var(--velotax-ghost-white);\n .ant-typography {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 1rem;\n font-weight: bold;\n line-height: 32px;\n color: var(--velotax-font-color-dark);\n & > div {\n display: flex;\n align-items: center;\n }\n button {\n display: inline-flex;\n height: 32px !important;\n svg {\n width: 20px;\n height: 20px;\n fill: var(--velotax-font-color-dark);\n }\n }\n .opcao-recomendada {\n padding: 2px 4px;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1rem;\n color: var(--white);\n white-space: nowrap;\n border-radius: 4px;\n display: flex;\n align-items: center;\n background-color: var(--ant-success-color);\n svg {\n margin-right: 4px;\n }\n }\n }\n .sub-title {\n font-size: 0.8125rem;\n color: var(--ant-primary-color);\n }\n }\n .ant-collapse-content {\n border: none;\n border-radius: 0 0 8px 8px;\n background-color: var(--velotax-background-color);\n .ant-collapse-content-box {\n padding: 16px 16px 32px;\n .ant-steps-item-title {\n margin-top: 0.25rem;\n /* font-size: 0.875rem; */\n line-height: 1.5rem;\n }\n .ant-btn {\n font-size: 14px;\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .ant-collapse {\n .ant-collapse-item {\n &.collapse-skip-btn {\n .ant-collapse-header {\n .collapse-skip-btn-content {\n padding: 8px 16px;\n .ant-typography {\n font-size: 0.95rem;\n line-height: 1.25rem;\n flex-direction: column;\n align-items: flex-start;\n }\n .sub-title {\n margin-top: 4px;\n font-size: 0.75rem;\n }\n }\n }\n }\n .ant-collapse-header {\n padding: 8px 16px;\n .ant-typography {\n font-size: 0.95rem;\n line-height: 1.5rem;\n flex-direction: column;\n align-items: flex-start;\n }\n }\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .income-report-uploader {\n height: auto;\n display: block;\n margin-bottom: 16px;\n\n .ant-upload {\n width: 100%;\n height: 200px;\n\n .upload-text-icon {\n height: 100%;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n svg {\n fill: var(--ant-primary-color);\n }\n\n .upload-text-desc {\n font-size: 14px;\n text-align: center;\n }\n }\n\n .loading-container {\n height: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n .anticon {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n\n svg {\n width: 100%;\n height: 100%;\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { Upload } from \"antd\";\nimport { UploadProps } from \"antd/lib/upload\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineCloudUpload } from \"react-icons/ai\";\nimport { Container } from \"./styles\";\n\nexport interface IUploadProps extends UploadProps {\n loading?: boolean;\n descText?: string;\n customText?: string;\n tabIndex?:number;\n}\n\nconst UploadVelotax: React.FC<IUploadProps> = ({\n loading,\n descText,\n disabled,\n customText = \"Arraste ou clique\",\n ...props\n}) => {\n return (\n <Container>\n <Upload\n disabled={loading || disabled}\n className=\"income-report-uploader\"\n {...props}\n >\n {loading ? (\n <div className=\"loading-container\">\n <LoadingOutlined />\n <span>Isso pode demorar alguns minutos, aguarde</span>\n </div>\n ) : (\n <div className=\"upload-text-icon\">\n <AiOutlineCloudUpload size={28} />\n {customText}\n {descText && <span className=\"upload-text-desc\">{descText}</span>}\n </div>\n )}\n </Upload>\n </Container>\n );\n};\n\nexport default UploadVelotax;\n","import { message } from \"antd\";\nimport { RcFile } from \"antd/lib/upload\";\nimport { UploadRequestOption as RcCustomRequestOptions } from \"rc-upload/lib/interface\";\nimport {\n createContext,\n Dispatch,\n SetStateAction,\n useContext,\n useState\n} from \"react\";\nimport apiIrpf2023 from '../services/apiIrpf2023';\nimport { useOldTransactions } from \"./OldTransactionsContext\";\n\ninterface IUploadDecContext {\n loading: boolean;\n loadingSkip: boolean;\n confirmarModal: boolean;\n beforeUpload: (file: RcFile) => boolean;\n customRequest: (params: RcCustomRequestOptions) => void;\n setConfirmarModal: Dispatch<SetStateAction<boolean>>;\n}\n\nconst UploadDecContext = createContext({} as IUploadDecContext);\n\nexport const UploadDecProvider: React.FC = ({ children }) => {\n const [loading, setLoading] = useState(false);\n const [loadingSkip] = useState(false);\n const [confirmarModal, setConfirmarModal] = useState(false);\n const {getOldTransactionsInit} = useOldTransactions();\n\n const beforeUpload = (file: RcFile) => {\n const nameSplitted = file.name.split(\".\");\n const isDec = nameSplitted[nameSplitted.length - 1].toLowerCase() === \"dec\";\n\n if (!isDec) {\n message.error(\"Você só pode fazer upload de arquivos .dec\");\n }\n\n return isDec;\n };\n\n const customRequest = ({ file }: RcCustomRequestOptions) => {\n const formData = new FormData();\n formData.append(\"file\", file);\n setLoading(true);\n\n apiIrpf2023\n .post(\"/receitaFederal/processarDec2019IRPF\", formData)\n .then(async () => {\n message.success(\"Arquivo .dec importado com sucesso!\");\n let interval: NodeJS.Timeout | null = null;\n if (loading) {\n\n interval = setInterval( ()=>{\n\n apiIrpf2023.get(`/receitaFederal/checkStatusRecuperarDecIRPF`).then( ({data})=>{\n if(data?.processamantoDec2019){\n setLoading(false);\n getOldTransactionsInit();\n\n return clearInterval(interval as unknown as NodeJS.Timeout);\n }\n })\n\n },2000);\n }else {\n if (interval) {\n clearInterval(interval);\n }\n }\n setLoading(false);\n \n })\n .catch((err:any) => {\n const errorMessage =\n err.reponse?.message?.error ||\n \"Não foi possivel importar o arquivo .dec!\";\n message.error(errorMessage);\n setLoading(false);\n });\n };\n\n return (\n <UploadDecContext.Provider\n value={{\n loadingSkip,\n beforeUpload,\n customRequest,\n loading,\n confirmarModal,\n setConfirmarModal\n }}\n >\n {children}\n </UploadDecContext.Provider>\n );\n};\n\nexport const useUploadDec = () => useContext(UploadDecContext);","export default __webpack_public_path__ + \"static/media/govbr.16bc87af.svg\";","import styled from \"styled-components\";\nimport GovBrIcon from \"../../assets/govbr.svg\";\n\nexport const Container = styled.div`\n min-height: 100%;\n padding: 64px 32px;\n background-color: var(--velotax-ghost);\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n background-color: var(--velotax-background-color);\n }\n`;\n\nexport const Content = styled.div`\n padding: 48px;\n width: fit-content;\n max-width: 720px;\n margin: 0 auto;\n border-radius: 16px;\n border: 1px solid var(--velotax-background-color-ghost);\n background-color: var(--velotax-background-color);\n\n h1 {\n display: flex;\n align-items: center;\n margin: 0 0 24px;\n font-size: 22px;\n line-height: 30px;\n font-weight: bold;\n position: relative;\n color: var(--velotax-font-color);\n\n .gov-logo {\n width: 64px;\n height: 40px;\n margin-left: 8px;\n display: inline-block;\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n background-image: url(${GovBrIcon});\n }\n\n button {\n display: inline-flex;\n height: 32px !important;\n svg {\n width: 20px;\n height: 20px;\n }\n }\n\n &::before {\n content: \"\";\n top: 0;\n width: 4px;\n left: -48px;\n height: 100%;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n\n h5 {\n margin-bottom: 24px;\n }\n\n a.ant-btn.ant-btn-primary.ant-btn-lg {\n padding-top: 6.4px !important;\n }\n\n div.ant-typography {\n font-size: 1rem;\n }\n\n .upload-dec-info {\n margin: 24px 0 16px;\n font-weight: 500;\n font-size: 1.125rem;\n line-height: 1.5rem;\n color: var(--ant-primary-color);\n svg {\n width: 20px;\n height: 20px;\n margin: 0 0 -2px 4px;\n fill: var(--ant-primary-color);\n }\n }\n\n .ant-divider {\n margin: 24px 0 0;\n }\n\n .skip-btn {\n padding: 0;\n margin: 0 0 -16px auto;\n svg {\n margin: 0;\n }\n }\n\n \n\n .ant-steps {\n margin-top: 24px;\n .ant-steps-item:nth-of-type(3),\n .ant-steps-item:nth-of-type(4) {\n .ant-steps-item-container {\n .ant-steps-item-content {\n padding-bottom: 48px;\n }\n }\n }\n \n .ant-steps-item {\n \n &.ant-steps-item-wait {\n .ant-steps-item-title {\n opacity: 0.8;\n }\n }\n &.ant-steps-item-active {\n .ant-steps-item-title {\n background-color: red;\n font-weight: 500;\n color: var(--velotax-font-color) !important;\n }\n }\n .ant-steps-item-container {\n .ant-steps-item-content {\n padding-bottom: 24px;\n .ant-steps-item-title {\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n border: none;\n border-radius: 0;\n padding: 32px 24px 96px;\n h1 {\n font-size: 1.2rem;\n letter-spacing: -0.35px;\n .gov-logo {\n width: 58px;\n height: 38px;\n margin-left: 6px;\n }\n button {\n margin-top: -4px;\n height: 40px !important;\n }\n }\n .skip-btn {\n bottom: 24px;\n font-size: 13px;\n position: fixed;\n margin: 0;\n }\n }\n`;\n\nexport const DecUploadContent = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n .dec-icon {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin: 0 0 16px;\n border-radius: 8px;\n color: var(--ant-primary-color);\n border: 2px solid var(--ant-primary-color);\n display: flex;\n position: relative;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n svg {\n margin-top: -4px;\n }\n &:before {\n content: \"\";\n height: 2px;\n bottom: 8px;\n position: absolute;\n width: calc(100% - 24px);\n background-color: var(--ant-primary-color);\n }\n }\n span.ant-typography {\n font-size: 16px;\n font-weight: 500;\n max-width: 320px;\n color: var(--ant-primary-color);\n }\n`;\n","import { createContext, useContext, useState } from \"react\";\n\nexport const today = new Date();\n\nconst year = today.getFullYear();\n\nconst anoCalendario = year - 1;\n\ninterface IYearContext {\n year: number;\n currentMonth: number;\n anoCalendario: number;\n changeYear: (year: number) => void;\n}\n\nconst YearContext = createContext<IYearContext>({} as IYearContext);\n\nexport const YearProvider: React.FC = ({ children }) => {\n const [Year, setYear] = useState(year);\n const [AnoCalendario, setAnoCalendario] = useState(anoCalendario);\n\n const changeYear = (year: number) => {\n setYear(year);\n setAnoCalendario(year - 1);\n };\n\n return (\n <YearContext.Provider\n value={{\n changeYear,\n year: Year,\n anoCalendario: AnoCalendario,\n currentMonth: today.getMonth()\n }}\n >\n {children}\n </YearContext.Provider>\n );\n};\n\nexport const useYear = () => useContext(YearContext);","import { useState } from \"react\";\nimport { Divider, Steps, Typography } from \"antd\";\nimport { AiOutlineArrowRight } from \"react-icons/ai\";\nimport { LoadingOutlined, QuestionCircleOutlined } from \"@ant-design/icons\";\nimport Button from \"../../components/Button\";\nimport { Container, Content } from \"./styles\";\nimport { useEcac } from \"../../contexts/EcacContext\";\nimport { useYear } from \"../../contexts/YearContext\";\nimport apiIrpf2023 from '../../services/apiIrpf2023';\nimport { useOldTransactions } from \"../../contexts/OldTransactionsContext\";\n\n\ninterface DecPrepreenchidaProps {\n successCallback?: () => void;\n setShowModalPrePreenchida: (p:boolean) => void;\n}\n\nexport const DecPrepreenchidaContent: React.FC<DecPrepreenchidaProps> = ({\n\n setShowModalPrePreenchida\n}) => {\n const [currentStep,setCurrentStep] = useState(0);\n const [loading, setLoading] = useState(true);\n\n const {getOldTransactionsInit} = useOldTransactions();\n \n const programLink = \n process.env.REACT_APP_NODE_ENV === \"development\"\n ? \"https://velotax-programas.s3.amazonaws.com/posicao-2019-dev/velotax.msi\"\n : \"https://velotax-programas.s3.amazonaws.com/posicao-2019/velotax.msi\";\n\n return (\n <Steps current={currentStep} direction=\"vertical\">\n <Steps.Step\n key=\"1\"\n title={\n <>\n <a\n {...({ target: \"_blank\" } )}\n rel=\"noreferrer\"\n href={programLink}\n onClick={ () => {\n setCurrentStep(1);\n setCurrentStep(2);\n setLoading(true);\n let interval: NodeJS.Timeout | null = null;\n if (loading) {\n\n interval = setInterval( ()=>{\n\n apiIrpf2023.get(`/receitaFederal/checkStatusRecuperarDecIRPF`).then( ({data})=>{\n if(data?.processamantoDec2019){\n setLoading(false);\n setShowModalPrePreenchida(false);\n\n getOldTransactionsInit();\n // window.location.reload();\n\n return clearInterval(interval as unknown as NodeJS.Timeout);\n }\n })\n\n },1000);\n }else {\n if (interval) {\n clearInterval(interval);\n }\n }\n }}\n >\n <strong><u>Clique aqui</u></strong>\n </a>{\" \"}\n {\"para baixar o arquivo de conexão\"}\n </>\n }\n />\n <Steps.Step key=\"2\" title=\"Instale o arquivo baixado no seu computador\" />\n <Steps.Step\n key=\"3\"\n icon={currentStep === 2 ? <LoadingOutlined /> : ''}\n title={\n <>\n Execute o atalho <strong>Velotax</strong> no seu desktop, faça\n o login no <strong>gov.br</strong> e aguarde alguns minutos.\n </>\n }\n />\n </Steps>\n )\n};\n\nexport const DecPrepreenchida = () => {\n const { year } = useYear();\n const { loadingEcac, handleSkipEcacStep, clearEcacInterval } =\n useEcac();\n\n return (\n <Container>\n <Content>\n <Typography.Title level={1}>\n Conecte sua conta <span className=\"gov-logo\" />\n <Button\n type=\"text\"\n size=\"large\"\n // onClick={openHelpDrawer}\n icon={<QuestionCircleOutlined />}\n />\n </Typography.Title>\n\n <Typography.Title level={5}>\n Você terá acesso a sua declaração de IRPF {year} pré-preenchida\n </Typography.Title>\n\n <Divider />\n <Button\n type=\"link\"\n size=\"large\"\n className=\"skip-btn\"\n onClick={async () => {\n clearEcacInterval();\n await handleSkipEcacStep();\n // updateUserEcac();\n }}\n loading={loadingEcac.skipStep}\n disabled={loadingEcac.postLogin}\n >\n Não utilizar o gov.br \n {!loadingEcac.skipStep && <AiOutlineArrowRight />}\n </Button>\n </Content>\n </Container>\n );\n};\n","import { useState } from \"react\";\nimport { Collapse, Spin, Typography, } from \"antd\";\nimport { QuestionCircleOutlined } from \"@ant-design/icons\";\nimport { AiOutlineArrowUp, AiOutlineCheck } from \"react-icons/ai\";\nimport { Container } from \"./styles\";\nimport { DrawerModal, DrawerModalProps } from \"../../components/DrawerModal\";\nimport Button from \"../../components/Button\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\nimport { useUploadDec } from \"../../contexts/UploadDecContext\";\nimport { DecUploadContent } from \"../DecPrepreenchida/styles\";\nimport { DecPrepreenchidaContent } from \"../DecPrepreenchida\";\nimport { UploadRequestOption as RcCustomRequestOptions } from \"rc-upload/lib/interface\";\ninterface PrePreenchidaModalProps extends DrawerModalProps {\n setShowModalPrePreenchida: (b: boolean) => void;\n}\n\nexport const PrePreenchidaModal: React.FC<PrePreenchidaModalProps> = ({\n visible,\n setShowModalPrePreenchida,\n ...props\n}) => {\n const [showModal, setShowModal] = useState(true);\n const [loadingSkip] = useState(false);\n const { loading, beforeUpload, customRequest } = useUploadDec();\n\n const onCancel = () => {\n setShowModal(false);\n };\n\n return (\n <DrawerModal\n destroyOnClose\n width=\"600px\"\n onCancel={onCancel}\n maskClosable={false}\n visible={visible && showModal}\n title=\"Preenchimento automático\"\n // closable={!(loadingEcac.loopStatus || loadingEcac.getStatus)}\n {...props}\n >\n <Container>\n <Typography.Paragraph>\n Você pode conectar a sua conta gov.br ou carregar o arquivo DEC da sua\n declaração de 2019/2020. Selecione uma das opções abaixo:\n </Typography.Paragraph>\n\n <Collapse accordion defaultActiveKey={\"gov.br\"}>\n <Collapse.Panel\n forceRender\n key=\"gov.br\"\n showArrow={false}\n collapsible={loadingSkip ? \"disabled\" : undefined}\n header={\n <Typography.Text>\n <div>\n <span style={{ fontWeight: \"bolder\" }}>\n Conecte sua conta gov.br\n </span>\n <Button\n type=\"text\"\n size=\"large\"\n disabled={loadingSkip}\n // icon={<QuestionCircleOutlined />}\n onClick={(e) => {\n e.stopPropagation();\n // openHelpDrawer();\n }}\n />\n </div>\n <div className=\"opcao-recomendada\">\n <AiOutlineCheck />\n Opção recomendada\n </div>\n </Typography.Text>\n }\n >\n <Spin spinning={loadingSkip}>\n <DecPrepreenchidaContent\n setShowModalPrePreenchida={setShowModalPrePreenchida}\n />\n </Spin>\n </Collapse.Panel>\n\n <Collapse.Panel\n key=\"dec\"\n showArrow={false}\n collapsible={loadingSkip ? \"disabled\" : undefined}\n header={\n <Typography.Text>\n <div>\n Carregue arquivo .DEC referente ao IR de 2019/2020\n <Button\n type=\"text\"\n size=\"large\"\n disabled={loadingSkip}\n icon={<QuestionCircleOutlined />}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n </div>\n </Typography.Text>\n }\n >\n <UploadVelotax\n accept=\".dec\"\n tabIndex={1}\n loading={loading}\n beforeUpload={beforeUpload}\n customRequest={(params: RcCustomRequestOptions<any>) => {\n customRequest(params);\n setShowModalPrePreenchida(false);\n }}\n >\n <DecUploadContent>\n <div className=\"dec-icon\">\n <AiOutlineArrowUp />\n </div>\n <Typography.Text>\n Arraste aqui sua declaração do ano passado (formato .DEC)\n </Typography.Text>\n </DecUploadContent>\n </UploadVelotax>\n </Collapse.Panel>\n </Collapse>\n </Container>\n </DrawerModal>\n );\n};\n","import styled, { css } from \"styled-components\";\n\nexport const Container = styled.div`\n height: calc(100vh - 64px);\n overflow: hidden;\n`;\n\nexport const QuestionContainer = styled.div<{ width?: string | number }>`\n display: flex;\n height: 100%;\n overflow-y: auto;\n align-items: center;\n flex-direction: column;\n h2 {\n font-size: 2rem;\n font-weight: 400;\n line-height: 2.5rem;\n position: relative;\n color: var(--velotax-text-color);\n margin: 64px auto 0;\n padding: 0 0 1rem;\n ${({ width }) =>\n width\n ? css`\n width: ${width} !important;\n `\n : \"\"}\n &::after {\n content: \"\";\n left: 0;\n bottom: 0;\n width: 100px;\n height: 2px;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n\n @media only screen and (max-width: 812px) {\n padding: 32px 0 0;\n h2 {\n width: 100% !important;\n padding: 0 24px 12px;\n margin: 0;\n &::after {\n left: 24px;\n }\n }\n }\n`;\n\nexport const Question = styled.div<{ width?: string | number }>`\n height: fit-content;\n padding: 32px;\n margin: 24px 0 96px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n border: 1px solid var(--velotax-background-color-ghost);\n ${({ width }) =>\n width\n ? css`\n width: ${width} !important;\n `\n : \"\"}\n h2 {\n font-size: 24px;\n padding-bottom: 12px;\n font-weight: 400;\n position: relative;\n color: var(--velotax-text-color);\n margin: 32px 0 0;\n &::after {\n content: \"\";\n left: 0;\n bottom: 0;\n width: 100px;\n height: 2px;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n @media only screen and (min-width: 1025px) {\n width: 48%;\n }\n @media only screen and (max-width: 1024px) {\n width: 72% !important;\n padding: 32px;\n h2 {\n &::before {\n left: -32px;\n }\n }\n }\n @media only screen and (max-width: 812px) {\n width: 100% !important;\n padding: 24px 24px 48px;\n border: none;\n border-radius: 0;\n margin: 24px 0 0;\n h2 {\n padding: 0 0 12px;\n &::before {\n left: -24px;\n }\n }\n .ant-descriptions {\n .ant-descriptions-item-content {\n font-size: 12px;\n }\n .ant-descriptions-item-label {\n width: 30%;\n font-size: 12px;\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 64px;\n }\n &.view {\n padding: 0;\n }\n\n .juridic-messages-container {\n opacity: 0.8;\n padding: 32px;\n margin: 0 auto;\n max-width: 600px;\n border-radius: 16px;\n\n .message {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 1rem;\n }\n\n p {\n font-size: 0.85rem;\n font-weight: 400;\n text-align: justify;\n line-height: 1.4;\n color: var(--velotax-font-color);\n margin-bottom: 0;\n margin-left: 0.5rem;\n\n i {\n font-weight: bold;\n color: var(--velotax-font-color);\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n &.view {\n padding: 0;\n }\n margin: 0 auto;\n max-width: 600px;\n border-radius: 16px;\n background-color: var(--velotax-background-color);\n h3 {\n display: flex;\n align-items: center;\n column-gap: 16px;\n color: var(--velotax-font-color);\n margin-bottom: 0;\n }\n .desc-label {\n display: flex;\n align-items: center;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n .desc-content {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n column-gap: 8px;\n svg {\n fill: var(--ant-primary-color);\n }\n span {\n align-self: center;\n }\n button {\n min-width: 32px;\n }\n }\n .ml-40 {\n margin-left: 40px;\n }\n .add {\n min-width: 128px;\n margin: 0 0 16px auto;\n }\n .ant-descriptions-item-label {\n width: 60%;\n }\n .ant-descriptions-item-content {\n text-align: center;\n }\n .ant-list.ant-list-split {\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .list-description {\n display: flex;\n flex-direction: column;\n }\n .min-darf-price {\n margin-top: 24px;\n display: flex;\n align-items: center;\n column-gap: 8px;\n }\n .text-center {\n display: block;\n text-align: center;\n }\n .ant-collapse-header {\n padding: 12px 0 !important;\n }\n .ant-collapse-content-box {\n padding: 16px 0 !important;\n }\n .ant-collapse\n > .ant-collapse-item\n > .ant-collapse-header\n .ant-collapse-arrow\n svg {\n transform: rotate(-90deg);\n }\n .ant-collapse-header-text {\n width: 100%;\n }\n .total-tax-header {\n width: calc(100% - 48px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n h3 {\n margin: 0;\n }\n }\n\n h5 {\n margin: 0px;\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n border-radius: 0;\n h3 {\n font-size: 18px;\n }\n .anticon.anticon-right.ant-collapse-arrow {\n top: 24px;\n }\n .desc-content {\n row-gap: 8px;\n flex-direction: column;\n button {\n width: 100%;\n }\n &.ml-40 {\n margin-left: 0;\n }\n }\n }\n`;\n\nexport const BolsaOperations = styled.div`\n display: grid;\n grid-template-columns: 2fr 1fr;\n border-radius: 8px;\n color: var(--velotax-font-color);\n background-color: var(--velotax-ghost);\n\n div.body-deducoes-tributarias {\n display: flex;\n flex-direction: column;\n padding: 0 8px;\n border-radius: 0 8px 8px 0;\n border: 1px solid var(--velotax-ghost);\n background-color: var(--velotax-background-color);\n span {\n height: 48px;\n display: flex;\n font-weight: 700;\n align-items: center;\n column-gap: 8px;\n }\n }\n\n div.header-deducoes-tributarias {\n display: flex;\n flex-direction: column;\n padding: 0 16px;\n border-radius: 8px 0 0 8px;\n background-color: var(--velotax-ghost);\n span {\n height: 48px;\n display: flex;\n font-weight: 700;\n align-items: center;\n column-gap: 8px;\n border-top: none;\n + span {\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n grid-template-columns: 1.6fr 1fr;\n span {\n font-size: 12px;\n button {\n max-width: 24px;\n min-width: 24px;\n }\n }\n }\n`;\n","import { Table } from \"antd\";\nimport { IoMdOptions } from \"react-icons/io\";\nimport Button from \"../../../components/Button\";\nimport { monthsExtended } from \"../../../utils\";\nimport { DrawerModal } from \"../../../components/DrawerModal\";\nimport { useB3Integration } from \"../../../contexts/B3IntegrationContext\";\n\nconst initialYear = 2020;\n\nexport const dayFilters: Array<any> = [];\nfor (let d = 1; d <= 31; d++) {\n dayFilters.push({\n text: d.toString(),\n value: d,\n });\n}\n\nconst yearFilters = Array.from(\n Array(new Date().getFullYear() + 1 - initialYear)\n)\n .map((y, i) => ({ value: initialYear + i, text: `${initialYear + i}` }))\n .reverse();\n\nexport const NotasHistoricoModal: React.FC = ({}) => {\n const {\n notas: {\n downloadNotaCorretagem,\n historicoNotasCorretagem,\n getHistoricoNotasCorretagem,\n setHistoricoNotasCorretagem,\n loadingHistoricoNotasCorretagem,\n showHistoricoNotasCorretagemModal,\n setShowHistoricoNotasCorretagemModal,\n },\n } = useB3Integration();\n\n return (\n <DrawerModal\n footer={null}\n title=\"Histórico de notas\"\n visible={showHistoricoNotasCorretagemModal}\n className=\"notas-corretagem-historico-modal\"\n onCancel={() => {\n setShowHistoricoNotasCorretagemModal(false);\n setHistoricoNotasCorretagem([]);\n }}\n >\n <Table\n rowKey=\"id\"\n dataSource={historicoNotasCorretagem}\n loading={loadingHistoricoNotasCorretagem}\n pagination={{\n defaultPageSize: 5,\n total: historicoNotasCorretagem.length,\n defaultCurrent: 1,\n simple: true,\n }}\n onChange={(pagination, filters) => {\n getHistoricoNotasCorretagem({ filters });\n }}\n locale={{\n filterReset: \"Limpar\",\n }}\n columns={[\n {\n align: \"center\",\n title: \"Dia\",\n dataIndex: \"day\",\n filterIcon: <IoMdOptions className=\"defaultIconSize\" />,\n filters: dayFilters,\n render: (status, item) => <>{status}</>,\n },\n {\n align: \"center\",\n title: \"Mês\",\n dataIndex: \"month\",\n filterIcon: <IoMdOptions className=\"defaultIconSize\" />,\n filters: monthsExtended.map((m, i) => ({\n text: m,\n value: i + 1,\n })),\n render: (status, item) => <>{status}</>,\n },\n {\n align: \"center\",\n title: \"Ano\",\n dataIndex: \"year\",\n filterIcon: <IoMdOptions className=\"defaultIconSize\" />,\n filters: yearFilters,\n render: (status, item) => <>{status}</>,\n },\n {\n align: \"center\",\n title: \"Data de criação\",\n dataIndex: \"createdAt\",\n render: (value, item) => <>{(new Date(value ?? Date.now())).toLocaleString('pt-br')}</>,\n },\n {\n className: \"actionColumn\",\n render: (status, item) => (\n <Button\n onClick={() =>\n downloadNotaCorretagem(\n item.path,\n item.month,\n item.year\n )\n }\n >\n Ver nota\n </Button>\n ),\n },\n ]}\n />\n </DrawerModal>\n );\n};\n","import { Modal } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n min-width: 40vw;\n max-width: 500px;\n border-radius: 16px;\n background-color: var(--velotax-background-color);\n\n h2 {\n font-size: 24px;\n position: relative;\n color: var(--velotax-font-color);\n &::before {\n content: \"\";\n position: absolute;\n width: 4px;\n top: 0;\n left: -32px;\n height: 100%;\n background-color: var(--ant-primary-color);\n }\n }\n h3 {\n font-size: 20px;\n display: flex;\n align-items: center;\n column-gap: 8px;\n color: var(--velotax-font-color);\n }\n\n .ant-list.ant-list-split {\n margin-top: 24px;\n padding: 0 0 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 8px;\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n }\n .list-description {\n display: flex;\n flex-direction: column;\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 128px;\n border-radius: 0;\n h2 {\n &::before {\n left: -24px;\n }\n }\n }\n`;\n\nexport const ConfirmModal = styled(Modal)`\n .p {\n font-size: 20px;\n strong {\n font-weight: 500;\n color: var(--ant-primary-color);\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 700px;\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n &.info {\n align-items: flex-start;\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.85;\n margin: 0 auto 2.5rem;\n svg {\n margin-top: 4px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n margin: 0 auto;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n /* .ant-list.ant-list-split {\n margin: 24px 0 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n } */\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n padding: 24px;\n border-radius: 0;\n /* .ant-list.ant-list-split {\n .ant-list-item-action {\n display: grid;\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n } */\n }\n`;\n\nexport const BottomAdvice = styled.div`\n margin-top: 40px;\n width: 700px;\n\n line-height: 24px;\n\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n padding: 24px;\n }\n`;\n\nexport const AttentionIconContainer = styled.div`\n position: relative;\n display: inline;\n margin-right: 3px;\n width: 14px;\n\n & svg {\n position: relative;\n top: 2px;\n }\n`;\n","import moment from \"moment\";\nimport { message } from \"antd\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { useAuth } from \"./AuthContext\";\nimport { errorMessage } from \"../utils\";\nimport apiExterior from \"../services/apiExterior\";\nimport { useBroker } from \"./BrokerContext\";\n\ntype LoadingOperation = \"get\" | \"put\" | \"delete\";\n\ntype Loading = {\n get: boolean;\n put: boolean;\n delete: boolean;\n};\n\ninterface Ativo {\n id: string;\n codigo: string;\n quantidade: number;\n dataCompra?: string;\n valorCompraUSDOrigemBRA?: number;\n valorCompraUSDOrigemEUA?: number;\n orderId: string;\n type: string;\n}\n\ninterface ITransferenciaCustodiaContext {\n ativo?: Ativo;\n ativos: Ativo[];\n loading: Loading;\n getAtivos: any;\n showFormModal: boolean;\n showDeleteModal: boolean;\n closeFormModal: () => void;\n closeDeleteModal: () => void;\n handleAdd: () => void;\n handleEdit: (item: Ativo, index: number) => void;\n handleRemove: (item: Ativo, index: number) => void;\n add: (item: Ativo) => void;\n edit: (item: Ativo) => void;\n remove: (item: Ativo) => void;\n saveAtivos: () => void;\n isInvalidItem: (item: Ativo) => boolean;\n}\n\nexport const TransferenciaCustodiaContext =\n createContext<ITransferenciaCustodiaContext>(\n {} as ITransferenciaCustodiaContext\n );\n\nexport const TransferenciaCustodiaProvider: React.FC = ({ children }) => {\n const { user } = useAuth();\n const { currentBroker } = useBroker();\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const [ativo, setAtivo] = useState<Ativo>();\n const [ativos, setAtivos] = useState<Ativo[]>([]);\n const [indexAtivo, setIndexAtivo] = useState(-1);\n const [redirected, setRedirected] = useState(false);\n const [showFormModal, setShowFormModal] = useState(false);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [loading, setLoading] = useState<Loading>({\n get: false,\n put: false,\n delete: false,\n });\n\n const isInvalidItem = (item: Ativo) =>\n !item.dataCompra ||\n (!item.valorCompraUSDOrigemBRA && !item.valorCompraUSDOrigemEUA);\n\n const handleLoading = (operation: LoadingOperation, value: boolean) => {\n setLoading((loading) => ({ ...loading, [operation]: value }));\n };\n\n const closeFormModal = () => {\n setShowFormModal(false);\n setAtivo(undefined);\n setIndexAtivo(-1);\n };\n\n const closeDeleteModal = () => {\n setShowDeleteModal(false);\n setAtivo(undefined);\n setIndexAtivo(-1);\n };\n\n const handleAdd = () => {\n setShowFormModal(true);\n };\n\n const handleEdit = (item: Ativo, index: number) => {\n setShowFormModal(true);\n setIndexAtivo(index);\n const dataCompra = !item.dataCompra\n ? \"\"\n : item.dataCompra.includes(\"/\")\n ? item.dataCompra\n : moment.utc(item.dataCompra)?.format(\"DD/MM/YYYY\");\n setAtivo({\n ...item,\n dataCompra,\n });\n };\n\n const handleRemove = (item: Ativo, index: number) => {\n setShowDeleteModal(true);\n setIndexAtivo(index);\n setAtivo(item);\n };\n\n const getAtivos = useCallback(() => {\n handleLoading(\"get\", true);\n apiExterior\n .get(\"/xpinvestimentos/custodia\")\n .then(({ data }) => {\n setAtivos(data || []);\n closeFormModal();\n })\n .catch(() => {\n message.error(errorMessage);\n })\n .finally(() => {\n handleLoading(\"get\", false);\n });\n }, []);\n\n const saveAtivos = () => {\n handleLoading(\"put\", true);\n apiExterior\n .post(\"/xpinvestimentos/custodia\", ativos)\n .then(({ data }) => {\n setAtivos(data ?? []);\n navigate(\"/xpinvestimentos/exterior-historic\");\n })\n .catch(() => {\n message.error(errorMessage);\n })\n .finally(() => {\n handleLoading(\"put\", false);\n });\n };\n\n const add = (item: Ativo) => {\n setAtivos((ativos) => [...ativos, item]);\n closeFormModal();\n };\n\n const edit = (item: Ativo) => {\n setAtivos((ativos) =>\n ativos.map((ativo, index) =>\n index === indexAtivo ? { ...item, type: ativo.type } : ativo\n )\n );\n closeFormModal();\n };\n\n const remove = () => {\n setAtivos((ativos) =>\n ativos.filter((ativo, index) => index !== indexAtivo)\n );\n closeDeleteModal();\n };\n\n useEffect(() => {\n if (\n !redirected &&\n pathname.includes(\"exterior\") &&\n ativos.filter((item: Ativo) => isInvalidItem(item)).length > 0\n ) {\n navigate(\"/xpinvestimentos/transferencia-custodia\");\n setRedirected(true);\n }\n }, [pathname, navigate, ativos, redirected]);\n\n useEffect(() => {\n if (user.user && currentBroker.useTransferenciaCustodia) {\n getAtivos();\n }\n }, [user.user, currentBroker.useTransferenciaCustodia, getAtivos]);\n\n return (\n <TransferenciaCustodiaContext.Provider\n value={{\n ativo,\n ativos,\n add,\n getAtivos,\n edit,\n remove,\n loading,\n handleAdd,\n handleEdit,\n handleRemove,\n showFormModal,\n showDeleteModal,\n closeFormModal,\n closeDeleteModal,\n saveAtivos,\n isInvalidItem,\n }}\n >\n {children}\n </TransferenciaCustodiaContext.Provider>\n );\n};\n\nexport const useTransferenciaCustodia = () =>\n useContext(TransferenciaCustodiaContext);\n","import { message } from \"antd\";\nimport { useRef, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Upload, { RcFile } from \"antd/lib/upload\";\nimport {\n UploadFile,\n UploadFileStatus,\n UploadProps,\n} from \"antd/lib/upload/interface\";\nimport apiBolsa from \"../../../services/apiBolsa\";\nimport apiExterior from \"../../../services/apiExterior\";\nimport { useTransferenciaCustodia } from \"../../../contexts/TransferenciaCustodiaContext\";\n\nconst isValidFile = (file: UploadFile) => file.type === \"application/pdf\";\nconst sameNameFile = (file: UploadFile, files: UploadFile[]) =>\n files.findIndex((item) => item.name === file.name) >= 0;\n\nexport const useNotasCorretagem = () => {\n const navigate = useNavigate();\n const sameNameFiles = useRef<string[]>([]);\n const [loadingSend, setLoadingSend] = useState(false);\n const [notas, setNotas] = useState<UploadFile<any>[]>([]);\n const [showNotasCorretagemModal, setShowNotasCorretagemModal] =\n useState(false);\n\n const { getAtivos } = useTransferenciaCustodia();\n\n const beforeUploadNota = (file: RcFile) => {\n if (!isValidFile(file)) {\n message.error(\"Você só pode fazer upload de arquivos pdf\");\n return Upload.LIST_IGNORE;\n }\n if (sameNameFile(file, notas)) {\n sameNameFiles.current.push(file.name);\n message.error(\"Este arquivo já foi adicionado\");\n return Upload.LIST_IGNORE;\n }\n };\n\n const onChangeNotas = ({\n file,\n fileList,\n }: {\n file: UploadFile;\n fileList: UploadFile[];\n }) => {\n if (file && file.status === \"removed\") return;\n if (!isValidFile(file)) return;\n if (sameNameFiles.current.includes(file.name)) {\n sameNameFiles.current = sameNameFiles.current.filter(\n (name) => name !== file.name\n );\n return;\n }\n setNotas(\n fileList\n .filter((file) => file.status !== \"removed\")\n .map((file) => ({ ...file, status: \"done\" as UploadFileStatus }))\n );\n };\n\n const onRemoveNota = (file: UploadFile) => {\n setNotas((notas) => notas.filter((nota) => nota.uid !== file.uid));\n };\n\n const sendNotas = () => {\n const formData = new FormData();\n notas.forEach((nota) => {\n formData.append(\"files\", nota.originFileObj as File);\n });\n setLoadingSend(true);\n apiBolsa\n .post(\"/brokerage-notes/read\", formData)\n .then((response) => {\n if (response.status === 200) {\n message.success(\"Informações extraÃdas com sucesso\");\n navigate(\"/xpinvestimentos/bolsa-historic\");\n } else {\n message.info(\"Informações estão sendo extraÃdas e em breve sua carteira será atualizada.\");\n navigate(\"/xpinvestimentos/bolsa-historic\");\n }\n })\n .catch((err) => {\n const errorMessage =\n err.reponse?.message?.error || \"Não foi possivel extrair informações\";\n message.error(errorMessage);\n })\n .finally(() => {\n setLoadingSend(false);\n });\n };\n\n const sendNotasCustodyTransfer = (setLoadingSend: any, setShowNotasCorretagemModal: any) => {\n const formData = new FormData();\n notas.forEach((nota) => {\n formData.append(\"files\", nota.originFileObj as File);\n });\n setLoadingSend(true);\n apiExterior\n .post(\"/xpinvestimentos/custodia/notes\", formData)\n .then((response) => {\n switch (response.status) {\n case 200:\n message.success(\"Informações extraÃdas com sucesso\");\n break;\n default:\n message.info(\"Algumas informações levarão algum tempo até serem completamentes extraÃdas, por favor aguarde alguns minutos.\");\n }\n })\n .catch((err) => {\n const errorMessage =\n err.reponse?.message?.error || \"Não foi possivel extrair informações\";\n message.error(errorMessage);\n })\n .finally(() => {\n getAtivos();\n setShowNotasCorretagemModal(false);\n setLoadingSend(false);\n });\n };\n\n const uploadProps: UploadProps = {\n fileList: notas,\n multiple: true,\n listType: \"text\",\n accept: \"application/pdf\",\n onRemove: onRemoveNota,\n onChange: onChangeNotas,\n beforeUpload: beforeUploadNota,\n customRequest: () => {},\n showUploadList: {\n showRemoveIcon: true,\n showPreviewIcon: false,\n showDownloadIcon: false,\n },\n };\n\n return {\n sendNotas,\n loadingSend,\n sendNotasCustodyTransfer,\n uploadProps,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n };\n};\n","import { UserPlanEnum } from \"../../constants/plans\";\nimport { HasPlan } from \"../../contexts/AuthContext\";\n\nexport const planos = [\n {\n type: UserPlanEnum.VELOTAX_MAIN_BASIC,\n name: \"Basic\",\n price: 19.9,\n originalPrice: 19.9,\n installments: 12,\n for: \"Pra quem começou a investir agora\",\n includes: \"Basic inclui:\",\n benefits: [\n \"Cálculos automáticos de IR\",\n \"Emissão de DARF do mês corrente\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_PRO,\n name: \"Premium\",\n price: 59.9,\n originalPrice: 59.9,\n installments: 12,\n for: \"Pra quem investe com maior frequência\",\n includes: \"Tudo do basic, mais:\",\n benefits: [\n \"DARFs retroativos ilimitados\",\n \"Carteira de investimentos atualizada\",\n \"Notificações de dividendos\",\n \"Isentômetro de impostos\",\n \"Informes de rendimento em PDF\",\n ],\n },\n {\n type: UserPlanEnum.VELOTAX_MAIN_CONCIERGE,\n name: \"Concierge\",\n price: 79.9,\n originalPrice: 79.9,\n installments: 12,\n for: \"Pra quem não quer ter nenhum trabalho\",\n includes: \"Tudo do Premium, mais:\",\n benefits: [\n \"Especialista dedicado para você\",\n \"DARFs revisadas por profissional\",\n \"Contato por WhatsApp exclusivo\",\n ],\n popular: true,\n },\n];\n\nexport enum UserPlanUpgradeEnum {\n BASIC_TO_PRO = \"BASIC_TO_PRO\",\n BASIC_TO_CONCIERGE = \"BASIC_TO_CONCIERGE\",\n PRO_TO_CONCIERGE = \"PRO_TO_CONCIERGE\",\n}\n\nexport const planUpgrade = {\n [UserPlanUpgradeEnum.BASIC_TO_PRO]: 40,\n [UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]: 60,\n [UserPlanUpgradeEnum.PRO_TO_CONCIERGE]: 20,\n};\n\nexport const getPlanPrice = (\n plan: { price: number; type: UserPlanEnum },\n hasPlan: false | HasPlan\n) =>\n !hasPlan\n ? plan?.price\n : hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.PRO_TO_CONCIERGE]\n : !hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_PRO]\n : !hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? planUpgrade[UserPlanUpgradeEnum.BASIC_TO_CONCIERGE]\n : plan?.price;\n","import { Typography } from \"antd\";\nimport {\n RiMoneyDollarCircleLine,\n RiHandCoinLine,\n RiFileSearchLine,\n} from \"react-icons/ri\";\n\nexport const cards = [\n // {\n // id: \"irpf\",\n // icon: (\n // <AiOutlineFileSearch\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // content: (\n // <Typography>\n // Declaração IRPF\n // <br />\n // 2023 no Velotax\n // </Typography>\n // ),\n // },\n {\n id: \"anual-report\",\n icon: (\n <RiFileSearchLine\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n content: <Typography>Relatórios anuais</Typography>,\n description: (\n <Typography>\n Relatório auxiliar para preenchimento da DIRPF\n </Typography>\n ),\n },\n {\n id: \"gain\",\n icon: (\n <RiMoneyDollarCircleLine\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n content: <Typography>INFORMES DE GANHO DE CAPITAL</Typography>,\n description: (\n <Typography>\n Relatórios auxiliares para acompanhamento do ganho de capital (GCAP)\n </Typography>\n ),\n },\n {\n id: \"income\",\n icon: (\n <RiHandCoinLine\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n content: <Typography>INFORMES DE DIVIDENDOS</Typography>,\n description: (\n <Typography>\n Relatórios auxiliares para acompanhamento dos dividendos recebidos no\n exterior (carnê-leão)\n </Typography>\n ),\n },\n];\n","import styled from \"styled-components\";\n\nexport const ReportContainer = styled.div`\n height: 100%;\n display: flex;\n padding: 64px 32px;\n\n & > .content {\n margin: 0 auto;\n width: 700px;\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h3 {\n display: flex;\n align-items: center;\n column-gap: 16px;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n }\n\n div.ant-typography {\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n }\n\n .ant-typography.destak {\n margin: 48px 0;\n display: block;\n font-weight: 700;\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color);\n padding-left: 16px;\n border-left: 4px solid var(--ant-primary-color);\n }\n\n .cards {\n margin: 32px 0 0;\n padding-bottom: 32px;\n width: 100%;\n display: grid;\n row-gap: 1rem;\n column-gap: 1rem;\n grid-template-columns: repeat(2, 1fr);\n\n & > div {\n width: 100%;\n }\n\n .card-antd {\n position: relative;\n\n a {\n top: 0;\n left: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n color: var(--velotax-font-color);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n height: auto;\n padding: 24px 0 0;\n\n & > .content {\n width: 100%;\n h1 {\n width: 100%;\n padding: 0 24px 12px;\n margin: 0 auto 1.5rem;\n :after {\n left: 24px;\n }\n }\n\n & > div.ant-typography {\n padding: 0 24px;\n }\n }\n\n .cards {\n width: 100%;\n padding: 0 24px;\n margin: 32px 0;\n grid-template-columns: repeat(2, 1fr);\n\n & > div {\n width: auto;\n height: 240px;\n }\n }\n }\n`;\n\nexport const Container = styled.div`\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 700px;\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n &.info {\n align-items: flex-start;\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.85;\n margin: 0 auto 2.5rem;\n svg {\n margin-top: 4px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .ant-list.ant-list-split {\n margin: 24px 0 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li > button {\n font-size: 16px;\n color: var(--ant-primary-color);\n }\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n font-size: 16px;\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n .historic-month-status {\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 0;\n color: var(--black);\n display: flex;\n &.payed,\n &.regular {\n background-color: var(--ant-success-color);\n }\n &.pending {\n background-color: var(--ant-error-color);\n }\n &.not-payed {\n background-color: var(--ant-warning-color);\n }\n }\n .ant-btn.ant-btn-text {\n color: var(--ant-primary-color);\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 32px;\n border-radius: 0;\n width: 100%;\n .ant-list.ant-list-split {\n .ant-list-item-action {\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n }\n }\n`;\n","import { RiDownloadCloudLine } from \"react-icons/ri\";\nimport { Button as MaterialButton } from \"@mui/material\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { Link, useLocation, useNavigate } from \"react-router-dom\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n List,\n message,\n Modal,\n Row,\n Select,\n Skeleton,\n Typography,\n} from \"antd\";\nimport { cards } from \"./items\";\nimport { Card } from \"../Exterior/Cards\";\nimport Button from \"../../components/Button\";\nimport { Page } from \"../../constants/brokers\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { ReportContainer, Container, Content } from \"./styles\";\nimport {\n download,\n errorMessage,\n getInitialYear,\n isMobile,\n monthsExtended,\n zero,\n} from \"../../utils\";\nimport apiExterior from \"../../services/apiExterior\";\nimport { ModalConfirmMail } from \"../../components/ModalConfirmMail\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { useWebSocket } from \"../../contexts/Notification.context\";\nimport { AiOutlineLock } from \"react-icons/ai\";\nimport AntButton from \"../../components/Button\";\n\ninterface ReportProps {\n item: Page;\n}\n\nexport const ReportAlertTitle = (\n <Typography\n style={{\n fontSize: \"14px\",\n display: \"flex\",\n columnGap: \"8px\",\n lineHeight: \"18px\",\n alignItems: \"flex-start\",\n }}\n >\n <InfoCircleOutlined style={{ fontSize: \"16px\", marginTop: \"2px\" }} />{\" \"}\n <span>\n Os relatórios estão disponÃveis somente no plano premium.{\" \"}\n <strong>Contrate o seu plano</strong>\n </span>\n </Typography>\n);\n\nexport const ReportExterior: React.FC<ReportProps> = ({ item }) => {\n const navigate = useNavigate();\n const {\n showUserPlanModal,\n userPlanModal,\n ssoToken,\n hasPlan,\n hasPermissionExteriorPlanos,\n hasPermissionGeneral,\n user,\n updateUserInfo\n } = useAuth();\n const today = new Date();\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const [initialYear, setInitialYear] = useState(currentYear);\n window.history.replaceState({}, document.title);\n\n const { currentPage } = useBroker();\n\n const [action, setAction] = useState<string>('anual-report');\n //const [action, setAction] = useState<string>();\n\n const [data, setData] = useState<any[]>();\n const [infoModal, toggleModal] = useState(null);\n const [loading, setLoading] = useState(false);\n const [loadingError, setLoadingError] = useState(true);\n const { report, setReport } = useWebSocket();\n\n const [loadingLinks] = useState(false);\n const [year, setYear] = useState(initialYear);\n\n const [reportDisabled, setReportDisabled] = useState<boolean>(false);\n const [modalConfirm, setModalConfirm] = useState(false);\n const [itemToReport, setItemToReport] = useState<any>();\n const historicFeature = item.features[0];\n const downloadFeature = item.features[1];\n // const sendEmailFeature = item.features[2];\n const transactionsFeature = item.features[3];\n const darfFeature = item.features[4];\n\n const yearOptions = Array.from(Array(initialYear - 2020 + 1))\n .map((y, i) => ({\n value: 2020 + i,\n label: `${2020 + i}`,\n }))\n .reverse();\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n const getHistoric = useCallback(() => {\n if (!action) return;\n if (action === \"anual-report\")\n return setData(\n Array.from(Array(new Date().getFullYear() - 2022))\n .map((y, i) => ({\n year: 2022 + i,\n label: `${2022 + i}`,\n }))\n .reverse()\n );\n\n setLoading(true);\n (currentPage?.api || apiBolsa)\n .get(`${historicFeature.apiUrl}/${action || \"gain\"}`, {\n params: { year },\n })\n .then((response) => {\n const data = (response.data ?? []).reverse();\n setData(data);\n // getDowloadLinks(data, action || \"gain\");\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n }, [historicFeature, year, currentPage, action /*, getDowloadLinks*/]);\n\n useEffect(()=> {\n if (report) {\n const mobileAction = isMobile()\n if (!mobileAction) {\n download(report);\n }\n toggleModal(null);\n setLoading(false);\n setReport(\"\");\n }\n }, [report])\n \n const downloadAction = (sendEmail: boolean): Promise<void> => {\n const act = itemToReport?.action || action;\n setLoading(true);\n const mobileAction = isMobile();\n\n if (mobileAction) {\n message.info(\"Preparando seu relatório.\");\n } else {\n message.info(\"Iniciando download do seu relatório.\");\n }\n\n return apiBolsa\n .post(`${downloadFeature.apiUrl}/`, {\n cpf: user.user.cpf,\n userId: user.user.userId,\n provider: \"xp\",\n month: itemToReport.month,\n year: itemToReport.year,\n type: (act === \"anual-report\") ? \"ext-anual\" : \"\",\n sendEmail: sendEmail || mobileAction,\n isPro: false\n })\n .then((res) => {\n if (!res?.data?.status) {\n message.error(res?.data?.message)\n return;\n }\n })\n .catch(({ response }) =>\n message.error(response?.data?.message ?? errorMessage)\n )\n };\n\n const downloadDarf = async (data: any) => {\n setLoading(true);\n\n (currentPage?.api || apiBolsa).post(`${darfFeature.apiUrl}`, data)\n .then((res) => {\n if (!res?.data?.darfUrl ) {\n return message.error(\"Houve um erro ao baixar seu relatório!\")\n }\n download(res.data.darfUrl);\n message.success(\"Relatório emitido com sucesso\");\n })\n .catch(({ response }) =>\n message.error(response?.data?.message)\n )\n .finally(() => {\n setLoading(false);\n });\n };\n\n const handlePlanModal = () => {\n showUserPlanModal(!userPlanModal, ReportAlertTitle);\n };\n\n const checkDarf = (record: any) => {\n setLoading(true);\n (currentPage?.api || apiBolsa).get(`${transactionsFeature.apiUrl}`, { params: { year: record.year} })\n .then((res) => {\n const darf = res.data.find((d: any)=> {\n if (record?.month == d?.month) return d;\n })\n if (!darf || !darf?._id) {\n message.info(\"Cliente não possui relatório para este mês.\");\n setLoading(false);\n return;\n }\n delete darf?.transactions;\n const data = {\n ...darf,\n year: record.year,\n month: record.month,\n name: user?.user?.name,\n memoriaCalculo: [],\n justSave: false,\n payed: false,\n noSendMail: true,\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n };\n setLoading(false);\n downloadDarf(data);\n })\n .catch(({ response }) => {\n const { data, status } = response;\n if (status === 401) message.error(data?.message);\n setLoading(false);\n });\n }\n\n const handleActionButton = (id: string) => {\n setAction(id);\n switch (id) {\n case \"anual-report\":\n case \"income\":\n setYear(2023);\n setInitialYear(2023);\n break;\n case \"gain\":\n setYear(2024);\n setInitialYear(2024);\n break;\n }\n };\n\n const handleActionButtonBack = (id: any) => {\n setAction(id);\n };\n\n const getErrors = () => {\n apiExterior\n .get(`/transaction/hasError`, { params: { notified: true } })\n .then((res: any) => {\n setReportDisabled((res?.data?.error?.errorDates || []).length > 0)\n })\n .catch(() => {\n console.log(\"Erro no error\");\n })\n .finally(() => setLoadingError(false))\n }\n\n useEffect(() => {\n getErrors()\n }, [])\n\n useEffect(() => {\n getHistoric();\n }, [getHistoric, year]);\n\n return (\n <ReportContainer>\n <div className=\"content\">\n <Typography.Title level={1}>Relatórios</Typography.Title>\n {action == \"anual-report\" &&\n <Typography.Paragraph>\n Confira os relatórios anuais de operações no\n exterior para a declaração do seu IR.\n A sua declaração de IRPF pré-preenchida com as informações da XP está\n disponÃvel.\n </Typography.Paragraph>\n }\n\n {loadingError ? <LoadingOutlined /> : reportDisabled ?\n <div style={{width: '100%', display: 'flex', marginBottom: '1rem', padding: isMobile() ? '0 24px' : ''}}>\n <Typography.Text style={{fontSize: isMobile() ? '14px' : '16px'}}>\n Não foi possÃvel carregar seu relatório. Verifique se você preencheu o custo médio de compra para os seus ativos de <Link to='/xpinvestimentos/transferencia-custodia'>Transferência de Custódia</Link>.\n </Typography.Text>\n </div>\n : !action && (\n <div className=\"cards\">\n {cards.map((item) => (\n <Card\n id={item.id}\n key={item.id}\n disabled={\n loading ||\n (hasPermissionExteriorPlanos && item.id !== \"anual-report\")\n }\n icon={loading ? <LoadingOutlined /> : item.icon}\n onClick={() => {\n if (!hasPlan && !hasPermissionGeneral) {\n return navigate(\"/planos\");\n }\n\n // if (user?.user?.userPlanInfoVelotax?.type?.includes('BASIC') ||\n // user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.XP_BASIC ||\n // user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) {\n // return navigate(\"/planos\");\n // }\n\n !loading && handleActionButton(item.id)\n }}\n >\n {item.id === \"irpf\" ? (\n <>\n <a\n {...(!isMobile() ? { target: \"_blank\" } : {})}\n href={\n !process.env.REACT_APP_NODE_ENV?.includes(\"dev\")\n ? `https://irpf.velotax.com.br/p/sso/${ssoToken}`\n : `https://irpfdev.velotax.com.br/p/sso/${ssoToken}`\n }\n >\n {\" \"}\n </a>\n {item.content}\n </>\n ) : (\n <>\n {item.content}\n {item.description && (\n <div className=\"description\">{item.description}</div>\n )}\n </>\n )}\n </Card>\n ))}\n </div>\n )}\n {!action && (\n <BackButton\n to=\"/xpinvestimentos/exterior\"\n className=\"report-exterior\"\n />\n )}\n {action && (\n <Container>\n <Content>\n <Typography.Paragraph>Selecione o ano:</Typography.Paragraph>\n {action !== \"anual-report\" && (\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n )}\n <List\n loading={loading}\n dataSource={\n data?.filter(\n (item) =>\n action === \"anual-report\" ||\n item.year === year ||\n item.year === currentYear\n ) ?? []\n }\n itemLayout=\"horizontal\"\n renderItem={(item, index) => {\n // if(item.year === 2024 && action === \"anual-report\") return <></>\n if (item.year === 2025 && action === \"anual-report\") return <></>\n return <List.Item\n actions={[\n <Button\n type=\"text\"\n size=\"large\"\n href={item.url}\n disabled={loadingLinks}\n onClick={\n () =>\n {\n if (!hasPlan.premium && !hasPlan.concierge && item.year === 2024) return;\n toggleModal(item);\n setItemToReport(item);\n }\n }\n download={`Relatório-${item.year}-${zero(\n item.month\n )}.pdf`}\n >\n {!hasPlan.premium && !hasPlan.concierge && item.year === 2024 ? '' : 'Baixar'}\n {loadingLinks ? (\n <LoadingOutlined size={16} />\n ) : (\n <RiDownloadCloudLine size={16} />\n )}\n {(!hasPlan.premium && !hasPlan.concierge) && item.year === 2024 && <div style={{position: 'relative', right: '-30px'}}><AntButton\n type=\"primary\"\n className=\"btn-premium\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n }}\n >\n PREMIUM \n </AntButton></div>}\n \n </Button>,\n ]}\n >\n <Skeleton title={true} loading={item.loading} active>\n <List.Item.Meta\n title={\n action !== \"anual-report\"\n ? `${monthsExtended[item.month - 1]}`\n : `${item.year}`\n }\n />\n </Skeleton>\n </List.Item>\n }}\n />\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => navigate('/xpinvestimentos/exterior')}\n style={{ marginTop: \"0.5rem\" }}\n >\n Voltar\n </Button>\n </Content>\n </Container>\n )}\n <Modal\n title=\"Aviso\"\n maskClosable={true}\n visible={!!infoModal}\n onCancel={() => {\n toggleModal(null);\n }}\n footer={\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col span={24}>\n <MaterialButton\n fullWidth\n size=\"large\"\n color=\"secondary\"\n disabled={loading}\n variant=\"contained\"\n onClick={() => {\n if (isMobile()) {\n downloadAction(true);\n }\n else {\n setModalConfirm(true);\n }\n }}\n >\n {isMobile() ? 'Enviar informe por email' : 'Continuar'}\n </MaterialButton>\n </Col>\n <Col xs={24} sm={12}>\n <MaterialButton\n fullWidth\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n disabled={loading}\n onClick={() => {\n navigate(\"/xpinvestimentos/exterior-historic\");\n }}\n >\n Ir para calculadora de DARF\n </MaterialButton>\n </Col>\n </Row>\n }\n >\n <Typography.Paragraph style={{ marginTop: \"-24px\" }}>\n <strong>\n Caso você tenha realizado operações de venda de ativos ou recebido\n cupom de bonds em {year},\n </strong>{\" \"}\n certifique-se de que todos os meses estejam com a situação \"Regular\"\n na Calculadora de DARF.\n </Typography.Paragraph>\n </Modal>\n <ModalConfirmMail\n closeFn={() => setModalConfirm(false)}\n visible={modalConfirm}\n action={(sendMail) => {\n downloadAction(sendMail);\n setModalConfirm(false);\n }}\n />\n </div>\n </ReportContainer>\n );\n};\n","import styled from \"styled-components\";\nimport { DrawerModal } from \"../../components/DrawerModal\";\n\nexport const ModalStyled = styled(DrawerModal)`\n &.ant-modal {\n div.ant-modal-content {\n background-color: var(--white);\n .ant-modal-close {\n top: 0;\n right: 0;\n }\n .ant-modal-close-icon {\n color: var(--ant-primary-color);\n }\n .ant-modal-header {\n padding: 48px 64px 24px 48px;\n background-color: var(--white);\n .ant-modal-title {\n font-size: 24px;\n color: var(--velotax-font-color-dark);\n }\n }\n .ant-modal-body {\n padding: 8px 48px 48px;\n }\n }\n }\n .ant-table {\n width: 100%;\n }\n .mobile-list {\n display: none;\n }\n .table-total {\n padding: 16px;\n display: flex;\n align-items: center;\n background-color: #f0f0f0;\n justify-content: space-between;\n h3 {\n margin: 0;\n font-size: 14px;\n }\n span.ant-typography {\n font-weight: 600;\n width: 116px;\n }\n &.exterior {\n margin-bottom: 16px;\n span.ant-typography {\n width: calc(30% - 22px);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.ant-drawer {\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n background-color: var(--white) !important;\n .ant-drawer-wrapper-body {\n .ant-drawer-header {\n .ant-drawer-header-title {\n .ant-drawer-title {\n color: var(--velotax-font-color-dark) !important;\n }\n }\n }\n }\n }\n }\n }\n .ant-table {\n display: none;\n }\n .mobile-list {\n width: 100%;\n display: flex;\n margin: 24px 0 0;\n flex-direction: column;\n .list-item {\n width: 100%;\n padding: 16px 24px;\n border-top: 1px solid #e8e8e8;\n :last-of-type {\n border-bottom: 1px solid #e8e8e8;\n }\n p {\n font-size: 16px;\n font-weight: 600;\n margin-bottom: 4px;\n }\n .list-item-label {\n width: 48px;\n font-weight: 500;\n display: inline-block;\n }\n .list-item-value {\n width: calc(100% - 48px);\n display: inline-block;\n }\n }\n .list-empty {\n padding: 16px 0;\n margin-top: -24px;\n text-align: center;\n background-color: #e8e8e8;\n }\n &.exterior {\n .list-item-label {\n width: 100px;\n }\n .list-item-value {\n width: calc(100% - 100px);\n }\n }\n }\n .table-total {\n padding: 24px;\n span.ant-typography {\n width: auto !important;\n text-align: right;\n }\n }\n }\n`;\n\nexport const BolsaOperations = styled.div`\n margin-top: 20px;\n border-radius: 8px;\n color: var(--velotax-font-color-light);\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-background-color-ghost);\n\n div.strong span {\n font-weight: 700 !important;\n }\n div.opacity {\n opacity: 0.8;\n }\n\n span.dividendos-header {\n background-color: var(--velotax-background-color-ghost) !important;\n font-weight: 700 !important;\n }\n div.header,\n div.sub-header,\n div.row {\n display: grid;\n grid-template-columns: 0.7fr 1fr 0.5fr;\n span {\n text-align: center;\n justify-content: center;\n }\n }\n\n div.sub-header,\n div.row {\n height: auto;\n min-height: 48px;\n border-top: none;\n & + div.sub-header {\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n & > span + span {\n background-color: var(--velotax-background-color);\n }\n & > span {\n display: flex;\n align-items: center;\n border-left: none;\n }\n &:last-of-type > span:last-of-type {\n border-radius: 0 0 8px 0;\n }\n }\n\n div.header {\n padding: 16px;\n border-radius: 8px 8px 0 0;\n background-color: var(--velotax-background-color-ghost);\n span {\n font-weight: 700;\n }\n button {\n display: none;\n }\n }\n\n div.sub-header {\n font-size: 14px;\n & > span {\n font-weight: 300;\n }\n }\n\n div.row {\n opacity: 0.85;\n font-size: 13px;\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n\n @media only screen and (max-device-width: 812px) {\n div.sub-header {\n font-size: 12px;\n }\n }\n`;\n\nexport const Container = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n &,\n h4,\n .ant-typography {\n color: var(--velotax-font-color-dark);\n }\n .MuiButtonBase-root {\n height: 40px;\n margin: -60px 0 32px auto;\n border: 1px solid #e8e8e8;\n border-radius: 24px !important;\n text-transform: none !important;\n .MuiButton-startIcon {\n width: 18px;\n height: 18px;\n display: flex;\n margin-right: 6px;\n align-items: center;\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n @media only screen and (max-device-width: 812px) {\n .MuiButtonBase-root {\n width: 60%;\n margin: -16px 0 0 0;\n }\n }\n`;\n","import { message } from \"antd\";\nimport apiBolsa from \"../services/apiBolsa\";\nimport apiExterior from \"../services/apiExterior\";\n\nexport const sendEmailSheet = async (type: string, orders: any, dolarQuote: any, user: any, title: string) => {\n try {\n const api = (type == 'bolsa') ? apiBolsa : apiExterior;\n api\n .post(\"/dividendos/sheet-email\", {\n orders: orders,\n dolarQuote: dolarQuote,\n title: title,\n user: user\n })\n .then(() => {\n message.success(\"Planilha enviada por e-mail!\");\n })\n .catch((err) => {\n message.error(err?.response?.data?.message);\n })\n .finally(() => {\n return;\n });\n } catch (error: any) {\n message.error(error)\n }\n}\n","import moment from \"moment\";\nimport { Button } from \"@mui/material\";\nimport { Table, Typography } from \"antd\";\nimport { AiOutlineDownload } from \"react-icons/ai\";\nimport { Container } from \"./styles\";\nimport { formatCurrency, isMobile } from \"../../utils\";\nimport { handleDownloadSheet } from \"../../utils/handleDownloadSheet\";\nimport { sendEmailSheet } from \"../../utils/sendEmailSheet\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\nexport const DividendosModal = ({ item }: any) => {\n const { user } = useAuth();\n return (\n <Container>\n {item?.operations?.length > 0 && (\n <Button\n color=\"info\"\n variant=\"contained\"\n startIcon={<AiOutlineDownload />}\n onClick={() => {\n if (isMobile()) \n {\n sendEmailSheet('bolsa', item?.operations, '', user, \"Dividendos\");\n }\n else {\n handleDownloadSheet(item?.buffer?.data, \"Dividendos\")\n }\n }}\n >\n Baixar planilha\n </Button>\n )}\n <Table\n pagination={false}\n dataSource={item?.operations}\n locale={{ emptyText: \"Nenhum dividendo recebido neste mês\" }}\n columns={[\n {\n align: \"left\",\n title: \"Ativo\",\n dataIndex: \"ticker\",\n render: (value) => (\n <strong style={{ fontWeight: \"500\" }}>{value}</strong>\n ),\n },\n {\n align: \"left\",\n title: \"Data\",\n dataIndex: \"referenceDate\",\n render: (value) => moment(value).format(\"DD/MM/YYYY\"),\n },\n {\n align: \"left\",\n dataIndex: \"tipo\",\n title: \"Tipo de rendimento\",\n },\n {\n align: \"left\",\n title: \"Valor\",\n width: \"150px\",\n dataIndex: \"valor\",\n render: (value) => formatCurrency(value ?? 0, \"R$ \"),\n },\n ]}\n />\n <div className=\"mobile-list\">\n {item?.operations?.map((op: any, index: number) => (\n <div className=\"list-item\" key={index}>\n <p>{op.ticker}</p>\n <span className=\"list-item-label\">Tipo:</span>\n <span className=\"list-item-value\">{op.tipo}</span>\n <span className=\"list-item-label\">Data:</span>\n <span className=\"list-item-value\">\n {moment(op.referenceDate).format(\"DD/MM/YYYY\")}\n </span>\n <span className=\"list-item-label\">Valor:</span>\n <span className=\"list-item-value\">\n {formatCurrency(op.valor ?? 0, \"R$ \")}\n </span>\n </div>\n ))}\n {!item?.operations?.length && (\n <div className=\"list-empty\">Nenhum dividendo recebido neste mês</div>\n )}\n </div>\n {item?.operations?.length > 0 && (\n <div className=\"table-total\">\n <Typography.Title level={3}>Total recebido no mês:</Typography.Title>\n <Typography.Text>{formatCurrency(item.value)}</Typography.Text>\n </div>\n )}\n </Container>\n );\n};\n","import { monthsExtended } from \"../../utils\";\n\nexport const monthList = Array.from(Array(12))\n .map((_, i) => ({\n month: i + 1,\n monthName: monthsExtended[i],\n value: 0,\n // impostoPagoExterior: 0,\n }))\n .reverse();\n","import { Spin } from \"antd\";\nimport { BsEye } from \"react-icons/bs\";\nimport { formatCurrency } from \"../../utils\";\nimport { CurrencyFormItem, TextFormItem } from \"../formItems\";\n\nconst DividendosItem = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n valorRendimento: CurrencyFormItem({\n name: \"valorRendimento\",\n label: \"Rendimento\",\n }),\n impostoPagoExterior: CurrencyFormItem({\n name: \"impostoPagoExterior\",\n label: \"Imposto Pago no Exterior\",\n }),\n};\n\nexport const DividendosRows = [\n [DividendosItem.id],\n [DividendosItem.valorRendimento],\n [DividendosItem.impostoPagoExterior],\n];\n\nconst handleValue = (item: any, index: number, variable: string, data: any) => {\n const dividendo = data?.find((el: any) => el.month === 12 - index);\n if (dividendo) return dividendo[variable] * dividendo.dolarQuote;\n else return item[variable];\n};\n\nconst handleValueBolsa = (item: any, data: any) => {\n const month = data.find((el: any) => el.month === item.month);\n return month?.value || 0;\n};\n\nconst handleItem = (index: number, data: any, item: any) => {\n return data?.find((el: any) => el.month === 12 - index) ?? item;\n};\n\nexport const DividendosTabs: (\n item: any,\n index: number,\n data: any,\n loading: boolean,\n setShowModal: Function,\n setItem: Function,\n setIndex: Function,\n isBolsa?: boolean\n) => { class: string; tabs: { content: React.ReactNode }[] }[] = (\n item,\n index,\n data,\n loading,\n setShowModal,\n setItem,\n setIndex,\n isBolsa\n) => [\n {\n class: \"sub-header\",\n tabs: [\n {\n content: <div className=\"monthName\">{item.monthName}</div>,\n },\n {\n content: loading ? (\n <Spin style={{ display: \"flex\" }} />\n ) : (\n formatCurrency(\n isBolsa\n ? handleValueBolsa(item, data)\n : handleValue(item, index, \"valorRendimento\", data)\n )\n ),\n },\n ...(!isBolsa\n ? [\n {\n content: loading ? (\n <Spin style={{ display: \"flex\" }} />\n ) : (\n formatCurrency(\n handleValue(item, index, \"impostoPagoExterior\", data)\n )\n ),\n },\n ]\n : []),\n {\n content: (\n <BsEye\n size={16}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n setShowModal(true);\n setItem(handleItem(index, data, item));\n setIndex(index);\n }}\n />\n ),\n },\n ],\n },\n];\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n padding: 64px 32px 64px;\n\n .juridic-messages-container {\n opacity: 0.8;\n width: 700px;\n margin: 0 auto;\n padding: 32px 0 32px 0;\n\n .message {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 1rem;\n }\n\n p {\n font-size: 0.85rem;\n font-weight: 400;\n text-align: justify;\n line-height: 1.4rem;\n color: var(--velotax-font-color-light);\n margin-bottom: 0px;\n\n i {\n font-weight: bold;\n color: var(--velotax-font-color-light);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n min-height: 100%;\n\n .page-title {\n font-size: 1.25rem;\n line-height: 1.75rem;\n padding-bottom: 1rem;\n }\n\n .juridic-messages-container {\n width: calc(100% - 48px);\n margin: 0 24px 48px;\n p {\n margin-left: 0;\n }\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .destak {\n font-size: 14px;\n font-weight: 400;\n color: var(--velotax-font-color);\n }\n\n button.text-small,\n button.text-small:hover,\n button.text-small:focus,\n button.text-small:active,\n button.text-small:visited {\n color: var(--velotax-font-color-dark) !important;\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n border-radius: 0;\n width: 100%;\n .text-small {\n font-size: 11px;\n }\n h2 {\n &::before {\n left: -24px;\n }\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/b3-logo-white.19776928.svg\";","import styled, { css } from \"styled-components\";\n\nexport const Container = styled.div<{ imgHeight?: boolean }>`\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n height: 150px;\n padding: 32px;\n cursor: pointer;\n background: var(--velotax-background-color);\n border-radius: 6px;\n position: relative;\n border: 2px solid var(--velotax-ghost-white);\n position: relative;\n transition: 0.3s;\n\n :hover {\n opacity: 0.9;\n filter: contrast(0.9);\n }\n\n img {\n ${(props) =>\n props.imgHeight\n ? css`\n height: 100%;\n `\n : css`\n width: 100%;\n `}\n }\n\n .loading-animation {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 8px;\n border-radius: 6px;\n backdrop-filter: blur(4px);\n background: var(--ant-info-color-outline);\n span {\n font-size: 14px;\n line-height: 16px;\n font-weight: bold;\n text-align: center;\n }\n .anticon-spin {\n margin: 4px 8px 4px 0;\n font-size: 28px;\n color: var(--white);\n\n svg {\n margin: 0;\n }\n }\n }\n\n &.integrado {\n border: 2px solid var(--ant-success-color);\n }\n\n .integrado-check {\n bottom: 12px;\n right: 12px;\n font-size: 22px;\n position: absolute;\n }\n\n .click-here {\n margin: 16px 0 0;\n font-size: 11px !important;\n font-weight: 500;\n line-height: 20px;\n color: var(--velotax-font-color);\n opacity: 0.8;\n }\n\n a.b3-link {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n }\n`;\n","import clsx from \"clsx\";\nimport React from \"react\";\nimport { useLocation } from \"react-use\";\nimport { Tooltip, Typography } from \"antd\";\nimport { CheckCircleTwoTone, LoadingOutlined } from \"@ant-design/icons\";\nimport { Container } from \"./styles\";\nimport { useB3Integration } from \"../../../contexts/B3IntegrationContext\";\n\ninterface IIntegrationButtonProps {\n alt: string;\n loading: boolean;\n integrado: boolean;\n setIntegrationModalVisible: Function;\n logo?: string;\n imgHeight?: boolean;\n handleClick?: () => void;\n b3Link?: string;\n isB3LinkRedirect?: boolean;\n}\n\nconst IntegrationButton: React.FC<IIntegrationButtonProps> = ({\n alt,\n logo,\n b3Link,\n loading,\n integrado,\n imgHeight,\n isB3LinkRedirect,\n handleClick = () => {},\n setIntegrationModalVisible,\n}) => {\n const location = useLocation();\n const { timer } = useB3Integration();\n const isB3 = location.pathname === \"/xpinvestimentos/bolsa-integration\";\n\n const onClick = () => {\n if (isB3 || location.pathname === \"/xpinvestimentos/exterior-integration\") {\n handleClick();\n } else if (!loading) {\n setIntegrationModalVisible(true);\n }\n };\n return (\n <Tooltip\n title={integrado ? \"Clique para reintegrar\" : \"Clique para integrar\"}\n >\n <Container\n onClick={onClick}\n imgHeight={imgHeight}\n className={clsx({ loading, integrado })}\n >\n {isB3LinkRedirect && b3Link && (\n <a href={b3Link} className=\"b3-link\">\n .\n </a>\n )}\n <img src={logo} alt={alt} />\n <Typography.Paragraph className=\"click-here\">\n Clique aqui\n </Typography.Paragraph>\n {!loading && integrado && (\n <div className=\"integrado-check\">\n <CheckCircleTwoTone twoToneColor=\"var(--ant-success-color)\" />\n </div>\n )}\n {isB3 && loading && (\n <div className=\"loading-animation\">\n <LoadingOutlined color=\"fff\" />\n <span>Verificando autorização com a B3 ({timer} s)</span>\n </div>\n )}\n {!isB3 && loading && (\n <div className=\"loading-animation\">\n <LoadingOutlined color=\"fff\" />\n <span>Isso pode demorar alguns minutos, aguarde</span>\n </div>\n )}\n </Container>\n </Tooltip>\n );\n};\n\nexport default IntegrationButton;\n","import { Button } from \"@mui/material\";\nimport { AiOutlineArrowDown } from \"react-icons/ai\";\nimport { B3AuthURL } from \"../../../utils\";\nimport b3Logo from \"../../../assets/b3-logo-white.svg\";\nimport { useB3Integration } from \"../../../contexts/B3IntegrationContext\";\nimport IntegrationButton from \"../../../components/IntegrationComponents/IntegrationButton\";\n\ninterface B3IntegrationButtonsProps {\n showIntegrationButton?: boolean;\n}\n\nexport const B3IntegrationButtons: React.FC<B3IntegrationButtonsProps> = ({\n showIntegrationButton,\n}) => {\n const {\n openWithLink,\n b3Authorized,\n handleIntegrate,\n loadingIntegration,\n loadingAuthorization,\n checkingAuhtorization,\n } = useB3Integration();\n\n return (\n <>\n {showIntegrationButton && (\n <>\n <IntegrationButton\n logo={b3Logo}\n imgHeight={true}\n b3Link={B3AuthURL}\n alt=\"Integrar com a B3\"\n integrado={b3Authorized}\n setIntegrationModalVisible={() => {}}\n handleClick={() => handleIntegrate()}\n isB3LinkRedirect={openWithLink}\n loading={\n checkingAuhtorization ||\n loadingIntegration ||\n loadingAuthorization\n }\n />\n <br />\n </>\n )}\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => handleIntegrate()}\n startIcon={<AiOutlineArrowDown size={18} />}\n disabled={loadingIntegration || loadingAuthorization}\n {...(openWithLink ? { href: B3AuthURL } : {})}\n >\n Conectar com a B3\n </Button>\n </>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div``;\n\nexport const Content = styled.div``;\n","import { message } from \"antd\";\nimport { useRef, useState } from \"react\";\nimport Upload, { RcFile } from \"antd/lib/upload\";\nimport {\n UploadFile,\n UploadFileStatus,\n UploadProps,\n} from \"antd/lib/upload/interface\";\nimport { useBroker } from \"../../../contexts/BrokerContext\";\n\nconst isValidFile = (file: UploadFile) => file.type === \"application/pdf\";\nconst sameNameFile = (file: UploadFile, files: UploadFile[]) =>\n files.findIndex((item) => item.name === file.name) >= 0;\n\nexport const useNotasCorretagem = () => {\n const sameNameFiles = useRef<string[]>([]);\n const [loadingSend, setLoadingSend] = useState(false);\n const [notas, setNotas] = useState<UploadFile<any>[]>([]);\n const [showNotasCorretagemModal, setShowNotasCorretagemModal] =\n useState(false);\n\n const beforeUploadNota = (file: RcFile) => {\n if (!isValidFile(file)) {\n message.error(\"Você só pode fazer upload de arquivos pdf\");\n return Upload.LIST_IGNORE;\n }\n if (sameNameFile(file, notas)) {\n sameNameFiles.current.push(file.name);\n message.error(\"Este arquivo já foi adicionado\");\n return Upload.LIST_IGNORE;\n }\n };\n\n const onChangeNotas = ({\n file,\n fileList,\n }: {\n file: UploadFile;\n fileList: UploadFile[];\n }) => {\n if (file && file.status === \"removed\") return;\n if (!isValidFile(file)) return;\n if (sameNameFiles.current.includes(file.name)) {\n sameNameFiles.current = sameNameFiles.current.filter(\n (name) => name !== file.name\n );\n return;\n }\n setNotas(\n fileList\n .filter((file) => file.status !== \"removed\")\n .map((file) => ({ ...file, status: \"done\" as UploadFileStatus }))\n );\n };\n\n const onRemoveNota = (file: UploadFile) => {\n setNotas((notas) => notas.filter((nota) => nota.uid !== file.uid));\n };\n\n const sendNotas = () => {\n const formData = new FormData();\n notas.forEach((nota) => {\n formData.append(\"files\", nota.originFileObj as File);\n });\n setLoadingSend(false);\n };\n\n const uploadProps: UploadProps = {\n fileList: notas,\n multiple: true,\n listType: \"text\",\n accept: \"application/pdf\",\n onRemove: onRemoveNota,\n onChange: onChangeNotas,\n beforeUpload: beforeUploadNota,\n customRequest: () => {},\n showUploadList: {\n showRemoveIcon: true,\n showPreviewIcon: false,\n showDownloadIcon: false,\n },\n };\n\n return {\n sendNotas,\n loadingSend,\n uploadProps,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n };\n};\n","import { Col, Row } from \"antd\";\nimport { Button } from \"@mui/material\";\nimport { useNavigate } from \"react-router\";\nimport { useNotasCorretagem } from \"./useNotasCorretagem\";\nimport { useBroker } from \"../../../contexts/BrokerContext\";\nimport UploadVelotax from \"../../../components/UploadVelotax\";\n\ninterface NotasCorretagemProps {}\n\nexport const NotasCorretagem: React.FC<NotasCorretagemProps> = () => {\n const navigate = useNavigate();\n const { xtageIntegration } = useBroker();\n const { sendNotas, loadingSend, uploadProps } = useNotasCorretagem();\n\n return (\n <>\n <UploadVelotax loading={loadingSend} {...uploadProps} />\n <Row justify=\"end\" gutter={[16, 16]}>\n {xtageIntegration && (\n <Col>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"text\"\n onClick={() => navigate(\"/xpinvestimentos/cripto\")}\n >\n Voltar\n </Button>\n </Col>\n )}\n <Col>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loadingSend}\n onClick={() => sendNotas()}\n >\n Enviar\n </Button>\n </Col>\n </Row>\n </>\n );\n};\n","import { monthsExtended } from \"../../utils\";\n\nexport const monthList = Array.from(Array(12))\n .map((_, i) => ({\n month: i + 1,\n monthName: monthsExtended[i],\n valorRendimento: 0,\n impostoPagoExterior: 0,\n }))\n .reverse();\n","import { Button } from \"@mui/material\";\nimport { Typography, Spin, Table } from \"antd\";\nimport { AiOutlineDownload } from \"react-icons/ai\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { formatCurrency, formatDate, isMobile } from \"../../utils\";\nimport { Container } from \"../../pages/DividendosBolsa/styles\";\nimport { handleDownloadSheet } from \"../../utils/handleDownloadSheet\";\nimport { sendEmailSheet } from \"../../utils/sendEmailSheet\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\nexport const DividendosModal = ({ item, year, quotes }: any) => {\n const [total, setTotal] = useState<any>({});\n const [object, setObject] = useState<any>({});\n const [loading, setLoading] = useState<any>(false);\n const { user } = useAuth();\n\n const checkType = (el: any) => {\n if (el.type === \"DIVIDEND\" && el.operation === \"BUY\") {\n return \"valorRendimento\";\n } else return \"impostoPagoExterior\";\n };\n\n const getTotal = useCallback(async () => {\n let auxTotal: any = {\n totalRendimento: 0,\n totalRendimentoReal: 0,\n totalImposto: 0,\n totalImpostoReal: 0,\n };\n Object.keys(object).forEach((item: any) => {\n auxTotal = {\n ...auxTotal,\n totalRendimento:\n (auxTotal.totalRendimento ?? 0) + (object[item].valorRendimento ?? 0),\n totalRendimentoReal:\n (auxTotal.totalRendimentoReal ?? 0) +\n (object[item].valorRendimentoReal ?? 0),\n totalImposto:\n (auxTotal.totalImposto ?? 0) +\n (object[item].impostoPagoExterior ?? 0),\n totalImpostoReal:\n (auxTotal.totalImpostoReal ?? 0) +\n (object[item].impostoPagoExteriorReal ?? 0),\n };\n });\n\n setTotal(auxTotal);\n }, [object]);\n\n const groupBycode = useCallback(async () => {\n setLoading(true);\n const aux: any = {};\n for (const el of item.orders ?? []) {\n if (!aux[el.code]) {\n if (checkType(el) === \"valorRendimento\") {\n aux[el.code] = {\n valorRendimento: el.value,\n valorRendimentoReal: el.value * item.dolarQuote,\n date: formatDate(el.date),\n };\n } else {\n aux[el.code] = {\n impostoPagoExterior: el.value,\n impostoPagoExteriorReal: el.value * item.dolarQuote,\n date: formatDate(el.date),\n };\n }\n } else {\n if (checkType(el) === \"valorRendimento\") {\n aux[el.code] = {\n ...aux[el.code],\n valorRendimento: (aux[el.code]?.valorRendimento ?? 0) + el.value,\n valorRendimentoReal:\n (aux[el.code]?.valorRendimentoReal ?? 0) +\n el.value * item.dolarQuote,\n };\n } else {\n aux[el.code] = {\n ...aux[el.code],\n impostoPagoExterior:\n (aux[el.code]?.impostoPagoExterior ?? 0) + el.value,\n impostoPagoExteriorReal:\n (aux[el.code]?.impostoPagoExteriorReal ?? 0) +\n el.value * item.dolarQuote,\n };\n }\n }\n }\n\n setObject(aux);\n setLoading(false);\n }, [item.orders, item.dolarQuote]);\n\n useEffect(() => {\n groupBycode();\n }, [groupBycode, item.month, year]);\n\n useEffect(() => {\n getTotal();\n }, [getTotal, object]);\n\n return (\n <Container>\n {loading ? (\n <Spin style={{ display: \"flex\", justifyContent: \"center\" }} />\n ) : (\n <>\n {Object.keys(object)?.length > 0 && (\n <Button\n color=\"info\"\n variant=\"contained\"\n startIcon={<AiOutlineDownload />}\n onClick={() =>\n {\n if (isMobile()) \n {\n sendEmailSheet('exterior', item?.orders, item?.dolarQuote, user, \"Dividendos\");\n }\n else \n {\n handleDownloadSheet(\n item?.buffer?.data,\n `Dividendos-${year}-${item.month}`\n )\n }\n }\n }\n >\n Baixar planilha\n </Button>\n )}\n <Table\n pagination={false}\n dataSource={Object.keys(object).map((key) => ({\n ...object[key],\n ticker: key,\n }))}\n locale={{ emptyText: \"Nenhum dividendo recebido neste mês\" }}\n columns={[\n {\n align: \"left\",\n title: \"Ativo\",\n dataIndex: \"ticker\",\n render: (value) => (\n <strong style={{ fontWeight: \"500\" }}>{value}</strong>\n ),\n },\n {\n align: \"left\",\n title: \"Data\",\n dataIndex: \"date\",\n },\n {\n width: \"30%\",\n align: \"left\",\n dataIndex: \"valorRendimento\",\n title: \"Valor em USD\",\n render: (value) => formatCurrency(value ?? 0, \"US$ \"),\n },\n {\n width: \"30%\",\n align: \"left\",\n dataIndex: \"valorRendimentoReal\",\n title: \"Valor em BRL\",\n render: (value) => formatCurrency(value ?? 0, \"R$ \"),\n },\n ]}\n />\n <div className=\"mobile-list exterior\">\n {Object.keys(object)\n .map((key) => ({\n ...object[key],\n ticker: key,\n }))\n ?.map((op: any, index: number) => (\n <div className=\"list-item\" key={index}>\n <p>{op.ticker}</p>\n <span className=\"list-item-label\">Data:</span>\n <span className=\"list-item-value\">{op.date}</span>\n <span className=\"list-item-label\">Valor em USD:</span>\n <span className=\"list-item-value\">\n {formatCurrency(op.valorRendimento ?? 0, \"US$ \")}\n </span>\n <span className=\"list-item-label\">Valor em BRL:</span>\n <span className=\"list-item-value\">\n {formatCurrency(op.valorRendimentoReal ?? 0, \"R$ \")}\n </span>\n </div>\n ))}\n {!Object.keys(object).length && (\n <div className=\"list-empty\">\n Nenhum dividendo recebido neste mês\n </div>\n )}\n </div>\n {Object.keys(object).length > 0 && (\n <div className=\"table-total exterior\">\n <Typography.Title level={3}>\n Total recebido no mês:\n </Typography.Title>\n <Typography.Text>\n {formatCurrency(total.totalRendimentoReal ?? 0)}\n </Typography.Text>\n </div>\n )}\n </>\n )}\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 32px;\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n span.ant-typography {\n opacity: 0.8;\n font-weight: 400;\n font-size: 0.85rem;\n line-height: 1.5rem;\n text-align: justify;\n color: var(--velotax-font-color-light);\n }\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 700px;\n margin: 0 auto 2.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0 0 32px;\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const FlexDiv = styled.div`\n display: flex;\n justify-content: center;\n flex-direction: column;\n`;\n\nexport const BolsaOperations = styled.div`\n margin-top: 20px;\n border-radius: 4px;\n color: var(--velotax-font-color-light);\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-background-color-ghost);\n\n div.strong span {\n font-weight: 700 !important;\n }\n div.opacity {\n opacity: 0.8;\n }\n\n span.dividendos-header {\n background-color: var(--velotax-background-color-ghost) !important;\n font-weight: 700 !important;\n }\n div.header,\n div.sub-header,\n div.row {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 0.5fr;\n span {\n text-align: center;\n justify-content: center;\n }\n }\n\n div.sub-header,\n div.row {\n height: auto;\n min-height: 48px;\n border-top: none;\n & + div.sub-header {\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n & > span + span {\n background-color: #3d3d3d;\n }\n & > span {\n display: flex;\n align-items: center;\n border-left: none;\n }\n &:last-of-type > span:last-of-type {\n border-radius: 0 0 4px 0;\n }\n }\n\n div.header {\n padding: 16px;\n border-radius: 4px 4px 0 0;\n background-color: var(--velotax-background-color-ghost);\n span {\n font-weight: 700;\n }\n button {\n display: none;\n }\n }\n\n div.sub-header {\n font-size: 14px;\n & > span {\n font-weight: 300;\n }\n }\n\n div.row {\n opacity: 0.85;\n font-size: 13px;\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n\n @media only screen and (max-device-width: 812px) {\n div.sub-header {\n font-size: 12px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n margin: 0 auto;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n &.notas {\n padding: 32px 0;\n background-color: transparent;\n }\n h1 {\n margin: 0 0 8px;\n font-size: 20px;\n color: var(--velotax-font-color);\n }\n h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 400;\n color: var(--velotax-font-color);\n }\n .ant-list.ant-list-split {\n margin: 24px 0 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 8px;\n .ant-list-item-action > li {\n padding: 0;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n .historic-month-status {\n font-weight: 500;\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--black);\n display: flex;\n &.payed,\n &.regular {\n background-color: var(--ant-success-color);\n }\n &.pending {\n background-color: var(--ant-error-color);\n }\n &.not-payed {\n background-color: var(--velotax-font-color);\n }\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 32px;\n border-radius: 0;\n width: 100%;\n &.notas {\n padding: 32px 24px;\n }\n .ant-list.ant-list-split {\n .ant-list-item-action {\n display: grid;\n align-items: end;\n grid-template-rows: 1fr 0.75fr;\n grid-template-columns: 1fr 1fr;\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n }\n`;\n\nexport const Content = styled.div`\n background-color: var(--velotax-background-color);\n border-radius: 16px;\n margin: 0 auto;\n padding: 32px;\n min-width: 500px;\n max-width: 800px;\n h1 {\n font-size: 24px;\n position: relative;\n margin-bottom: 32px;\n color: var(--velotax-font-color);\n &::before {\n content: \"\";\n position: absolute;\n width: 4px;\n top: 0;\n left: -32px;\n height: 100%;\n background-color: var(--ant-primary-color);\n }\n }\n @media only screen and (max-device-width: 812px) {\n border-radius: 0;\n min-width: 100%;\n padding: 16px;\n padding-bottom: 32px;\n h1 {\n &::before {\n display: none;\n }\n }\n }\n`;\n","import React, { Dispatch, SetStateAction, useEffect, useState } from \"react\";\nimport { Col, Divider, Form, Input, message, Modal, Row } from \"antd\";\nimport Button from \"../../Button\";\nimport apis from \"../../../services/apiExterior\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\n// import passfolioLogo from \"../../../assets/passfolio-logo.png\";\nimport { validationFieldRequired } from \"../../../utils/formValidations\";\nimport { IntegrationData } from \"../interfaces\";\n\ninterface IPassfolioIntegrationModalProps {\n visible: boolean;\n dependentId?: string;\n setVisible: Dispatch<SetStateAction<boolean>>;\n setLoadingIntegration: Dispatch<SetStateAction<boolean>>;\n integrationData?: IntegrationData;\n}\n\nconst PassfolioIntegrationModal: React.FC<IPassfolioIntegrationModalProps> = ({\n visible,\n setVisible,\n setLoadingIntegration,\n integrationData,\n}) => {\n const { user } = useAuth();\n const [form] = Form.useForm();\n const [integrationParams, setParams] = useState({\n key: \"\",\n userId: \"\",\n secret: \"\",\n token: \"\",\n });\n\n useEffect(() => {\n if (integrationData && visible) {\n form.setFieldsValue({\n key: integrationData.key,\n secret: integrationData.secret,\n userId: integrationData.userId,\n });\n }\n }, [form, integrationData, visible]);\n\n const onCancel = () => {\n setVisible(false);\n form.resetFields();\n };\n\n const onFinish = (values: any) => {\n setLoadingIntegration(true);\n apis\n .post(\n \"/passfolio/authenticate\",\n {\n ...values,\n },\n {\n headers: {\n \"x-api-provider\": \"exterior-velotax\",\n },\n }\n )\n .then((response) => {\n const { data } = response;\n const { token, authenticatorId } = data;\n const { key, secret } = values;\n\n setParams({ key, secret, userId: authenticatorId, token });\n })\n .catch((err) => {\n if (err.response?.data?.message) {\n message.error(\n err.response?.data?.message ||\n \"Algo deu errado, tente novamente mais tarde\"\n );\n }\n setLoadingIntegration(false);\n });\n };\n\n const onClick = (values: any) => {\n setLoadingIntegration(true);\n setVisible(false);\n apis\n .post(\n \"/passfolio/integrate\",\n {\n ...values,\n ...integrationParams,\n email: user.user.email,\n },\n {\n headers: {\n \"x-api-provider\": \"exterior-velotax\",\n },\n }\n )\n .catch((err) => {\n if (err.response?.data?.message) {\n message.error(\n err.response?.data?.message ||\n \"Algo deu errado, tente novamente mais tarde\"\n );\n }\n setParams({\n key: \"\",\n userId: \"\",\n secret: \"\",\n token: \"\",\n });\n setLoadingIntegration(false);\n });\n };\n\n return (\n <Modal\n footer={null}\n destroyOnClose\n visible={visible}\n onCancel={onCancel}\n maskClosable={false}\n title={\n <span style={{ display: \"flex\", alignItems: \"center\" }}>\n <img\n src=\"https://web.xpi.com.br/wp-content/themes/xpi-acquisition-xp/assets/images/footer/logo-xpi-preto.svg\"\n alt=\"Foxbit logo\"\n style={{ height: \"32px\", marginRight: \"16px\" }}\n />\n Integrar com a XP\n </span>\n }\n >\n <Form\n form={form}\n layout=\"vertical\"\n onReset={onCancel}\n onFinish={onFinish}\n >\n <Form.Item\n name=\"code\"\n rules={!integrationParams.key ? [] : validationFieldRequired}\n hidden={!integrationParams.key}\n >\n <Input placeholder=\"Código\" size=\"large\" />\n </Form.Item>\n <Form.Item\n name=\"key\"\n rules={validationFieldRequired}\n hidden={!!integrationParams.key}\n >\n <Input placeholder=\"Email\" size=\"large\" />\n </Form.Item>\n <Form.Item\n name=\"secret\"\n rules={validationFieldRequired}\n hidden={!!integrationParams.key}\n >\n <Input placeholder=\"Senha\" size=\"large\" type=\"password\" />\n </Form.Item>\n <Divider />\n <Row justify=\"space-between\">\n <Col>\n <Form.Item>\n <Button size=\"large\" htmlType=\"reset\">\n Cancelar\n </Button>\n </Form.Item>\n </Col>\n <Col>\n <Form.Item>\n <Button\n size=\"large\"\n htmlType=\"submit\"\n type=\"primary\"\n hidden={!!integrationParams.key}\n >\n Logar\n </Button>\n <Button\n size=\"large\"\n htmlType=\"button\"\n type=\"primary\"\n hidden={!integrationParams.key}\n onClick={() => {\n onClick(form.getFieldsValue());\n }}\n >\n Integrar\n </Button>\n </Form.Item>\n </Col>\n </Row>\n </Form>\n </Modal>\n );\n};\n\nexport default PassfolioIntegrationModal;\n","import { message } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport apis from \"../../../services/apiExterior\";\nimport IntegrationButton from \"../IntegrationButton\";\nimport { IntegrationStatus } from \"../ExteriorIntegration\";\n// import passfolioLogo from \"../../../assets/passfolio-logo.png\";\nimport PassfolioIntegrationModal from \"./PassfolioIntegrationModal\";\n\ninterface IGetEstadoIntegracao {\n success: (data: any) => void;\n error: (data: any) => void;\n}\n\ninterface IPassfolioIntegrationProps {\n dependentId?: string;\n integrationCallback: (type: IntegrationStatus) => void;\n}\n\nconst PassfolioIntegration: React.FC<IPassfolioIntegrationProps> = ({\n dependentId,\n integrationCallback,\n}) => {\n const [loading, setLoading] = useState(true);\n const [integrationModalVisible, setIntegrationModalVisible] = useState(false);\n const [integrado, setIntegrado] = useState(false);\n const [integrationData, setIntegrationData] = useState();\n\n const getEstadoIntegracao = ({ success, error }: IGetEstadoIntegracao) =>\n apis\n .get(\"/passfolio/integration-status\", {\n headers: {\n \"x-api-provider\": \"exterior-velotax\",\n },\n })\n .then(({ data }) => {\n setIntegrationData(data);\n success(data);\n })\n .catch((err) => {\n error(err);\n });\n\n useEffect(() => {\n getEstadoIntegracao({\n success: (data) => {\n if (!data.integrated && data.providerExists) {\n setLoading(true);\n setIntegrado(false);\n integrationCallback(\"carregando\");\n } else if (data.integrated) {\n setLoading(false);\n setIntegrado(true);\n integrationCallback(\"integrado\");\n }\n },\n error: () => {\n integrationCallback(\"erro\");\n },\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | null = null;\n if (loading) {\n interval = setInterval(\n () => {\n integrationCallback(\"carregando\");\n getEstadoIntegracao({\n success: (data: any) => {\n if (!data.integrated && data.providerExists) {\n integrationCallback(\"carregando\");\n }\n\n if (!data.providerExists) {\n setLoading(false);\n setIntegrado(false);\n }\n\n if (data.integrated) {\n setLoading(false);\n setIntegrado(true);\n message.success(\"Integração feita com sucesso!\");\n integrationCallback(\"integrado\");\n }\n },\n error: (err: any) => {\n setLoading(false);\n integrationCallback(\"erro\");\n if (err.response?.data?.message) {\n return message.error(err.response?.data?.message);\n }\n return message.error(\n \"Algo deu errado na integração com a Foxbit, verifique suas credenciais\"\n );\n },\n });\n },\n\n 3000\n );\n } else {\n if (interval) {\n clearInterval(interval);\n }\n }\n return () => clearInterval(interval as unknown as NodeJS.Timeout);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, integrado]);\n\n return (\n <>\n <IntegrationButton\n imgHeight\n logo=\"https://web.xpi.com.br/wp-content/themes/xpi-acquisition-xp/assets/images/footer/logo-xpi-preto.svg\"\n loading={loading}\n integrado={integrado}\n alt=\"Integrar com a Passfolio\"\n setIntegrationModalVisible={setIntegrationModalVisible}\n />\n <PassfolioIntegrationModal\n dependentId={dependentId}\n visible={integrationModalVisible}\n setVisible={setIntegrationModalVisible}\n setLoadingIntegration={setLoading}\n integrationData={integrationData}\n />\n </>\n );\n};\n\nexport default PassfolioIntegration;\n","import { Col, Row } from \"antd\";\nimport PassfolioIntegration from \"../PassfolioIntegration\";\n\ninterface IExteriorIntegrationProps {\n id?: string;\n data?: any;\n dependentId?: string;\n setData?: ({ id, value, customData, from }: any, patch?: any) => void;\n customActions?: { [id: string]: (data: any) => void };\n}\n\nexport type IntegrationStatus = \"carregando\" | \"integrado\" | \"erro\";\n\nconst ExteriorIntegration = (props: IExteriorIntegrationProps) => {\n const { id, dependentId, setData } = props;\n\n const handleIntegration = (type: IntegrationStatus) => {\n setData?.({ id, value: type === \"carregando\" }, false);\n };\n\n return (\n <Row gutter={[16, 16]}>\n <Col xs={24} sm={8}>\n <PassfolioIntegration\n dependentId={dependentId}\n integrationCallback={handleIntegration}\n />\n </Col>\n {/* <Col xs={24} sm={8}>\n <NomadIntegration integrationCallback={handleIntegration} />\n </Col> */}\n </Row>\n );\n};\n\nexport default ExteriorIntegration;\n","export default __webpack_public_path__ + \"static/media/xp.070672ea.svg\";","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n padding: 64px 32px 128px;\n\n div.ant-typography {\n font-size: 0.875rem !important;\n }\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h1 {\n width: calc(100% - 48px);\n width: calc(100% - 48px);\n padding: 24px 0 16px;\n margin: 0 24px 1.5rem;\n }\n }\n`;\nexport const Content = styled.div`\n padding: 32px;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .last-update {\n display: block;\n font-size: 11px;\n letter-spacing: 1px;\n margin-bottom: 16px;\n }\n div.ant-typography {\n font-size: 18px;\n }\n .ant-typography {\n color: var(--velotax-font-color);\n text-align: justify;\n }\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n border-radius: 0;\n width: 100%;\n h2 {\n &::before {\n left: -24px;\n }\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 32px;\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n div.ant-typography {\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n width: 700px;\n line-height: 1.5rem;\n text-align: justify;\n color: var(--velotax-font-color);\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 0;\n\n h1,\n div.ant-typography {\n width: 100%;\n }\n }\n`;\n\nexport const Content = styled.div`\n .container-buttons {\n display: flex;\n width: 100%;\n justify-content: space-between;\n button {\n margin: 0px 0px 12px;\n :first-of-type {\n margin-right: 8px;\n }\n }\n }\n padding: 32px;\n margin: 0 auto;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .add-button {\n display: flex;\n margin: 0 0 1.5rem auto;\n }\n\n .ant-list {\n padding: 0;\n border-radius: 4px;\n background-color: var(--velotax-background-color-ghost);\n .ant-list-item {\n padding: 16px;\n &.error-border {\n border: 1px solid var(--ant-error-color);\n }\n :first-child {\n border-radius: 4px 4px 0 0;\n }\n :last-child {\n border-radius: 0 0 4px 4px;\n }\n }\n .error-border + .error-border {\n border-top: none;\n }\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .alert-icon {\n padding-top: 1px;\n fill: var(--ant-error-color) !important;\n }\n\n @media only screen and (max-device-width: 812px) {\n width: calc(100% + 48px);\n margin-left: -24px;\n padding: 24px 24px 64px;\n\n .container-buttons {\n flex-wrap: wrap;\n button {\n margin: 0 0 8px !important;\n width: 100%;\n }\n }\n }\n`;\n","import moment from \"moment\";\nimport { checkDateExpiration, checkDateLimit, isValidDate } from \"../../utils\";\nimport {\n validationFieldRequired,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\nimport {\n CurrencyFormItem,\n DateFormItem,\n NumberFormItem,\n TextFormItem,\n} from \"../../constants/formItems\";\n\nconst TransferenciaCustodiaFormItems = {\n id: TextFormItem({\n name: \"id\",\n label: \"Id\",\n hidden: true,\n }),\n codigo: (disabled: boolean) =>\n TextFormItem({\n name: \"codigo\",\n label: \"Código\",\n disabled,\n rules: validationFieldRequired,\n }),\n quantidade: (disabled: boolean) =>\n NumberFormItem({\n name: \"quantidade\",\n label: \"Quantidade\",\n disabled,\n rules: validationFieldRequired,\n decimalScale: 8,\n }),\n dataCompra: DateFormItem({\n name: \"dataCompra\",\n mask: \"99/99/9999\",\n label: \"Data de compra\",\n placeholder: \"DD/MM/YYYY\",\n rules: [\n {\n validator: (rule, value) =>\n !value || !isValidDate(value)\n ? Promise.reject(new Error(\"Informe uma data válida\"))\n : value && !checkDateLimit(\"2017-01-01\", value)\n ? Promise.reject(\n new Error(\"Informe uma data a partir de 01/01/2017\")\n )\n : value &&\n !checkDateExpiration(moment().add(1, \"day\").toString(), value)\n ? Promise.reject(\n new Error(\n `Informe uma data até ${moment().format(\"DD/MM/YYYY\")}`\n )\n )\n : Promise.resolve(),\n },\n ],\n }),\n valorCompraUSDOrigemBRA: CurrencyFormItem({\n prefix: \"US$ \",\n name: \"valorCompraUSDOrigemBRA\",\n label: \"Valor de compra (USD, Origem BRA)\",\n placeholder: \"US$ 0,00\",\n rules: validationNumberFieldPositive,\n }),\n valorCompraUSDOrigemEUA: CurrencyFormItem({\n prefix: \"US$ \",\n name: \"valorCompraUSDOrigemEUA\",\n label: \"Valor de compra (USD, Origem EUA)\",\n placeholder: \"US$ 0,00\",\n rules: validationNumberFieldPositive,\n }),\n};\n\nexport const TransferenciaCustodiaRows = (disabled: boolean) => [\n [TransferenciaCustodiaFormItems.id],\n [\n TransferenciaCustodiaFormItems.codigo(disabled),\n TransferenciaCustodiaFormItems.quantidade(disabled),\n ],\n [TransferenciaCustodiaFormItems.dataCompra],\n [TransferenciaCustodiaFormItems.valorCompraUSDOrigemBRA],\n [TransferenciaCustodiaFormItems.valorCompraUSDOrigemEUA],\n];\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n .ant-list {\n padding: 0;\n border-radius: 4px;\n background-color: var(--velotax-background-color-ghost);\n .ant-list-item {\n padding: 16px;\n &.error-border {\n border: 1px solid var(--ant-error-color);\n }\n :first-child {\n border-radius: 4px 4px 0 0;\n }\n :last-child {\n border-radius: 0 0 4px 4px;\n }\n }\n .error-border + .error-border {\n border-top: none;\n }\n .ant-list-item-action > li {\n padding: 0;\n }\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color-light);\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n\n .alert-icon {\n fill: var(--ant-error-color) !important;\n }\n\n .row-margin {\n margin-top: 24px;\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { Col, List, Row, Skeleton, Tooltip, Typography } from \"antd\";\nimport { Dispatch, SetStateAction, useEffect, useState } from \"react\";\nimport { AiOutlineDelete, AiOutlineInfoCircle } from \"react-icons/ai\";\nimport {\n LoadingOutlined,\n DownloadOutlined,\n PlusCircleOutlined,\n} from \"@ant-design/icons\";\nimport { Container } from \"./styles\";\nimport { formatCurrency } from \"../../../../utils\";\nimport AntButton from \"../../../../components/Button\";\nimport { FormModal } from \"../../../../components/FormModal\";\nimport { DoacoesHerancasRows } from \"../../../../constants/darfBolsa\";\nimport moment from \"moment-timezone\";\n\nexport interface DoacoesHerancasProps {\n changed: boolean;\n loadingPut: boolean;\n loadingGet: boolean;\n setLoadingPut: Dispatch<SetStateAction<boolean>>;\n setLoadingGet: Dispatch<SetStateAction<boolean>>;\n doacaoHerancaEdit: any;\n doacoesHerancas: any[];\n showAddPositionModal: boolean;\n downloadDoacoesHerancasExcel: () => Promise<null | Blob>;\n setDoacaoHerancaEdit: Dispatch<SetStateAction<any>>;\n setShowAddPositionModal: Dispatch<SetStateAction<boolean>>;\n saveDoacoesHerancas: () => void;\n addDoacaoHeranca: (item: any) => void;\n editDoacaoHeranca: (item: any) => void;\n handleEditDoacaoHeranca: (item: any, index: number) => void;\n handleRemoveDoacaoHeranca: (item: any, index: number) => void;\n getOldTransactionsInit: () => void;\n}\n\nexport const DoacoesHerancas: React.FC<DoacoesHerancasProps> = ({\n loadingGet,\n loadingPut,\n doacoesHerancas,\n downloadDoacoesHerancasExcel,\n setDoacaoHerancaEdit,\n setShowAddPositionModal,\n handleEditDoacaoHeranca,\n handleRemoveDoacaoHeranca,\n addDoacaoHeranca,\n editDoacaoHeranca,\n showAddPositionModal,\n doacaoHerancaEdit,\n}) => {\n const [downloading, setDownloading] = useState(false);\n const [orders, setOrders] = useState<any[]>([]);\n\n useEffect(()=>{\n if (doacoesHerancas?.length > 0)\n {\n const ordersLocal: any[] = [];\n doacoesHerancas?.map((op) => {\n op?.orders.map((or: any)=> {\n or['dateView'] = moment(or?.date, [\"DD/MM/YYYY\",\"YYYY-MM-DD\",]).format(\"DD/MM/YYYY\");\n ordersLocal.push(or);\n })\n })\n setOrders(ordersLocal);\n }\n }, [doacoesHerancas])\n\n async function download() {\n setDownloading(true);\n const file = await downloadDoacoesHerancasExcel();\n if (file) {\n const blob = new Blob([file], { type: \"xlsx\" });\n const element = document.createElement(\"a\");\n element.href = URL.createObjectURL(blob);\n element.download = \"doacoes_herancas.xlsx\";\n document.body.appendChild(element);\n element.click();\n element.remove();\n }\n setDownloading(false);\n }\n\n return (\n <Container>\n <Row justify=\"end\" align=\"top\" gutter={[16, 16]}>\n <Col flex={1} offset={0}>\n <Typography.Title style={{ justifySelf: \"center\" }} level={2}>\n Doações ou heranças\n </Typography.Title>\n </Col>\n <Col flex={1}>\n <Row justify=\"space-between\" align=\"middle\">\n {orders.length === 0 ? (\n <div />\n ) : (\n <Button\n size=\"small\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={orders.length === 0}\n startIcon={\n loadingPut || loadingGet || downloading ? (\n <LoadingOutlined />\n ) : (\n <DownloadOutlined />\n )\n }\n onClick={download}>\n BAIXAR EXCEL\n </Button>\n )}\n <Button\n size=\"small\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n setDoacaoHerancaEdit({});\n setShowAddPositionModal(true);\n }}\n startIcon={\n loadingPut || loadingGet ? (\n <LoadingOutlined />\n ) : (\n <PlusCircleOutlined />\n )\n }>\n Adicionar Doação/Herança\n </Button>\n </Row>\n </Col>\n <Col span={24}>\n <List\n loading={loadingGet}\n itemLayout=\"horizontal\"\n dataSource={\n orders?.filter(\n (oldPosition) => !oldPosition.lendingSide\n ) ?? []\n }\n renderItem={(item, index) => (\n <List.Item\n className={item.price === 0 ? \"error-border\" : \"\"}\n actions={[\n ...(item.price === 0\n ? [\n <Tooltip title=\"Preencha o custo médio!\">\n <AntButton\n icon={\n <AiOutlineInfoCircle\n className=\"alert-icon\"\n size={20}\n />\n }\n type=\"text\"\n />\n </Tooltip>,\n ]\n : []),\n <AntButton\n type=\"text\"\n disabled={loadingPut}\n icon={<FaRegEdit />}\n onClick={() => handleEditDoacaoHeranca(item, index)}\n />,\n <AntButton\n type=\"text\"\n disabled={loadingPut}\n icon={<AiOutlineDelete />}\n onClick={() => handleRemoveDoacaoHeranca(item, index)}\n />,\n ]}>\n <Skeleton active title={false} loading={loadingGet}>\n <List.Item.Meta\n title={<div>{item.code}</div>}\n description={\n <>\n <div className=\"list-description\">\n <div>\n Data: <strong>{moment(item.date, [\n \"DD/MM/YYYY\",\n \"YYYY-MM-DD\",\n ]).format(\"DD/MM/YYYY\")}</strong>\n </div>\n <div>\n Quantidade: <strong>{item.quantity}</strong>\n </div>\n <div>\n Custo médio:{\" \"}\n <strong>{formatCurrency(item.price ?? 0)}</strong>\n </div>\n </div>\n </>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n </Col>\n </Row>\n\n <FormModal\n add={addDoacaoHeranca}\n edit={editDoacaoHeranca}\n visibility={showAddPositionModal}\n rows={DoacoesHerancasRows()}\n onCancel={() => {\n setShowAddPositionModal(false);\n }}\n title={\n doacaoHerancaEdit?._id || doacaoHerancaEdit?.id\n ? \"Editar ativo\"\n : \"Adicionar ativo\"\n }\n itemToEdit={\n doacaoHerancaEdit.id || doacaoHerancaEdit.code\n ? doacaoHerancaEdit\n : undefined\n }\n />\n </Container>\n );\n};\n","import { Typography } from \"antd\";\nimport { DoacoesHerancaData, Question } from \"./interfaces\";\nimport {\n DoacoesHerancas,\n DoacoesHerancasProps,\n} from \"./Components/DoacoesHerancas\";\n\nexport const validateDoacoesHerancaData = (data: DoacoesHerancaData) => {\n return true;\n};\n\nexport const questions: Question[] = [\n {\n id: \"doacoesHerancas\",\n title: \"Complete seus dados de doações e heranças\",\n children: (\n <Typography style={{ marginTop: \"32px\", textAlign: \"right\" }}>\n Lembre-se de clicar em finalizar para salvar seus dados\n </Typography>\n ),\n formItems: [\n {\n name: \"doacoesHerancas\",\n FormItem: ({ rest }) => (\n <DoacoesHerancas {...(rest as DoacoesHerancasProps)} />\n ),\n },\n ],\n },\n];\n","import styled from \"styled-components\";\n\nexport const BolsaManualContainer = styled.div`\n height: 100%;\n overflow-y: hidden;\n h2 {\n margin: 0 0 0 0 !important;\n }\n .beauty-scrollbar{\n margin-top: 64px;\n }\n`;\n","import { Darf } from \"../../pages/Darf\";\nimport { Bolsa } from \"../../pages/Bolsa\";\nimport { Crypto } from \"../../pages/Crypto\";\nimport { MeiDas } from \"../../pages/MeiDas\";\nimport { Historic } from \"../../pages/Historic\";\nimport { Exterior } from \"../../pages/Exterior\";\nimport { Settings } from \"../../pages/Settings\";\nimport { DarfBolsa } from \"../../pages/DarfBolsa\";\nimport { MeiReport } from \"../../pages/MeiReport\";\nimport { Regulation } from \"../../pages/Regulation\";\nimport { ReportBolsa } from \"../../pages/ReportBolsa\";\nimport { Integration } from \"../../pages/Integration\";\nimport { BolsaManual } from \"../../pages/BolsaManual\";\nimport { Rendimentos } from \"../../pages/Rendimentos\";\nimport { DarfExterior } from \"../../pages/DarfExterior\";\nimport { AnnualReport } from \"../../pages/AnnualReport\";\nimport { HistoricBolsa } from \"../../pages/HistoricBolsa\";\nimport { ReportExterior } from \"../../pages/ReportExterior\";\nimport { DividendosBolsa } from \"../../pages/DividendosBolsa\";\nimport { Identification } from \"../../pages/MeiIdentification\";\nimport { IntegrationBolsa } from \"../../pages/IntegrationBolsa\";\nimport { IntegrationCrypto } from \"../../pages/IntegrationCrypto\";\nimport { DividendosExterior } from \"../../pages/DividendosExterior\";\nimport { IntegrationExterior } from \"../../pages/IntegrationExterior\";\nimport { IntegrationExteriorXP } from \"../../pages/IntegrationExteriorXP\";\nimport { TransferenciaCustodia } from \"../../pages/TransferenciaCustodia\";\nimport { DoacoesHeranca } from \"../../pages/DoacoesHeranca\";\n\nexport const Pages: { [key: string]: any } = {\n Darf,\n Bolsa,\n Crypto,\n MeiDas,\n Exterior,\n Historic,\n Settings,\n DarfBolsa,\n MeiReport,\n Regulation,\n ReportBolsa,\n Integration,\n BolsaManual,\n DoacoesHeranca,\n Rendimentos,\n AnnualReport,\n DarfExterior,\n HistoricBolsa,\n ReportExterior,\n Identification,\n DividendosBolsa,\n IntegrationBolsa,\n IntegrationCrypto,\n DividendosExterior,\n IntegrationExterior,\n TransferenciaCustodia,\n IntegrationExteriorXP,\n};\n","import { Button } from \"@mui/material\";\nimport { useMemo, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AiOutlineLock } from \"react-icons/ai\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Modal, Row, Typography, message } from \"antd\";\nimport { Card } from \"../Exterior/Cards\";\nimport { itensBolsa } from \"./itensBolsa\";\nimport { HomeContainer } from \"../Home/styles\";\nimport AntButton from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { download, errorMessage } from \"../../utils\";\nimport api from \"../../services/apiBolsa\";\n\nexport const Bolsa = () => {\n const navigate = useNavigate();\n const { user, hasPlan, showUserPlanModal, userPlanModal } = useAuth();\n const [loading, setLoading] = useState(false);\n const [infoModal, toggleModal] = useState(null);\n const [reportCount, setReportCount] = useState(0);\n const [downloading, setDownloading] = useState(false);\n const [reportIsReady, setReportIsReady] = useState(false);\n\n const userPlanInfoStatus = useMemo(\n () => user.user?.userPlanInfoVelotax,\n [user.user?.userPlanInfoVelotax]\n );\n\n const handlePlanModal = () => {\n navigate('/planos')\n };\n\n const handleAnualReport = async (id: string) => {\n const blockHandle =\n !userPlanInfoStatus.active &&\n !userPlanInfoStatus.type &&\n !(\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_BASIC ||\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE ||\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_PRO_MONTH ||\n userPlanInfoStatus.type === UserPlanEnum.XP_BASIC ||\n userPlanInfoStatus.type === UserPlanEnum.XP_PRO ||\n userPlanInfoStatus.type === UserPlanEnum.XP_CONCIERGE ||\n userPlanInfoStatus.type === UserPlanEnum.XP_PRO_MONTH\n );\n if (blockHandle) {\n handlePlanModal();\n } else {\n toggleModal({ year: 2022 } as any);\n }\n };\n\n const downloadAction = (record: any) => {\n setDownloading(true);\n api\n .post(\"/darf/report/download/anual-report\", {\n from: \"xpinvestimentos\",\n id: record._id,\n month: record.month,\n year: record.year,\n })\n .then((res) => {\n if (res.data.fileUrl) {\n download(res.data.fileUrl);\n }\n if (res.data.file) {\n message.success(\"Relatório enviado para o seu e-mail\");\n // downloadPDF(res.data.file);\n }\n })\n .catch(({ response }) =>\n message.error(response?.data?.message ?? errorMessage)\n )\n .finally(() => {\n setDownloading(false);\n toggleModal(null);\n });\n };\n\n const checkProcessorAction = (record: any) => {\n setLoading(true);\n setReportIsReady(false);\n setReportCount(0);\n const reportCountInterval = setInterval(() => {\n setReportCount((n) => n + 1);\n }, 1500);\n let showToast = false;\n toggleModal(record);\n const itvl = setInterval(() => {\n api\n .get(`/darf/report/download/anual-report?year=${record.year}`)\n .then((res) => {\n const { data } = res;\n const { year, status } = data;\n const isProcessing = record.year === year && status === \"processing\";\n if (isProcessing && showToast) return;\n if (isProcessing && !showToast) {\n showToast = true;\n return message.success(\n `Estamos processando os dados para seu relatório anual de ${year}`\n );\n }\n clearInterval(reportCountInterval);\n const reportFinishCountInterval = setInterval(() => {\n setReportCount((n) => {\n if (n > 100) {\n clearInterval(reportFinishCountInterval);\n setLoading(false);\n setReportIsReady(true);\n clearInterval(itvl);\n }\n return n + 1;\n });\n }, 50);\n })\n .catch(({ response }) => {\n const { data, status } = response;\n if (status === 401)\n setTimeout(\n () => navigate(\"/xpinvestimentos/bolsa-integration\"),\n 2000\n );\n message.error(data?.message ?? errorMessage);\n setLoading(false);\n clearInterval(itvl);\n });\n }, 5000);\n };\n\n return (\n <HomeContainer>\n <div className=\"content bolsa\">\n <div>\n <Typography.Title level={1}>Bolsa de valores</Typography.Title>\n <Typography.Text className=\"destak\">\n Selecione a opção que deseja utilizar\n </Typography.Text>\n <div className=\"cards cards-2\">\n {itensBolsa.slice(0, 3).map((item) => (\n <Card\n id={item.id}\n key={item.id}\n link={item.link}\n icon={\n (loading || downloading) && item.id === \"anual-report\" ? (\n <LoadingOutlined />\n ) : (\n item.icon\n )\n }\n onClick={\n item.premium && (!hasPlan || user?.user?.userPlanInfoVelotax?.type?.includes('BASIC'))\n ? () => handlePlanModal()\n : item.id === \"anual-report\"\n ? () => handleAnualReport(item.id)\n : undefined\n }\n >\n {item.content}\n {item.description && (\n <div className=\"description\">{item.description}</div>\n )}\n {!hasPlan || item.premium && (!hasPlan.premium && !hasPlan.concierge)\n ? (\n <AntButton\n type=\"primary\"\n className=\"btn-premium\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n }}\n >\n PREMIUM\n </AntButton>\n )\n :\n null}\n </Card>\n ))}\n </div>\n </div>\n </div>\n <Modal\n title=\"Informe de Rendimentos\"\n visible={!!infoModal}\n closable={!loading && !downloading}\n maskClosable={!loading && !downloading}\n onCancel={() => {\n toggleModal(null);\n }}\n footer={\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col span={24}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n startIcon={(loading || downloading) && <LoadingOutlined />}\n onClick={() => {\n if (!loading && !downloading) {\n if (reportIsReady) {\n downloadAction(infoModal);\n } else {\n checkProcessorAction({ year: 2022 } as any);\n }\n }\n }}\n >\n {loading && reportCount <= 100 ? `${reportCount}% ` : \"\"}\n {downloading\n ? \"Baixando informe\"\n : loading\n ? \"Gerando informe\"\n : reportIsReady\n ? \"Baixar informe\"\n : \"Gerar informe\"}\n </Button>\n </Col>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n disabled={loading || downloading}\n onClick={() => {\n if (!loading && !downloading) {\n navigate(\"/xpinvestimentos/bolsa-historic\");\n }\n }}\n >\n Ir para calculadora de DARF\n </Button>\n </Col>\n </Row>\n }\n >\n </Modal>\n </HomeContainer>\n );\n};\n","import { Button } from \"@mui/material\";\nimport { useMemo, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AiOutlineLock } from \"react-icons/ai\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Modal, Row, Typography, message } from \"antd\";\nimport { Card } from \"../Exterior/Cards\";\nimport { itensCrypto } from \"./itensCrypto\";\nimport { HomeContainer } from \"../Home/styles\";\nimport AntButton from \"../../components/Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { ReportAlertTitle } from \"../ReportExterior\";\nimport { download, errorMessage } from \"../../utils\";\nimport api from \"../../services/apiBolsa\";\n\nexport const Crypto = () => {\n const navigate = useNavigate();\n const { user, hasPlan, showUserPlanModal, userPlanModal } = useAuth();\n const isBasic = user.user?.userPlanInfoVelotax?.type?.includes('BASIC');\n const [loading, setLoading] = useState(false);\n const [infoModal, toggleModal] = useState(null);\n const [reportCount, setReportCount] = useState(0);\n const [downloading, setDownloading] = useState(false);\n const [reportIsReady, setReportIsReady] = useState(false);\n\n const userPlanInfoStatus = useMemo(\n () => user.user?.userPlanInfoVelotax,\n [user.user?.userPlanInfoVelotax]\n );\n\n const handlePlanModal = () => {\n navigate('/planos')\n };\n\n const handleAnualReport = async (id: string) => {\n const blockHandle =\n !userPlanInfoStatus.active &&\n !userPlanInfoStatus.type &&\n !(\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_BASIC ||\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE ||\n userPlanInfoStatus.type === UserPlanEnum.VELOTAX_MAIN_PRO_MONTH ||\n userPlanInfoStatus.type === UserPlanEnum.XP_BASIC ||\n userPlanInfoStatus.type === UserPlanEnum.XP_PRO ||\n userPlanInfoStatus.type === UserPlanEnum.XP_CONCIERGE ||\n userPlanInfoStatus.type === UserPlanEnum.XP_PRO_MONTH\n );\n if (blockHandle) {\n handlePlanModal();\n } else {\n toggleModal({ year: 2022 } as any);\n }\n };\n\n const downloadAction = (record: any) => {\n setDownloading(true);\n api\n .post(\"/darf/report/download/anual-report\", {\n from: \"xpinvestimentos\",\n id: record._id,\n month: record.month,\n year: record.year,\n })\n .then((res) => {\n if (res.data.fileUrl) {\n download(res.data.fileUrl);\n }\n if (res.data.file) {\n message.success(\"Relatório enviado para o seu e-mail\");\n // downloadPDF(res.data.file);\n }\n })\n .catch(({ response }) =>\n message.error(response?.data?.message ?? errorMessage)\n )\n .finally(() => {\n setDownloading(false);\n toggleModal(null);\n });\n };\n\n const checkProcessorAction = (record: any) => {\n setLoading(true);\n setReportIsReady(false);\n setReportCount(0);\n const reportCountInterval = setInterval(() => {\n setReportCount((n) => n + 1);\n }, 1500);\n let showToast = false;\n toggleModal(record);\n const itvl = setInterval(() => {\n api\n .get(`/darf/report/download/anual-report?year=${record.year}`)\n .then((res) => {\n const { data } = res;\n const { year, status } = data;\n const isProcessing = record.year === year && status === \"processing\";\n if (isProcessing && showToast) return;\n if (isProcessing && !showToast) {\n showToast = true;\n return message.success(\n `Estamos processando os dados para seu relatório anual de ${year}`\n );\n }\n clearInterval(reportCountInterval);\n const reportFinishCountInterval = setInterval(() => {\n setReportCount((n) => {\n if (n > 100) {\n clearInterval(reportFinishCountInterval);\n setLoading(false);\n setReportIsReady(true);\n clearInterval(itvl);\n }\n return n + 1;\n });\n }, 50);\n })\n .catch(({ response }) => {\n const { data, status } = response;\n if (status === 401)\n setTimeout(\n () => navigate(\"/xpinvestimentos/bolsa-integration\"),\n 2000\n );\n message.error(data?.message ?? errorMessage);\n setLoading(false);\n clearInterval(itvl);\n });\n }, 5000);\n };\n\n return (\n <HomeContainer>\n <div className=\"content bolsa\">\n <div>\n <Typography.Title level={1}>Criptoativos</Typography.Title>\n <Typography.Text className=\"destak\">\n Selecione a opção que deseja utilizar\n </Typography.Text>\n <div className=\"cards cards-2\">\n {itensCrypto.slice(0, 3).map((item) => (\n <Card\n id={item.id}\n key={item.id}\n link={item.link}\n icon={\n (loading || downloading) && item.id === \"anual-report\" ? (\n <LoadingOutlined />\n ) : (\n item.icon\n )\n }\n onClick={\n ((item.premium && !hasPlan) || isBasic)\n ? () => handlePlanModal()\n : item.id === \"anual-report\"\n ? () => handleAnualReport(item.id)\n : undefined\n }\n >\n {item.content}\n {item.description && (\n <div className=\"description\">{item.description}</div>\n )}\n {((item.premium && !hasPlan) || isBasic) && (\n <AntButton\n type=\"primary\"\n className=\"btn-premium\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n }}\n >\n PREMIUM\n </AntButton>\n )}\n </Card>\n ))}\n </div>\n </div>\n </div>\n <Modal\n title=\"Aviso\"\n visible={!!infoModal}\n closable={!loading && !downloading}\n maskClosable={!loading && !downloading}\n onCancel={() => {\n toggleModal(null);\n }}\n footer={\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col span={24}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n startIcon={(loading || downloading) && <LoadingOutlined />}\n onClick={() => {\n if (!loading && !downloading) {\n if (reportIsReady) {\n downloadAction(infoModal);\n } else {\n checkProcessorAction({ year: 2022 } as any);\n }\n }\n }}\n >\n {loading && reportCount <= 100 ? `${reportCount}% ` : \"\"}\n {downloading\n ? \"Baixando relatório\"\n : loading\n ? \"Gerando relatório\"\n : reportIsReady\n ? \"Baixar relatório\"\n : \"Gerar relatório\"}\n </Button>\n </Col>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n disabled={loading || downloading}\n onClick={() => {\n if (!loading && !downloading) {\n navigate(\"/xpinvestimentos/cripto-historic\");\n }\n }}\n >\n Ir para calculadora de DARF\n </Button>\n </Col>\n </Row>\n }\n >\n <Typography.Paragraph style={{ marginTop: \"-24px\" }}>\n Certifique-se de que todos os meses estejam com a situação \"Regular\"\n na Calculadora de DARF.\n </Typography.Paragraph>\n </Modal>\n </HomeContainer>\n );\n};\n","import { BsDownload } from \"react-icons/bs\";\nimport { BiHelpCircle } from \"react-icons/bi\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { CheckCircleOutlined, CloseCircleOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n List,\n message,\n Modal,\n Row,\n Select,\n Skeleton,\n Typography,\n} from \"antd\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport { Page } from \"../../constants/brokers\";\nimport { PageInfo } from \"../../components/PageInfo\";\nimport { PlanModal } from \"../../components/PlanModal\";\nimport { PlanEnum, Plans } from \"../../constants/plans\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { ConfirmModal, Container, Content } from \"./styles\";\nimport { StyledTag } from \"../Darf/Components/PayTags/styles\";\nimport { MEIAtividadePrincipalValue } from \"../../constants/identification\";\nimport {\n DasHelpModal,\n MeiDasStatusColorEnum,\n MeiDasStatusTextEnum,\n MeiReportDasStatusEnum,\n} from \"../../constants/das\";\nimport {\n download,\n errorMessage,\n formatDateHour,\n monthsExtended,\n} from \"../../utils\";\n\ninterface MeiDasResponse {\n year: number;\n month: number;\n path?: string;\n price?: number;\n payed?: boolean;\n issueDate?: string;\n requestDate?: string;\n inssBeneficiary?: boolean;\n status?: MeiReportDasStatusEnum;\n _id?: string;\n}\n\ninterface MeiDasProps {\n item: Page;\n}\n\nexport const MeiDas: React.FC<MeiDasProps> = ({ item }) => {\n const initialYear = new Date().getFullYear();\n const {\n currentBroker,\n integration: { plans },\n currentPage,\n } = useBroker();\n\n const [loading, setLoading] = useState(false);\n const [year, setYear] = useState(initialYear);\n const [showModal, setShowModal] = useState(false);\n const [showHelpModal, setShowHelpModal] = useState(false);\n const [data, setData] = useState<Array<MeiDasResponse>>();\n const [showPlanModal, setShowPlanModal] = useState(false);\n\n const { apiUrl } = item.settings;\n\n const yearOptions = Array.from(\n Array(new Date().getFullYear() - currentBroker.initialYear + 1)\n )\n .map((y, i) => ({\n value: currentBroker.initialYear + i,\n label: `${currentBroker.initialYear + i}`,\n }))\n .reverse();\n\n const dasMonths = useMemo(() => {\n const today = new Date();\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n return Array.from(Array(year === currentYear ? currentMonth + 1 : 12)).map(\n (item, index) => ({\n year,\n month: index + 1,\n })\n );\n }, [year]);\n\n const mainActivity = useMemo(() => {\n const index = data?.findIndex((item) => item.price && item.price > 0);\n const keys = Object.keys(MEIAtividadePrincipalValue).map((key) =>\n Number(key)\n );\n return data &&\n data.length > 0 &&\n typeof index === \"number\" &&\n index >= 0 &&\n typeof data[index].price === \"number\" &&\n keys.includes(data[index].price!)\n ? MEIAtividadePrincipalValue[data[index].price!]\n : \"\";\n }, [data]);\n\n const getDasList = useCallback(() => {\n setLoading(true);\n (currentPage?.api || apis)\n .get<MeiDasResponse[]>(apiUrl, { params: { year } })\n .then((response) =>\n setData(\n dasMonths.map(\n (item) =>\n (response.data ?? []).find(\n (responseItem) => responseItem.month === item.month\n ) ?? item\n )\n )\n )\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n }, [apiUrl, year, dasMonths, currentPage]);\n\n const pay = useCallback(\n (payed: boolean, item: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .put(`${apiUrl}/${item._id}`, { payed })\n .then(() => {\n setData((data) =>\n (data || []).map((das) => ({\n ...das,\n payed: item._id === das._id ? payed : das.payed,\n }))\n );\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n },\n [apiUrl, currentPage]\n );\n\n const downloadAction = (item: MeiDasResponse, index: number) => {\n if (item.path) {\n download(item.path);\n }\n };\n\n const handleEmit = (item: MeiDasResponse) => {\n setLoading(true);\n (currentPage?.api || apis)\n .post(apiUrl, {\n ...item,\n mainActivity,\n inssBeneficiary: !!item.inssBeneficiary,\n })\n .then(() => {\n getDasList();\n handleModal();\n })\n .catch(() => message.error(errorMessage))\n .finally(() => {\n setLoading(false);\n });\n };\n\n const checkIfPayed = (item: MeiDasResponse) => {\n if (plans?.name === PlanEnum.PRO_V1 && plans?.status === \"active\") {\n handleEmit(item);\n } else {\n setShowPlanModal(true);\n }\n };\n\n const inssAction = (item: MeiDasResponse) => {\n setData((data) =>\n data?.map((das) =>\n das.month === item.month\n ? {\n ...das,\n inssBeneficiary: !das.inssBeneficiary,\n }\n : das\n )\n );\n };\n\n const payAction = (value: boolean, record: any) => {\n pay(value, record);\n };\n\n const handleModal = () => {\n setShowModal((show) => !show);\n };\n\n const handleHelpModal = () => {\n setShowHelpModal((show) => !show);\n };\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n useEffect(() => {\n getDasList();\n }, [getDasList, year]);\n\n return (\n <Container>\n <PageInfo\n title=\"Emita suas guias mensais MEI (DAS)\"\n subtitle=\"As guias mensais do MEI devem ser emitidas e pagas todo mês, mesmo sem faturamento.\"\n />\n <Content>\n <Typography.Title level={1}>Lista de Guias (DAS) </Typography.Title>\n <Row align=\"middle\">\n <Col xs={22} span={23}>\n <Typography.Title level={2}>\n Mantenha o pagamento das suas guias mensais do MEI em dia.\n </Typography.Title>\n </Col>\n <Col xs={2} span={1}>\n <Button\n type=\"text\"\n onClick={handleHelpModal}\n icon={<BiHelpCircle size={20} />}\n />\n </Col>\n <Col span={24}>\n <Typography.Text italic strong>\n Obs.: Marque se você é Beneficiário do INSS antes de emitir a\n guia.\n </Typography.Text>\n </Col>\n </Row>\n\n <br />\n\n <Typography.Paragraph>Selecione o ano:</Typography.Paragraph>\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n\n <List\n loading={loading}\n dataSource={data ?? []}\n itemLayout=\"horizontal\"\n renderItem={(item, index) => (\n <List.Item\n actions={[\n item.status && (\n <>\n Pago?\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => payAction(!item.payed, item)}\n icon={\n item.payed ? (\n <CheckCircleOutlined className=\"success-icon\" />\n ) : (\n <CloseCircleOutlined className=\"error-icon\" />\n )\n }\n />\n </>\n ),\n item.status && item.path && (\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => downloadAction(item, index)}\n icon={<BsDownload size={16} />}\n />\n ),\n !item.status && (\n <>\n Beneficiário INSS?\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => inssAction(item)}\n icon={\n item.inssBeneficiary ? (\n <CheckCircleOutlined className=\"success-icon\" />\n ) : (\n <CloseCircleOutlined className=\"error-icon\" />\n )\n }\n />\n </>\n ),\n !item.status && (\n <Button onClick={() => checkIfPayed(item)} type=\"primary\">\n Emitir guia\n </Button>\n ),\n ]}\n >\n <Skeleton title={false} loading={loading} active>\n <List.Item.Meta\n title={\n <Row gutter={[16, 16]} align=\"middle\">\n <Col>\n {monthsExtended[item.month - 1]} de {item.year}\n </Col>\n {item.status && (\n <Col>\n <StyledTag color={MeiDasStatusColorEnum[item.status]}>\n {MeiDasStatusTextEnum[item.status]}\n </StyledTag>\n </Col>\n )}\n </Row>\n }\n description={\n <>\n {/* {item.price ? formatCurrency(item.price) : \"-\"} */}\n {item.issueDate && <br />}\n {item.issueDate &&\n `Emissão: ${formatDateHour(item.issueDate)}`}\n {item.requestDate && <br />}\n {item.requestDate &&\n `Solicitação: ${formatDateHour(item.requestDate)}`}\n </>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n </Content>\n <Modal\n footer={null}\n visible={showHelpModal}\n onCancel={handleHelpModal}\n title={DasHelpModal?.title}\n >\n {DasHelpModal?.content}\n </Modal>\n <ConfirmModal\n closable\n footer={null}\n destroyOnClose\n keyboard={false}\n visible={showModal}\n onCancel={handleModal}\n title=\"Guia (DAS) solicitada com sucesso!\"\n >\n <Typography.Paragraph className=\"p\">\n Em até <strong>48h úteis</strong> seu DAS será emitido e enviado para\n o seu email de cadastro. <strong>Aguarde!</strong>\n </Typography.Paragraph>\n </ConfirmModal>\n <PlanModal\n visible={showPlanModal}\n title=\"Contrate o plano para realizar a emissão\"\n modalPlans={[Plans.find((plan) => plan.type === PlanEnum.PRO_V1)!]}\n onCancel={() => {\n setShowPlanModal(false);\n }}\n />\n </Container>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Button } from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AiOutlineLock } from \"react-icons/ai\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Modal, Row, Typography, message } from \"antd\";\nimport { Card } from \"./Cards\";\nimport apis from \"../../services/apis\";\nimport { HomeContainer } from \"../Home/styles\";\nimport AntButton from \"../../components/Button\";\nimport { itensExterior } from \"./itensExterior\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { download, errorMessage } from \"../../utils\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport apiExterior from \"../../services/apiExterior\";\nimport { ModalIntegrationExterior } from \"./ModalIntegrationExterior\";\nimport { UserPlanEnum } from \"../../constants/plans\";\n\nexport const Exterior = () => {\n const navigate = useNavigate();\n const { currentPage } = useBroker();\n const { showUserPlanModal, hasPlan, hasPermissionGeneral, user } = useAuth();\n // const [loading, setLoading] = useState(false);\n const [infoModal, toggleModal] = useState(null);\n const [reportLoading, setReportLoading] = useState(false);\n const [, setReportDisabled] = useState<boolean>(false);\n const [showNoOperationsModal, setShowNoOperationsModal] = useState(false);\n\n const checkOperations = async () => {\n try {\n const { data } = await (currentPage?.api || apis).get(\n \"/xpinvestimentos/has-operations\"\n );\n return data?.has;\n } catch {\n return false;\n }\n };\n\n const handleReportClick = async () => {\n const hasOperations = await checkOperations();\n if (hasOperations) {\n navigate(\"/xpinvestimentos/exterior-report\");\n } else {\n setShowNoOperationsModal(true);\n }\n };\n\n const downloadAction = (record: any): Promise<void> => {\n setReportLoading(true);\n return (currentPage?.api || apis)\n .post(\"/darf/report/download/anual-report\", {\n id: record._id,\n month: record.month,\n year: record.year,\n })\n .then((res) => {\n if (res.data.fileUrl) {\n download(res.data.fileUrl);\n }\n if (res.data.file) {\n // downloadPDF(res.data.file);\n message.success(\"Relatório enviado para o seu e-mail\");\n }\n })\n .catch(({ response }) =>\n message.error(response?.data?.message ?? errorMessage)\n )\n .finally(() => {\n toggleModal(null);\n setReportLoading(false);\n });\n };\n\n const handlePlanModal = () => {\n // showUserPlanModal(!userPlanModal, ReportAlertTitle);\n navigate(\"/planos\");\n };\n\n const handleOpenPlanModal = () => {\n showUserPlanModal(true);\n };\n\n // const handleAnualReport = async (id: string) => {\n // let retPlanInfo = {\n // data: {\n // active: false,\n // permissions: {\n // \"exterior-xpinvestimentos\": false,\n // \"relatoriosanual-xpinvestimentos\": false,\n // },\n // },\n // };\n\n // setLoading(true);\n // try {\n // retPlanInfo = await apiPayment.get(\"/user-plan/plan-info\");\n // } catch (err) {\n // console.error(err);\n // }\n\n // const hasntPlan = !retPlanInfo.data.active;\n // const hasExteriorCalcActive =\n // retPlanInfo.data.permissions[\"exterior-xpinvestimentos\"];\n // const hasYearlyReportsCalcActive =\n // retPlanInfo.data.permissions[\"relatoriosanual-xpinvestimentos\"];\n\n // setLoading(false);\n\n // let blockHandle = hasntPlan && !hasExteriorCalcActive;\n\n // if (id === \"anual-report\") {\n // blockHandle =\n // hasntPlan && !hasExteriorCalcActive && !hasYearlyReportsCalcActive;\n // }\n\n // if (blockHandle) {\n // handlePlanModal();\n // } else {\n // toggleModal({ year: 2022 } as any);\n // }\n // };\n\n const getErrors = () => {\n apiExterior\n .get(`/transaction/hasError`, { params: { notified: true } })\n .then((res: any) => {\n setReportDisabled((res?.data?.error?.errorDates || []).length > 0);\n })\n .catch(() => {\n console.log(\"Erro no error\");\n });\n };\n\n useEffect(() => {\n getErrors();\n }, []);\n\n return (\n <HomeContainer>\n <div className=\"content exterior\">\n <div>\n <Typography.Title level={1}>Ativos no exterior</Typography.Title>\n <Typography.Text className=\"destak\">\n Selecione a opção que deseja utilizar\n </Typography.Text>\n <div className=\"cards cards-2 cards-5\">\n {itensExterior.slice(0, 4).map((item) => (\n <Card\n id={item.id}\n key={item.id}\n link={item.link}\n icon={item.icon}\n onClick={\n item.id === \"report\"\n ? () => {\n if (!hasPlan && !hasPermissionGeneral) {\n return navigate(\"/planos\");\n }\n \n // if (user?.user?.userPlanInfoVelotax?.type?.includes('BASIC') ||\n // user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.XP_BASIC ||\n // user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) {\n // return navigate(\"/planos\");\n // }\n handleReportClick()\n }\n : item.showToBasic && hasPlan && hasPlan.basic\n ? undefined\n : item.premium && !hasPlan.premium && !hasPlan.concierge\n ? () => {\n handleOpenPlanModal();\n }\n : undefined\n }\n >\n {item.content}\n {item.description && (\n <div className=\"description\">{item.description}</div>\n )}\n {item.showToBasic &&\n hasPlan &&\n hasPlan.basic ? null : item.premium &&\n !hasPlan.premium &&\n !hasPlan.concierge ? (\n <AntButton\n type=\"primary\"\n className=\"btn-premium\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handlePlanModal();\n }}\n >\n PREMIUM\n </AntButton>\n ) : null}\n </Card>\n ))}\n </div>\n </div>\n </div>\n <Modal\n title=\"Aviso\"\n visible={!!infoModal}\n closable={!reportLoading}\n maskClosable={!reportLoading}\n onCancel={() => {\n if (!reportLoading) {\n toggleModal(null);\n }\n }}\n footer={\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col span={24}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n if (!reportLoading) {\n downloadAction(infoModal);\n }\n }}\n >\n {reportLoading ? (\n <>\n <LoadingOutlined />\n Gerando relatório\n </>\n ) : (\n \"Continuar\"\n )}\n </Button>\n </Col>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"small\"\n variant=\"text\"\n color=\"secondary\"\n onClick={() => {\n navigate(\"/xpinvestimentos/exterior-historic\");\n }}\n >\n Ir para calculadora de DARF\n </Button>\n </Col>\n </Row>\n }\n >\n <Typography.Paragraph style={{ marginTop: \"-24px\" }}>\n <strong>\n Caso você tenha realizado operações de venda de ativos ou recebido\n cupom de bonds em 2022,\n </strong>{\" \"}\n certifique-se de que todos os meses estejam com a situação \"Regular\"\n na Calculadora de DARF.\n </Typography.Paragraph>\n </Modal>\n\n <ModalIntegrationExterior\n visible={showNoOperationsModal}\n onCancel={() => {\n setShowNoOperationsModal(false);\n }}\n />\n </HomeContainer>\n );\n};\n","import clsx from \"clsx\";\nimport moment from \"moment-timezone\";\nimport { BsEye } from \"react-icons/bs\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { AiOutlineLock, AiOutlineWarning } from \"react-icons/ai\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport {\n Col,\n List,\n message,\n Row,\n Select,\n Skeleton,\n Space,\n Typography,\n} from \"antd\";\nimport { Darf } from \"../Darf\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport { Container, Content, TitleContainer } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\nimport { DarfExterior } from \"../DarfExterior\";\nimport { CardXP } from \"../../components/CardXP\";\nimport apiExterior from \"../../services/apiExterior\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { PayButton } from \"../HistoricBolsa/PayButton\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { itensExterior } from \"../Exterior/itensExterior\";\nimport { DrawerModal } from \"../../components/DrawerModal\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\nimport { PayDarfButton } from \"../HistoricBolsa/PayDarfButton\";\nimport {\n maxCreditCardPayment,\n maxDarfPrice,\n maxPixPayment,\n minDarfPrice,\n yearConfigPL4173,\n} from \"../../constants/darf\";\nimport {\n download,\n errorMessage,\n formatCurrency,\n getInitialYear,\n getLastBusinessDay,\n isMobile,\n monthsExtended,\n} from \"../../utils\";\nimport { itensCrypto } from \"../Crypto/itensCrypto\";\nimport { instanceMsCalc } from \"../../services/msCalc\";\nimport { ModalConfirmMail } from \"../../components/ModalConfirmMail\";\n\ninterface ShowCalcModal {\n visible: boolean;\n view?: boolean;\n month?: number;\n year?: number;\n calc?: \"cripto\" | \"exterior\";\n}\n\ninterface HistoricProps {\n item: Page;\n}\n\nexport const Historic: React.FC<HistoricProps> = ({ item }) => {\n const { currentBroker } = useBroker();\n const { state, pathname } = useLocation();\n const navigate = useNavigate()\n const {\n user,\n hasPlan: hasPremiunPlan,\n hasPermissionExterior,\n hasPermissionGeneral,\n showUserPlanModal,\n } = useAuth();\n const hasPlan =\n hasPremiunPlan || hasPermissionExterior || hasPermissionGeneral;\n\n const today = new Date();\n const currentMonth = today.getMonth();\n // const currentYear = today.getFullYear();\n const currentYear = today.getFullYear();\n const [holidays, setHolidays] = useState<any[]>([]);\n const stateYear = (state as any)?.year;\n const initialYear = getInitialYear(currentYear, currentMonth);\n window.history.replaceState({}, document.title);\n\n const [data, setData] = useState<any[]>();\n const [loading, setLoading] = useState(false);\n const [emitting, setEmitting] = useState(false);\n const [itemToPay, setItemToPay] = useState<any>();\n const [paymentModal, setPaymentModal] = useState(false);\n const [showErrorCard, setShowErrorCard] = useState(false)\n const [errorDates, setErrorDates] = useState<{ month: number, year: number }[]>([]);\n const [year, setYear] = useState(stateYear ?? initialYear);\n // const [year, setYear] = useState(2023);\n const [reportData, setReportData] = useState<any>(null)\n const [month, setMonth] = useState(0);\n const [showCalcModal, setShowCalcModal] = useState<ShowCalcModal>({\n visible: false,\n });\n const isBasic = user.user?.userPlanInfoVelotax?.type?.includes('BASIC');\n\n const historicFeature = item.features[0];\n const payFeature = item.features[1];\n const downloadFeature = item.features[2];\n\n const isCripto = pathname.includes(\"cripto\");\n const isExterior = pathname.includes(\"exterior\");\n const backend = isExterior ? apiExterior : apis;\n const oldModel = year < yearConfigPL4173;\n\n const yearOptions = Array.from(\n Array(initialYear - currentBroker.initialYear + 1)\n )\n .map((y, i) => ({\n value: currentBroker.initialYear + i,\n label: `${currentBroker.initialYear + i}`,\n }))\n .reverse()\n // .filter(e => e.value <= 2023)\n\n const getDowloadLinks = useCallback(\n (data: any[]) => {\n const dataLinks = data.map((item) =>\n !!item.fullPath && !!item._id\n ? backend.get(`${downloadFeature.apiUrl}/${item._id}`)\n : Promise.resolve({ data: item })\n );\n Promise.allSettled(dataLinks).then((response) => {\n setData(\n response.map((item, index) =>\n item.status === \"fulfilled\" &&\n typeof item.value.data?.url === \"string\"\n ? { ...data?.[index], url: item.value.data.url }\n : data?.[index]\n )\n );\n });\n },\n [backend, downloadFeature]\n );\n\n const getHistoric = useCallback(() => {\n setLoading(true);\n backend\n .get(historicFeature.apiUrl, {\n params: { year },\n })\n .then((response) => {\n const data = (response.data ?? []).reverse();\n setData(data);\n getDowloadLinks(data);\n })\n .catch((err) => console.log(err))\n .finally(() => setLoading(false));\n }, [historicFeature, year, backend, getDowloadLinks]);\n\n const payAction = useCallback(\n (payed: boolean, item: any) => {\n setLoading(true);\n backend\n .put(`${payFeature.apiUrl}/${item._id}`, { payed })\n .then(() => {\n getHistoric();\n setData((data) =>\n (data || []).map((darf) => ({\n ...darf,\n payed: item._id === darf._id ? payed : darf.payed,\n }))\n );\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n },\n [payFeature, getHistoric, backend]\n );\n\n const sendDarfToEmail = (darfId: string) => {\n backend\n .get(`/darf/sendEmail/${darfId}`)\n .then(() => {\n oldModel\n ? message.success(\"O DARF foi enviado para o seu e-mail\")\n : message.success(\"O Relatório foi enviado para o seu e-mail\");\n })\n .catch(() => {\n console.log(\"Algo inesperado aconteceu. Tente novamente!\");\n });\n };\n\n const getErrors = () => {\n apiExterior\n .get(`/transaction/hasError`)\n .then((res: any) => {\n setShowErrorCard(res?.data?.error?.show && !res?.data?.error?.errorDates?.length)\n setErrorDates(res?.data?.error?.errorDates || [])\n })\n .catch(() => {\n console.log(\"Erro no error\");\n });\n }\n\n const editAction = (\n record: any,\n view: boolean,\n index: number,\n noPlanMode?: boolean\n ) => {\n if (!hasPlan && !noPlanMode) {\n navigate('/planos')\n } else {\n const { month, year } = record;\n setShowCalcModal({\n visible: true,\n view,\n year,\n month,\n calc: isExterior ? \"exterior\" : \"cripto\",\n });\n if (view) {\n setItemToPay(record);\n }\n }\n };\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n const valueIsGreaterThanMin = (data: any) =>\n data?.impostoDevido + (data?.impostoAcumulado || 0) - (data.irrfExterior || 0) >= minDarfPrice;\n\n const valueIsLessThanMax = (data: any) =>\n data?.totalImpostoDevido <= maxDarfPrice;\n\n const showPayButton = (item: any) =>\n (valueIsGreaterThanMin(item) &&\n valueIsLessThanMax(item) &&\n (item.status !== \"PAYED\" || !item.payed)) || \n (year >= yearConfigPL4173 \n && item.transactions?.filter((t: any) => ['TRADE', 'DIVIDEND', 'INTEREST'].includes(t.type)).length > 0\n );\n\n const handleOpenPlanModal = () => {\n navigate('/planos')\n };\n\n const handlePayButton = (item: any) => {\n if (year >= yearConfigPL4173) {\n handleDarf(false, item);\n } else if (!hasPlan) {\n handleOpenPlanModal();\n } else {\n getTaxes(item.month);\n setPaymentModal(!paymentModal);\n }\n };\n\n const handleOpenDarfModal = (justSave?: boolean, obj?: any) => {\n handleDarf(justSave, obj);\n };\n\n const handleCloseCalcModal = () => {\n setShowCalcModal({ visible: false });\n getHistoric();\n };\n\n const getTaxes = useCallback(\n (month: number, callback?: (obj: any) => void) => {\n if(month === 0) month = 1\n backend\n .get(\"/transaction\", { params: { month, year } })\n .then((response) => {\n const data = {\n ...response.data,\n year,\n month,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: response.data.memoriaCalculo,\n };\n setItemToPay(data);\n callback?.(data);\n })\n .catch(() => { });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [year, user.user.name]\n );\n\n const sendReportMail = useCallback(() => {\n const reportType = reportData.type || 'darf';\n if (!reportData) {\n message.error(\"Darf não encontrado!\")\n return;\n }\n backend.get(`/darf/report/mail/${reportType}`, {\n params: {\n year: reportData?.year,\n month: reportData?.month,\n filePath: reportData?.filePath,\n ...reportData,\n }\n }).then(() => {\n message.success(\"Relatório enviado para seu email.\")\n })\n .catch(() => {\n message.error(\"Houve um erro ao enviar seu relatório!\")\n })\n }, [backend, reportData])\n\n const handleDarf = (justSave?: boolean, obj?: any) => {\n setLoading(true);\n setEmitting(true);\n const darfData = obj ? obj : itemToPay;\n backend\n .post(\"/darf\", {\n ...darfData,\n year,\n month: darfData?.month,\n name: user.user.name,\n memoriaCalculo: [],\n transactions: darfData?.memoriaCalculo,\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n insertPix: true,\n justSave: false,\n noSendMail: true,\n })\n .then((res) => {\n getHistoric();\n setEmitting(false);\n if (!justSave) {\n setPaymentModal(year >= yearConfigPL4173 ? false : !paymentModal);\n \n oldModel\n ? message.success(\"O DARF foi emitido com sucesso!\")\n : message.success(\"O Relatório foi emitido com sucesso!\");\n\n const darfId = res.data?.id || darfData._id;\n if (darfId && oldModel) {\n setReportData(darfId);\n }\n\n if (res.data?.filePath) {\n setReportData({\n year: year,\n month: darfData?.month,\n filePath: res.data?.filePath,\n type: 'darf',\n totalImpostoDevido: darfData?.totalImpostoDevido ?? 0\n })\n }\n\n download(res.data.darfUrl);\n } else {\n payAction(true, { ...data, _id: res.data?.darf?._id });\n }\n })\n .catch((err) => {\n message.error(err?.response?.data?.message || errorMessage);\n setEmitting(false);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const exteriorTransactionsFilter = (el: any) =>\n (el.operation === \"SELL\" && !el?.type) ||\n (el.operation === \"SELL\" && el.manual) ||\n (el.operation === \"SELL\" && el.type === \"TRADE\");\n\n const exteriorTransactionsFilterCalc = (el: any) =>\n (el.operation === \"SELL\" && !el?.type) ||\n (el.operation === \"SELL\" && el.manual) ||\n (el.operation === \"SELL\" &&\n (el.type === \"TRADE\" || el.type === \"INTEREST\"));\n\n const disableCurrentMonth = (item: any) =>\n item.year === currentYear && item.month === currentMonth + 1 && item.year < yearConfigPL4173;\n\n const vendasTotais = (item: any) => {\n return isExterior\n ? item.transactions\n ?.filter(exteriorTransactionsFilter)\n .reduce((a: number, t: any) => a + (oldModel ? ((t.valor || 0) * (t.cambioVenda || 0)) : (t.sellPrice_BRL || 0) * (t.quantidade || 0)), 0)\n : item.transactions.reduce(\n (a: number, t: any) => a + t.quantity * t.sellPrice,\n 0\n );\n };\n\n const handleFinalValue = (item: any) =>\n Number(\n (item.impostoDevido || 0) +\n (oldModel || item.month == 1 ? (item.impostoAcumulado || 0) : 0)\n - (item.irrfExterior || 0 ) +\n ((item.impostoDevido || 0) + (item.impostoAcumulado || 0) - (item.irrfExterior || 0 ) < minDarfPrice || !oldModel\n ? 0\n : (item.juros || 0) + (item.multa || 0))\n );\n\n const ImpostoAPagarNoPlan = (\n <Typography.Text className=\"no-plan-imposto-a-pagar\">\n <span>Imposto a pagar: </span>\n <Button\n type=\"link\"\n onClick={() => {\n navigate(\"/planos\")\n }}\n >\n <strong>\n Clique para verificar \n <AiOutlineLock size={14} />\n </strong>\n </Button>\n </Typography.Text>\n );\n\n const ErrorCard = () => {\n return (\n <div className=\"errorCard\">\n <p className=\"errorTitle\">\n Atenção\n </p>\n <p className=\"errorText\">\n Não foi possivel carregar as suas informações.\n </p>\n <p className=\"errorText\">\n Entre em contato através do e-mail <strong> suporte@velotax.com.br </strong>\n </p>\n </div>\n )\n }\n\n const ImpostoAPagarWithPlan: React.FC<{ item: any }> = ({ item }) => {\n setMonth(item.month);\n const value = handleFinalValue(item);\n return (\n <Typography.Text>\n <span>Imposto a pagar: </span>\n <strong className=\"tax-value\">\n {value > 0 ? formatCurrency(value) : \"Isento\"}\n </strong>\n </Typography.Text>\n );\n };\n\n const getHolidays = async () => {\n instanceMsCalc.get(`/rates/get-holidays`)\n .then(({ data }) => {\n const dataFormated = data?.map((el: any) => {\n return moment(el).tz('Europe/London').format('MM-DD');\n });\n setHolidays(dataFormated);\n })\n .catch(() => console.error('Erro ao buscar feriados'));\n\n }\n\n useEffect(() => {\n getErrors()\n }, [])\n\n useEffect(() => {\n getHistoric();\n getHolidays();\n }, [getHistoric, year]);\n\n useEffect(() => {\n getTaxes(Number(month ?? currentMonth ?? 1));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month]);\n\n const defineMovementText = (item: any) => {\n if (item.transactions && item.transactions.length) return 'Há movimentações neste mês'\n return 'Sem movimentações'\n }\n\n useEffect(() => {\n if (isBasic) {\n navigate('/planos')\n }\n }, [])\n\n return (\n <Container className=\"velotax-container\">\n <Typography.Title level={1} className=\"page-title\">\n {year <= 2023? 'Impostos devidos (DARF)' : 'Movimentações'} \n </Typography.Title>\n <Content className=\"velotax-content historic\">\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n {\n showErrorCard &&\n <ErrorCard />\n }\n <List\n loading={loading}\n itemLayout=\"horizontal\"\n className={clsx(\"velotax-historic-list\", { \"no-plan\": !hasPlan })}\n dataSource={\n data?.filter(\n (item) =>\n !(item.year === currentYear && item.month >= currentMonth + 1)\n ) ?? []\n }\n renderItem={(item, index) => {\n const ultimoDiaUtilDoMes = getLastBusinessDay(\n new Date(item.year, item.month + 1, 0),\n holidays,\n );\n const vencimento = moment(ultimoDiaUtilDoMes).format(\"DD/MM/YYYY\");\n const currentDarfDate = new Date(year, item.month, 15);\n let dateAllowedOnBasic = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n if(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt) {\n dateAllowedOnBasic = new Date(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt);\n dateAllowedOnBasic.setMonth(dateAllowedOnBasic.getMonth() - 2)\n }\n const checkMonth = (currentDarfDate.getTime() < dateAllowedOnBasic.getTime());\n const hideOnBasic = isBasic && checkMonth;\n return (\n <List.Item\n actions={\n !!errorDates.find(ed => ed.month === item.month && ed.year === item.year) ? [] :\n (!hasPlan || hideOnBasic)\n ? item.transactions?.length > 0 && !isMobile()\n ? [\n <Button\n type=\"link\"\n icon={<BsEye size={16} />}\n onClick={() => editAction(item, true, index, true)}\n >\n <strong>Visualizar</strong>\n </Button>,\n ]\n : []\n : !isMobile()\n ? [\n showPayButton(item) && year <=2023 && (\n <PayButton\n onClick={() => handlePayButton(item)}\n disabled={disableCurrentMonth(item)}\n title={\n disableCurrentMonth(item)\n ? \"Aguarde o encerramento do mês para pagar seu DARF\"\n : \"\"\n }\n isReport={!oldModel}\n />\n ),\n <>{year <= 2023 && <Button\n type=\"link\"\n icon={<BsEye size={16} />}\n onClick={() =>\n editAction(\n item,\n item.payed && valueIsGreaterThanMin(item),\n index\n )\n }\n >\n {showPayButton(item) && year <= 2023 ? \"\" : <strong>Visualizar</strong>}\n </Button>}</>,\n ]\n : []\n }\n >\n <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={\n <TitleContainer >\n {monthsExtended[item.month - 1]}\n {!isMobile() ? ` de ${item.year}` : \"\"}\n {!isMobile() && year > 2023 && <Button\n type=\"link\"\n icon={\n <BsEye\n size={16}\n style={{\n minWidth: \"24px\",\n minHeight: \"24px\",\n marginLeft: \"12px\",\n strokeWidth: \"0.2px\",\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n onClick={() =>\n editAction(\n item,\n item.payed && valueIsGreaterThanMin(item),\n index\n )\n }\n children=\"Visualizar\"\n />}\n {(!hasPlan || hideOnBasic) &&\n item.transactions?.length > 0 &&\n isMobile() &&\n !errorDates.find(ed => ed.month === item.month && ed.year === item.year) && (\n <Button\n type=\"link\"\n onClick={() => editAction(item, true, index, true)}\n icon={\n <BsEye\n size={16}\n style={{\n minWidth: \"24px\",\n minHeight: \"24px\",\n marginLeft: \"12px\",\n strokeWidth: \"0.2px\",\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n />\n )}\n {(hasPlan && !hideOnBasic) ? (\n <>{(year <= 2023 || isMobile()) && (<div style={{ display: \"flex\", alignItems: \"center\" }}>\n {!errorDates.find(ed => ed.month === item.month && ed.year === item.year) &&\n valueIsGreaterThanMin(item) &&\n !disableCurrentMonth(item) &&\n year < yearConfigPL4173 ? (\n <PayDarfButton\n checked={item.payed}\n checkedChildren=\"Pago\"\n unCheckedChildren=\"Em aberto\"\n onChange={() => {\n if (\n item._id &&\n Object.keys(item).includes(\"fullPath\")\n ) {\n payAction(!item.payed, item);\n } else {\n setLoading(true);\n getTaxes(item.month, (obj: any) => {\n handleOpenDarfModal(true, obj);\n });\n }\n }}\n />\n ) : undefined}\n {isMobile() && !errorDates.find(ed => ed.month === item.month && ed.year === item.year) && (\n <Button\n type=\"link\"\n icon={\n <BsEye\n size={16}\n style={{\n minWidth: \"24px\",\n minHeight: \"24px\",\n marginLeft: \"12px\",\n strokeWidth: \"0.2px\",\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n onClick={() =>\n editAction(\n item,\n item.payed && valueIsGreaterThanMin(item),\n index\n )\n }\n />\n )}\n </div>)}</>\n ) : undefined}\n </TitleContainer>\n }\n description={<>{year <= 2023 ?\n !!errorDates.find(ed => ed.month === item.month && ed.year === item.year) ? <div className=\"monthError\">\n <AiOutlineWarning className=\"warning\" />\n Não foi possÃvel carregar as suas operações. <br />\n Entre em contato através do e-mail suporte@velotax.com.br.\n </div> :\n <Space direction=\"vertical\">\n {!hasPlan || hideOnBasic ?\n (\n <>\n {(isExterior\n ? item.transactions?.filter(\n exteriorTransactionsFilterCalc\n )\n : item.transactions\n )?.length > 0 ? (\n <>\n <Typography.Text>\n <span>Vendas totais: </span>\n <strong>\n {formatCurrency(vendasTotais(item))}\n </strong>\n </Typography.Text>\n {ImpostoAPagarNoPlan}\n </>\n ) : (\n <Typography.Text>\n {year && year <= 2023 && 'Não houve movimentações tributáveis neste mês'}\n </Typography.Text>\n )}\n </>\n ) :\n (\n <>\n {((item.transactions?.filter((t: any) => ['TRADE', 'DIVIDEND', 'INTEREST'].includes(t.type)).length > 0)) ? (\n <>\n {year && year <= 2023 && <>\n <Typography.Text>\n <span>Vendas totais: </span>\n <strong>\n {formatCurrency(vendasTotais(item))}\n </strong>\n </Typography.Text>\n <ImpostoAPagarWithPlan item={item} />\n {handleFinalValue(item) > 0 && year < yearConfigPL4173 && (\n <Typography.Text>\n <span>Vencimento: </span>\n <span>\n {vencimento}\n </span>\n </Typography.Text>\n )}\n {isMobile() && showPayButton(item) && (\n <PayButton\n fullWidth\n onClick={() => handlePayButton(item)}\n disabled={disableCurrentMonth(item)}\n title={\n disableCurrentMonth(item)\n ? \"Aguarde o encerramento do mês para pagar seu DARF\"\n : \"\"\n }\n isReport={!oldModel}\n />\n )}\n </>}\n </>\n ) : (\n <Typography.Text>\n {year && year <= 2023 && 'Não houve movimentações tributáveis neste mês'}\n </Typography.Text>\n )}\n </>\n )}\n </Space>\n : undefined}\n {year > 2023 && isExterior && defineMovementText(item)}\n </>}\n />\n </Skeleton>\n </List.Item>\n )\n }}\n />\n\n <Typography.Title level={2} className=\"subtitle-lined\">\n <span>Outras opções</span>\n </Typography.Title>\n\n <div>\n {(isExterior\n ? [...itensExterior.slice(1)]\n : isCripto\n ? [...itensCrypto.slice(1)]\n : ([] as any[])\n )\n .filter((item: any) => item.id !== \"anual-report\")\n .map((item: any) => (\n <CardXP\n id={item.id}\n key={item.id}\n icon={item.icon}\n link={item.link}\n className={clsx(\"xp-list-card\", {\n \"no-plan\": !hasPlan,\n \"not-free\":\n !hasPlan &&\n (item.id !== \"integration\" || item.id !== \"insert-manual\"),\n })}\n onClick={\n (hasPlan && !isBasic) ||\n item.id === \"integration\" ||\n item.id === \"insert-manual\"\n ? undefined\n : () => {\n handleOpenPlanModal();\n }\n }\n >\n {(hasPlan && !isBasic) ||\n item.id === \"integration\" ||\n item.id === \"insert-manual\" ? (\n <>\n {item.content}\n </>\n ) : (\n <>\n <Row align=\"middle\" justify=\"space-between\" gutter={[8, 8]}>\n <Col>{item.content}</Col>\n <Button\n type=\"primary\"\n className=\"btn-premium\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handleOpenPlanModal();\n }}\n >\n PREMIUM\n </Button>\n </Row>\n </>\n )}\n </CardXP>\n ))}\n </div>\n\n <BackButton\n to={\n isExterior ? \"/xpinvestimentos/exterior\" : \"/xpinvestimentos/cripto\"\n }\n className=\"historic-exterior\"\n />\n </Content>\n\n <PaymentModal\n item={item}\n show={paymentModal}\n emitting={emitting}\n selectedYear={year}\n maxPixValue={maxPixPayment}\n maxCCValue={maxCreditCardPayment}\n closeDarfModal={handleCloseCalcModal}\n disablePixOption={\n (handleFinalValue(itemToPay || {}) || 0) > maxPixPayment\n }\n disableCreditCardOption={\n (handleFinalValue(itemToPay || {}) || 0) > maxCreditCardPayment\n }\n closeModal={() => {\n setPaymentModal(!paymentModal);\n }}\n onCancel={() => {\n setPaymentModal(!paymentModal);\n }}\n callDarf={() => {\n handleOpenDarfModal();\n // if (isCripto) {\n // HandleTag(\"78\");\n // }\n // if (isExterior) {\n // HandleTag(\"77\");\n // }\n }}\n paymentData={{\n ...itemToPay,\n impostoTotalFinal:\n (itemToPay?.totalImpostoDevido || 0) +\n (itemToPay?.impostoAcumulado || 0),\n }}\n />\n\n <DrawerModal\n title=\"\"\n width={700}\n className=\"darf-modal\"\n visible={showCalcModal.visible}\n onCancel={handleCloseCalcModal}\n bodyStyle={{\n padding: \"0\",\n }}\n >\n {isExterior ? (\n <DarfExterior\n view={showCalcModal.view}\n viewEdit={!showCalcModal.view}\n closeModal={handleCloseCalcModal}\n selectedYear={year}\n date={{\n year: showCalcModal.year ?? 0,\n month: showCalcModal.month ? showCalcModal.month - 1 : 0,\n }}\n darf={\n (hasPlan || isBasic) && showCalcModal.view\n ? {\n ...itemToPay,\n id: itemToPay.id ?? itemToPay._id,\n }\n : undefined\n }\n item={{\n path: \"\",\n title: \"\",\n header: true,\n sidebar: true,\n name: \"Calculadora\",\n component: \"DarfExterior\",\n settings: {\n showNavigateToIntegrationButton: true,\n historicUrl: \"/xpinvestimentos/exterior-historic\",\n integrationUrl: \"/xpinvestimentos/exterior-integrations\",\n },\n features: [\n {\n apiUrl: \"/transaction\",\n },\n {\n apiUrl: \"/darf\",\n buttonLabel: \"Emitir DARF\",\n },\n {\n apiUrl: \"/darf/year\",\n },\n ],\n }}\n />\n ) : isCripto ? (\n <Darf\n view={showCalcModal.view}\n viewEdit={!showCalcModal.view}\n closeModal={handleCloseCalcModal}\n date={{\n year: showCalcModal.year ?? 0,\n month: showCalcModal.month ? showCalcModal.month - 1 : 0,\n }}\n darf={\n hasPlan && showCalcModal.view\n ? {\n ...itemToPay,\n id: itemToPay.id ?? itemToPay._id,\n }\n : undefined\n }\n item={{\n path: \"\",\n title: \"\",\n header: true,\n sidebar: true,\n disabled: true,\n component: \"Darf\",\n name: \"Calculadora\",\n settings: {\n showNavigateToIntegrationButton: true,\n historicUrl: \"/xpinvestimentos/cripto-historic\",\n integrationUrl: \"/xpinvestimentos/crypto-integrations\",\n },\n features: [\n {\n apiUrl: \"/transaction\",\n },\n {\n apiUrl: \"/darf\",\n buttonLabel: \"Emitir DARF\",\n },\n {\n apiUrl: \"/darf/year\",\n },\n ],\n }}\n />\n ) : undefined}\n </DrawerModal>\n <ModalConfirmMail\n closeFn={() => setReportData(null)}\n visible={Boolean(reportData)}\n action={(sendMail) => {\n if (sendMail) {\n if (oldModel) sendDarfToEmail(reportData);\n else sendReportMail()\n }\n }}\n />\n </Container>\n );\n};\n","import { Typography } from \"antd\";\nimport { SelectBoxes } from \"./SelectBoxes\";\nimport { Container, Content, CalculatorsSelect } from \"./styles\";\n\nexport const Settings: React.FC = () => {\n return (\n <Container>\n <Content>\n <Typography.Title level={1}>Configurações</Typography.Title>\n <CalculatorsSelect>\n <Typography.Title level={2}>\n Selecione as calculadoras que você deseja utilizar\n </Typography.Title>\n <SelectBoxes data={[]} loading={false} saveModules={() => {}} />\n </CalculatorsSelect>\n </Content>\n </Container>\n );\n};\n","import { FaRegEdit } from \"react-icons/fa\";\nimport { BsDownload } from \"react-icons/bs\";\nimport NumberFormat from \"react-number-format\";\nimport { AiOutlineFileSync } from \"react-icons/ai\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Col,\n Divider,\n Form,\n List,\n message,\n Radio,\n Row,\n Select,\n Skeleton,\n Typography,\n} from \"antd\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport { Page } from \"../../constants/brokers\";\nimport { PageInfo } from \"../../components/PageInfo\";\nimport { PlanModal } from \"../../components/PlanModal\";\nimport { PlanEnum, Plans } from \"../../constants/plans\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { ConfirmModal, Container, Content } from \"./styles\";\nimport {\n MeiReportDasStatusEnum,\n MeiReportStatusTextEnum,\n} from \"../../constants/das\";\nimport {\n currencyToNumber,\n download,\n errorMessage,\n formatCurrency,\n formatDateHour,\n isSafari,\n} from \"../../utils\";\nimport {\n validationFieldRequired,\n validationNumberFieldPositive,\n} from \"../../utils/formValidations\";\n\ninterface MEIReportData {\n year?: number;\n annualInvoicing?: number;\n hasEmployee?: boolean;\n}\n\ninterface MEIReportDataBack extends MEIReportData {\n status?: MeiReportDasStatusEnum;\n issueDate?: string;\n createdAt?: string;\n requestDate?: string;\n path?: string;\n}\n\ninterface MEIReportProps {\n item: Page;\n}\n\nexport const MeiReport: React.FC<MEIReportProps> = ({ item }) => {\n const currentYear = new Date().getFullYear();\n const [form] = Form.useForm<MEIReportData>();\n const contentElement = useRef<HTMLDivElement>(null);\n const {\n currentBroker,\n integration: { plans },\n currentPage,\n } = useBroker();\n\n const [year, setYear] = useState<number>();\n const [loading, setLoading] = useState(false);\n const [showModal, setShowModal] = useState(false);\n const [showPlanModal, setShowPlanModal] = useState(false);\n const [loadingReports, setLoadingReports] = useState(false);\n const [reports, setReports] = useState<MEIReportDataBack[]>([]);\n\n const { apiUrl } = item.settings;\n const { initialYear } = currentBroker;\n\n const yearOptions = Array.from(Array(new Date().getFullYear() - initialYear))\n .map((y, i) => ({ value: initialYear + i, label: `${initialYear + i}` }))\n .reverse();\n\n const handleModal = () => {\n setShowModal((show) => !show);\n setYear(undefined);\n form.resetFields();\n };\n\n const getReports = useCallback(() => {\n setLoadingReports(true);\n (currentPage?.api || apis)\n .get<MEIReportDataBack[]>(apiUrl)\n .then((response) => setReports(response.data))\n .catch(() => message.error(errorMessage))\n .finally(() => setLoadingReports(false));\n }, [apiUrl, currentPage]);\n\n const handleReport = (data: MEIReportData) => {\n setLoading(true);\n (currentPage?.api || apis)\n .post(apiUrl, data)\n .then(() => {\n handleModal();\n getReports();\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n };\n\n const checkIfPayed = (item: MEIReportData) => {\n if (\n plans?.status === \"active\" &&\n (plans?.name === PlanEnum.BASIC_V1 || plans?.name === PlanEnum.PRO_V1)\n ) {\n handleReport(item);\n } else {\n setShowPlanModal(true);\n }\n };\n\n const downloadAction = (item: MEIReportDataBack, index: number) => {\n if (item.path) {\n download(item.path);\n }\n };\n\n const editAction = (item: MEIReportDataBack, index: number) => {\n setYear(item.year);\n form.setFieldsValue({\n year: item.year,\n hasEmployee: item.hasEmployee,\n annualInvoicing: item.annualInvoicing,\n });\n isSafari\n ? contentElement.current?.scrollIntoView()\n : contentElement.current?.scrollIntoView({\n behavior: \"smooth\",\n });\n };\n\n const onValuesChange = (changed: any, values: MEIReportData) => {\n setYear(values.year);\n form.setFieldsValue({\n ...values,\n annualInvoicing: changed.annualInvoicing\n ? currencyToNumber(changed.annualInvoicing)\n : values.annualInvoicing,\n });\n };\n\n useEffect(() => {\n getReports();\n }, [getReports]);\n\n return (\n <Container>\n <PageInfo\n title=\"Emita sua declaração MEI (DASN)\"\n subtitle={\n <>\n Para evitar multas e bloqueios com a Receita Federal, você precisa\n emitir sua declaração anual{\" \"}\n <strong>\n <u>até o fim de junho de {currentYear}</u>\n </strong>\n </>\n }\n />\n <Content ref={contentElement}>\n <Typography.Title level={2}>\n Emissão de declaração anual\n </Typography.Title>\n <Typography.Paragraph>\n Selecione um ano para emitir sua declaração anual.\n </Typography.Paragraph>\n <Form\n form={form}\n size=\"large\"\n layout=\"vertical\"\n requiredMark={false}\n onFinish={checkIfPayed}\n onValuesChange={onValuesChange}\n >\n <Row gutter={[16, 16]}>\n <Col xs={24} sm={12}>\n <Form.Item name=\"year\">\n <Select\n placeholder=\"Selecione o ano\"\n options={yearOptions}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n </Form.Item>\n </Col>\n </Row>\n {year && (\n <>\n <Row gutter={[16, 16]}>\n <Col xs={24} sm={12}>\n <Form.Item\n name=\"annualInvoicing\"\n rules={[\n ...validationNumberFieldPositive,\n {\n validator: (rule, value) =>\n value > 10000000\n ? Promise.reject(\n new Error(\n \"O valor deve ser menor que R$ 10.000.000,00\"\n )\n )\n : Promise.resolve(),\n },\n ]}\n label={`Qual foi seu faturamento bruto em ${year}?`}\n >\n <NumberFormat\n prefix=\"R$ \"\n decimalScale={2}\n allowNegative={false}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n placeholder=\"R$ 0,00\"\n className=\"ant-input ant-input-lg\"\n />\n </Form.Item>\n </Col>\n <Col xs={24} sm={12}>\n <Form.Item\n name=\"hasEmployee\"\n rules={validationFieldRequired}\n label={`Você teve empregados em ${year}?`}\n >\n <Radio.Group>\n <Radio value={true}>Sim</Radio>\n <Radio value={false}>Não</Radio>\n </Radio.Group>\n </Form.Item>\n </Col>\n </Row>\n <Row justify=\"end\">\n <Col span={24}>\n <Button\n size=\"large\"\n type=\"primary\"\n htmlType=\"submit\"\n className=\"full-width\"\n loading={loading}\n icon={<></>}\n style={{ marginBottom: \"24px\" }}\n >\n Emitir relatório\n </Button>\n </Col>\n </Row>\n </>\n )}\n </Form>\n <Divider />\n <Typography.Title level={3}>\n <AiOutlineFileSync size={22} />\n Minhas declarações anuais\n </Typography.Title>\n <List\n dataSource={reports}\n itemLayout=\"horizontal\"\n loading={loadingReports}\n renderItem={(item, index) => (\n <List.Item\n actions={\n item.status === MeiReportDasStatusEnum.EMITTED && item.path\n ? [\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => downloadAction(item, index)}\n icon={<BsDownload size={16} />}\n />,\n ]\n : [\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => editAction(item, index)}\n icon={<FaRegEdit size={16} />}\n />,\n ]\n }\n >\n <Skeleton title={false} loading={loadingReports} active>\n <List.Item.Meta\n title={`Ano: ${item.year}`}\n description={\n <>\n Status:{\" \"}\n {\n MeiReportStatusTextEnum[\n item.status as keyof typeof MeiReportStatusTextEnum\n ]\n }\n <br />\n Teve empregados no ano: {item.hasEmployee ? \"Sim\" : \"Não\"}\n <br />\n Faturamento anual bruto:{\" \"}\n {formatCurrency(item.annualInvoicing ?? 0)}\n {item.requestDate && <br />}\n {item.requestDate &&\n `Solicitação: ${formatDateHour(item.requestDate)}`}\n {item.issueDate && <br />}\n {item.issueDate &&\n item.status === MeiReportDasStatusEnum.EMITTED &&\n `Emissão: ${formatDateHour(item.issueDate)}`}\n </>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n <ConfirmModal\n closable\n footer={null}\n destroyOnClose\n keyboard={false}\n visible={showModal}\n onCancel={handleModal}\n title=\"Relatório solicitado com sucesso!\"\n >\n <Typography.Paragraph className=\"p\">\n Em até <strong>48h úteis</strong> seu relatório será emitido e\n enviado para o seu email de cadastro. <strong>Aguarde!</strong>\n </Typography.Paragraph>\n </ConfirmModal>\n <PlanModal\n visible={showPlanModal}\n title=\"Contrate o plano para realizar a emissão\"\n modalPlans={[Plans.find((plan) => plan.type === PlanEnum.PRO_V1)!]}\n onCancel={() => {\n setShowPlanModal(false);\n }}\n />\n </Content>\n </Container>\n );\n};\n","import moment from \"moment\";\nimport { useEffect, useState } from \"react\";\nimport { Divider, Form, Input, message, Typography } from \"antd\";\nimport apis from \"../../services/apis\";\nimport { errorMessage } from \"../../utils\";\nimport Button from \"../../components/Button\";\nimport { Container, Content } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\n\ninterface IntegrationProps {\n item: Page;\n}\n\nexport const Integration: React.FC<IntegrationProps> = ({ item }) => {\n const { user } = useAuth();\n const { initIntegration, integration, handleIntegrationInit,currentPage } = useBroker();\n const [form] = Form.useForm();\n const [loading, setLoading] = useState(false);\n\n const feature = item.features[0];\n const inputs = feature.inputs || [];\n\n useEffect(() => {\n if (integration.key) {\n form.setFieldsValue({\n key: integration.key,\n });\n }\n }, [integration.key, form]);\n\n const onFinish = (data: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .post(feature.apiUrl, { ...data, email: user.user.email })\n .then(() => handleIntegrationInit())\n .catch((err) => {\n if (err?.response?.data?.message?.includes(\"Aguarde\")) {\n message.error(err?.response?.data?.message);\n } else {\n message.error(errorMessage);\n }\n })\n .finally(() => setLoading(false));\n };\n\n return (\n <Container>\n <Content>\n <Typography.Title level={2}>{item.title}</Typography.Title>\n {!integration.providerExists ? (\n <Typography.Paragraph>\n O acesso as outras funcionalidades da plataforma será liberado após\n você concluir a integração.\n </Typography.Paragraph>\n ) : integration.lastUpdate ? (\n <>\n <Typography.Text\n italic\n strong\n type=\"secondary\"\n className=\"last-update\"\n >\n Última integração:{\" \"}\n {moment(integration.lastUpdate)\n .utc()\n .local()\n .format(\"DD/MM/YYYY à [s] HH:mm\")}\n </Typography.Text>\n </>\n ) : (\n <></>\n )}\n <Form form={form} size=\"large\" layout=\"vertical\" onFinish={onFinish}>\n {inputs.map((input: any) => (\n <Form.Item\n key={input.name}\n name={input.name}\n label={input.label}\n rules={input.rules}\n >\n <Input placeholder={input.placeholder} />\n </Form.Item>\n ))}\n <Typography.Text type=\"secondary\">\n A integração pode demorar alguns minutos, por favor aguarde.\n </Typography.Text>\n <Divider />\n <Button\n size=\"large\"\n type=\"primary\"\n htmlType=\"submit\"\n className=\"full-width\"\n loading={loading}\n disabled={initIntegration}\n icon={<></>}\n >\n {feature.buttonLabel}\n </Button>\n </Form>\n </Content>\n </Container>\n );\n};\n","import { Button } from \"@mui/material\";\nimport { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AiOutlineCheck } from \"react-icons/ai\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Divider, Form, Row, Typography } from \"antd\";\nimport { questions } from \"./items\";\nimport Loading from \"../../components/Loading\";\nimport { BolsaManualData } from \"./interfaces\";\nimport { BolsaManualContainer } from \"./styles\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { PrePreenchidaModal } from \"../PrePreenchidaModal\";\nimport { useUploadDec } from \"../../contexts/UploadDecContext\";\nimport { Question, QuestionContainer } from \"../MeiIdentification/styles\";\nimport { useOldTransactions } from \"../../contexts/OldTransactionsContext\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\n\nconst bolsaManualId = \"bolsa-manual-container\";\n\ninterface BolsaManualProps {}\n\nexport const BolsaManual: React.FC<BolsaManualProps> = () => {\n const navigate = useNavigate();\n const { currentBroker } = useBroker();\n const [form] = Form.useForm<BolsaManualData>();\n const [currentQuestion] = useState(0);\n const [showAlertModal, setShowAlertModal] = useState(false);\n\n const { loadingGet, changed, getOldTransactionsInit, ...rest } =\n useOldTransactions();\n const [showModalPrePreenchida, setShowModalPrePreenchida] = useState(false);\n const { loading } = useUploadDec();\n\n const handleAlertModalVisibility = (value: boolean) => {\n setShowAlertModal(value);\n };\n\n const handleSubmit = async (data: BolsaManualData) => {\n try {\n if (rest.oldPositionList.some((oldPosition) => oldPosition.price === 0)) {\n handleAlertModalVisibility(true);\n return;\n }\n await rest.saveOldPositions();\n setTimeout(() => {\n navigate(`/${currentBroker.path}/bolsa-historic`);\n }, 1000);\n } catch (err) {}\n };\n\n useEffect(() => {\n if (rest.oldPositionList?.length < 1 && rest.oldPositionList !== null) {\n navigate(`/${currentBroker.path}/bolsa-historic`);\n }\n }, [rest.oldPositionList, navigate, currentBroker.path]);\n\n useEffect(() => {\n getOldTransactionsInit();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showModalPrePreenchida, loading]);\n\n return loadingGet ? (\n <Loading />\n ) : (\n <Form\n form={form}\n size=\"large\"\n onFinish={handleSubmit}\n style={{ height: \"100%\", overflow: \"hidden\" }}\n >\n <BolsaManualContainer id={bolsaManualId}>\n {questions.map((question, index) => (\n <QuestionContainer\n width=\"700px\"\n className=\"beauty-scrollbar\"\n id={`question-${index}`}\n key={question.id}\n >\n <Typography.Title level={2}>{question.title}</Typography.Title>\n\n <Question width=\"700px\">\n <Typography\n style={{ marginBottom: \"32px\", textAlign: \"justify\" }}\n >\n {question.subTitle}\n </Typography>\n <Row justify=\"start\" className=\"btn-preencher-pos2019\">\n <Col span={24}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={rest.loadingPut}\n onClick={() => setShowModalPrePreenchida(true)}\n >\n {rest.loadingPut && <LoadingOutlined />} Preencher\n automaticamente\n </Button>\n </Col>\n </Row>\n {question.formItems.map(({ FormItem, name }) => (\n <FormItem\n key={name}\n rest={{ ...rest, loadingGet }}\n tabIndex={currentQuestion === index ? 1 : -1}\n />\n ))}\n\n {question.children}\n <Divider />\n <Row justify=\"space-between\" align=\"middle\" gutter={[16, 16]}>\n <Col>\n <Button\n size=\"large\"\n variant=\"text\"\n color=\"secondary\"\n onClick={() => {\n navigate(\"/xpinvestimentos/bolsa\");\n }}\n >\n Voltar\n </Button>\n </Col>\n <Col>\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n id=\"submit-button\"\n tabIndex={currentQuestion === index ? 3 : -1}\n endIcon={<AiOutlineCheck size={18} />}\n startIcon={rest.loadingPut && <LoadingOutlined />}\n >\n Finalizar\n </Button>\n </Col>\n </Row>\n </Question>\n </QuestionContainer>\n ))}\n\n <PrePreenchidaModal\n visible={showModalPrePreenchida}\n setShowModalPrePreenchida={setShowModalPrePreenchida}\n onCancel={() => setShowModalPrePreenchida(false)}\n />\n\n <DeleteConfirmationModal\n title=\"Deseja realmente prosseguir?\"\n visibility={showAlertModal}\n onCancel={() => setShowAlertModal(false)}\n setVisibility={handleAlertModalVisibility}\n onOk={() => {\n return Promise.resolve(rest.saveOldPositions());\n }}\n body=\"O valor de algumas posições não foram preenchidas!\"\n buttonLabel=\"Prosseguir\"\n successMessage=\"Ativos salvos com sucesso!\"\n />\n </BolsaManualContainer>\n </Form>\n );\n};\n","import { Button } from \"@mui/material\";\nimport { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AiOutlineCheck } from \"react-icons/ai\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { Col, Divider, Form, Row, Typography } from \"antd\";\nimport { questions } from \"./items\";\nimport Loading from \"../../components/Loading\";\nimport { DoacoesHerancaData } from \"./interfaces\";\nimport { BolsaManualContainer } from \"./styles\";\nimport { PrePreenchidaModal } from \"../PrePreenchidaModal\";\nimport { useUploadDec } from \"../../contexts/UploadDecContext\";\nimport { Question, QuestionContainer } from \"../MeiIdentification/styles\";\nimport { useOldTransactions } from \"../../contexts/OldTransactionsContext\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\n\nconst bolsaManualId = \"bolsa-manual-container\";\n\ninterface DoacoesHerancaProps {}\n\nexport const DoacoesHeranca: React.FC<DoacoesHerancaProps> = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm<DoacoesHerancaData>();\n const [currentQuestion] = useState(0);\n const [showAlertModal, setShowAlertModal] = useState(false);\n\n const { loadingGet, changed, getDoacoesHerancasInit, ...rest } =\n useOldTransactions();\n const [showModalPrePreenchida, setShowModalPrePreenchida] = useState(false);\n const { loading } = useUploadDec();\n\n const handleAlertModalVisibility = (value: boolean) => {\n setShowAlertModal(value);\n };\n\n const handleSubmit = async (data: DoacoesHerancaData) => {\n try {\n await rest.saveDoacoesHerancas();\n } catch (err) {}\n };\n\n useEffect(() => {\n getDoacoesHerancasInit();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showModalPrePreenchida, loading]);\n\n return loadingGet ? (\n <Loading />\n ) : (\n <Form\n form={form}\n size=\"large\"\n onFinish={handleSubmit}\n style={{ height: \"100%\", overflow: \"hidden\" }}\n >\n <BolsaManualContainer id={bolsaManualId}>\n {questions.map((question, index) => (\n <QuestionContainer\n width=\"700px\"\n className=\"beauty-scrollbar\"\n id={`question-${index}`}\n key={question.id}\n >\n <Typography.Title level={2}>{question.title}</Typography.Title>\n\n <Question width=\"700px\">\n {question.formItems.map(({ FormItem, name }) => (\n <FormItem\n key={name}\n rest={{ ...rest, loadingGet }}\n tabIndex={currentQuestion === index ? 1 : -1}\n />\n ))}\n <Divider />\n <Row justify=\"space-between\" align=\"middle\" gutter={[16, 16]}>\n <Col>\n <Button\n size=\"large\"\n variant=\"text\"\n color=\"secondary\"\n onClick={() => {\n navigate(\"/xpinvestimentos/bolsa\");\n }}\n >\n Voltar\n </Button>\n </Col>\n <Col>\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n id=\"submit-button\"\n tabIndex={currentQuestion === index ? 3 : -1}\n endIcon={<AiOutlineCheck size={18} />}\n startIcon={rest.loadingPut && <LoadingOutlined />}\n >\n Finalizar\n </Button>\n </Col>\n </Row>\n </Question>\n </QuestionContainer>\n ))}\n\n <PrePreenchidaModal\n visible={showModalPrePreenchida}\n setShowModalPrePreenchida={setShowModalPrePreenchida}\n onCancel={() => setShowModalPrePreenchida(false)}\n />\n\n <DeleteConfirmationModal\n title=\"Deseja realmente prosseguir?\"\n visibility={showAlertModal}\n onCancel={() => setShowAlertModal(false)}\n setVisibility={handleAlertModalVisibility}\n onOk={() => {\n return Promise.resolve(rest.saveDoacoesHerancas());\n }}\n body=\"O valor de algumas posições não foram preenchidas!\"\n buttonLabel=\"Prosseguir\"\n successMessage=\"Ativos salvos com sucesso!\"\n />\n </BolsaManualContainer>\n </Form>\n );\n};\n","import clsx from \"clsx\";\nimport moment from \"moment\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport NumberFormat from \"react-number-format\";\nimport { AiOutlineDelete } from \"react-icons/ai\";\nimport { BsCalculator, BsCalendar3 } from \"react-icons/bs\";\nimport { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { DatePickerExtraFooter } from \"../Darf/Components/DatePickerExtraFooter\";\nimport { StyledTag } from \"../Darf/Components/PayTags/styles\";\nimport { DollarCircleOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport {\n Typography,\n Row,\n Col,\n DatePicker,\n Space,\n Descriptions,\n Spin,\n Divider,\n InputNumber,\n Collapse,\n List,\n Skeleton,\n Modal,\n Tooltip,\n} from \"antd\";\nimport MsDarf from \"../../services/msDarf\";\nimport apiRendimentos from \"../../services/rendimentos\";\nimport Button from \"../../components/Button\";\nimport { IMonthStock, Iimpostos } from \"./interfaces/index\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { FormModal } from \"../../components/FormModal\";\nimport rendimentosBackend from \"../../services/rendimentos\";\nimport { Container, Content, BolsaOperations } from \"./styles\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport {\n ImpostoTotalRendimentos,\n RendimentoFormItemRows,\n RendimentosImpostosDevidos,\n} from \"../../constants/rendimentos\";\nimport {\n formatCurrency,\n monthsExtended,\n antDatePickerLocale,\n maskCpf,\n currencyToNumber,\n download,\n} from \"../../utils\";\nimport { Page } from \"../../constants/brokers\";\nimport {\n DarfModal,\n YearResumeStatusCSSClassEnum,\n YearResumeStatusTextEnum,\n YearResumeStatusColorEnum,\n YearResumeStatusFromBackEnum,\n yearConfigPL4173,\n} from \"../../constants/darf\";\nimport {\n DatePickerMonthCell,\n YearResume,\n} from \"../Darf/Components/DatePickerMonthCell\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\ninterface DarfBolsaProps {\n item: Page;\n view?: boolean;\n darf?: {\n id: string;\n };\n monthView: number;\n yearView: number;\n}\n\nexport const Rendimentos: React.FC<DarfBolsaProps> = ({\n view,\n item: itemprops,\n darf,\n monthView,\n yearView,\n}: any) => {\n const Dependentes = {\n title: \"Dependentes\",\n content: (\n <div>\n <p>\n É permitida a dedução de R$ 189,59 por dependente na base de cálculo\n do imposto sobre os rendimentos.\n </p>\n <p>\n As situações que permitem a inclusão de dependentes são as seguintes:\n </p>\n <p>\n - Cônjuge, companheiro(a) com quem o contribuinte tenha filho ou se\n estiver há mais de cinco anos em regime de união estável\n </p>\n <p>\n - Filho(a) ou enteado(a) de até 21 anos de idade ou, em qualquer\n idade, quando incapacitado fÃsica ou mentalmente para o trabalho\n </p>\n <p>\n Irmão(ã), neto(a) ou bisneto(a) que não possua suporte dos pais e o\n contribuinte detenha a guarda judicial. O dependente deve ter até 21\n anos de idade ou, em qualquer idade, quando incapacitado fÃsica ou\n mentalmente para o trabalho\n </p>\n <p>\n - Irmão(ã), neto(a) ou bisneto(a) que não possua suporte dos pais e o\n contribuinte detenha a guarda judicial, pode ser considerado\n dependente até 24 anos de idade caso esteja cursando ensino superior\n ou escola técnica de segundo grau\n </p>\n <p>\n Pais, avós(ôs) e bisavós(ôs) que, em 2020, tenham recebido rendimentos\n tributáveis ou não, até R$22.847,76\n </p>\n <p>\n - Menor pobre com até 21 anos de idade, que o contribuinte crie e\n eduque e detenha a guarda judicial\n </p>\n <p>\n - Pessoa absolutamente incapaz, de qual o contribuinte seja tutor ou\n curador\n </p>\n </div>\n ),\n };\n\n const Autonomos = {\n title: \"Despesas de Autônomos\",\n content: (\n <div>\n <p>\n As seguintes despesas poderão ser deduzidas dos rendimentos recebidos\n de pessoas fÃsicas por autônomos:\n </p>\n <p>Aluguel do escritório/consultório</p>\n <p>- Ãgua do escritório/consultório</p>\n <p>- Contribuições obrigatórias a entidades de classe</p>\n <p>- CondomÃnio do escritório/consultório</p>\n <p>- Emolumentos pagos a terceiros</p>\n <p>- Cópia e autenticação de documentos</p>\n <p>- Emolumentos pagos a terceiros</p>\n <p>- Energia do escritório/consultório</p>\n <p>- Gás do escritório/consultório </p>\n <p>- IPTU do escritório/consultório quando pago pelo contribuinte</p>\n <p>- ISS</p>\n <p>- Material de conservação e limpeza do escritório/consultório</p>\n <p>- Material de escritório</p>\n <p>\n - Remuneração paga a terceiros, com vÃnculo empregatÃcio, INSS e FGTS\n </p>\n <p>- Telefone do escritório/consultório</p>\n </div>\n ),\n };\n\n const Previdencia = {\n title: \"Despesas com Previdência\",\n content: (\n <div>\n <p>\n Despesas com contribuição para a Previdência Social da União, dos\n Estados, do Distrito Federal e dos MunicÃpios são dedutÃveis da base\n de cálculo do imposto sobre rendimentos.\n </p>\n <p>\n As contribuições para as entidades de previdência privada domiciliadas\n no PaÃs, bem como as contribuições destinadas ao Fundo de\n Aposentadoria Programada Individual (FAPI), não podem ser deduzidas na\n determinação da base de cálculo mensal. Esses pagamentos são\n dedutÃveis apenas na Declaração de Ajuste Anual.\n </p>\n </div>\n ),\n };\n\n const Pensao = {\n title: \"Despesas com Pensão AlimentÃcia\",\n content: (\n <div>\n <p>\n Despesas com alimentos ou pensões, quando em cumprimento de decisão\n judicial ou acordo homologado judicialmente, são dedutÃveis da base de\n cálculo do imposto sobre rendimentos.\n </p>\n <p>\n As despesas médicas e as de instrução, pagas em decorrência de decisão\n judicial ou acordo homologado na Justiça, não podem ser deduzidas na\n determinação da base de cálculo mensal. Esses pagamentos são\n dedutÃveis apenas na Declaração de Ajuste Anual, obedecido o limite\n anual para os gastos com instrução.\n </p>\n </div>\n ),\n };\n\n const navigate = useNavigate();\n const { user } = useAuth();\n const { state } = useLocation();\n const yearResumeFeature = itemprops.features[2];\n const today = new Date();\n const queryYear = (state as any)?.year;\n const queryMonth = (state as any)?.month;\n const oldModel = queryYear < yearConfigPL4173;\n\n const initialMonth = queryMonth ?? monthView ?? today.getMonth();\n const initialYear = queryYear ?? yearView ?? today.getFullYear();\n const minDarfPrice = 10;\n const maxDarfPrice = 5000;\n const defaultValue = moment({ month: initialMonth, year: initialYear });\n const [emitting, setEmitting] = useState(false);\n const { currentBroker } = useBroker();\n const [year, setYear] = useState(initialYear);\n const [month, setMonth] = useState(initialMonth);\n const [item, setItem] = useState<any>({\n valorRendimento: 0,\n tipo: \"\",\n });\n const [itemIndex, setItemIndex] = useState(0);\n const [loading, setLoading] = useState(false);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [showRendimentoModal, setShowRendimentoModal] = useState(false);\n const [helpModal, setHelpModal] = useState<any>();\n const [darfModal, setDarfModal] = useState<any>();\n const [paymentModal, setPaymentModal] = useState(false);\n const [paymentData, setPaymentData] = useState<any>();\n const [id, setId] = useState<string>(\"\");\n const [gettingYearResume, setGettingYearResume] = useState(false);\n const [monthStock, setMonthStock] = useState<IMonthStock[]>([]);\n const isSaveItens = useRef(false);\n const [yearResume, setYearResume] = useState<YearResume[]>([]);\n const [impostos, setImpostos] = useState({\n totalRendimentos: 0,\n baseTributaria: 0,\n aliquotaDevida: 0,\n impostoDevido: 0,\n impostoTotal: 0,\n totalDeducoes: 0,\n totalDependentes: 0,\n totalDespesas: 0,\n totalPensao: 0,\n totalPrevidencia: 0,\n impostoAcumulado: 0,\n juros: 0,\n multa: 0,\n });\n\n const { emitted, status } = useMemo(() => {\n if (gettingYearResume) {\n }\n const monthResume = yearResume\n .find((resume) => resume.year === year)\n ?.months.find((m) => m.month - 1 === month);\n return {\n emitted:\n monthResume?.status === YearResumeStatusFromBackEnum.PAYED ||\n monthResume?.status === YearResumeStatusFromBackEnum.NOT_PAYED,\n payed: !!monthResume?.payed,\n status: monthResume?.status,\n };\n }, [yearResume, year, month, gettingYearResume]);\n\n const handleNavigateToHistoric = () => {\n navigate(`/velotax/autonomos-historico`, { state: { year } });\n };\n\n const returnRightButton = () => {\n return (\n <Col span={24}>\n {!view && (\n <>\n <Divider />\n <Row justify=\"end\">\n <Col\n span={12}\n style={{\n display: \"flex\",\n flex: \"0\",\n justifyContent: \"end\",\n paddingRight: \"8px\",\n }}\n >\n <Button\n type=\"text\"\n size=\"large\"\n disabled={loading || emitting}\n onClick={handleNavigateToHistoric}\n >\n Ver no histórico\n </Button>\n </Col>\n {status === YearResumeStatusFromBackEnum.PENDING &&\n impostos.impostoDevido + impostos.impostoAcumulado <\n minDarfPrice && (\n <Col\n span={12}\n style={{\n display: \"flex\",\n justifyContent: \"end\",\n }}\n >\n <Tooltip\n title={\n <>\n O valor do imposto devido é menor que{\" \"}\n {formatCurrency(minDarfPrice)}. Você não precisa\n emitir um DARF para este mês. Clique aqui para\n regularizar este mês.\n </>\n }\n >\n <Button\n size=\"large\"\n type=\"primary\"\n loading={emitting}\n disabled={loading || emitting}\n onClick={() => handleRegularize(true)}\n >\n Salvar sem emitir DARF\n </Button>\n </Tooltip>\n </Col>\n )}\n {impostos.impostoDevido + impostos.impostoAcumulado >=\n minDarfPrice && (\n <Col\n span={12}\n style={{\n display: \"flex\",\n flex: \"0\",\n justifyContent: \"end\",\n }}\n >\n <Button\n size=\"large\"\n type=\"primary\"\n loading={emitting}\n disabled={loading || emitting}\n onClick={\n impostos.impostoDevido <= maxDarfPrice\n ? handleOpenPaymentModal\n : () => handleOpenDarfModal()\n }\n >\n {impostos.impostoDevido <= maxDarfPrice\n ? \"Pagar DARF\"\n : emitted\n ? \"Emitir novo DARF\"\n : \"Emitir DARF\"}\n </Button>\n </Col>\n )}\n </Row>\n </>\n )}\n </Col>\n );\n };\n\n const buildCalcTaxBody = useCallback(() => {\n return {\n numeroDependentes: impostos.totalDependentes,\n gastosAutonomos: impostos.totalDespesas,\n gastosPrevidencia: impostos.totalPrevidencia,\n gastosPensao: impostos.totalPensao,\n };\n }, [\n impostos.totalDependentes,\n impostos.totalDespesas,\n impostos.totalPensao,\n impostos.totalPrevidencia,\n ]);\n\n const calcTaxes = useCallback(async () => {\n setLoading(true);\n if (!view && isSaveItens.current) {\n const deducoes = buildCalcTaxBody();\n const response = await rendimentosBackend.post(\"/rendimentos/calc-tax\", {\n ...deducoes,\n rendimentos: monthStock,\n year,\n month: month + 1,\n impostoAcumulado: impostos.impostoAcumulado,\n });\n const { data } = response;\n setImpostos((currentValue) => {\n return {\n ...currentValue,\n aliquotaDevida: data.aliquotaDevida,\n baseTributaria: data.baseTributaria,\n impostoDevido: data.impostoDevido,\n impostoTotal: data.impostoTotal,\n juros: data.juros,\n multa: data.multa,\n totalDeducoes: data.totalDeducoes,\n totalRendimentos: data.totalRendimentos,\n };\n });\n }\n setLoading(false);\n }, [\n view,\n buildCalcTaxBody,\n monthStock,\n year,\n month,\n impostos.impostoAcumulado,\n ]);\n\n const getYearResume = useCallback(\n (year: number, force?: boolean, url?: string) => {\n setGettingYearResume(true);\n !view &&\n year <= new Date().getFullYear() &&\n year >= currentBroker.initialYear &&\n (force ||\n (!yearResumeFeature.disabled &&\n !yearResume.find((resume) => resume.year === year))) &&\n rendimentosBackend\n .get(yearResumeFeature.apiUrl, { params: { year } })\n .then((response) => {\n const index = yearResume.findIndex(\n (resume) => resume.year === year\n );\n if (index >= 0) {\n setYearResume((yearResume) => {\n yearResume.splice(index, 1, response.data);\n return yearResume;\n });\n } else {\n setYearResume((yearResume) => [...yearResume, response.data]);\n }\n\n if (url) {\n download(url);\n }\n })\n .catch((err) => console.log(err))\n .finally(() => setGettingYearResume(false));\n },\n [yearResumeFeature, yearResume, view, currentBroker.initialYear]\n );\n\n const getRendimentos = useCallback(async () => {\n setLoading(true);\n const response = await rendimentosBackend.get(\n `/rendimentos/${user.user.cpf}/${year}/${month + 1}`\n );\n const { data } = response;\n setId(data._id || \"\");\n setMonthStock(data.monthStock || []);\n const currentImpostos = {\n totalRendimentos: data?.totalRendimentos || 0,\n baseTributaria: data?.baseTributaria || 0,\n aliquotaDevida: data?.aliquotaDevida || 0,\n impostoDevido: data?.impostoDevido || 0,\n totalDeducoes: data?.totalDeducoes || 0,\n totalDependentes: data?.totalDependentes || 0,\n totalDespesas: data?.totalDespesas || 0,\n totalPensao: data?.totalPensao || 0,\n totalPrevidencia: data?.totalPrevidencia || 0,\n juros: data?.juros || 0,\n multa: data?.multa || 0,\n impostoTotal:\n (data.impostoDevido || 0) + (data.juros || 0) + (data.multa || 0),\n impostoAcumulado: data?.impostoAcumulado || 0,\n };\n setImpostos(currentImpostos);\n setLoading(false);\n getYearResume(year, true);\n }, [getYearResume, month, user.user.cpf, year]);\n\n const getRendimento = useCallback(async () => {\n setLoading(true);\n const response = await rendimentosBackend.get(\"/darf/getById\", {\n params: { id: darf?.id },\n });\n const { data } = response;\n setMonthStock(data.transactions || []);\n const currentImpostos = {\n totalRendimentos: data.totalRendimentos || 0,\n baseTributaria: data.baseTributaria || 0,\n aliquotaDevida: data.aliquotaDevida || 0,\n impostoDevido: data.impostoDevido || 0,\n totalDeducoes: data.totalDeducoes || 0,\n totalDependentes: data.totalDependentes || 0,\n totalDespesas: data.totalDespesas || 0,\n totalPensao: data.totalPensao || 0,\n totalPrevidencia: data.totalPrevidencia || 0,\n juros: data.juros || 0,\n multa: data.multa || 0,\n impostoAcumulado: data.impostoAcumulado || 0,\n impostoTotal:\n (data.impostoDevido || 0) + (data.juros || 0) + (data.multa || 0),\n };\n setImpostos(currentImpostos);\n setLoading(false);\n }, [darf]);\n\n useEffect(() => {\n if (view && darf) getRendimento();\n else getRendimentos();\n }, [getRendimentos, getRendimento, view, darf]);\n\n const buildNewImpostos = useCallback(() => {\n return {\n monthStock,\n year,\n month: month + 1,\n juros: impostos.juros,\n multa: impostos.multa,\n userCode: user.user.cpf,\n total: impostos.impostoTotal,\n impostoDevido: impostos.impostoDevido,\n totalRendimentos: impostos.totalRendimentos,\n baseTributaria: impostos.baseTributaria,\n aliquotaDevida: impostos.aliquotaDevida,\n totalDependentes: impostos.totalDependentes,\n totalDespesas: impostos.totalDespesas,\n totalPrevidencia: impostos.totalPrevidencia,\n totalPensao: impostos.totalPensao,\n totalDeducoes: impostos.totalDeducoes,\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [impostos.baseTributaria, year, month, user]);\n\n const saveItems = useCallback(async () => {\n setLoading(true);\n if (isSaveItens.current) {\n const newImpostos = buildNewImpostos();\n if (id !== \"\") {\n await rendimentosBackend.put(\"/rendimentos/\", {\n _id: id,\n ...newImpostos,\n });\n } else {\n const { data } = await rendimentosBackend.post(\n \"/rendimentos\",\n newImpostos\n );\n setId(data._id);\n }\n getYearResume(year, true);\n }\n if (isSaveItens.current) isSaveItens.current = false;\n setLoading(false);\n }, [id, buildNewImpostos, getYearResume, year]);\n\n useEffect(() => {\n calcTaxes();\n }, [calcTaxes, monthStock]);\n\n useEffect(() => {\n saveItems();\n }, [saveItems]);\n\n const generateDarf = async (pixValue: boolean) => {\n setLoading(true);\n onCloseDarfModal();\n const { data } = await MsDarf.post(\"/darf\", {\n month: month + 1,\n year,\n cpf: user.user.cpf,\n name: user.user.name,\n paymentInfo: {\n clientInfo: {\n document: user.user.cpf,\n email: user.user.email,\n name: user.user.name,\n phone: \"\",\n },\n },\n insertPix: pixValue,\n valueCharge:\n impostos.impostoDevido +\n impostos.impostoAcumulado +\n impostos.juros +\n impostos.multa,\n institution: \"velotax-rendimentos\",\n impostoDevido: impostos.impostoDevido,\n totalImpostoDevido: impostos.impostoTotal,\n totalRendimentos: impostos.totalRendimentos,\n baseTributaria: impostos.baseTributaria,\n totalDependentes: impostos.totalDependentes,\n totalDespesas: impostos.totalDespesas,\n totalPrevidencia: impostos.totalPrevidencia,\n totalPensao: impostos.totalPensao,\n totalDeducoes: impostos.totalDeducoes,\n aliquotaDevida: impostos.aliquotaDevida,\n impostoAcumulado: impostos.impostoAcumulado,\n juros: impostos.juros,\n multa: impostos.multa,\n transactions: monthStock,\n from: 18,\n });\n\n window.location.href = data.darfUrl;\n getYearResume(year, true);\n setLoading(false);\n if (impostos.impostoTotal <= maxDarfPrice) {\n handleOpenPaymentModal();\n }\n goToHistoric();\n };\n\n const handleRegularize = (regular: boolean) => {\n setLoading(true);\n setEmitting(true);\n apiRendimentos\n .post(\"transaction/regularize\", {\n year,\n month: month + 1,\n regular,\n })\n .then((res) => {\n getYearResume(year, true, res.data.darfUrl);\n })\n .catch((err) => console.log(\"err\", err))\n .finally(() => {\n setEmitting(false);\n setLoading(false);\n });\n };\n\n const handleCloseItemModal = useCallback(() => {\n setShowRendimentoModal(false);\n unsetItem();\n }, []);\n\n const addItem = async (data: IMonthStock) => {\n if (!isSaveItens.current) isSaveItens.current = true;\n setMonthStock((currentArray) => [...currentArray, data]);\n getYearResume(year, true);\n handleCloseItemModal();\n };\n\n const editItem = (data: IMonthStock) => {\n if (!isSaveItens.current) isSaveItens.current = true;\n const aux = [...monthStock];\n aux.splice(itemIndex, 1, data);\n setMonthStock(aux);\n getYearResume(year, true);\n handleCloseItemModal();\n };\n\n const removeAsset = async () => {\n const aux = [...monthStock];\n aux.splice(itemIndex, 1);\n setMonthStock(aux);\n getYearResume(year, true);\n if (!isSaveItens.current) isSaveItens.current = true;\n };\n\n const onChangeMonth = (value: moment.Moment | null, dateString: string) => {\n const [month, year] = dateString.split(\"-\");\n setMonth(parseInt(month) - 1);\n setYear(parseInt(year));\n };\n\n const handleAdd = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n event.stopPropagation();\n unsetItem();\n setShowRendimentoModal(true);\n };\n\n const handleEdit = (item: IMonthStock, index: number) => {\n setShowRendimentoModal(true);\n setItemIndex(index);\n setItem(item);\n };\n\n const handleRemove = (item: IMonthStock, index: number) => {\n setShowDeleteModal(true);\n setItemIndex(index);\n setItem(item);\n };\n\n const unsetItem = () => {\n setItem(null);\n };\n\n const handleCloseDeleteModal = () => {\n setShowDeleteModal(false);\n unsetItem();\n };\n\n const onCloseHelpModal = () => {\n setHelpModal(undefined);\n };\n\n const onCloseDarfModal = () => {\n setDarfModal(undefined);\n };\n\n const goToHistoric = () => {\n navigate(\"/velotax/autonomos-historico\", {\n state: {\n year,\n },\n });\n };\n\n const handleOpenDarfModal = (value?: boolean) => {\n setDarfModal(\n DarfModal(emitted, onCloseDarfModal, () => generateDarf(value ?? false))\n );\n };\n\n const handleOpenPaymentModal = () => {\n setPaymentModal(!paymentModal);\n };\n\n const changeInputState = (variable: string, value: string) => {\n setImpostos((currentValue) => {\n return {\n ...currentValue,\n [variable]:\n variable !== \"totalDependentes\" ? currencyToNumber(value) : value,\n };\n });\n isSaveItens.current = true;\n };\n\n useEffect(() => {\n const valueToCharge =\n impostos.impostoDevido +\n impostos.impostoAcumulado +\n impostos.juros +\n impostos.multa;\n\n const dataToPayment = {\n cpf: user.user.cpf,\n name: user.user.name,\n valueCharge: valueToCharge,\n institution: \"velotax-rendimentos\",\n impostoDevido: impostos.impostoDevido,\n totalImpostoDevido: impostos.impostoTotal,\n impostoTotalFinal: valueToCharge,\n totalRendimentos: impostos.totalRendimentos,\n baseTributaria: impostos.baseTributaria,\n totalDependentes: impostos.totalDependentes,\n totalDespesas: impostos.totalDespesas,\n totalPrevidencia: impostos.totalPrevidencia,\n totalPensao: impostos.totalPensao,\n totalDeducoes: impostos.totalDeducoes,\n aliquotaDevida: impostos.aliquotaDevida,\n impostoAcumulado: impostos.impostoAcumulado,\n juros: impostos.juros,\n multa: impostos.multa,\n transactions: monthStock,\n year,\n month: month + 1,\n };\n\n setPaymentData(dataToPayment);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [impostos, month, year]);\n\n return (\n <Container className={clsx({ view })}>\n <Content className={clsx({ view })}>\n <Space direction=\"vertical\" className=\"full-width\">\n <Row gutter={[16, 16]} align=\"middle\">\n <Col xs={24} sm={16}>\n <Typography.Title level={3}>\n <BsCalendar3 />\n {monthsExtended[month]} de {year}\n </Typography.Title>\n </Col>\n {!view ? (\n <>\n <Col xs={24} sm={8}>\n <DatePicker\n size=\"large\"\n picker=\"month\"\n format=\"MM-YYYY\"\n disabled={loading}\n allowClear={false}\n inputReadOnly={true}\n onChange={onChangeMonth}\n suffixIcon={<BsCalendar3 />}\n defaultValue={defaultValue}\n locale={antDatePickerLocale}\n onPanelChange={(e) => getYearResume(e.year())}\n getPopupContainer={(trigger) => trigger.parentElement!}\n renderExtraFooter={() =>\n yearResumeFeature.disabled ? (\n <></>\n ) : (\n <DatePickerExtraFooter />\n )\n }\n disabledDate={(current) =>\n current &&\n (current > moment().endOf(\"month\") ||\n current < moment(`${currentBroker.initialYear}-01-01`))\n }\n monthCellRender={(e) => (\n <DatePickerMonthCell event={e} yearResume={yearResume} />\n )}\n />\n </Col>\n {!status ? (\n <Spin />\n ) : (\n <>\n <Typography.Text strong style={{ marginRight: \"8px\" }}>\n Situação:\n </Typography.Text>\n <StyledTag\n className={\n YearResumeStatusCSSClassEnum[status ?? \"REGULAR\"]\n }\n title={YearResumeStatusTextEnum[status ?? \"REGULAR\"]}\n color={YearResumeStatusColorEnum[status ?? \"REGULAR\"]}\n >\n {YearResumeStatusTextEnum[status ?? \"REGULAR\"]}\n </StyledTag>\n </>\n )}\n </>\n ) : null}\n </Row>\n <br />\n <Descriptions size=\"small\" bordered layout=\"horizontal\">\n {RendimentosImpostosDevidos.map((description) => (\n <Descriptions.Item\n span={24}\n key={description.id}\n label={description.label(setHelpModal)}\n >\n {loading ? <Spin /> : description.render(impostos)}\n </Descriptions.Item>\n ))}\n </Descriptions>\n\n <br />\n\n <Collapse\n ghost\n bordered={false}\n defaultActiveKey={[\"\"]}\n expandIconPosition=\"right\"\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <Typography.Title level={3}>\n <BsCalculator />\n Rendimentos\n </Typography.Title>\n }\n >\n {!view ? (\n <Button\n type=\"primary\"\n className=\"add\"\n disabled={loading}\n onClick={handleAdd}\n icon={<PlusOutlined />}\n >\n Adicionar\n </Button>\n ) : null}\n <List\n loading={loading}\n itemLayout=\"horizontal\"\n dataSource={monthStock}\n renderItem={(item, index) => (\n <List.Item\n actions={\n view\n ? []\n : [\n <Button\n type=\"text\"\n onClick={() => handleEdit(item, index)}\n icon={<FaRegEdit size={16} />}\n />,\n <Button\n type=\"text\"\n onClick={() => handleRemove(item, index)}\n icon={<AiOutlineDelete size={16} />}\n />,\n ]\n }\n >\n <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={<strong>Rendimento #{index + 1}</strong>}\n description={\n <div className=\"list-description\">\n <div>Tipo: {item.tipo}</div>\n <div>\n Valor: {formatCurrency(item.valorRendimento ?? 0)}\n </div>\n {item.cpfPagador && (\n <div>\n CPF do pagador: {maskCpf(item.cpfPagador)}\n </div>\n )}\n {item.cpfBeneficiario && (\n <div>\n CPF do beneficiário:{\" \"}\n {maskCpf(item.cpfBeneficiario)}\n </div>\n )}\n </div>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n </Collapse.Panel>\n </Collapse>\n\n <br />\n\n <Collapse\n ghost\n bordered={false}\n defaultActiveKey={[\"\"]}\n expandIconPosition=\"right\"\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <Typography.Title level={3}>\n <BsCalculator />\n Deduções Tributárias\n </Typography.Title>\n }\n >\n <BolsaOperations>\n <div className=\"header-deducoes-tributarias\">\n <span>\n <InfoCircleOutlined\n onClick={() => setHelpModal(Dependentes)}\n />\n Dependentes\n </span>\n\n <span>\n <InfoCircleOutlined\n onClick={() => setHelpModal(Autonomos)}\n />\n Gastos Autônomos\n </span>\n\n <span>\n <InfoCircleOutlined\n onClick={() => setHelpModal(Previdencia)}\n />\n Gastos Previdência\n </span>\n\n <span>\n <InfoCircleOutlined onClick={() => setHelpModal(Pensao)} />\n Gastos Pensão\n </span>\n </div>\n <div className=\"body-deducoes-tributarias\">\n <div className=\"row-deducoes-tributarias\">\n <span>\n <InputNumber\n min={0}\n controls={true}\n defaultValue={0}\n disabled={view ?? loading}\n value={impostos.totalDependentes ?? 0}\n className=\"ant-input ant-input-sm\"\n onChange={(e: any) => {\n changeInputState(\"totalDependentes\", e);\n }}\n />\n </span>\n <span>\n <NumberFormat\n prefix=\"R$ \"\n disabled={view ?? loading}\n defaultValue={0}\n decimalScale={2}\n allowNegative={false}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n placeholder=\"R$ 0,00\"\n className=\"ant-input\"\n value={impostos.totalDespesas}\n onBlur={(e: any) =>\n changeInputState(\"totalDespesas\", e.target.value)\n }\n />\n </span>\n <span>\n <NumberFormat\n prefix=\"R$ \"\n defaultValue={0}\n decimalScale={2}\n disabled={view ?? loading}\n allowNegative={false}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n placeholder=\"R$ 0,00\"\n className=\"ant-input\"\n value={impostos.totalPrevidencia}\n onBlur={(e: any) =>\n changeInputState(\"totalPrevidencia\", e.target.value)\n }\n />\n </span>\n <span>\n <NumberFormat\n prefix=\"R$ \"\n disabled={view ?? loading}\n defaultValue={0}\n decimalScale={2}\n allowNegative={false}\n decimalSeparator=\",\"\n thousandSeparator=\".\"\n placeholder=\"R$ 0,00\"\n className=\"ant-input\"\n value={impostos.totalPensao}\n onBlur={(e: any) =>\n changeInputState(\"totalPensao\", e.target.value)\n }\n />\n </span>\n </div>\n </div>\n </BolsaOperations>\n </Collapse.Panel>\n </Collapse>\n\n <br />\n\n <Collapse\n ghost\n bordered={false}\n defaultActiveKey={[\"\"]}\n expandIconPosition=\"right\"\n >\n <Collapse.Panel\n key=\"1\"\n header={\n <div className=\"total-tax-header\">\n <Typography.Title level={3}>\n <DollarCircleOutlined />\n Imposto total\n </Typography.Title>\n <Typography.Title level={3} className=\"text-center\">\n {formatCurrency(\n Number(\n impostos.impostoTotal + impostos.impostoAcumulado\n ) ?? 0\n )}\n </Typography.Title>\n </div>\n }\n >\n <Descriptions size=\"small\" bordered layout=\"horizontal\">\n {ImpostoTotalRendimentos.map((description: any) => {\n if(['impostoAcumulado', 'multa', 'juros'].includes(description.id) && !oldModel) return <></>\n \n return (\n <Descriptions.Item\n span={24}\n key={description.id}\n label={description.label(setHelpModal)}\n >\n {loading ? (\n <Spin />\n ) : description.Component ? (\n <description.Component\n data={impostos}\n year={year}\n month={month}\n loading={loading}\n setDataCripto={setImpostos}\n disabled={!view}\n view={view}\n id={id}\n monthStock={monthStock}\n user={user}\n />\n ) : (\n formatCurrency(\n Number(impostos[description.id as keyof Iimpostos] || 0)\n )\n )}\n </Descriptions.Item>\n )\n })}\n </Descriptions>\n </Collapse.Panel>\n </Collapse>\n {!view ? (\n <Row>\n <Divider />\n {returnRightButton()}\n </Row>\n ) : null}\n </Space>\n </Content>\n <PaymentModal\n fromDarf\n show={paymentModal}\n onCancel={handleOpenPaymentModal}\n paymentData={paymentData}\n emitting={loading}\n callDarf={(value: boolean) => handleOpenDarfModal(value)}\n />\n <Modal\n footer={null}\n visible={helpModal}\n title={helpModal?.title}\n onCancel={onCloseHelpModal}\n >\n {helpModal?.content}\n </Modal>\n <Modal\n visible={darfModal}\n title={darfModal?.title}\n footer={darfModal?.footer}\n onCancel={onCloseDarfModal}\n >\n {darfModal?.content}\n </Modal>\n <FormModal\n add={addItem}\n edit={editItem}\n itemToEdit={item}\n rows={RendimentoFormItemRows}\n onCancel={handleCloseItemModal}\n visibility={showRendimentoModal}\n title={item ? \"Editar rendimento\" : \"Adicionar rendimento\"}\n />\n <DeleteConfirmationModal\n title=\"Remover rendimentos\"\n visibility={showDeleteModal}\n onCancel={handleCloseDeleteModal}\n setVisibility={setShowDeleteModal}\n onOk={() => Promise.resolve(removeAsset())}\n body=\"Você realmente quer deletar esse ativo?\"\n />\n </Container>\n );\n};\n","import moment from \"moment\";\nimport { BsDownload } from \"react-icons/bs\";\nimport { AiOutlineFileSync } from \"react-icons/ai\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport {\n Col,\n Divider,\n Form,\n List,\n message,\n Row,\n Select,\n Skeleton,\n Typography,\n} from \"antd\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport { Page } from \"../../constants/brokers\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { download, errorMessage } from \"../../utils\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { Container, Content, ConfirmModal } from \"./styles\";\n\ninterface AnnualReportProps {\n item: Page;\n}\n\nexport const AnnualReport: React.FC<AnnualReportProps> = ({ item }) => {\n const { user } = useAuth();\n const [form] = Form.useForm();\n const { currentBroker, currentPage } = useBroker();\n const [reports, setReports] = useState<any[]>([]);\n const [loadingReports, setLoadingReports] = useState(false);\n const [loading, setLoading] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n const { apiUrl } = item.settings;\n const { initialYear } = currentBroker;\n\n const yearOptions = Array.from(Array(new Date().getFullYear() - initialYear))\n .map((y, i) => ({ value: initialYear + i, label: `${initialYear + i}` }))\n .reverse();\n\n const handleModal = () => {\n setShowModal((show) => !show);\n };\n\n const downloadAction = (item: any, index: number) => {\n if (item.fileLink) {\n download(item.fileLink);\n }\n };\n\n const getReports = useCallback(() => {\n setLoadingReports(true);\n (currentPage?.api || apis)\n .get(apiUrl)\n .then((response: any) => setReports(response.data))\n .catch(() => message.error(errorMessage))\n .finally(() => setLoadingReports(false));\n }, [apiUrl, currentPage]);\n\n const handleReport = (data: any) => {\n setLoading(true);\n (currentPage?.api || apis)\n .post(`${apiUrl}/${data.year}`, { name: user.user.name })\n .then(() => {\n handleModal();\n getReports();\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n };\n\n useEffect(() => {\n getReports();\n }, [getReports]);\n\n return (\n <Container>\n <Content>\n <Typography.Title level={2}>Gerencie seus relatórios</Typography.Title>\n <Typography.Paragraph>\n Selecione um ano para emitir seu informe.\n </Typography.Paragraph>\n <Typography.Paragraph>\n Após a emissão, o relatório será enviado para o seu email de cadastro\n e também ficará disponÃvel nesta página.\n </Typography.Paragraph>\n <br />\n <Form\n form={form}\n size=\"large\"\n layout=\"vertical\"\n onFinish={handleReport}\n >\n <Row gutter={[16, 16]} align=\"top\">\n <Col xs={24} sm={14}>\n <Form.Item\n name=\"year\"\n rules={[\n { required: true, message: \"O ano deve ser informado\" },\n ]}\n >\n <Select\n placeholder=\"Selecione o ano\"\n options={yearOptions}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n </Form.Item>\n </Col>\n <Col xs={24} sm={10}>\n <Button\n size=\"large\"\n type=\"primary\"\n htmlType=\"submit\"\n className=\"full-width\"\n loading={loading}\n icon={<></>}\n >\n Emitir informe\n </Button>\n </Col>\n </Row>\n </Form>\n <Divider />\n <Typography.Title level={3}>\n <AiOutlineFileSync size={22} />\n Relatórios emitidos\n </Typography.Title>\n <List\n dataSource={reports}\n itemLayout=\"horizontal\"\n loading={loadingReports}\n renderItem={(item, index) => (\n <List.Item\n actions={[\n <Button\n type=\"text\"\n size=\"large\"\n onClick={() => downloadAction(item, index)}\n icon={<BsDownload size={16} />}\n />,\n ]}\n >\n <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={`Ano: ${item.year}`}\n description={`Data da solicitação: ${moment(\n item.createdAt\n ).format(\"DD/MM/YYYY\")} à s ${moment(item.createdAt).format(\n \"HH:mm\"\n )}`}\n />\n </Skeleton>\n </List.Item>\n )}\n />\n <ConfirmModal\n closable\n footer={null}\n destroyOnClose\n keyboard={false}\n visible={showModal}\n onCancel={handleModal}\n title=\"Informe emitido com sucesso!\"\n >\n <Typography.Paragraph className=\"p\">\n Você receberá um email com o informe de bens e direitos.{\" \"}\n <strong>Aguarde!</strong>\n </Typography.Paragraph>\n </ConfirmModal>\n </Content>\n </Container>\n );\n};\n","import clsx from \"clsx\";\nimport moment from \"moment-timezone\";\nimport { BsEye } from \"react-icons/bs\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { Button as MuiButton } from \"@mui/material\";\nimport { AiOutlineCalendar, AiOutlineLock } from \"react-icons/ai\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport {\n Col,\n List,\n message,\n Row,\n Select,\n Skeleton,\n Space,\n Tooltip,\n Typography,\n} from \"antd\";\nimport { PayButton } from \"./PayButton\";\nimport { DarfBolsa } from \"../DarfBolsa\";\nimport Button from \"../../components/Button\";\nimport { Container, Content, BottomAdvice, AttentionIconContainer } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport { PayDarfButton } from \"./PayDarfButton\";\nimport HandleTag from \"../../services/handleTag\";\nimport { itensBolsa } from \"../Bolsa/itensBolsa\";\nimport { CardXP } from \"../../components/CardXP\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { DrawerModal } from \"../../components/DrawerModal\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\nimport { useB3Integration } from \"../../contexts/B3IntegrationContext\";\nimport { maxCreditCardPayment, maxPixPayment } from \"../../constants/darf\";\nimport { useOldTransactions } from \"../../contexts/OldTransactionsContext\";\nimport { useNotasCorretagem } from \"../IntegrationBolsa/NotasCorretagem/useNotasCorretagem\";\nimport {\n impostoCharge,\n showPayButton,\n valueIsGreaterThanMin,\n vendasIsentas,\n vendasTotais,\n} from \"./utils\";\nimport {\n download,\n errorMessage,\n formatCurrency,\n getInitialYear,\n getLastBusinessDay,\n getZeroBuyPrice,\n isMobile,\n isSecondBusinessDay,\n monthsExtended,\n} from \"../../utils\";\nimport { NotasHistoricoModal } from \"../IntegrationBolsa/NotasHistoricoModal\";\nimport { instanceMsCalc } from \"../../services/msCalc\";\nimport { ModalZeroBuyPrice } from \"../../components/ModalZeroBuyPrice\";\nimport { BsExclamationCircle } from \"react-icons/bs\";\n\ninterface ShowCalcModal {\n visible: boolean;\n view?: boolean;\n month?: number;\n year?: number;\n}\n\ninterface HistoricProps {\n item: Page;\n}\n\nexport const HistoricBolsa: React.FC<HistoricProps> = ({ item }) => {\n const { state } = useLocation();\n const navigate = useNavigate()\n const darfBolsaRef = useRef<any>();\n const { oldPositionList } = useOldTransactions();\n const {\n user,\n hasPlan: hasPremiumPlan,\n hasPermissionGeneral,\n showUserPlanModal,\n } = useAuth();\n const hasPlan = hasPremiumPlan || hasPermissionGeneral;\n const { integration, initIntegration, integrouHoje } = useBroker();\n const {\n b3Authorized,\n handleIntegrate,\n interval,\n backgroundIntegration,\n notas: {\n getHistoricoNotasCorretagem,\n setShowHistoricoNotasCorretagemModal,\n },\n } = useB3Integration();\n const {\n sendNotas,\n loadingSend,\n uploadProps,\n showNotasCorretagemModal,\n setShowNotasCorretagemModal,\n } = useNotasCorretagem();\n\n const today = new Date();\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const stateYear = (state as any)?.year;\n const initialYear = getInitialYear(currentYear, currentMonth);\n window.history.replaceState({}, document.title);\n\n const [data, setData] = useState<any[]>();\n const [holidays, setHolidays] = useState<any[]>([]);\n const [loading, setLoading] = useState(false);\n const [emitting, setEmitting] = useState(false);\n const [itemToPay, setItemToPay] = useState<any>();\n const [paymentModal, setPaymentModal] = useState(false);\n const [year, setYear] = useState(stateYear ?? initialYear);\n const [showCalcModal, setShowCalcModal] = useState<ShowCalcModal>({\n visible: false,\n });\n const [ignoreZeroBuyPrice, setIgnoreZeroBuyPrice] = useState(false);\n const [dataZeroBuyPrice, setDataZeroBuyPrice] = useState<any[]>([]);\n const [modalZeroBuyPrice, setModalZeroBuyPrice] = useState(false);\n\n const isBasic = user.user?.userPlanInfoVelotax?.type?.includes('BASIC');\n\n const historicFeature = item.features[0];\n const payFeature = item.features[1];\n\n const yearOptions = Array.from(Array(initialYear - 2020 + 1))\n .map((y, i) => ({\n value: 2020 + i,\n label: `${2020 + i}`,\n }))\n .reverse();\n\n const getHistoric = useCallback(() => {\n setLoading(true);\n apiBolsa\n .get(user?.user?.cpf === '01268936324' ? '/xpinvestimentos/historic2' : historicFeature.apiUrl, { params: { year } })\n .then((response) => {\n const data = (response.data ?? []).reverse();\n setData(data);\n })\n .catch((err) => console.log(err))\n .finally(() => setLoading(false));\n }, [historicFeature, year]);\n\n const pay = useCallback(\n (payed: boolean, item: any) => {\n setLoading(true);\n apiBolsa\n .put(`${payFeature.apiUrl}/${item._id}`, { payed })\n .then(() => {\n getHistoric();\n setData((data) =>\n (data || []).map((darf) => ({\n ...darf,\n payed: item._id === darf._id ? payed : darf.payed,\n }))\n );\n })\n .catch(() => message.error(errorMessage))\n .finally(() => setLoading(false));\n },\n [payFeature, getHistoric]\n );\n\n const handleOpenPlanModal = () => {\n navigate('/planos')\n };\n\n const handleOpenNotas = () => {\n setShowNotasCorretagemModal(true);\n };\n\n const editAction = (\n record: any,\n view: boolean,\n index: number,\n noPlanMode?: boolean\n ) => {\n if (!hasPlan && !noPlanMode) {\n handleOpenPlanModal();\n } else {\n const { month, year } = record;\n setShowCalcModal({ visible: true, view, month, year });\n if (view) {\n setItemToPay(record);\n }\n }\n };\n\n const payAction = (value: boolean, record: any) => {\n pay(value, record);\n };\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n // const sendDarfToEmail = (darfId: string) => {\n // apiBolsa\n // .get(`/darf/sendEmail/${darfId}`)\n // .then(() => {\n // message.success(\"O DARF foi enviado para o seu e-mail\");\n // })\n // .catch((error) => {\n // console.log(\"Algo inesperado aconteceu. Tente novamente!\");\n // });\n // };\n\n useEffect(() => {\n if (ignoreZeroBuyPrice) handlePayButton(item);\n }, [ignoreZeroBuyPrice])\n\n const handlePayButton = async (item: any) => {\n if (!hasPlan || isBasic) {\n handleOpenPlanModal();\n } else {\n if (!ignoreZeroBuyPrice) {\n const hasZeroBuyPrice = await getZeroBuyPrice(item?.memoriaCalculo);\n if (hasZeroBuyPrice.length > 0) {\n setModalZeroBuyPrice(true);\n setDataZeroBuyPrice(hasZeroBuyPrice);\n getTaxes(item.month, false, false, false, true, false);\n\n return;\n }\n }\n getTaxes(item.month, false, false, false, true, false);\n setPaymentModal(!paymentModal);\n }\n };\n\n const handleDarf = (justSave?: boolean, obj?: any) => {\n setEmitting(true);\n const data = obj ? obj : itemToPay;\n apiBolsa\n .post(\"/darf\", {\n ...data,\n memoriaCalculo: [],\n transactions: data?.memoriaCalculo,\n totalImpostoDevido: data?.impostoTotalFinal,\n impostoDevido: data?.impostoTotal,\n juros: data?.jurosAux,\n multa: data?.multaAux,\n year,\n month: data?.month,\n name: user.user.name,\n insertPix: true,\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n justSave,\n })\n .then((res) => {\n getHistoric();\n setEmitting(false);\n if (!justSave) {\n setPaymentModal((paymentModal) => !paymentModal);\n download(res.data.darfUrl);\n message.success(\"O DARF foi enviado para o seu e-mail\");\n }\n })\n .catch((err) => {\n message.error(err.response?.data?.message || errorMessage);\n setEmitting(false);\n });\n };\n\n const getTaxes = useCallback(\n (\n month: number,\n nAtualizarDarfsPassadas?: boolean,\n nAtualizarIrrf?: boolean,\n atualizouImpostoAcumulado?: boolean,\n nAtualizarPrejuizosAcumulados?: boolean,\n atualizarTotalmente?: boolean,\n atualizouCorretagem?: boolean,\n callback?: (obj: any) => void\n ) => {\n apiBolsa\n .get(\"/xpinvestimentos/transaction\", {\n params: {\n year,\n month,\n nAtualizarDarfsPassadas: nAtualizarDarfsPassadas || false,\n nAtualizarIrrf: nAtualizarIrrf || false,\n atualizouImpostoAcumulado: atualizouImpostoAcumulado || false,\n nAtualizarPrejuizosAcumulados:\n nAtualizarPrejuizosAcumulados || false,\n atualizarTotalmente: atualizarTotalmente || false,\n atualizouCorretagem: atualizouCorretagem || false,\n },\n })\n .then((response) => {\n if (response.data.memoriaCalculo) {\n const data = {\n ...response.data,\n year,\n month,\n multa: response.data?.multaAux || response.data?.multa,\n juros: response.data?.jurosAux || response.data?.juros,\n impostoDevido: response.data?.impostoTotal || response.data?.impostoDevido,\n memoriaCalculo: response.data.memoriaCalculo.map(\n (memoCalc: any) => ({\n ...memoCalc,\n date: moment(memoCalc.date.slice(0, 10)).format(\"DD/MM/YYYY\"),\n originalDate: memoCalc.date,\n market:\n memoCalc.market === \"Opção de Compra\" ||\n memoCalc.market === \"Opção de Venda\"\n ? \"Mercado de opções\"\n : memoCalc.market,\n })\n ),\n };\n setItemToPay(data);\n callback?.(data);\n }\n })\n .catch(() => { });\n },\n [year]\n );\n\n const handleCloseCalcModal = () => {\n setShowCalcModal({ visible: false });\n getHistoric();\n };\n\n const getHolidays = async () => {\n instanceMsCalc.get(`/rates/get-holidays`)\n .then(({ data }) => {\n const dataFormated = data?.map((el: any) => {\n return moment(el).tz('Europe/London').format('MM-DD');\n });\n setHolidays(dataFormated);\n })\n .catch(() => console.error('Erro ao buscar feriados'));\n }\n\n useEffect(() => {\n getHistoric();\n getHolidays();\n }, [getHistoric, year, initIntegration]);\n\n useEffect(() => {\n if (\n user.user &&\n b3Authorized &&\n !integrouHoje &&\n !interval.current &&\n integration.key !== \"unset\"\n ) {\n handleIntegrate({ integrationInBackground: true });\n }\n }, [\n interval,\n user.user,\n integrouHoje,\n b3Authorized,\n handleIntegrate,\n integration.key,\n ]);\n\n const isAntesTerceiroDiaUtil = () => {\n const today = moment();\n\n // Verifica se a data de hoje é um sábado\n if (today.isoWeekday() === 6) {\n return false;\n }\n\n // Verifica se a data de hoje é anterior ao terceiro dia útil\n const firstDayOfMonth = moment(today).startOf('month');\n let businessDaysCount = 0;\n\n while (businessDaysCount < 2) {\n if (firstDayOfMonth.isoWeekday() < 6) {\n businessDaysCount++;\n }\n\n firstDayOfMonth.add(1, 'day');\n }\n\n return today.isBefore(firstDayOfMonth);\n }\n\n const thirdBusinessDayAndMonth = (item: any) => {\n if (disableCurrentMonth(item))\n return { disabled: true, title: \"Aguarde o encerramento do mês para pagar seu DARF\" }\n else if (item.month == currentMonth && item.year == currentYear && isAntesTerceiroDiaUtil())\n return { disabled: true, title: \"Aguarde o terceiro dia útil deste mês para pagar seu DARF\" }\n else return { disabled: false, title: \"\" }\n }\n\n const backgroundIntegrationDisabled = (item: any) =>\n backgroundIntegration.loading &&\n (item.year > backgroundIntegration.year ||\n (item.year === backgroundIntegration.year &&\n item.month >= backgroundIntegration.month));\n\n const disableCurrentMonth = (item: any) =>\n item.year === currentYear && item.month === currentMonth + 1;\n\n return (\n <Container className=\"velotax-container\">\n <Typography.Title className=\"page-title\" level={1}>\n Impostos devidos (DARF)\n </Typography.Title>\n <Content className=\"velotax-content historic\">\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n className=\"year-select\"\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n suffixIcon={<AiOutlineCalendar size={24} />}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n <List\n loading={loading}\n itemLayout=\"horizontal\"\n className={clsx(\"velotax-historic-list\", { \"no-plan\": !hasPlan })}\n dataSource={\n data?.filter(\n (item) =>\n !(item.year === currentYear && item.month > currentMonth + 1)\n ) ?? []\n }\n renderItem={(item, index) => {\n const ultimoDiaUtilDoMes = getLastBusinessDay(\n new Date(item.year, item.month + 1, 0),\n holidays,\n );\n const vencimento = moment(ultimoDiaUtilDoMes).format(\"DD/MM/YYYY\");\n const currentDarfDate = new Date(year, item.month -1, 15);\n let dateAllowedOnBasic = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n if(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt) {\n dateAllowedOnBasic = new Date(user?.user?.userPlanInfoVelotax?.currentPlan?.createdAt);\n dateAllowedOnBasic.setMonth(dateAllowedOnBasic.getMonth() - 2)\n }\n const checkMonth = (currentDarfDate.getTime() < dateAllowedOnBasic.getTime());\n const hideOnBasic = isBasic && checkMonth;\n const disabled = backgroundIntegrationDisabled(item);\n return (\n <List.Item\n actions={\n (!hasPlan || hideOnBasic)\n ? item.transactions?.length > 0 && !isMobile()\n ? [\n <Button\n type=\"link\"\n icon={<BsEye size={16} />}\n disabled={disabled}\n onClick={() => editAction(item, true, index, true)}\n >\n <strong>Visualizar</strong>\n </Button>,\n ]\n : []\n : !isMobile()\n ? [\n showPayButton(item) && (\n <PayButton\n onClick={() => handlePayButton(item)}\n title={\n thirdBusinessDayAndMonth(item).title\n }\n disabled={\n disabled || thirdBusinessDayAndMonth(item).disabled\n }\n />\n ),\n <Button\n type=\"link\"\n icon={<BsEye size={16} />}\n disabled={disabled}\n onClick={() =>\n editAction(\n item,\n item.payed && valueIsGreaterThanMin(item),\n index\n )\n }\n >\n {showPayButton(item) ? (\n \"\"\n ) : (\n <strong>Visualizar</strong>\n )}\n </Button>,\n ]\n : []\n }\n >\n <Skeleton title={false} loading={item.loading} active>\n <List.Item.Meta\n title={\n <>\n {monthsExtended[item.month - 1]}\n {!isMobile() ? ` de ${item.year}` : \"\"}\n {(!hasPlan || hideOnBasic) &&\n item.transactions?.length > 0 &&\n !disabled &&\n isMobile() && (\n <Button\n type=\"link\"\n onClick={() =>\n editAction(item, true, index, true)\n }\n icon={\n <BsEye\n size={16}\n style={{\n minWidth: \"24px\",\n minHeight: \"24px\",\n marginLeft: \"12px\",\n strokeWidth: \"0.2px\",\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n />\n )}\n {(hasPlan && !hideOnBasic) ? (\n <div\n style={{ display: \"flex\", alignItems: \"center\" }}\n >\n {valueIsGreaterThanMin(item) &&\n !disableCurrentMonth(item) &&\n !disabled ? (\n <PayDarfButton\n checked={item.payed}\n checkedChildren=\"Pago\"\n unCheckedChildren=\"Em aberto\"\n onChange={() => {\n if (item._id) {\n payAction(!item.payed, item);\n } else {\n getTaxes(\n item.month,\n false,\n false,\n false,\n true,\n false,\n false,\n (obj: any) => {\n handleDarf(true, obj);\n }\n );\n }\n }}\n />\n ) : undefined}\n {isMobile() &&\n !disabled && (\n <Button\n type=\"link\"\n icon={\n <BsEye\n size={16}\n style={{\n minWidth: \"24px\",\n minHeight: \"24px\",\n marginLeft: \"12px\",\n strokeWidth: \"0.2px\",\n fill: \"var(--ant-primary-color)\",\n }}\n />\n }\n onClick={() =>\n editAction(\n item,\n item.payed && valueIsGreaterThanMin(item),\n index\n )\n }\n />\n )}\n </div>\n ) : undefined}\n </>\n }\n description={\n <Space direction=\"vertical\">\n {(!hasPlan || hideOnBasic) ? (\n <>\n {(item.transactions?.length > 0 || disabled) ? (\n <>\n <Typography.Text>\n <span>Vendas totais: </span>\n <strong>\n {disabled ? (\n <>\n <Typography.Text\n style={{\n fontSize: \"14px\",\n marginRight: \"12px\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </>\n ) : (\n formatCurrency(vendasTotais(item))\n )}\n </strong>\n </Typography.Text>\n <Typography.Text className=\"no-plan-imposto-a-pagar\">\n <span>Imposto a pagar: </span>\n <Button\n type=\"link\"\n disabled={backgroundIntegrationDisabled(\n item\n )}\n onClick={() => {\n navigate('/planos')\n }}\n >\n <strong>\n Clique para verificar \n <AiOutlineLock size={14} />\n </strong>\n </Button>\n </Typography.Text>\n </>\n ) : (\n <Typography.Text style={{ width: \"100%\" }}>\n {\n user?.user?.cpf === '01268936324' \n ? 'Clique em visualizar para acessar sua operações'\n : 'Não houve movimentações tributáveis neste mês'\n }\n </Typography.Text>\n )}\n </>\n ) : (\n <>\n {((item.transactions?.length > 0) &&\n (impostoCharge(item) > 0\n || vendasTotais(item) > 0)) ? (\n <>\n <Typography.Text>\n <span>Vendas totais: </span>\n <strong>\n {disabled ? (\n <>\n <Typography.Text\n style={{\n fontSize: \"14px\",\n marginRight: \"12px\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </>\n ) : (\n formatCurrency(vendasTotais(item))\n )}\n </strong>\n </Typography.Text>\n {disableCurrentMonth(item) && (\n <Typography.Text>\n <span>Vendas isentas: </span>\n <strong>\n {disabled ? (\n <>\n <Typography.Text\n style={{\n fontSize: \"14px\",\n marginRight: \"12px\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </>\n ) : (\n <>\n {formatCurrency(vendasIsentas(item))}\n \n <Tooltip\n title=\"Vendas mensais de até R$ 20 mil no mercado comum são isentas de imposto de renda\"\n autoAdjustOverflow={true}\n placement=\"topRight\"\n >\n <InfoCircleOutlined />\n </Tooltip>\n </>\n )}\n </strong>\n </Typography.Text>\n )}\n <Typography.Text>\n <span>Imposto a pagar: </span>\n <span className=\"tax-value\">\n {disabled ? (\n <>\n <Typography.Text\n style={{\n fontSize: \"14px\",\n marginRight: \"12px\",\n wordSpacing: \"normal\",\n letterSpacing: \"normal\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </>\n ) : impostoCharge(item) > 0 ? (\n formatCurrency(impostoCharge(item))\n ) : (\n \"Isento\"\n )}\n </span>\n </Typography.Text>\n {impostoCharge(item) > 0 && (\n <Typography.Text>\n <span>Vencimento: </span>\n <span>\n {disabled ? (\n <>\n <Typography.Text\n style={{\n fontSize: \"14px\",\n fontWeight: \"700\",\n marginRight: \"12px\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </>\n ) : (\n vencimento\n )}\n </span>\n </Typography.Text>\n )}\n {isMobile() && showPayButton(item) && (\n <PayButton\n fullWidth\n onClick={() => handlePayButton(item)}\n title={\n thirdBusinessDayAndMonth(item).title\n }\n disabled={\n disabled || thirdBusinessDayAndMonth(item).disabled\n }\n />\n )}\n </>\n ) : (\n <Typography.Text>\n {disabled ? (\n <>\n <Col style={{ width: \"100%\" }}>\n <Typography.Text>\n <span>Vendas totais: </span>\n <strong>\n <Typography.Text\n style={{\n fontSize: \"14px\",\n marginRight: \"12px\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </strong>\n </Typography.Text>\n </Col>\n <Col style={{ width: \"100%\" }}>\n <Typography.Text>\n <span>Imposto a pagar: </span>\n <span className=\"tax-value\">\n <Typography.Text\n style={{\n fontSize: \"14px\",\n marginRight: \"12px\",\n wordSpacing: \"normal\",\n letterSpacing: \"normal\",\n }}\n >\n Atualizando...\n </Typography.Text>\n <LoadingOutlined />\n </span>\n </Typography.Text>\n </Col>\n </>\n ) : (\n <Typography.Text style={{ width: \"100%\" }}>\n {\n user?.user?.cpf === '01268936324' \n ? 'Clique em visualizar para acessar sua operações'\n : 'Não houve movimentações tributáveis neste mês'\n }\n </Typography.Text>\n )}\n </Typography.Text>\n )}\n </>\n )}\n </Space>\n }\n />\n </Skeleton>\n </List.Item>\n );\n }}\n />\n <Typography.Title level={2} className=\"subtitle-lined\">\n <span>Outras opções</span>\n </Typography.Title>\n\n <div>\n {[...itensBolsa.slice(1)]\n .filter(\n (item) =>\n !([\"insert-manual\", \"anual-report\"].includes(item.id)) || oldPositionList?.length > 0\n )\n .map((item) => (\n <>\n <CardXP\n id={item.id}\n key={item.id}\n icon={item.icon}\n link={item.link}\n className={clsx(\"xp-list-card\", {\n \"no-plan\": !hasPlan,\n \"not-free\": !hasPlan && item.id !== \"integration\",\n })}\n onClick={\n item.id === \"insert-manual\" ?\n undefined\n : item.id === \"integration\"\n ? () => handleOpenNotas()\n : ((hasPlan && !isBasic))\n ? undefined\n : () => {\n handleOpenPlanModal();\n }\n }\n >\n {((hasPlan && !isBasic) || item.id === \"integration\" || item.id === 'insert-manual') ? (\n <>{item.content}</>\n ) : (\n <Row align=\"middle\" justify=\"space-between\" gutter={[8, 8]}>\n <Col>{item.content}</Col>\n <Button\n type=\"primary\"\n className=\"btn-premium\"\n icon={<AiOutlineLock size={18} />}\n onClick={() => {\n handleOpenPlanModal();\n }}\n >\n PREMIUM\n </Button>\n </Row>\n )}\n </CardXP>\n </>\n ))}\n </div>\n <BackButton to=\"/xpinvestimentos/bolsa\" className=\"historic-bolsa\" />\n </Content>\n <BottomAdvice>\n <AttentionIconContainer>\n <BsExclamationCircle /> \n </AttentionIconContainer>\n Informamos que, para pagamento do DARF via PIX ou cartão de crédito,\n é necessário que o mesmo seja realizado até as 17h30 para processamento no mesmo dia.\n Pagamentos efetuados após esse horário serão processados no próximo dia útil,\n o que pode resultar em alterações nos valores de juros e multa.\n </BottomAdvice>\n <DrawerModal\n title=\"\"\n width={700}\n className=\"darf-modal\"\n visible={showCalcModal.visible}\n onCancel={() => {\n handleCloseCalcModal();\n if (darfBolsaRef?.current?.editedAccumulatedTax) {\n darfBolsaRef?.current?.handleDarf?.(true);\n darfBolsaRef?.current?.setEditedAccumulatedTax?.(false);\n }\n }}\n bodyStyle={{\n padding: \"0\",\n }}\n >\n <DarfBolsa\n view={showCalcModal.view}\n darfBolsaRef={darfBolsaRef}\n viewEdit={!showCalcModal.view}\n closeModal={handleCloseCalcModal}\n darf={\n hasPlan && showCalcModal.view\n ? {\n ...itemToPay,\n fullPath: itemToPay?.fullPath!,\n id: itemToPay.id ?? itemToPay._id,\n }\n : undefined\n }\n date={{\n year: showCalcModal.year,\n month: showCalcModal.month ? showCalcModal.month - 1 : 0,\n }}\n item={{\n title: \"\",\n header: true,\n sidebar: true,\n name: \"Calculadora\",\n component: \"DarfBolsa\",\n path: \"/xpinvestimentos/bolsa-darf\",\n settings: {\n integrationPath: \"/xpinvestimentos/bolsa-integration\",\n showNavigateToIntegrationButton: false,\n },\n features: [\n {\n apiUrl: \"/xpinvestimentos/transaction\",\n },\n {\n apiUrl: \"/darf\",\n buttonLabel: \"Emitir DARF\",\n },\n {\n apiUrl: \"/darf/year\",\n },\n {\n apiUrl: \"/xpinvestimentos/prejuizos\",\n },\n {\n apiUrl: \"/xpinvestimentos/irrf\",\n },\n ],\n }}\n />\n </DrawerModal>\n\n <PaymentModal\n fromDarf\n item={item}\n show={paymentModal}\n emitting={emitting}\n selectedYear={year}\n maxPixValue={maxPixPayment}\n maxCCValue={maxCreditCardPayment}\n closeDarfModal={handleCloseCalcModal}\n paymentData={{\n ...itemToPay,\n memoriaCalculo: [],\n name: user.user.name,\n year: itemToPay?.year,\n month: itemToPay?.month,\n transactions: itemToPay?.memoriaCalculo,\n impostoTotalFinal: impostoCharge(itemToPay),\n }}\n disablePixOption={(itemToPay?.impostoTotalFinal || 0) > maxPixPayment}\n disableCreditCardOption={\n (itemToPay?.impostoTotalFinal || 0) > maxCreditCardPayment\n }\n closeModal={() => {\n setPaymentModal(!paymentModal);\n }}\n onCancel={() => {\n setPaymentModal(!paymentModal);\n getHistoric();\n }}\n callDarf={() => {\n HandleTag(\"64\");\n handleDarf();\n }}\n />\n <DrawerModal\n footer={null}\n visible={showNotasCorretagemModal}\n title=\"Carregar notas de corretagem\"\n onCancel={() => {\n if (!loadingSend) {\n setShowNotasCorretagemModal(false);\n }\n }}\n >\n <Typography.Paragraph>\n <InfoCircleOutlined /> Você pode carregar as notas de corretagem para\n verificar o imposto de renda sobre operações realizadas no mercado de\n balcão\n </Typography.Paragraph>\n <UploadVelotax loading={loadingSend} {...uploadProps} />\n <Row justify=\"end\">\n <Col>\n <MuiButton\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loadingSend}\n onClick={() => sendNotas()}\n >\n Finalizar\n </MuiButton>\n </Col>\n </Row>\n <Typography.Link\n style={{\n display: \"block\",\n margin: \"32px auto\",\n textAlign: \"center\",\n textDecoration: \"underline\",\n }}\n onClick={() => {\n setShowHistoricoNotasCorretagemModal(true);\n getHistoricoNotasCorretagem({ filters: {} });\n }}\n >\n Histórico de notas\n </Typography.Link>\n </DrawerModal>\n <ModalZeroBuyPrice\n visible={modalZeroBuyPrice}\n title={'Atenção'}\n dataZeroBuyPrice={dataZeroBuyPrice}\n setIgnoreZeroBuyPrice={setIgnoreZeroBuyPrice}\n setModalZeroBuyPrice={setModalZeroBuyPrice}\n >\n </ModalZeroBuyPrice>\n <NotasHistoricoModal />\n </Container>\n );\n};\n","import { BiEdit } from \"react-icons/bi\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport {\n AiOutlineArrowDown,\n AiOutlineArrowUp,\n AiOutlineCheck,\n} from \"react-icons/ai\";\nimport {\n Col,\n Descriptions,\n Divider,\n Form,\n message,\n Row,\n Typography,\n} from \"antd\";\nimport apis from \"../../services/apis\";\nimport Button from \"../../components/Button\";\nimport Loading from \"../../components/Loading\";\nimport { isSafari, maskCnpj } from \"../../utils\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { Container, Question, QuestionContainer } from \"./styles\";\nimport {\n IdentificationData,\n identificationQuestions,\n validateIdentification,\n} from \"../../constants/identification\";\n\ninterface IdentificationProps {}\n\nexport const Identification: React.FC<IdentificationProps> = () => {\n const { user } = useAuth();\n const navigate = useNavigate();\n const { handleProviderExists,currentPage } = useBroker();\n const [form] = Form.useForm<IdentificationData>();\n const [saving, setSaving] = useState(false);\n const [loading, setLoading] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n const [currentQuestion, setCurrentQuestion] = useState(0);\n\n const getData = useCallback(() => {\n setLoading(true);\n (currentPage?.api || apis)\n .get<IdentificationData>(\"/mei\")\n .then((response) => {\n if (validateIdentification(response.data)) {\n form.setFieldsValue(response.data);\n setIsEditing(false);\n } else {\n setIsEditing(true);\n }\n })\n .catch(() => {\n setIsEditing(true);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [form,currentPage]);\n\n const handleNav = (value: 1 | -1) => {\n form\n .validateFields(\n value === 1\n ? identificationQuestions[currentQuestion].formItems.map(\n (formItem) => formItem.name ?? \"\"\n )\n : []\n )\n .then(() => {\n setCurrentQuestion((question) => {\n const newValue = question + value;\n const realValue =\n newValue >= 0 && newValue < identificationQuestions.length\n ? newValue\n : question;\n const container = document.getElementById(\n \"mei-identification-container\"\n );\n const element = document.getElementById(\n realValue < 0 ? \"question-0\" : `question-${realValue}`\n );\n const top =\n value === 1\n ? element?.offsetTop ?? 0\n : (element?.offsetTop ?? 0) - 64;\n isSafari\n ? container?.scrollTo({ top })\n : container?.scrollTo({ behavior: \"smooth\", top });\n return realValue;\n });\n })\n .catch(() => {});\n };\n\n const handleSubmit = (data: IdentificationData) => {\n setSaving(true);\n (currentPage?.api || apis)\n .post(\"/mei\", {\n ...data,\n companyCode: data.companyCode.replace(/[-./]/g, \"\"),\n email: user.user.email,\n })\n .then(() => {\n setSaving(false);\n setIsEditing(false);\n handleProviderExists(true);\n message.success(\"Dados salvos com sucesso\");\n setTimeout(() => {\n navigate(\"/mei/dasn\");\n }, 500);\n })\n .catch(() => {\n setSaving(false);\n message.error(\"Erro ao salvar dados\");\n });\n };\n\n const handleEdit = () => {\n setLoading(true);\n setTimeout(() => {\n setLoading(false);\n setIsEditing(true);\n setCurrentQuestion(0);\n }, 300);\n };\n\n useEffect(() => {\n getData();\n }, [getData]);\n\n const event = useCallback(\n function (event: KeyboardEvent) {\n if (event.key === \"Enter\") {\n event.preventDefault();\n const button = document.getElementById(\n currentQuestion < identificationQuestions.length - 1\n ? `next-button-${currentQuestion}`\n : \"submit-button\"\n );\n button?.click();\n }\n },\n [currentQuestion]\n );\n\n useEffect(() => {\n document.addEventListener(\"keydown\", event);\n return () => {\n document.removeEventListener(\"keydown\", event);\n };\n }, [event]);\n\n return loading ? (\n <Loading />\n ) : isEditing ? (\n <Form form={form} size=\"large\" onFinish={handleSubmit}>\n <Container id=\"mei-identification-container\">\n {identificationQuestions.map((question, index) => (\n <QuestionContainer id={`question-${index}`} key={question.id}>\n <Question>\n <Typography.Title level={2}>{question.title}</Typography.Title>\n {question.formItems.map(({ FormItem, name }) => (\n <FormItem\n key={name}\n tabIndex={currentQuestion === index ? 1 : -1}\n />\n ))}\n <Divider />\n <Row justify={index === 0 ? \"end\" : \"space-between\"}>\n {index > 0 && (\n <Col>\n <Button\n size=\"large\"\n onClick={() => handleNav(-1)}\n icon={<AiOutlineArrowUp size={18} />}\n tabIndex={currentQuestion === index ? 2 : -1}\n >\n Anterior\n </Button>\n </Col>\n )}\n {index < identificationQuestions.length - 1 ? (\n <Col>\n <Button\n size=\"large\"\n type=\"primary\"\n id={`next-button-${index}`}\n onClick={() => handleNav(1)}\n icon={<AiOutlineArrowDown size={18} />}\n tabIndex={currentQuestion === index ? 3 : -1}\n >\n Próximo\n </Button>\n </Col>\n ) : (\n <Col>\n <Button\n size=\"large\"\n type=\"primary\"\n htmlType=\"submit\"\n loading={saving}\n id=\"submit-button\"\n icon={<AiOutlineCheck size={18} />}\n tabIndex={currentQuestion === index ? 3 : -1}\n >\n Finalizar\n </Button>\n </Col>\n )}\n </Row>\n </Question>\n </QuestionContainer>\n ))}\n </Container>\n </Form>\n ) : (\n <Container>\n <QuestionContainer>\n <Question>\n <Row justify=\"space-between\" gutter={[16, 0]}>\n <Col>\n <Typography.Title level={2}>\n Identificação do MEI\n </Typography.Title>\n </Col>\n <Col>\n <Button\n type=\"primary\"\n onClick={handleEdit}\n icon={<BiEdit size={18} />}\n >\n Editar\n </Button>\n </Col>\n </Row>\n <br />\n <Descriptions bordered layout=\"horizontal\">\n <Descriptions.Item label=\"CNPJ\" span={24}>\n {maskCnpj(form.getFieldValue(\"companyCode\"))}\n </Descriptions.Item>\n <Descriptions.Item label=\"Atividade Principal\" span={24}>\n {form.getFieldValue(\"mainActivity\")}\n </Descriptions.Item>\n </Descriptions>\n </Question>\n </QuestionContainer>\n </Container>\n );\n};\n","import { Select, Typography } from \"antd\";\nimport { useLocation } from \"react-router-dom\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { DividendosModal } from \"./modal\";\nimport { monthList } from \"./dataSourceList\";\nimport backendBolsa from \"../../services/apiBolsa\";\nimport { BolsaOperations, ModalStyled } from \"./styles\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { DividendosTabs } from \"../../constants/dividendos\";\n\nexport const DividendosBolsa = () => {\n const { state } = useLocation();\n const { currentBroker } = useBroker();\n const today = new Date();\n const currentYear = today.getFullYear();\n const initialYear = state?.year ?? currentYear;\n window.history.replaceState({}, document.title);\n\n const [data, setData] = useState<any>([]);\n const [item, setItem] = useState<any>({});\n const [index, setIndex] = useState<any>({});\n const [year, setYear] = useState(initialYear);\n const [loading, setLoading] = useState(false);\n const [showModal, setShowModal] = useState(false);\n\n const yearOptions = Array.from(\n Array(new Date().getFullYear() - currentBroker.initialYear + 1)\n )\n .map((y, i) => ({\n value: currentBroker.initialYear + i,\n label: `${currentBroker.initialYear + i}`,\n }))\n .reverse();\n\n const getHistoric = useCallback(() => {\n setLoading(true);\n backendBolsa\n .get(`/dividendos?year=${year}`)\n .then(async ({ data }) => setData(data))\n .finally(() => setLoading(false));\n // eslint-disable-next-line\n }, [year]);\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n useEffect(() => {\n getHistoric();\n }, [getHistoric, year]);\n\n return (\n <div className=\"velotax-container\">\n <Typography.Title level={1} className=\"page-title\">\n Dividendos recebidos na bolsa de valores\n </Typography.Title>\n <div className=\"velotax-content\">\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n getPopupContainer={(target) => target.parentElement}\n />\n <BolsaOperations>\n <div className=\"sub-header\">\n <span className=\"show dividendos-header\">Mês</span>\n <span className=\"show dividendos-header\">Rendimento Bruto</span>\n <span className=\"show dividendos-header\"></span>\n </div>\n {monthList.map((item, index: number) => {\n return DividendosTabs(\n item,\n index,\n data,\n loading,\n setShowModal,\n setItem,\n setIndex,\n true\n ).map((container: any, rowIndex: any) => (\n <div key={rowIndex} className={container.class}>\n {container.tabs.map((item: any, colIndex: any) => (\n <span key={colIndex} className=\"show\">\n {item.content}\n </span>\n ))}\n </div>\n ));\n })}\n </BolsaOperations>\n </div>\n <BackButton to=\"/xpinvestimentos/bolsa\" className=\"darf-bolsa\" />\n <br />\n <br />\n <ModalStyled\n closable\n width={660}\n footer={null}\n destroyOnClose\n visible={showModal}\n onCancel={() => setShowModal(false)}\n title={`${monthList[index]?.monthName ?? \"\"} de ${year}`}\n >\n <DividendosModal item={item} year={year} />\n </ModalStyled>\n </div>\n );\n};\n","import { useEffect } from \"react\";\nimport { Typography } from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\n// import { NotasCorretagem } from \"./NotasCorretagem\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { B3IntegrationButtons } from \"./B3IntegrationButtons\";\nimport { useB3Integration } from \"../../contexts/B3IntegrationContext\";\n\ninterface IntegrationProps {\n item: Page;\n}\n\nexport const IntegrationBolsa: React.FC<IntegrationProps> = () => {\n const { integration } = useBroker();\n const { interval, handleIntegrate } = useB3Integration();\n const { user, b3Authorized, cameFromRegister, setCameFromRegister } =\n useAuth();\n\n useEffect(() => {\n if (\n user.user &&\n !b3Authorized &&\n !interval.current &&\n cameFromRegister.bolsa &&\n integration.key !== \"unset\"\n ) {\n setCameFromRegister((data) => ({ ...data, bolsa: false }));\n handleIntegrate();\n }\n }, [\n interval,\n user.user,\n b3Authorized,\n handleIntegrate,\n integration.key,\n setCameFromRegister,\n cameFromRegister.bolsa,\n ]);\n\n return (\n <Container>\n <Typography.Title level={1} className=\"page-title\">\n {b3Authorized\n ? \"Conectado com sua conta na B3\"\n : \"Conecte com sua conta na B3\"}\n </Typography.Title>\n <Content>\n <Typography.Paragraph className=\"destak\">\n Seus impostos são calculados automaticamente após a conexão\n </Typography.Paragraph>\n <B3IntegrationButtons showIntegrationButton={true} />\n </Content>\n {/* <NotasCorretagem /> */}\n <div className=\"juridic-messages-container max-width\">\n {/* <div className=\"message\">\n <p>\n (1) A Receita Federal admite a dedução dos custos de corretagem na\n apuração do ganho lÃquido em operações de renda variável.\n Entretanto, não há obrigatoriedade do usufruto do benefÃcio da\n dedução por parte dos investidores (Instrução Normativa RFB nº\n 1.585, de 31 de agosto de 2015, art. 56, § 3º). As informações\n advindas somente da integração com a B3 não consideram o benefÃcio\n da dedução dos custos de corretagem da XP, incluindo somente as\n tarifas de liquidação, registro, termo/opções e emolumentos da B3.\n Caso deseje descontar os seus custos de corretagem dos ganhos\n tributáveis, você pode adicionar manualmente as taxas de corretagem\n em cada operação no campo “Taxas†ou carregar suas notas de\n corretagem.\n </p>\n </div> */}\n <BackButton to=\"/xpinvestimentos/bolsa\" className=\"integration-bolsa\" />\n </div>\n </Container>\n );\n};\n","import { Typography } from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport { NotasCorretagem } from \"./NotasCorretagem\";\nimport { useB3Integration } from \"../../contexts/B3IntegrationContext\";\nimport { NotasHistoricoModal } from \"../IntegrationBolsa/NotasHistoricoModal\";\n\ninterface IntegrationCryptoProps {}\n\nexport const IntegrationCrypto: React.FC<IntegrationCryptoProps> = () => {\n const {\n notas: {\n setShowHistoricoNotasCorretagemModal,\n getHistoricoNotasCorretagem,\n },\n } = useB3Integration();\n return (\n <Container className=\"velotax-container\">\n <Typography.Title level={1} className=\"page-title\">\n Carregar notas de corretagem\n </Typography.Title>\n <Content className=\"velotax-content\">\n <NotasCorretagem />\n </Content>\n <Typography.Link\n style={{\n display: \"block\",\n margin: \"32px auto\",\n textAlign: \"center\",\n textDecoration: \"underline\",\n color: \"var(--ant-primary-color)\",\n }}\n onClick={() => {\n setShowHistoricoNotasCorretagemModal(true);\n getHistoricoNotasCorretagem({ crypto: true, filters: {} });\n }}\n >\n Histórico de notas\n </Typography.Link>\n </Container>\n );\n};\n","import { Select, Typography } from \"antd\";\nimport { useLocation } from \"react-router-dom\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { formatDate } from \"../../utils\";\nimport { monthList } from \"./dataSourceList\";\nimport { ModalStyled } from \"../DividendosBolsa/styles\";\nimport backendExterior from \"../../services/apiExterior\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { BackButton } from \"../../components/BackButton\";\nimport { DividendosTabs } from \"../../constants/dividendos\";\nimport { DividendosModal } from \"../../components/DividendosModal/index\";\nimport { Container, Content, BolsaOperations, FlexDiv } from \"./styles\";\n\nexport const DividendosExterior = () => {\n const { state } = useLocation();\n const today = new Date();\n const currentYear = today.getFullYear();\n const initialYear = state?.year ?? currentYear;\n window.history.replaceState({}, document.title);\n\n const { currentBroker } = useBroker();\n\n const [data, setData] = useState<any>([]);\n const [loading, setLoading] = useState(false);\n const [item, setItem] = useState<any>({});\n const [index, setIndex] = useState<any>({});\n const [showModal, setShowModal] = useState(false);\n const [year, setYear] = useState(initialYear);\n const [quotes, setQuotes] = useState([]);\n\n const yearOptions = Array.from(\n Array(new Date().getFullYear() - currentBroker.initialYear + 1)\n )\n .map((y, i) => ({\n value: currentBroker.initialYear + i,\n label: `${currentBroker.initialYear + i}`,\n }))\n .reverse();\n\n const getTotal = useCallback((sortedData: any[]) => {\n const totalData = [];\n for (const month of sortedData) {\n let acumulatorImpostoPagoExterior = 0;\n let acumulatorValorRendimento = 0;\n const orders: any[] = [];\n for (const el of month.orders ?? []) {\n if (checkType(el) === \"valorRendimento\") {\n orders.push({\n ...el,\n valorRendimento: el.value,\n valorRendimentoReal: el.value * month.dolarQuote ?? 0,\n date: formatDate(el.date),\n });\n } else {\n orders.push({\n ...el,\n impostoPagoExterior: el.value,\n impostoPagoExteriorReal: el.value * month.dolarQuote ?? 0,\n date: formatDate(el.date),\n });\n }\n }\n for (const item of orders) {\n acumulatorImpostoPagoExterior += item.impostoPagoExterior ?? 0;\n acumulatorValorRendimento += item.valorRendimento ?? 0;\n }\n\n totalData.push({\n ...month,\n impostoPagoExterior: acumulatorImpostoPagoExterior ?? 0,\n valorRendimento: acumulatorValorRendimento ?? 0,\n });\n }\n return totalData;\n }, []);\n\n const getHistoric = useCallback(async () => {\n setLoading(true);\n try {\n const { data } = await backendExterior.get(`/dividendos?year=${year}`);\n const res = await backendExterior.get(\"/xp/get-cotacoes\");\n const newData = getTotal(data);\n setQuotes(res.data.values);\n setData(newData);\n } catch (err) {\n } finally {\n setLoading(false);\n }\n }, [year, getTotal]);\n\n const onChangeYear = (value: string) => {\n setYear(parseInt(value));\n };\n\n useEffect(() => {\n getHistoric();\n }, [getHistoric, year]);\n\n const checkType = (el: any) => {\n if (el.type === \"DIVIDEND\" && el.operation === \"BUY\") {\n return \"valorRendimento\";\n } else return \"impostoPagoExterior\";\n };\n\n return (\n <>\n <Container>\n <Typography.Title level={1}>\n Dividendos recebidos no exterior\n </Typography.Title>\n <Content>\n <Typography.Paragraph>Selecione o ano:</Typography.Paragraph>\n <Select\n size=\"large\"\n options={yearOptions}\n value={year.toString()}\n onChange={onChangeYear}\n placeholder=\"Selecione o ano\"\n style={{ minWidth: \"150px\" }}\n getPopupContainer={(trigger) => trigger.parentElement}\n />\n <BolsaOperations>\n <div className=\"sub-header\">\n <span className=\"show dividendos-header\">Mês</span>\n <span className=\"show dividendos-header\">Rendimento Bruto</span>\n <span className=\"show dividendos-header\">\n Imposto Retido no Exterior\n </span>\n <span className=\"show dividendos-header\"></span>\n </div>\n {monthList.map((item, index: number) => {\n return DividendosTabs(\n item,\n index,\n data,\n loading,\n setShowModal,\n setItem,\n setIndex\n ).map((container: any, rowIndex: any) => (\n <div key={rowIndex} className={container.class}>\n {container.tabs.map((item: any, colIndex: any) => (\n <span key={colIndex} className=\"show\">\n {item.content}\n </span>\n ))}\n </div>\n ));\n })}\n </BolsaOperations>\n </Content>\n <ModalStyled\n closable\n width={660}\n footer={null}\n destroyOnClose\n visible={showModal}\n onCancel={() => setShowModal(false)}\n title={`${monthList[index]?.monthName ?? \"\"} de ${year}`}\n >\n <DividendosModal item={item} year={year} quotes={quotes} />\n </ModalStyled>\n <Content className=\"notas\">\n <FlexDiv>\n <Typography.Text>\n <InfoCircleOutlined /> A conversão de Dólar (US$) para Real (R$)\n utiliza a cotação do dólar PTAX de Compra fixada pelo Banco\n Central do Brasil para o último dia útil da primeira quinzena do\n mês anterior ao mês de recebimento do rendimento no exterior (art.\n 65 da IN RFB nº 1.500 de 2014)\n </Typography.Text>\n <br />\n </FlexDiv>\n </Content>\n <BackButton\n to=\"/xpinvestimentos/exterior\"\n className=\"dividendos-exterior\"\n />\n </Container>\n </>\n );\n};\n","import { Typography } from \"antd\";\nimport { Container, Content } from \"./styles\";\nimport ExteriorIntegration from \"../../components/IntegrationComponents/ExteriorIntegration\";\n\ninterface IntegrationExteriorProps {}\n\nexport const IntegrationExterior: React.FC<IntegrationExteriorProps> = () => {\n return (\n <Container>\n <Content>\n <Typography.Title level={1}>\n Integrações com corretoras de ativos no exterior\n </Typography.Title>\n <ExteriorIntegration />\n </Content>\n </Container>\n );\n};\n","import moment from \"moment\";\nimport { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { useNavigate } from \"react-router-dom\";\nimport { DrawerModal } from \"../../components/DrawerModal\";\nimport {\n Button as AntButton,\n Col,\n List,\n Row,\n Skeleton,\n Tooltip,\n Typography,\n} from \"antd\";\nimport {\n AiOutlineCheck,\n AiOutlineDelete,\n AiOutlineInfoCircle,\n} from \"react-icons/ai\";\nimport { Button as MuiButton } from \"@mui/material\";\nimport { formatCurrency } from \"../../utils\";\nimport { Container, Content } from \"./styles\";\nimport { FormModal } from \"../../components/FormModal\";\nimport { TransferenciaCustodiaRows } from \"./formItems\";\nimport DeleteConfirmationModal from \"../../components/DeleteConfirmationModal\";\nimport { useTransferenciaCustodia } from \"../../contexts/TransferenciaCustodiaContext\";\nimport { useNotasCorretagem } from \"../IntegrationBolsa/NotasCorretagem/useNotasCorretagem\";\nimport { useState } from \"react\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport UploadVelotax from \"../../components/UploadVelotax\";\n\ninterface TransferenciaCustodiaProps {}\n\nexport const TransferenciaCustodia: React.FC<\n TransferenciaCustodiaProps\n> = () => {\n const [showNotasCorretagemModal, setShowNotasCorretagemModal] = useState(false);\n const [loadingSend, setLoadingSend] = useState(false);\n const navigate = useNavigate();\n const {\n add,\n edit,\n remove,\n ativo,\n ativos,\n loading,\n handleAdd,\n handleEdit,\n handleRemove,\n showFormModal,\n showDeleteModal,\n closeFormModal,\n closeDeleteModal,\n saveAtivos,\n isInvalidItem,\n } = useTransferenciaCustodia();\n\n const { sendNotasCustodyTransfer, uploadProps } = useNotasCorretagem();\n\n\n return (\n <Container>\n <Typography.Title level={1}>Transferência de custódia</Typography.Title>\n <Typography.Paragraph>\n Insira manualmente as informações do seu histórico de operação para os\n ativos em que foi realizada a transferência de custódia. A inserção\n manual é necessária pois não possuÃmos acesso à s informações do seu\n histórico transacionado em outra corretora.\n </Typography.Paragraph>\n <Content>\n <div className=\"container-buttons\">\n <Button\n className=\"add-button\"\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => setShowNotasCorretagemModal(true)}\n >\n Importar nota de corretagem\n </Button>\n <Button\n className=\"add-button\"\n variant=\"contained\"\n color=\"secondary\"\n onClick={handleAdd}\n >\n Adicionar ativo\n </Button>\n </div>\n\n <List\n dataSource={ativos}\n loading={loading.get}\n itemLayout=\"horizontal\"\n renderItem={(item, index) => (\n <List.Item\n className={isInvalidItem(item) ? \"error-border\" : \"\"}\n actions={[\n ...(isInvalidItem(item)\n ? [\n <Tooltip\n title={`Preencha ${\n !item.dataCompra ? \"a data\" : \"o valor\"\n } de compra!`}\n >\n <AntButton\n type=\"text\"\n icon={\n <AiOutlineInfoCircle\n className=\"alert-icon\"\n size={20}\n />\n }\n />\n </Tooltip>,\n ]\n : []),\n <AntButton\n type=\"text\"\n disabled={loading.put}\n icon={<FaRegEdit size={20} />}\n onClick={() => handleEdit(item, index)}\n />,\n <AntButton\n type=\"text\"\n disabled={loading.delete}\n icon={<AiOutlineDelete size={20} />}\n onClick={() => handleRemove(item, index)}\n />,\n ]}\n >\n <Skeleton active title={false} loading={loading.get}>\n <List.Item.Meta\n title={<div>{item.codigo}</div>}\n description={\n <>\n <div className=\"list-description\">\n <div>\n Quantidade: <strong>{item.quantidade}</strong>\n </div>\n {item.dataCompra && (\n <div>\n Data de compra:{\" \"}\n <strong>\n {item.dataCompra.includes(\"/\")\n ? item.dataCompra\n : moment\n .utc(item.dataCompra)\n ?.format(\"DD/MM/YYYY\")}\n </strong>\n </div>\n )}\n <div>\n Valor de compra (USD, Origem BRA):{\" \"}\n <strong>\n {formatCurrency(item.valorCompraUSDOrigemBRA ?? 0, \"USD\")}\n </strong>\n </div>\n <div>\n Valor de compra (USD, Origem EUA):{\" \"}\n <strong>\n {formatCurrency(item.valorCompraUSDOrigemEUA ?? 0, \"USD\")}\n </strong>\n </div>\n </div>\n </>\n }\n />\n </Skeleton>\n </List.Item>\n )}\n />\n <Typography style={{ marginTop: \"32px\", textAlign: \"right\" }}>\n Lembre-se de clicar em finalizar para salvar seus dados\n </Typography>\n <Row\n align=\"middle\"\n gutter={[16, 16]}\n justify=\"space-between\"\n style={{\n marginTop: \"1.5rem\",\n }}\n >\n <Col>\n <Button\n size=\"large\"\n variant=\"text\"\n color=\"secondary\"\n className=\"back-button\"\n onClick={() => {\n navigate(\"/xpinvestimentos/exterior\");\n }}\n >\n Voltar\n </Button>\n </Col>\n <Col>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"final-button\"\n onClick={saveAtivos}\n endIcon={<AiOutlineCheck size={18} />}\n >\n Finalizar\n </Button>\n </Col>\n </Row>\n <FormModal\n add={(at: any) => add({ ...at, orderId: ativo?.orderId })}\n edit={(at: any) => edit({ ...at, orderId: ativo?.orderId })}\n itemToEdit={ativo}\n onCancel={closeFormModal}\n visibility={showFormModal}\n rows={TransferenciaCustodiaRows(!!ativo?.id)}\n title={ativo ? \"Editar ativo\" : \"Adicionar ativo\"}\n />\n <DeleteConfirmationModal\n title=\"Remover ativo\"\n onCancel={closeDeleteModal}\n visibility={showDeleteModal}\n setVisibility={() => closeDeleteModal()}\n onOk={() => Promise.resolve(remove(ativo!))}\n body=\"Você realmente quer deletar esse ativo?\"\n />\n <DrawerModal\n footer={null}\n visible={showNotasCorretagemModal}\n title=\"Carregar notas de corretagem\"\n onCancel={() => {\n if (!loadingSend) {\n setShowNotasCorretagemModal(false);\n }\n }}\n >\n <Typography.Paragraph>\n <InfoCircleOutlined /> Você pode carregar as notas de corretagem para trazer automaticamente suas transferencias de custódia\n </Typography.Paragraph>\n <UploadVelotax loading={loadingSend} {...uploadProps} />\n <Row justify=\"end\">\n <Col>\n <MuiButton\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n disabled={loadingSend}\n onClick={() => sendNotasCustodyTransfer(setLoadingSend, setShowNotasCorretagemModal)}\n >\n Finalizar\n </MuiButton>\n </Col>\n </Row>\n </DrawerModal>\n </Content>\n </Container>\n );\n};\n","import { Typography } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport XP_logo from \"../../assets/xp.svg\";\nimport { Container, Content } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\nimport HandleTag from \"../../services/handleTag\";\nimport apiExterior from \"../../services/apiExterior\";\nimport { BackButton } from \"../../components/BackButton\";\nimport IntegrationButton from \"../../components/IntegrationComponents/IntegrationButton\";\n\ninterface IntegrationExteriorProps {\n item: Page;\n}\n\nexport const IntegrationExteriorXP: React.FC<IntegrationExteriorProps> = () => {\n const [loading, setLoading] = useState(false);\n const [integrated, setIntegrated] = useState(false);\n\n const integrate = (data = {}, authorized = false) => {\n HandleTag(\"50\");\n window.open(\"https://www.youtube.com/watch?v=uXIDDlJRRUk\", \"_blank\");\n };\n\n useEffect(() => {\n setLoading(true);\n apiExterior\n .get(\"/xp/integration-status\")\n .then((response) => {\n setIntegrated(response.data?.isIntegrated ?? false);\n })\n .finally(() => {\n setLoading(false);\n });\n }, []);\n\n return (\n <Container>\n <Typography.Title level={1}>Faça sua integração</Typography.Title>\n <Content>\n <IntegrationButton\n logo={XP_logo}\n imgHeight={true}\n loading={loading}\n handleClick={integrate}\n integrado={integrated}\n alt=\"Integrar com a XP International\"\n setIntegrationModalVisible={() => {}}\n />\n <br />\n <Typography.Paragraph>\n Caso você ainda não tenha realizado a conexão com a sua conta na XP\n International,{\" \"}\n <a\n target=\"__blank\"\n href=\"https://www.youtube.com/watch?v=uXIDDlJRRUk\"\n >\n clique aqui\n </a>{\" \"}\n e siga o passo a passo.\n </Typography.Paragraph>\n <BackButton\n to=\"/xpinvestimentos/exterior\"\n className=\"integration-exterior\"\n />\n </Content>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n &.velotax-container {\n .velotax-content {\n width: 1032px;\n h1.page-title {\n font-size: 28px;\n margin-bottom: 1rem;\n margin-left: 0;\n :after {\n /* display: none; */\n }\n }\n .subtitle {\n font-size: 16px;\n color: var(--velotax-font-color);\n }\n .trustpilot-trustbox-widget {\n margin: 32px 0 32px -16px;\n width: calc(100% + 32px);\n }\n .selos {\n display: flex;\n /* margin: 0 0 48px; */\n .selo {\n display: flex;\n padding: 0 24px;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n width: calc(100% / 3);\n .ant-typography {\n display: block;\n margin-top: 8px;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n .anticon {\n margin-left: 5px;\n vertical-align: -0.2em;\n }\n strong {\n display: block;\n font-weight: 700;\n color: white;\n }\n }\n &.trustpilot {\n .excelente {\n display: block;\n font-size: 18px;\n font-weight: 700;\n margin: 0 0 8px;\n }\n .avaliacoes {\n display: flex;\n height: 24px;\n font-size: 16px;\n margin: 16px 0 10px;\n align-items: center;\n justify-content: center;\n fill: white;\n svg {\n margin: 0 0 2px 0;\n }\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.velotax-container {\n .velotax-content {\n width: 100%;\n .selos {\n flex-direction: column;\n .selo {\n width: 100%;\n padding: 12px 24px;\n }\n }\n }\n }\n }\n`;\n\nexport const PlanosContainer = styled.div`\n display: flex;\n justify-content: center;\n .plan {\n padding: 32px;\n overflow: hidden;\n margin-left: 8px;\n position: relative;\n border-radius: 8px;\n width: calc((100% - 16px) / 3);\n border: 2px solid var(--light-gray);\n background-color: white;\n :first-of-type {\n margin-left: 0;\n }\n .plan-name {\n font-size: 20px;\n font-weight: 700;\n line-height: 28px;\n text-align: center;\n margin-bottom: 24px;\n color: var(--velotax-font-color-dark);\n }\n .plan-price {\n text-align: center;\n position: relative;\n font-size: 24px;\n font-weight: 700;\n line-height: 20px;\n margin-bottom: 4px;\n color: var(--velotax-font-color-dark);\n .plan-price-main {\n font-size: 48px;\n font-weight: 700;\n line-height: 20px;\n letter-spacing: -1.92px;\n }\n\n .plus {\n margin-right: 4px;\n position: absolute;\n left: 2.5rem;\n bottom: 0;\n }\n }\n .plan-price-desc {\n display: block;\n font-size: 12px;\n font-weight: 400;\n line-height: 20px;\n text-align: center;\n margin-bottom: 2rem;\n color: var(--velotax-font-color-dark);\n }\n .plan-for {\n width: 128px;\n display: block;\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n text-align: center;\n margin: 16px auto 24px;\n color: var(--velotax-font-color-ghost);\n }\n .plan-includes {\n display: block;\n margin: 24px 0 0;\n font-size: 12px;\n font-weight: 600;\n line-height: 16px;\n color: var(--velotax-font-color-dark);\n }\n .plan-benefits {\n .plan-benefit {\n display: flex;\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n margin-top: 2px;\n color: var(--velotax-font-color-ghost);\n svg {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n margin-right: 4px;\n }\n svg.check {\n fill: var(--ant-success-color);\n }\n .info {\n width: 12px;\n height: 12px;\n margin: 2px 0 0 4px;\n color: var(--velotax-font-color-dark);\n cursor: pointer;\n svg {\n width: 12px;\n height: 12px;\n min-width: 12px;\n min-height: 12px;\n margin-right: 0;\n }\n }\n .ant-tooltip-inner {\n background-color: rgba(0, 0, 0, 0.9);\n }\n }\n }\n .plan-popular {\n top: 0;\n right: 0;\n width: 150px;\n height: 20px;\n display: flex;\n font-size: 10px;\n font-weight: 700;\n line-height: 16px;\n position: absolute;\n color: var(--white);\n align-items: center;\n justify-content: center;\n text-transform: uppercase;\n background-color: var(--ant-primary-color);\n transform: rotateZ(45deg) translateX(45px) translateY(-12px);\n }\n }\n @media only screen and (max-device-width: 812px) {\n flex-direction: column;\n .plan {\n width: 100%;\n margin: 0 0 8px;\n }\n }\n`;\nexport const LogoContainer = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n padding: 40px 0;\n margin: 40px 0;\n border-top: 1px solid #343434;\n border-bottom: 1px solid #343434;\n\n .right-border {\n border-right: 1px solid #343434;\n }\n\n .left-border {\n border-left: 1px solid #343434;\n }\n\n .tooltip {\n position: absolute;\n right: 43px;\n top: 119px\n }\n\n @media (max-width: 813px) {\n border-top: none;\n border-bottom: none;\n\n .svg-container {\n position: relative;\n }\n\n .tooltip {\n top: 80px;\n right: 8px;\n }\n\n .right-border {\n border-right: none;\n }\n\n .left-border {\n border-left: none;\n }\n }\n`;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M74.7411 52.7731C74.0101 52.21 73.0831 51.9611 72.1654 52.0825L67.9532 52.6393C66.5627 52.8228 65.2188 52.0483 64.6838 50.751L63.0008 46.6817C62.6866 45.9196 62.0831 45.316 61.3209 45.0017L57.2519 43.3187C55.9547 42.7805 55.1801 41.4397 55.3636 40.049L55.9391 35.6749C56.048 34.8598 55.8271 34.0354 55.3263 33.3821L52.6416 29.8853C51.7861 28.7747 51.7861 27.2253 52.6416 26.1116L55.3263 22.6148C55.824 21.9646 56.0449 21.1402 55.9391 20.3251L55.3636 15.951C55.1801 14.5604 55.9547 13.2195 57.2519 12.6813L61.3209 11.0014C62.0799 10.684 62.6835 10.0805 63.0008 9.32141L64.6806 5.25218C65.2188 3.9549 66.5595 3.18024 67.9501 3.36379L72.3239 3.93933C73.1391 4.04512 73.9634 3.82423 74.6167 3.32646L78.1133 0.641649C79.2238 -0.213883 80.7731 -0.213883 81.8868 0.641649L85.3834 3.32646C86.0336 3.82423 86.8579 4.04512 87.673 3.93312L92.0468 3.35757C93.4373 3.17402 94.7812 3.94867 95.3163 5.24597L96.9993 9.3152C97.3135 10.0774 97.917 10.6809 98.6792 10.9951L102.748 12.6782C104.045 13.2165 104.82 14.5573 104.636 15.9479L104.061 20.3219C103.952 21.1371 104.173 21.9615 104.674 22.6148L107.358 26.1116C108.214 27.2223 108.214 28.7715 107.358 29.8853L104.773 33.2546C104.21 33.9856 103.961 34.9128 104.083 35.8305L104.636 40.0459C104.82 41.4365 104.045 42.7805 102.748 43.3156L98.6792 44.9987C97.917 45.3129 97.3135 45.9164 96.9993 46.6786L95.3163 50.7478C94.7781 52.0451 93.4373 52.8198 92.0468 52.6362L87.673 52.0607C86.8579 51.9518 86.0336 52.1727 85.3802 52.6735L81.8836 55.3584C80.7731 56.2139 79.2238 56.2139 78.1101 55.3584L74.7411 52.7731ZM101 28C101 39.598 91.598 49 80 49C68.402 49 59 39.598 59 28C59 16.402 68.402 7 80 7C91.598 7 101 16.402 101 28Z\",\n fill: \"white\"\n});\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M98 28C98 37.9411 89.9411 46 80 46C70.0589 46 62 37.9411 62 28C62 18.0589 70.0589 10 80 10C89.9411 10 98 18.0589 98 28ZM82.6354 21.7735L74.3639 39H78.7189L87 21.6813V18H73V21.63H82.6354V21.7735Z\",\n fill: \"white\"\n});\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.5142 70.0938C31.4545 69.8864 31.3707 69.7031 31.2628 69.544C31.1548 69.3821 31.0227 69.2457 30.8665 69.1349C30.7131 69.0213 30.5369 68.9347 30.3381 68.875C30.142 68.8153 29.9247 68.7855 29.6861 68.7855C29.2401 68.7855 28.848 68.8963 28.5099 69.1179C28.1747 69.3395 27.9134 69.6619 27.7259 70.0852C27.5384 70.5057 27.4446 71.0199 27.4446 71.6278C27.4446 72.2358 27.5369 72.7528 27.7216 73.179C27.9063 73.6051 28.1676 73.9304 28.5057 74.1548C28.8438 74.3764 29.2429 74.4872 29.7031 74.4872C30.1207 74.4872 30.4773 74.4134 30.7727 74.2656C31.071 74.1151 31.2983 73.9034 31.4545 73.6307C31.6136 73.358 31.6932 73.0355 31.6932 72.6634L32.0682 72.7188H29.8182V71.3295H33.4702V72.429C33.4702 73.196 33.3082 73.8551 32.9844 74.4062C32.6605 74.9545 32.2145 75.3778 31.6463 75.6761C31.0781 75.9716 30.4276 76.1193 29.6946 76.1193C28.8764 76.1193 28.1577 75.9389 27.5384 75.5781C26.919 75.2145 26.4361 74.6989 26.0895 74.0312C25.7457 73.3608 25.5739 72.5653 25.5739 71.6449C25.5739 70.9375 25.6761 70.3068 25.8807 69.7528C26.0881 69.196 26.3778 68.7244 26.75 68.3381C27.1222 67.9517 27.5554 67.6577 28.0497 67.456C28.544 67.2543 29.0795 67.1534 29.6562 67.1534C30.1506 67.1534 30.6108 67.2259 31.0369 67.3707C31.4631 67.5128 31.8409 67.7145 32.1705 67.9759C32.5028 68.2372 32.7741 68.5483 32.9844 68.9091C33.1946 69.267 33.3295 69.6619 33.3892 70.0938H31.5142ZM36.6886 76.1236C36.271 76.1236 35.8988 76.0511 35.5721 75.9062C35.2454 75.7585 34.9869 75.5412 34.7965 75.2543C34.609 74.9645 34.5153 74.6037 34.5153 74.1719C34.5153 73.8082 34.582 73.5028 34.7156 73.2557C34.8491 73.0085 35.0309 72.8097 35.261 72.6591C35.4911 72.5085 35.7525 72.3949 36.0451 72.3182C36.3406 72.2415 36.6502 72.1875 36.9741 72.1562C37.3548 72.1165 37.6616 72.0795 37.8945 72.0455C38.1275 72.0085 38.2965 71.9545 38.4016 71.8835C38.5067 71.8125 38.5593 71.7074 38.5593 71.5682V71.5426C38.5593 71.2727 38.4741 71.0639 38.3036 70.9162C38.136 70.7685 37.8974 70.6946 37.5877 70.6946C37.261 70.6946 37.0011 70.767 36.8079 70.9119C36.6147 71.054 36.4869 71.233 36.4244 71.4489L34.7454 71.3125C34.8306 70.9148 34.9982 70.571 35.2482 70.2812C35.4982 69.9886 35.8207 69.7642 36.2156 69.608C36.6133 69.4489 37.0735 69.3693 37.5962 69.3693C37.9599 69.3693 38.3079 69.4119 38.6403 69.4972C38.9755 69.5824 39.2724 69.7145 39.5309 69.8935C39.7923 70.0724 39.9982 70.3026 40.1488 70.5838C40.2994 70.8622 40.3746 71.196 40.3746 71.5852V76H38.6531V75.0923H38.6019C38.4968 75.2969 38.3562 75.4773 38.18 75.6335C38.0039 75.7869 37.7923 75.9077 37.5451 75.9957C37.2979 76.081 37.0124 76.1236 36.6886 76.1236ZM37.2085 74.8707C37.4755 74.8707 37.7113 74.8182 37.9158 74.7131C38.1204 74.6051 38.2809 74.4602 38.3974 74.2784C38.5138 74.0966 38.5721 73.8906 38.5721 73.6605V72.9659C38.5153 73.0028 38.4371 73.0369 38.3377 73.0682C38.2411 73.0966 38.1317 73.1236 38.0096 73.1491C37.8874 73.1719 37.7653 73.1932 37.6431 73.2131C37.521 73.2301 37.4102 73.2457 37.3107 73.2599C37.0977 73.2912 36.9116 73.3409 36.7525 73.4091C36.5934 73.4773 36.4698 73.5696 36.3817 73.6861C36.2937 73.7997 36.2496 73.9418 36.2496 74.1122C36.2496 74.3594 36.3391 74.5483 36.5181 74.679C36.6999 74.8068 36.93 74.8707 37.2085 74.8707ZM41.783 76V69.4545H43.543V70.5966H43.6112C43.7305 70.1903 43.9308 69.8835 44.212 69.6761C44.4933 69.4659 44.8171 69.3608 45.1836 69.3608C45.2745 69.3608 45.3725 69.3665 45.4776 69.3778C45.5827 69.3892 45.6751 69.4048 45.7546 69.4247V71.0355C45.6694 71.0099 45.5515 70.9872 45.4009 70.9673C45.2504 70.9474 45.1126 70.9375 44.9876 70.9375C44.7205 70.9375 44.4819 70.9957 44.2717 71.1122C44.0643 71.2259 43.8995 71.3849 43.7773 71.5895C43.658 71.794 43.5984 72.0298 43.5984 72.2969V76H41.783ZM48.3722 76.1236C47.9545 76.1236 47.5824 76.0511 47.2557 75.9062C46.929 75.7585 46.6705 75.5412 46.4801 75.2543C46.2926 74.9645 46.1989 74.6037 46.1989 74.1719C46.1989 73.8082 46.2656 73.5028 46.3991 73.2557C46.5327 73.0085 46.7145 72.8097 46.9446 72.6591C47.1747 72.5085 47.4361 72.3949 47.7287 72.3182C48.0241 72.2415 48.3338 72.1875 48.6577 72.1562C49.0384 72.1165 49.3452 72.0795 49.5781 72.0455C49.8111 72.0085 49.9801 71.9545 50.0852 71.8835C50.1903 71.8125 50.2429 71.7074 50.2429 71.5682V71.5426C50.2429 71.2727 50.1577 71.0639 49.9872 70.9162C49.8196 70.7685 49.581 70.6946 49.2713 70.6946C48.9446 70.6946 48.6847 70.767 48.4915 70.9119C48.2983 71.054 48.1705 71.233 48.108 71.4489L46.429 71.3125C46.5142 70.9148 46.6818 70.571 46.9318 70.2812C47.1818 69.9886 47.5043 69.7642 47.8991 69.608C48.2969 69.4489 48.7571 69.3693 49.2798 69.3693C49.6435 69.3693 49.9915 69.4119 50.3239 69.4972C50.6591 69.5824 50.956 69.7145 51.2145 69.8935C51.4759 70.0724 51.6818 70.3026 51.8324 70.5838C51.983 70.8622 52.0582 71.196 52.0582 71.5852V76H50.3366V75.0923H50.2855C50.1804 75.2969 50.0398 75.4773 49.8636 75.6335C49.6875 75.7869 49.4759 75.9077 49.2287 75.9957C48.9815 76.081 48.696 76.1236 48.3722 76.1236ZM48.892 74.8707C49.1591 74.8707 49.3949 74.8182 49.5994 74.7131C49.804 74.6051 49.9645 74.4602 50.081 74.2784C50.1974 74.0966 50.2557 73.8906 50.2557 73.6605V72.9659C50.1989 73.0028 50.1207 73.0369 50.0213 73.0682C49.9247 73.0966 49.8153 73.1236 49.6932 73.1491C49.571 73.1719 49.4489 73.1932 49.3267 73.2131C49.2045 73.2301 49.0938 73.2457 48.9943 73.2599C48.7813 73.2912 48.5952 73.3409 48.4361 73.4091C48.277 73.4773 48.1534 73.5696 48.0653 73.6861C47.9773 73.7997 47.9332 73.9418 47.9332 74.1122C47.9332 74.3594 48.0227 74.5483 48.2017 74.679C48.3835 74.8068 48.6136 74.8707 48.892 74.8707ZM55.282 72.2159V76H53.4666V69.4545H55.1967V70.6094H55.2734C55.4183 70.2287 55.6612 69.9276 56.0021 69.706C56.343 69.4815 56.7564 69.3693 57.2422 69.3693C57.6967 69.3693 58.093 69.4688 58.4311 69.6676C58.7692 69.8665 59.032 70.1506 59.2195 70.5199C59.407 70.8864 59.5007 71.3239 59.5007 71.8324V76H57.6854V72.1562C57.6882 71.7557 57.5859 71.4432 57.3786 71.2188C57.1712 70.9915 56.8857 70.8778 56.522 70.8778C56.2777 70.8778 56.0618 70.9304 55.8743 71.0355C55.6896 71.1406 55.5447 71.294 55.4396 71.4957C55.3374 71.6946 55.2848 71.9347 55.282 72.2159ZM64.413 69.4545V70.8182H60.4712V69.4545H64.413ZM61.3661 67.8864H63.1815V73.9886C63.1815 74.1562 63.207 74.2869 63.2582 74.3807C63.3093 74.4716 63.3803 74.5355 63.4712 74.5724C63.565 74.6094 63.6729 74.6278 63.7951 74.6278C63.8803 74.6278 63.9656 74.6207 64.0508 74.6065C64.136 74.5895 64.2013 74.5767 64.2468 74.5682L64.5323 75.919C64.4414 75.9474 64.3136 75.9801 64.1488 76.017C63.984 76.0568 63.7837 76.081 63.5479 76.0895C63.1104 76.1065 62.7269 76.0483 62.3974 75.9148C62.0707 75.7812 61.8164 75.5739 61.6346 75.2926C61.4528 75.0114 61.3633 74.6562 61.3661 74.2273V67.8864ZM65.5955 76V69.4545H67.4109V76H65.5955ZM66.5075 68.6108C66.2376 68.6108 66.006 68.5213 65.8129 68.3423C65.6225 68.1605 65.5273 67.9432 65.5273 67.6903C65.5273 67.4403 65.6225 67.2259 65.8129 67.0469C66.006 66.8651 66.2376 66.7741 66.5075 66.7741C66.7773 66.7741 67.0075 66.8651 67.1978 67.0469C67.391 67.2259 67.4876 67.4403 67.4876 67.6903C67.4876 67.9432 67.391 68.1605 67.1978 68.3423C67.0075 68.5213 66.7773 68.6108 66.5075 68.6108ZM70.7315 76.1236C70.3139 76.1236 69.9418 76.0511 69.6151 75.9062C69.2884 75.7585 69.0298 75.5412 68.8395 75.2543C68.652 74.9645 68.5582 74.6037 68.5582 74.1719C68.5582 73.8082 68.625 73.5028 68.7585 73.2557C68.892 73.0085 69.0739 72.8097 69.304 72.6591C69.5341 72.5085 69.7955 72.3949 70.0881 72.3182C70.3835 72.2415 70.6932 72.1875 71.017 72.1562C71.3977 72.1165 71.7045 72.0795 71.9375 72.0455C72.1705 72.0085 72.3395 71.9545 72.4446 71.8835C72.5497 71.8125 72.6023 71.7074 72.6023 71.5682V71.5426C72.6023 71.2727 72.517 71.0639 72.3466 70.9162C72.179 70.7685 71.9403 70.6946 71.6307 70.6946C71.304 70.6946 71.044 70.767 70.8509 70.9119C70.6577 71.054 70.5298 71.233 70.4673 71.4489L68.7884 71.3125C68.8736 70.9148 69.0412 70.571 69.2912 70.2812C69.5412 69.9886 69.8636 69.7642 70.2585 69.608C70.6563 69.4489 71.1165 69.3693 71.6392 69.3693C72.0028 69.3693 72.3509 69.4119 72.6832 69.4972C73.0185 69.5824 73.3153 69.7145 73.5739 69.8935C73.8352 70.0724 74.0412 70.3026 74.1918 70.5838C74.3423 70.8622 74.4176 71.196 74.4176 71.5852V76H72.696V75.0923H72.6449C72.5398 75.2969 72.3991 75.4773 72.223 75.6335C72.0469 75.7869 71.8352 75.9077 71.5881 75.9957C71.3409 76.081 71.0554 76.1236 70.7315 76.1236ZM71.2514 74.8707C71.5185 74.8707 71.7543 74.8182 71.9588 74.7131C72.1634 74.6051 72.3239 74.4602 72.4403 74.2784C72.5568 74.0966 72.6151 73.8906 72.6151 73.6605V72.9659C72.5582 73.0028 72.4801 73.0369 72.3807 73.0682C72.2841 73.0966 72.1747 73.1236 72.0526 73.1491C71.9304 73.1719 71.8082 73.1932 71.6861 73.2131C71.5639 73.2301 71.4531 73.2457 71.3537 73.2599C71.1406 73.2912 70.9545 73.3409 70.7955 73.4091C70.6364 73.4773 70.5128 73.5696 70.4247 73.6861C70.3366 73.7997 70.2926 73.9418 70.2926 74.1122C70.2926 74.3594 70.3821 74.5483 70.5611 74.679C70.7429 74.8068 70.973 74.8707 71.2514 74.8707ZM78.6033 78.4545V69.4545H80.3931V70.554H80.4741C80.5536 70.3778 80.6687 70.1989 80.8192 70.017C80.9727 69.8324 81.1715 69.679 81.4158 69.5568C81.663 69.4318 81.9698 69.3693 82.3363 69.3693C82.8136 69.3693 83.2539 69.4943 83.6573 69.7443C84.0607 69.9915 84.3832 70.3651 84.6246 70.8651C84.8661 71.3622 84.9869 71.9858 84.9869 72.7358C84.9869 73.4659 84.869 74.0824 84.6332 74.5852C84.4002 75.0852 84.082 75.4645 83.6786 75.723C83.2781 75.9787 82.8292 76.1065 82.332 76.1065C81.9798 76.1065 81.68 76.0483 81.4329 75.9318C81.1886 75.8153 80.9883 75.669 80.832 75.4929C80.6758 75.3139 80.5565 75.1335 80.4741 74.9517H80.4187V78.4545H78.6033ZM80.3803 72.7273C80.3803 73.1165 80.4343 73.456 80.5423 73.7457C80.6502 74.0355 80.8065 74.2614 81.011 74.4233C81.2156 74.5824 81.4641 74.6619 81.7567 74.6619C82.0522 74.6619 82.3022 74.581 82.5067 74.419C82.7113 74.2543 82.8661 74.027 82.9712 73.7372C83.0792 73.4446 83.1332 73.108 83.1332 72.7273C83.1332 72.3494 83.0806 72.017 82.9755 71.7301C82.8704 71.4432 82.7156 71.2187 82.511 71.0568C82.3065 70.8949 82.055 70.8139 81.7567 70.8139C81.4613 70.8139 81.2113 70.892 81.0067 71.0483C80.805 71.2045 80.6502 71.4261 80.5423 71.7131C80.4343 72 80.3803 72.3381 80.3803 72.7273ZM89.1545 76.1278C88.4925 76.1278 87.9201 75.9872 87.4371 75.706C86.957 75.4219 86.5863 75.027 86.3249 74.5213C86.0636 74.0128 85.9329 73.4233 85.9329 72.7528C85.9329 72.0767 86.0636 71.4858 86.3249 70.9801C86.5863 70.4716 86.957 70.0767 87.4371 69.7955C87.9201 69.5114 88.4925 69.3693 89.1545 69.3693C89.8164 69.3693 90.3874 69.5114 90.8675 69.7955C91.3505 70.0767 91.7227 70.4716 91.984 70.9801C92.2454 71.4858 92.3761 72.0767 92.3761 72.7528C92.3761 73.4233 92.2454 74.0128 91.984 74.5213C91.7227 75.027 91.3505 75.4219 90.8675 75.706C90.3874 75.9872 89.8164 76.1278 89.1545 76.1278ZM89.163 74.7216C89.4641 74.7216 89.7156 74.6364 89.9173 74.4659C90.119 74.2926 90.271 74.0568 90.3732 73.7585C90.4783 73.4602 90.5309 73.1207 90.5309 72.7401C90.5309 72.3594 90.4783 72.0199 90.3732 71.7216C90.271 71.4233 90.119 71.1875 89.9173 71.0142C89.7156 70.8409 89.4641 70.7543 89.163 70.7543C88.859 70.7543 88.6033 70.8409 88.396 71.0142C88.1914 71.1875 88.0366 71.4233 87.9315 71.7216C87.8292 72.0199 87.7781 72.3594 87.7781 72.7401C87.7781 73.1207 87.8292 73.4602 87.9315 73.7585C88.0366 74.0568 88.1914 74.2926 88.396 74.4659C88.6033 74.6364 88.859 74.7216 89.163 74.7216ZM93.5565 76V69.4545H95.3164V70.5966H95.3846C95.5039 70.1903 95.7042 69.8835 95.9854 69.6761C96.2667 69.4659 96.5906 69.3608 96.957 69.3608C97.0479 69.3608 97.146 69.3665 97.2511 69.3778C97.3562 69.3892 97.4485 69.4048 97.5281 69.4247V71.0355C97.4428 71.0099 97.3249 70.9872 97.1744 70.9673C97.0238 70.9474 96.886 70.9375 96.761 70.9375C96.494 70.9375 96.2553 70.9957 96.0451 71.1122C95.8377 71.2259 95.6729 71.3849 95.5508 71.5895C95.4315 71.794 95.3718 72.0298 95.3718 72.2969V76H93.5565ZM101.572 76L105.19 68.8409V68.7812H100.975V67.2727H107.099V68.8026L103.477 76H101.572ZM113.57 76.1065C113.073 76.1065 112.623 75.9787 112.219 75.723C111.819 75.4645 111.5 75.0852 111.265 74.5852C111.032 74.0824 110.915 73.4659 110.915 72.7358C110.915 71.9858 111.036 71.3622 111.277 70.8651C111.519 70.3651 111.84 69.9915 112.24 69.7443C112.644 69.4943 113.086 69.3693 113.566 69.3693C113.932 69.3693 114.238 69.4318 114.482 69.5568C114.729 69.679 114.928 69.8324 115.078 70.017C115.232 70.1989 115.348 70.3778 115.428 70.554H115.483V67.2727H117.294V76H115.505V74.9517H115.428C115.343 75.1335 115.222 75.3139 115.066 75.4929C114.912 75.669 114.712 75.8153 114.465 75.9318C114.221 76.0483 113.922 76.1065 113.57 76.1065ZM114.145 74.6619C114.438 74.6619 114.685 74.5824 114.887 74.4233C115.091 74.2614 115.248 74.0355 115.355 73.7457C115.466 73.456 115.522 73.1165 115.522 72.7273C115.522 72.3381 115.468 72 115.36 71.7131C115.252 71.4261 115.096 71.2045 114.891 71.0483C114.686 70.892 114.438 70.8139 114.145 70.8139C113.847 70.8139 113.596 70.8949 113.391 71.0568C113.186 71.2187 113.032 71.4432 112.926 71.7301C112.821 72.017 112.769 72.3494 112.769 72.7273C112.769 73.108 112.821 73.4446 112.926 73.7372C113.034 74.027 113.189 74.2543 113.391 74.419C113.596 74.581 113.847 74.6619 114.145 74.6619ZM118.787 76V69.4545H120.602V76H118.787ZM119.699 68.6108C119.429 68.6108 119.197 68.5213 119.004 68.3423C118.814 68.1605 118.719 67.9432 118.719 67.6903C118.719 67.4403 118.814 67.2259 119.004 67.0469C119.197 66.8651 119.429 66.7741 119.699 66.7741C119.969 66.7741 120.199 66.8651 120.389 67.0469C120.582 67.2259 120.679 67.4403 120.679 67.6903C120.679 67.9432 120.582 68.1605 120.389 68.3423C120.199 68.5213 119.969 68.6108 119.699 68.6108ZM123.923 76.1236C123.505 76.1236 123.133 76.0511 122.806 75.9062C122.48 75.7585 122.221 75.5412 122.031 75.2543C121.843 74.9645 121.75 74.6037 121.75 74.1719C121.75 73.8082 121.816 73.5028 121.95 73.2557C122.083 73.0085 122.265 72.8097 122.495 72.6591C122.725 72.5085 122.987 72.3949 123.279 72.3182C123.575 72.2415 123.885 72.1875 124.208 72.1562C124.589 72.1165 124.896 72.0795 125.129 72.0455C125.362 72.0085 125.531 71.9545 125.636 71.8835C125.741 71.8125 125.794 71.7074 125.794 71.5682V71.5426C125.794 71.2727 125.708 71.0639 125.538 70.9162C125.37 70.7685 125.132 70.6946 124.822 70.6946C124.495 70.6946 124.235 70.767 124.042 70.9119C123.849 71.054 123.721 71.233 123.659 71.4489L121.98 71.3125C122.065 70.9148 122.233 70.571 122.483 70.2812C122.733 69.9886 123.055 69.7642 123.45 69.608C123.848 69.4489 124.308 69.3693 124.831 69.3693C125.194 69.3693 125.542 69.4119 125.875 69.4972C126.21 69.5824 126.507 69.7145 126.765 69.8935C127.027 70.0724 127.233 70.3026 127.383 70.5838C127.534 70.8622 127.609 71.196 127.609 71.5852V76H125.887V75.0923H125.836C125.731 75.2969 125.591 75.4773 125.414 75.6335C125.238 75.7869 125.027 75.9077 124.779 75.9957C124.532 76.081 124.247 76.1236 123.923 76.1236ZM124.443 74.8707C124.71 74.8707 124.946 74.8182 125.15 74.7131C125.355 74.6051 125.515 74.4602 125.632 74.2784C125.748 74.0966 125.806 73.8906 125.806 73.6605V72.9659C125.75 73.0028 125.672 73.0369 125.572 73.0682C125.475 73.0966 125.366 73.1236 125.244 73.1491C125.122 73.1719 125 73.1932 124.877 73.2131C124.755 73.2301 124.645 73.2457 124.545 73.2599C124.332 73.2912 124.146 73.3409 123.987 73.4091C123.828 73.4773 123.704 73.5696 123.616 73.6861C123.528 73.7997 123.484 73.9418 123.484 74.1122C123.484 74.3594 123.574 74.5483 123.752 74.679C123.934 74.8068 124.164 74.8707 124.443 74.8707ZM134.463 71.321L132.801 71.4233C132.773 71.2812 132.712 71.1534 132.618 71.0398C132.525 70.9233 132.401 70.831 132.248 70.7628C132.097 70.6918 131.917 70.6562 131.706 70.6562C131.425 70.6562 131.188 70.7159 130.995 70.8352C130.801 70.9517 130.705 71.108 130.705 71.304C130.705 71.4602 130.767 71.5923 130.892 71.7003C131.017 71.8082 131.232 71.8949 131.536 71.9602L132.721 72.1989C133.357 72.3295 133.831 72.5398 134.144 72.8295C134.456 73.1193 134.613 73.5 134.613 73.9716C134.613 74.4006 134.486 74.777 134.233 75.1009C133.983 75.4247 133.64 75.6776 133.202 75.8594C132.767 76.0384 132.266 76.1278 131.698 76.1278C130.831 76.1278 130.141 75.9474 129.627 75.5866C129.115 75.223 128.816 74.7287 128.728 74.1037L130.513 74.0099C130.567 74.2741 130.698 74.4759 130.905 74.6151C131.113 74.7514 131.378 74.8196 131.702 74.8196C132.02 74.8196 132.276 74.7585 132.469 74.6364C132.665 74.5114 132.765 74.3509 132.767 74.1548C132.765 73.9901 132.695 73.8551 132.559 73.75C132.422 73.642 132.212 73.5597 131.928 73.5028L130.794 73.277C130.155 73.1491 129.679 72.9276 129.367 72.6122C129.057 72.2969 128.902 71.8949 128.902 71.4062C128.902 70.9858 129.016 70.6236 129.243 70.3196C129.473 70.0156 129.796 69.7812 130.211 69.6165C130.628 69.4517 131.117 69.3693 131.676 69.3693C132.503 69.3693 133.154 69.544 133.628 69.8935C134.105 70.2429 134.384 70.7187 134.463 71.321ZM9.9043 88.9004V88.7656C9.9043 88.3086 9.9707 87.8848 10.1035 87.4941C10.2363 87.0996 10.4277 86.7578 10.6777 86.4688C10.9277 86.1758 11.2305 85.9492 11.5859 85.7891C11.9414 85.625 12.3398 85.543 12.7812 85.543C13.2266 85.543 13.627 85.625 13.9824 85.7891C14.3418 85.9492 14.6465 86.1758 14.8965 86.4688C15.1504 86.7578 15.3438 87.0996 15.4766 87.4941C15.6094 87.8848 15.6758 88.3086 15.6758 88.7656V88.9004C15.6758 89.3574 15.6094 89.7812 15.4766 90.1719C15.3438 90.5625 15.1504 90.9043 14.8965 91.1973C14.6465 91.4863 14.3438 91.7129 13.9883 91.877C13.6367 92.0371 13.2383 92.1172 12.793 92.1172C12.3477 92.1172 11.9473 92.0371 11.5918 91.877C11.2363 91.7129 10.9316 91.4863 10.6777 91.1973C10.4277 90.9043 10.2363 90.5625 10.1035 90.1719C9.9707 89.7812 9.9043 89.3574 9.9043 88.9004ZM10.9883 88.7656V88.9004C10.9883 89.2168 11.0254 89.5156 11.0996 89.7969C11.1738 90.0742 11.2852 90.3203 11.4336 90.5352C11.5859 90.75 11.7754 90.9199 12.002 91.0449C12.2285 91.166 12.4922 91.2266 12.793 91.2266C13.0898 91.2266 13.3496 91.166 13.5723 91.0449C13.7988 90.9199 13.9863 90.75 14.1348 90.5352C14.2832 90.3203 14.3945 90.0742 14.4688 89.7969C14.5469 89.5156 14.5859 89.2168 14.5859 88.9004V88.7656C14.5859 88.4531 14.5469 88.1582 14.4688 87.8809C14.3945 87.5996 14.2812 87.3516 14.1289 87.1367C13.9805 86.918 13.793 86.7461 13.5664 86.6211C13.3438 86.4961 13.082 86.4336 12.7812 86.4336C12.4844 86.4336 12.2227 86.4961 11.9961 86.6211C11.7734 86.7461 11.5859 86.918 11.4336 87.1367C11.2852 87.3516 11.1738 87.5996 11.0996 87.8809C11.0254 88.1582 10.9883 88.4531 10.9883 88.7656ZM20.9141 90.5352V85.6602H22.0039V92H20.9668L20.9141 90.5352ZM21.1191 89.1992L21.5703 89.1875C21.5703 89.6094 21.5254 90 21.4355 90.3594C21.3496 90.7148 21.209 91.0234 21.0137 91.2852C20.8184 91.5469 20.5625 91.752 20.2461 91.9004C19.9297 92.0449 19.5449 92.1172 19.0918 92.1172C18.7832 92.1172 18.5 92.0723 18.2422 91.9824C17.9883 91.8926 17.7695 91.7539 17.5859 91.5664C17.4023 91.3789 17.2598 91.1348 17.1582 90.834C17.0605 90.5332 17.0117 90.1719 17.0117 89.75V85.6602H18.0957V89.7617C18.0957 90.0469 18.127 90.2832 18.1895 90.4707C18.2559 90.6543 18.3438 90.8008 18.4531 90.9102C18.5664 91.0156 18.6914 91.0898 18.8281 91.1328C18.9688 91.1758 19.1133 91.1973 19.2617 91.1973C19.7227 91.1973 20.0879 91.1094 20.3574 90.9336C20.627 90.7539 20.8203 90.5137 20.9375 90.2129C21.0586 89.9082 21.1191 89.5703 21.1191 89.1992ZM30.3242 90.3184C30.3242 90.1621 30.2891 90.0176 30.2188 89.8848C30.1523 89.748 30.0137 89.625 29.8027 89.5156C29.5957 89.4023 29.2832 89.3047 28.8652 89.2227C28.5137 89.1484 28.1953 89.0605 27.9102 88.959C27.6289 88.8574 27.3887 88.7344 27.1895 88.5898C26.9941 88.4453 26.8438 88.2754 26.7383 88.0801C26.6328 87.8848 26.5801 87.6562 26.5801 87.3945C26.5801 87.1445 26.6348 86.9082 26.7441 86.6855C26.8574 86.4629 27.0156 86.2656 27.2188 86.0938C27.4258 85.9219 27.6738 85.7871 27.9629 85.6895C28.252 85.5918 28.5742 85.543 28.9297 85.543C29.4375 85.543 29.8711 85.6328 30.2305 85.8125C30.5898 85.9922 30.8652 86.2324 31.0566 86.5332C31.248 86.8301 31.3438 87.1602 31.3438 87.5234H30.2598C30.2598 87.3477 30.207 87.1777 30.1016 87.0137C30 86.8457 29.8496 86.707 29.6504 86.5977C29.4551 86.4883 29.2148 86.4336 28.9297 86.4336C28.6289 86.4336 28.3848 86.4805 28.1973 86.5742C28.0137 86.6641 27.8789 86.7793 27.793 86.9199C27.7109 87.0605 27.6699 87.209 27.6699 87.3652C27.6699 87.4824 27.6895 87.5879 27.7285 87.6816C27.7715 87.7715 27.8457 87.8555 27.9512 87.9336C28.0566 88.0078 28.2051 88.0781 28.3965 88.1445C28.5879 88.2109 28.832 88.2773 29.1289 88.3438C29.6484 88.4609 30.0762 88.6016 30.4121 88.7656C30.748 88.9297 30.998 89.1309 31.1621 89.3691C31.3262 89.6074 31.4082 89.8965 31.4082 90.2363C31.4082 90.5137 31.3496 90.7676 31.2324 90.998C31.1191 91.2285 30.9531 91.4277 30.7344 91.5957C30.5195 91.7598 30.2617 91.8887 29.9609 91.9824C29.6641 92.0723 29.3301 92.1172 28.959 92.1172C28.4004 92.1172 27.9277 92.0176 27.541 91.8184C27.1543 91.6191 26.8613 91.3613 26.6621 91.0449C26.4629 90.7285 26.3633 90.3945 26.3633 90.043H27.4531C27.4688 90.3398 27.5547 90.5762 27.7109 90.752C27.8672 90.9238 28.0586 91.0469 28.2852 91.1211C28.5117 91.1914 28.7363 91.2266 28.959 91.2266C29.2559 91.2266 29.5039 91.1875 29.7031 91.1094C29.9062 91.0312 30.0605 90.9238 30.166 90.7871C30.2715 90.6504 30.3242 90.4941 30.3242 90.3184ZM35.4629 92.1172C35.0215 92.1172 34.6211 92.043 34.2617 91.8945C33.9062 91.7422 33.5996 91.5293 33.3418 91.2559C33.0879 90.9824 32.8926 90.6582 32.7559 90.2832C32.6191 89.9082 32.5508 89.498 32.5508 89.0527V88.8066C32.5508 88.291 32.627 87.832 32.7793 87.4297C32.9316 87.0234 33.1387 86.6797 33.4004 86.3984C33.6621 86.1172 33.959 85.9043 34.291 85.7598C34.623 85.6152 34.9668 85.543 35.3223 85.543C35.7754 85.543 36.166 85.6211 36.4941 85.7773C36.8262 85.9336 37.0977 86.1523 37.3086 86.4336C37.5195 86.7109 37.6758 87.0391 37.7773 87.418C37.8789 87.793 37.9297 88.2031 37.9297 88.6484V89.1348H33.1953V88.25H36.8457V88.168C36.8301 87.8867 36.7715 87.6133 36.6699 87.3477C36.5723 87.082 36.416 86.8633 36.2012 86.6914C35.9863 86.5195 35.6934 86.4336 35.3223 86.4336C35.0762 86.4336 34.8496 86.4863 34.6426 86.5918C34.4355 86.6934 34.2578 86.8457 34.1094 87.0488C33.9609 87.252 33.8457 87.5 33.7637 87.793C33.6816 88.0859 33.6406 88.4238 33.6406 88.8066V89.0527C33.6406 89.3535 33.6816 89.6367 33.7637 89.9023C33.8496 90.1641 33.9727 90.3945 34.1328 90.5938C34.2969 90.793 34.4941 90.9492 34.7246 91.0625C34.959 91.1758 35.2246 91.2324 35.5215 91.2324C35.9043 91.2324 36.2285 91.1543 36.4941 90.998C36.7598 90.8418 36.9922 90.6328 37.1914 90.3711L37.8477 90.8926C37.7109 91.0996 37.5371 91.2969 37.3262 91.4844C37.1152 91.6719 36.8555 91.8242 36.5469 91.9414C36.2422 92.0586 35.8809 92.1172 35.4629 92.1172ZM43.0742 90.5352V85.6602H44.1641V92H43.127L43.0742 90.5352ZM43.2793 89.1992L43.7305 89.1875C43.7305 89.6094 43.6855 90 43.5957 90.3594C43.5098 90.7148 43.3691 91.0234 43.1738 91.2852C42.9785 91.5469 42.7227 91.752 42.4062 91.9004C42.0898 92.0449 41.7051 92.1172 41.252 92.1172C40.9434 92.1172 40.6602 92.0723 40.4023 91.9824C40.1484 91.8926 39.9297 91.7539 39.7461 91.5664C39.5625 91.3789 39.4199 91.1348 39.3184 90.834C39.2207 90.5332 39.1719 90.1719 39.1719 89.75V85.6602H40.2559V89.7617C40.2559 90.0469 40.2871 90.2832 40.3496 90.4707C40.416 90.6543 40.5039 90.8008 40.6133 90.9102C40.7266 91.0156 40.8516 91.0898 40.9883 91.1328C41.1289 91.1758 41.2734 91.1973 41.4219 91.1973C41.8828 91.1973 42.248 91.1094 42.5176 90.9336C42.7871 90.7539 42.9805 90.5137 43.0977 90.2129C43.2188 89.9082 43.2793 89.5703 43.2793 89.1992ZM52.7891 90.7695V83H53.8789V92H52.8828L52.7891 90.7695ZM48.5234 88.9004V88.7773C48.5234 88.293 48.582 87.8535 48.6992 87.459C48.8203 87.0605 48.9902 86.7188 49.209 86.4336C49.4316 86.1484 49.6953 85.9297 50 85.7773C50.3086 85.6211 50.6523 85.543 51.0312 85.543C51.4297 85.543 51.7773 85.6133 52.0742 85.7539C52.375 85.8906 52.6289 86.0918 52.8359 86.3574C53.0469 86.6191 53.2129 86.9355 53.334 87.3066C53.4551 87.6777 53.5391 88.0977 53.5859 88.5664V89.1055C53.543 89.5703 53.459 89.9883 53.334 90.3594C53.2129 90.7305 53.0469 91.0469 52.8359 91.3086C52.6289 91.5703 52.375 91.7715 52.0742 91.9121C51.7734 92.0488 51.4219 92.1172 51.0195 92.1172C50.6484 92.1172 50.3086 92.0371 50 91.877C49.6953 91.7168 49.4316 91.4922 49.209 91.2031C48.9902 90.9141 48.8203 90.5742 48.6992 90.1836C48.582 89.7891 48.5234 89.3613 48.5234 88.9004ZM49.6133 88.7773V88.9004C49.6133 89.2168 49.6445 89.5137 49.707 89.791C49.7734 90.0684 49.875 90.3125 50.0117 90.5234C50.1484 90.7344 50.3223 90.9004 50.5332 91.0215C50.7441 91.1387 50.9961 91.1973 51.2891 91.1973C51.6484 91.1973 51.9434 91.1211 52.1738 90.9688C52.4082 90.8164 52.5957 90.6152 52.7363 90.3652C52.877 90.1152 52.9863 89.8438 53.0645 89.5508V88.1387C53.0176 87.9238 52.9492 87.7168 52.8594 87.5176C52.7734 87.3145 52.6602 87.1348 52.5195 86.9785C52.3828 86.8184 52.2129 86.6914 52.0098 86.5977C51.8105 86.5039 51.5742 86.457 51.3008 86.457C51.0039 86.457 50.748 86.5195 50.5332 86.6445C50.3223 86.7656 50.1484 86.9336 50.0117 87.1484C49.875 87.3594 49.7734 87.6055 49.707 87.8867C49.6445 88.1641 49.6133 88.4609 49.6133 88.7773ZM56.7441 85.6602V92H55.6543V85.6602H56.7441ZM55.5723 83.9785C55.5723 83.8027 55.625 83.6543 55.7305 83.5332C55.8398 83.4121 56 83.3516 56.2109 83.3516C56.418 83.3516 56.5762 83.4121 56.6855 83.5332C56.7988 83.6543 56.8555 83.8027 56.8555 83.9785C56.8555 84.1465 56.7988 84.291 56.6855 84.4121C56.5762 84.5293 56.418 84.5879 56.2109 84.5879C56 84.5879 55.8398 84.5293 55.7305 84.4121C55.625 84.291 55.5723 84.1465 55.5723 83.9785ZM59.5684 87.0137V92H58.4844V85.6602H59.5098L59.5684 87.0137ZM59.3105 88.5898L58.8594 88.5723C58.8633 88.1387 58.9277 87.7383 59.0527 87.3711C59.1777 87 59.3535 86.6777 59.5801 86.4043C59.8066 86.1309 60.0762 85.9199 60.3887 85.7715C60.7051 85.6191 61.0547 85.543 61.4375 85.543C61.75 85.543 62.0312 85.5859 62.2812 85.6719C62.5312 85.7539 62.7441 85.8867 62.9199 86.0703C63.0996 86.2539 63.2363 86.4922 63.3301 86.7852C63.4238 87.0742 63.4707 87.4277 63.4707 87.8457V92H62.3809V87.834C62.3809 87.502 62.332 87.2363 62.2344 87.0371C62.1367 86.834 61.9941 86.6875 61.8066 86.5977C61.6191 86.5039 61.3887 86.457 61.1152 86.457C60.8457 86.457 60.5996 86.5137 60.377 86.627C60.1582 86.7402 59.9688 86.8965 59.8086 87.0957C59.6523 87.2949 59.5293 87.5234 59.4395 87.7812C59.3535 88.0352 59.3105 88.3047 59.3105 88.5898ZM66.2012 83V92H65.1172V83H66.2012ZM65.9434 88.5898L65.4922 88.5723C65.4961 88.1387 65.5605 87.7383 65.6855 87.3711C65.8105 87 65.9863 86.6777 66.2129 86.4043C66.4395 86.1309 66.709 85.9199 67.0215 85.7715C67.3379 85.6191 67.6875 85.543 68.0703 85.543C68.3828 85.543 68.6641 85.5859 68.9141 85.6719C69.1641 85.7539 69.377 85.8867 69.5527 86.0703C69.7324 86.2539 69.8691 86.4922 69.9629 86.7852C70.0566 87.0742 70.1035 87.4277 70.1035 87.8457V92H69.0137V87.834C69.0137 87.502 68.9648 87.2363 68.8672 87.0371C68.7695 86.834 68.627 86.6875 68.4395 86.5977C68.252 86.5039 68.0215 86.457 67.748 86.457C67.4785 86.457 67.2324 86.5137 67.0098 86.627C66.791 86.7402 66.6016 86.8965 66.4414 87.0957C66.2852 87.2949 66.1621 87.5234 66.0723 87.7812C65.9863 88.0352 65.9434 88.3047 65.9434 88.5898ZM74.3574 92.1172C73.916 92.1172 73.5156 92.043 73.1562 91.8945C72.8008 91.7422 72.4941 91.5293 72.2363 91.2559C71.9824 90.9824 71.7871 90.6582 71.6504 90.2832C71.5137 89.9082 71.4453 89.498 71.4453 89.0527V88.8066C71.4453 88.291 71.5215 87.832 71.6738 87.4297C71.8262 87.0234 72.0332 86.6797 72.2949 86.3984C72.5566 86.1172 72.8535 85.9043 73.1855 85.7598C73.5176 85.6152 73.8613 85.543 74.2168 85.543C74.6699 85.543 75.0605 85.6211 75.3887 85.7773C75.7207 85.9336 75.9922 86.1523 76.2031 86.4336C76.4141 86.7109 76.5703 87.0391 76.6719 87.418C76.7734 87.793 76.8242 88.2031 76.8242 88.6484V89.1348H72.0898V88.25H75.7402V88.168C75.7246 87.8867 75.666 87.6133 75.5645 87.3477C75.4668 87.082 75.3105 86.8633 75.0957 86.6914C74.8809 86.5195 74.5879 86.4336 74.2168 86.4336C73.9707 86.4336 73.7441 86.4863 73.5371 86.5918C73.3301 86.6934 73.1523 86.8457 73.0039 87.0488C72.8555 87.252 72.7402 87.5 72.6582 87.793C72.5762 88.0859 72.5352 88.4238 72.5352 88.8066V89.0527C72.5352 89.3535 72.5762 89.6367 72.6582 89.9023C72.7441 90.1641 72.8672 90.3945 73.0273 90.5938C73.1914 90.793 73.3887 90.9492 73.6191 91.0625C73.8535 91.1758 74.1191 91.2324 74.416 91.2324C74.7988 91.2324 75.123 91.1543 75.3887 90.998C75.6543 90.8418 75.8867 90.6328 76.0859 90.3711L76.7422 90.8926C76.6055 91.0996 76.4316 91.2969 76.2207 91.4844C76.0098 91.6719 75.75 91.8242 75.4414 91.9414C75.1367 92.0586 74.7754 92.1172 74.3574 92.1172ZM79.2676 85.6602V92H78.1777V85.6602H79.2676ZM78.0957 83.9785C78.0957 83.8027 78.1484 83.6543 78.2539 83.5332C78.3633 83.4121 78.5234 83.3516 78.7344 83.3516C78.9414 83.3516 79.0996 83.4121 79.209 83.5332C79.3223 83.6543 79.3789 83.8027 79.3789 83.9785C79.3789 84.1465 79.3223 84.291 79.209 84.4121C79.0996 84.5293 78.9414 84.5879 78.7344 84.5879C78.5234 84.5879 78.3633 84.5293 78.2539 84.4121C78.1484 84.291 78.0957 84.1465 78.0957 83.9785ZM82.0918 86.6562V92H81.0078V85.6602H82.0625L82.0918 86.6562ZM84.0723 85.625L84.0664 86.6328C83.9766 86.6133 83.8906 86.6016 83.8086 86.5977C83.7305 86.5898 83.6406 86.5859 83.5391 86.5859C83.2891 86.5859 83.0684 86.625 82.877 86.7031C82.6855 86.7812 82.5234 86.8906 82.3906 87.0312C82.2578 87.1719 82.1523 87.3398 82.0742 87.5352C82 87.7266 81.9512 87.9375 81.9277 88.168L81.623 88.3438C81.623 87.9609 81.6602 87.6016 81.7344 87.2656C81.8125 86.9297 81.9316 86.6328 82.0918 86.375C82.252 86.1133 82.4551 85.9102 82.7012 85.7656C82.9512 85.6172 83.248 85.543 83.5918 85.543C83.6699 85.543 83.7598 85.5527 83.8613 85.5723C83.9629 85.5879 84.0332 85.6055 84.0723 85.625ZM84.6699 88.9004V88.7656C84.6699 88.3086 84.7363 87.8848 84.8691 87.4941C85.002 87.0996 85.1934 86.7578 85.4434 86.4688C85.6934 86.1758 85.9961 85.9492 86.3516 85.7891C86.707 85.625 87.1055 85.543 87.5469 85.543C87.9922 85.543 88.3926 85.625 88.748 85.7891C89.1074 85.9492 89.4121 86.1758 89.6621 86.4688C89.916 86.7578 90.1094 87.0996 90.2422 87.4941C90.375 87.8848 90.4414 88.3086 90.4414 88.7656V88.9004C90.4414 89.3574 90.375 89.7812 90.2422 90.1719C90.1094 90.5625 89.916 90.9043 89.6621 91.1973C89.4121 91.4863 89.1094 91.7129 88.7539 91.877C88.4023 92.0371 88.0039 92.1172 87.5586 92.1172C87.1133 92.1172 86.7129 92.0371 86.3574 91.877C86.002 91.7129 85.6973 91.4863 85.4434 91.1973C85.1934 90.9043 85.002 90.5625 84.8691 90.1719C84.7363 89.7812 84.6699 89.3574 84.6699 88.9004ZM85.7539 88.7656V88.9004C85.7539 89.2168 85.791 89.5156 85.8652 89.7969C85.9395 90.0742 86.0508 90.3203 86.1992 90.5352C86.3516 90.75 86.541 90.9199 86.7676 91.0449C86.9941 91.166 87.2578 91.2266 87.5586 91.2266C87.8555 91.2266 88.1152 91.166 88.3379 91.0449C88.5645 90.9199 88.752 90.75 88.9004 90.5352C89.0488 90.3203 89.1602 90.0742 89.2344 89.7969C89.3125 89.5156 89.3516 89.2168 89.3516 88.9004V88.7656C89.3516 88.4531 89.3125 88.1582 89.2344 87.8809C89.1602 87.5996 89.0469 87.3516 88.8945 87.1367C88.7461 86.918 88.5586 86.7461 88.332 86.6211C88.1094 86.4961 87.8477 86.4336 87.5469 86.4336C87.25 86.4336 86.9883 86.4961 86.7617 86.6211C86.5391 86.7461 86.3516 86.918 86.1992 87.1367C86.0508 87.3516 85.9395 87.5996 85.8652 87.8809C85.791 88.1582 85.7539 88.4531 85.7539 88.7656ZM98.7734 90.7695V83H99.8633V92H98.8672L98.7734 90.7695ZM94.5078 88.9004V88.7773C94.5078 88.293 94.5664 87.8535 94.6836 87.459C94.8047 87.0605 94.9746 86.7188 95.1934 86.4336C95.416 86.1484 95.6797 85.9297 95.9844 85.7773C96.293 85.6211 96.6367 85.543 97.0156 85.543C97.4141 85.543 97.7617 85.6133 98.0586 85.7539C98.3594 85.8906 98.6133 86.0918 98.8203 86.3574C99.0312 86.6191 99.1973 86.9355 99.3184 87.3066C99.4395 87.6777 99.5234 88.0977 99.5703 88.5664V89.1055C99.5273 89.5703 99.4434 89.9883 99.3184 90.3594C99.1973 90.7305 99.0312 91.0469 98.8203 91.3086C98.6133 91.5703 98.3594 91.7715 98.0586 91.9121C97.7578 92.0488 97.4062 92.1172 97.0039 92.1172C96.6328 92.1172 96.293 92.0371 95.9844 91.877C95.6797 91.7168 95.416 91.4922 95.1934 91.2031C94.9746 90.9141 94.8047 90.5742 94.6836 90.1836C94.5664 89.7891 94.5078 89.3613 94.5078 88.9004ZM95.5977 88.7773V88.9004C95.5977 89.2168 95.6289 89.5137 95.6914 89.791C95.7578 90.0684 95.8594 90.3125 95.9961 90.5234C96.1328 90.7344 96.3066 90.9004 96.5176 91.0215C96.7285 91.1387 96.9805 91.1973 97.2734 91.1973C97.6328 91.1973 97.9277 91.1211 98.1582 90.9688C98.3926 90.8164 98.5801 90.6152 98.7207 90.3652C98.8613 90.1152 98.9707 89.8438 99.0488 89.5508V88.1387C99.002 87.9238 98.9336 87.7168 98.8438 87.5176C98.7578 87.3145 98.6445 87.1348 98.5039 86.9785C98.3672 86.8184 98.1973 86.6914 97.9941 86.5977C97.7949 86.5039 97.5586 86.457 97.2852 86.457C96.9883 86.457 96.7324 86.5195 96.5176 86.6445C96.3066 86.7656 96.1328 86.9336 95.9961 87.1484C95.8594 87.3594 95.7578 87.6055 95.6914 87.8867C95.6289 88.1641 95.5977 88.4609 95.5977 88.7773ZM104.182 92.1172C103.74 92.1172 103.34 92.043 102.98 91.8945C102.625 91.7422 102.318 91.5293 102.061 91.2559C101.807 90.9824 101.611 90.6582 101.475 90.2832C101.338 89.9082 101.27 89.498 101.27 89.0527V88.8066C101.27 88.291 101.346 87.832 101.498 87.4297C101.65 87.0234 101.857 86.6797 102.119 86.3984C102.381 86.1172 102.678 85.9043 103.01 85.7598C103.342 85.6152 103.686 85.543 104.041 85.543C104.494 85.543 104.885 85.6211 105.213 85.7773C105.545 85.9336 105.816 86.1523 106.027 86.4336C106.238 86.7109 106.395 87.0391 106.496 87.418C106.598 87.793 106.648 88.2031 106.648 88.6484V89.1348H101.914V88.25H105.564V88.168C105.549 87.8867 105.49 87.6133 105.389 87.3477C105.291 87.082 105.135 86.8633 104.92 86.6914C104.705 86.5195 104.412 86.4336 104.041 86.4336C103.795 86.4336 103.568 86.4863 103.361 86.5918C103.154 86.6934 102.977 86.8457 102.828 87.0488C102.68 87.252 102.564 87.5 102.482 87.793C102.4 88.0859 102.359 88.4238 102.359 88.8066V89.0527C102.359 89.3535 102.4 89.6367 102.482 89.9023C102.568 90.1641 102.691 90.3945 102.852 90.5938C103.016 90.793 103.213 90.9492 103.443 91.0625C103.678 91.1758 103.943 91.2324 104.24 91.2324C104.623 91.2324 104.947 91.1543 105.213 90.998C105.479 90.8418 105.711 90.6328 105.91 90.3711L106.566 90.8926C106.43 91.0996 106.256 91.2969 106.045 91.4844C105.834 91.6719 105.574 91.8242 105.266 91.9414C104.961 92.0586 104.6 92.1172 104.182 92.1172ZM112.818 91.0215L114.553 85.6602H115.66L113.381 92H112.654L112.818 91.0215ZM111.371 85.6602L113.158 91.0508L113.281 92H112.555L110.258 85.6602H111.371ZM116.322 88.9004V88.7656C116.322 88.3086 116.389 87.8848 116.521 87.4941C116.654 87.0996 116.846 86.7578 117.096 86.4688C117.346 86.1758 117.648 85.9492 118.004 85.7891C118.359 85.625 118.758 85.543 119.199 85.543C119.645 85.543 120.045 85.625 120.4 85.7891C120.76 85.9492 121.064 86.1758 121.314 86.4688C121.568 86.7578 121.762 87.0996 121.895 87.4941C122.027 87.8848 122.094 88.3086 122.094 88.7656V88.9004C122.094 89.3574 122.027 89.7812 121.895 90.1719C121.762 90.5625 121.568 90.9043 121.314 91.1973C121.064 91.4863 120.762 91.7129 120.406 91.877C120.055 92.0371 119.656 92.1172 119.211 92.1172C118.766 92.1172 118.365 92.0371 118.01 91.877C117.654 91.7129 117.35 91.4863 117.096 91.1973C116.846 90.9043 116.654 90.5625 116.521 90.1719C116.389 89.7812 116.322 89.3574 116.322 88.9004ZM117.406 88.7656V88.9004C117.406 89.2168 117.443 89.5156 117.518 89.7969C117.592 90.0742 117.703 90.3203 117.852 90.5352C118.004 90.75 118.193 90.9199 118.42 91.0449C118.646 91.166 118.91 91.2266 119.211 91.2266C119.508 91.2266 119.768 91.166 119.99 91.0449C120.217 90.9199 120.404 90.75 120.553 90.5352C120.701 90.3203 120.812 90.0742 120.887 89.7969C120.965 89.5156 121.004 89.2168 121.004 88.9004V88.7656C121.004 88.4531 120.965 88.1582 120.887 87.8809C120.812 87.5996 120.699 87.3516 120.547 87.1367C120.398 86.918 120.211 86.7461 119.984 86.6211C119.762 86.4961 119.5 86.4336 119.199 86.4336C118.902 86.4336 118.641 86.4961 118.414 86.6211C118.191 86.7461 118.004 86.918 117.852 87.1367C117.703 87.3516 117.592 87.5996 117.518 87.8809C117.443 88.1582 117.406 88.4531 117.406 88.7656ZM124.631 83V92H123.541V83H124.631ZM129.025 85.6602V86.4922H125.598V85.6602H129.025ZM126.758 84.1191H127.842V90.4297C127.842 90.6445 127.875 90.8066 127.941 90.916C128.008 91.0254 128.094 91.0977 128.199 91.1328C128.305 91.168 128.418 91.1855 128.539 91.1855C128.629 91.1855 128.723 91.1777 128.82 91.1621C128.922 91.1426 128.998 91.127 129.049 91.1152L129.055 92C128.969 92.0273 128.855 92.0527 128.715 92.0762C128.578 92.1035 128.412 92.1172 128.217 92.1172C127.951 92.1172 127.707 92.0645 127.484 91.959C127.262 91.8535 127.084 91.6777 126.951 91.4316C126.822 91.1816 126.758 90.8457 126.758 90.4238V84.1191ZM134.035 90.916V87.6523C134.035 87.4023 133.984 87.1855 133.883 87.002C133.785 86.8145 133.637 86.6699 133.438 86.5684C133.238 86.4668 132.992 86.416 132.699 86.416C132.426 86.416 132.186 86.4629 131.979 86.5566C131.775 86.6504 131.615 86.7734 131.498 86.9258C131.385 87.0781 131.328 87.2422 131.328 87.418H130.244C130.244 87.1914 130.303 86.9668 130.42 86.7441C130.537 86.5215 130.705 86.3203 130.924 86.1406C131.146 85.957 131.412 85.8125 131.721 85.707C132.033 85.5977 132.381 85.543 132.764 85.543C133.225 85.543 133.631 85.6211 133.982 85.7773C134.338 85.9336 134.615 86.1699 134.814 86.4863C135.018 86.7988 135.119 87.1914 135.119 87.6641V90.6172C135.119 90.8281 135.137 91.0527 135.172 91.291C135.211 91.5293 135.268 91.7344 135.342 91.9062V92H134.211C134.156 91.875 134.113 91.709 134.082 91.502C134.051 91.291 134.035 91.0957 134.035 90.916ZM134.223 88.1562L134.234 88.918H133.139C132.83 88.918 132.555 88.9434 132.312 88.9941C132.07 89.041 131.867 89.1133 131.703 89.2109C131.539 89.3086 131.414 89.4316 131.328 89.5801C131.242 89.7246 131.199 89.8945 131.199 90.0898C131.199 90.2891 131.244 90.4707 131.334 90.6348C131.424 90.7988 131.559 90.9297 131.738 91.0273C131.922 91.1211 132.146 91.168 132.412 91.168C132.744 91.168 133.037 91.0977 133.291 90.957C133.545 90.8164 133.746 90.6445 133.895 90.4414C134.047 90.2383 134.129 90.041 134.141 89.8496L134.604 90.3711C134.576 90.5352 134.502 90.7168 134.381 90.916C134.26 91.1152 134.098 91.3066 133.895 91.4902C133.695 91.6699 133.457 91.8203 133.18 91.9414C132.906 92.0586 132.598 92.1172 132.254 92.1172C131.824 92.1172 131.447 92.0332 131.123 91.8652C130.803 91.6973 130.553 91.4727 130.373 91.1914C130.197 90.9062 130.109 90.5879 130.109 90.2363C130.109 89.8965 130.176 89.5977 130.309 89.3398C130.441 89.0781 130.633 88.8613 130.883 88.6895C131.133 88.5137 131.434 88.3809 131.785 88.291C132.137 88.2012 132.529 88.1562 132.963 88.1562H134.223Z\",\n fill: \"white\"\n});\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.619 91.5723C148.619 91.4355 148.662 91.3203 148.748 91.2266C148.838 91.1289 148.959 91.0801 149.111 91.0801C149.268 91.0801 149.391 91.1289 149.48 91.2266C149.57 91.3203 149.615 91.4355 149.615 91.5723C149.615 91.7051 149.57 91.8184 149.48 91.9121C149.391 92.0059 149.268 92.0527 149.111 92.0527C148.959 92.0527 148.838 92.0059 148.748 91.9121C148.662 91.8184 148.619 91.7051 148.619 91.5723Z\",\n fill: \"#1F1F1F\"\n});\nfunction SvgSelo7Dias(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 160,\n height: 96,\n viewBox: \"0 0 160 96\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelo7Dias);\nexport default __webpack_public_path__ + \"static/media/selo-7-dias.e28f4bcf.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M118.305 40C113.812 49.4598 104.17 56 93 56C81.8304 56 72.1884 49.4598 67.6945 40H70.4943C74.7868 48.0337 83.255 53.5 93 53.5C102.745 53.5 111.213 48.0337 115.506 40H118.305ZM118.305 16C113.812 6.54021 104.17 0 93 0C81.8304 0 72.1884 6.54021 67.6945 16H70.4943C74.7868 7.96634 83.255 2.5 93 2.5C102.745 2.5 111.213 7.96634 115.506 16H118.305ZM112.036 16C108.051 9.6905 101.015 5.5 93 5.5C84.9853 5.5 77.9494 9.6905 73.9637 16H76.9985C80.6474 11.1422 86.4567 8 93 8C99.5433 8 105.353 11.1422 109.001 16H112.036ZM112.036 40C108.051 46.3095 101.015 50.5 93 50.5C84.9853 50.5 77.9494 46.3095 73.9637 40H76.9985C80.6474 44.8578 86.4567 48 93 48C99.5433 48 105.353 44.8578 109.001 40H112.036ZM65.0002 27.8858C65.0001 27.9239 65 27.9619 65 28C65 28.0381 65.0001 28.0761 65.0002 28.1142V27.8858Z\",\n fill: \"white\"\n});\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123.329 28.9096L126.529 37H57.4709L60.6711 28.9096L60.6711 28.9096L60.8854 28.3678L61.0309 28L60.8854 27.6322L60.6711 27.0904L60.6711 27.0904L57.4709 19H126.529L123.329 27.0904L124.259 27.4582L123.329 27.0905L123.115 27.6322L122.969 28L123.115 28.3678L123.329 28.9095L124.259 28.5418L123.329 28.9096Z\",\n stroke: \"white\",\n strokeWidth: 2\n});\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.5522 27.8696V31.0225C71.4233 31.1693 71.2264 31.3268 70.9614 31.4951C70.7 31.6634 70.3652 31.8084 69.957 31.9302C69.5488 32.0483 69.0618 32.1074 68.4961 32.1074C67.984 32.1074 67.5186 32.0251 67.0996 31.8604C66.6807 31.6921 66.3208 31.4468 66.02 31.1245C65.7192 30.7987 65.4865 30.4012 65.3218 29.9321C65.1606 29.4631 65.0801 28.9259 65.0801 28.3208V27.8589C65.0801 27.2537 65.1606 26.7166 65.3218 26.2476C65.4829 25.7785 65.7103 25.3828 66.0039 25.0605C66.2975 24.7347 66.6466 24.4876 67.0513 24.3193C67.4559 24.151 67.9035 24.0669 68.394 24.0669C69.0923 24.0669 69.6634 24.1797 70.1074 24.4053C70.5514 24.6273 70.888 24.9352 71.1172 25.3291C71.3499 25.723 71.4932 26.1759 71.5469 26.688H69.8604C69.8245 26.4266 69.7529 26.201 69.6455 26.0112C69.5417 25.8215 69.3931 25.6764 69.1997 25.5762C69.0063 25.4723 68.7557 25.4204 68.4478 25.4204C68.2007 25.4204 67.9769 25.4723 67.7764 25.5762C67.5794 25.6764 67.4129 25.8286 67.2769 26.0327C67.1408 26.2368 67.0369 26.491 66.9653 26.7954C66.8937 27.0962 66.8579 27.4471 66.8579 27.8481V28.3208C66.8579 28.7218 66.8937 29.0745 66.9653 29.3789C67.0405 29.6833 67.1497 29.9375 67.293 30.1416C67.4362 30.3421 67.617 30.4943 67.8354 30.5981C68.0575 30.702 68.3153 30.7539 68.6089 30.7539C68.8381 30.7539 69.0314 30.736 69.189 30.7002C69.3465 30.6608 69.4754 30.6125 69.5757 30.5552C69.6759 30.4943 69.7511 30.4388 69.8013 30.3887V29.0889H68.4102V27.8696H71.5522ZM75.9995 25.6675L73.98 32H72.1108L75.0059 24.1797H76.1875L75.9995 25.6675ZM77.6753 32L75.6504 25.6675L75.4409 24.1797H76.6387L79.5444 32H77.6753ZM77.5894 29.0889V30.4424H73.5127V29.0889H77.5894ZM80.1943 24.1797H83.1968C83.7948 24.1797 84.3122 24.2692 84.749 24.4482C85.1895 24.6273 85.5278 24.8923 85.7642 25.2432C86.0005 25.5941 86.1187 26.0273 86.1187 26.543C86.1187 26.9727 86.0488 27.3379 85.9092 27.6387C85.7695 27.9395 85.5726 28.1883 85.3184 28.3853C85.0677 28.5822 84.7741 28.7415 84.4375 28.8633L83.8682 29.1748H81.3115L81.3008 27.8159H83.2021C83.4635 27.8159 83.6802 27.7694 83.8521 27.6763C84.0239 27.5832 84.1528 27.4525 84.2388 27.2842C84.3283 27.1123 84.373 26.9118 84.373 26.6826C84.373 26.4463 84.3283 26.2422 84.2388 26.0703C84.1493 25.8984 84.0168 25.7677 83.8413 25.6782C83.6694 25.5851 83.4546 25.5386 83.1968 25.5386H81.9453V32H80.1943V24.1797ZM84.5234 32L82.7671 28.5249L84.6147 28.5195L86.3979 31.9194V32H84.5234ZM90.5552 25.6675L88.5356 32H86.6665L89.5615 24.1797H90.7432L90.5552 25.6675ZM92.231 32L90.2061 25.6675L89.9966 24.1797H91.1943L94.1001 32H92.231ZM92.145 29.0889V30.4424H88.0684V29.0889H92.145ZM101.201 24.1797V32H99.4551L96.501 26.9458V32H94.75V24.1797H96.501L99.4604 29.2339V24.1797H101.201ZM105.976 24.1797V32H104.23V24.1797H105.976ZM108.355 24.1797V25.5386H101.899V24.1797H108.355ZM111.083 24.1797V32H109.338V24.1797H111.083ZM115.842 25.6675L113.823 32H111.954L114.849 24.1797H116.03L115.842 25.6675ZM117.518 32L115.493 25.6675L115.284 24.1797H116.481L119.387 32H117.518ZM117.432 29.0889V30.4424H113.355V29.0889H117.432Z\",\n fill: \"white\"\n});\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.0788 76V67.2727H17.522C18.1839 67.2727 18.7479 67.3991 19.2138 67.652C19.6797 67.902 20.0348 68.25 20.2791 68.696C20.5263 69.1392 20.6499 69.6506 20.6499 70.2301C20.6499 70.8097 20.5249 71.321 20.2749 71.7642C20.0249 72.2074 19.6626 72.5526 19.1882 72.7997C18.7166 73.0469 18.1456 73.1705 17.4751 73.1705H15.2805V71.6918H17.1768C17.532 71.6918 17.8246 71.6307 18.0547 71.5085C18.2876 71.3835 18.4609 71.2116 18.5746 70.9929C18.6911 70.7713 18.7493 70.517 18.7493 70.2301C18.7493 69.9403 18.6911 69.6875 18.5746 69.4716C18.4609 69.2528 18.2876 69.0838 18.0547 68.9645C17.8217 68.8423 17.5263 68.7812 17.1683 68.7812H15.924V76H14.0788ZM21.8143 76V69.4545H23.5742V70.5966H23.6424C23.7617 70.1903 23.962 69.8835 24.2433 69.6761C24.5245 69.4659 24.8484 69.3608 25.2148 69.3608C25.3058 69.3608 25.4038 69.3665 25.5089 69.3778C25.614 69.3892 25.7063 69.4048 25.7859 69.4247V71.0355C25.7006 71.0099 25.5827 70.9872 25.4322 70.9673C25.2816 70.9474 25.1438 70.9375 25.0188 70.9375C24.7518 70.9375 24.5131 70.9957 24.3029 71.1122C24.0955 71.2259 23.9308 71.3849 23.8086 71.5895C23.6893 71.794 23.6296 72.0298 23.6296 72.2969V76H21.8143ZM29.3771 76.1278C28.7152 76.1278 28.1428 75.9872 27.6598 75.706C27.1797 75.4219 26.8089 75.027 26.5476 74.5213C26.2862 74.0128 26.1555 73.4233 26.1555 72.7528C26.1555 72.0767 26.2862 71.4858 26.5476 70.9801C26.8089 70.4716 27.1797 70.0767 27.6598 69.7955C28.1428 69.5114 28.7152 69.3693 29.3771 69.3693C30.0391 69.3693 30.6101 69.5114 31.0902 69.7955C31.5732 70.0767 31.9453 70.4716 32.2067 70.9801C32.468 71.4858 32.5987 72.0767 32.5987 72.7528C32.5987 73.4233 32.468 74.0128 32.2067 74.5213C31.9453 75.027 31.5732 75.4219 31.0902 75.706C30.6101 75.9872 30.0391 76.1278 29.3771 76.1278ZM29.3857 74.7216C29.6868 74.7216 29.9382 74.6364 30.1399 74.4659C30.3416 74.2926 30.4936 74.0568 30.5959 73.7585C30.701 73.4602 30.7536 73.1207 30.7536 72.7401C30.7536 72.3594 30.701 72.0199 30.5959 71.7216C30.4936 71.4233 30.3416 71.1875 30.1399 71.0142C29.9382 70.8409 29.6868 70.7543 29.3857 70.7543C29.0817 70.7543 28.826 70.8409 28.6186 71.0142C28.4141 71.1875 28.2592 71.4233 28.1541 71.7216C28.0518 72.0199 28.0007 72.3594 28.0007 72.7401C28.0007 73.1207 28.0518 73.4602 28.1541 73.7585C28.2592 74.0568 28.4141 74.2926 28.6186 74.4659C28.826 74.6364 29.0817 74.7216 29.3857 74.7216ZM37.2607 69.4545V70.8182H33.3189V69.4545H37.2607ZM34.2138 67.8864H36.0291V73.9886C36.0291 74.1562 36.0547 74.2869 36.1058 74.3807C36.157 74.4716 36.228 74.5355 36.3189 74.5724C36.4126 74.6094 36.5206 74.6278 36.6428 74.6278C36.728 74.6278 36.8132 74.6207 36.8984 74.6065C36.9837 74.5895 37.049 74.5767 37.0945 74.5682L37.38 75.919C37.2891 75.9474 37.1612 75.9801 36.9964 76.017C36.8317 76.0568 36.6314 76.081 36.3956 76.0895C35.9581 76.1065 35.5746 76.0483 35.245 75.9148C34.9183 75.7812 34.6641 75.5739 34.4822 75.2926C34.3004 75.0114 34.2109 74.6562 34.2138 74.2273V67.8864ZM41.3558 76.1278C40.6825 76.1278 40.103 75.9915 39.6172 75.7188C39.1342 75.4432 38.7621 75.054 38.5007 74.5511C38.2393 74.0455 38.1087 73.4474 38.1087 72.7571C38.1087 72.0838 38.2393 71.4929 38.5007 70.9844C38.7621 70.4759 39.13 70.0795 39.6044 69.7955C40.0817 69.5114 40.6413 69.3693 41.2834 69.3693C41.7152 69.3693 42.1172 69.4389 42.4893 69.5781C42.8643 69.7145 43.1911 69.9205 43.4695 70.196C43.7507 70.4716 43.9695 70.8182 44.1257 71.2358C44.282 71.6506 44.3601 72.1364 44.3601 72.6932V73.1918H38.8331V72.0668H42.6513C42.6513 71.8054 42.5945 71.5739 42.4808 71.3722C42.3672 71.1705 42.2095 71.0128 42.0078 70.8991C41.8089 70.7827 41.5774 70.7244 41.3132 70.7244C41.0376 70.7244 40.7933 70.7884 40.5803 70.9162C40.37 71.0412 40.2053 71.2102 40.0859 71.4233C39.9666 71.6335 39.9055 71.8679 39.9027 72.1264V73.196C39.9027 73.5199 39.9624 73.7997 40.0817 74.0355C40.2038 74.2713 40.3757 74.4531 40.5973 74.581C40.8189 74.7088 41.0817 74.7727 41.3857 74.7727C41.5874 74.7727 41.772 74.7443 41.9396 74.6875C42.1072 74.6307 42.2507 74.5455 42.37 74.4318C42.4893 74.3182 42.5803 74.179 42.6428 74.0142L44.3217 74.125C44.2365 74.5284 44.0618 74.8807 43.7976 75.1818C43.5362 75.4801 43.1982 75.7131 42.7834 75.8807C42.3714 76.0455 41.8956 76.1278 41.3558 76.1278ZM48.5021 76.1278C47.8317 76.1278 47.255 75.9858 46.772 75.7017C46.2919 75.4148 45.9226 75.017 45.6641 74.5085C45.4084 74 45.2805 73.4148 45.2805 72.7528C45.2805 72.0824 45.4098 71.4943 45.6683 70.9886C45.9297 70.4801 46.3004 70.0838 46.7805 69.7997C47.2607 69.5128 47.8317 69.3693 48.4936 69.3693C49.0646 69.3693 49.5646 69.473 49.9936 69.6804C50.4226 69.8878 50.7621 70.179 51.0121 70.554C51.2621 70.929 51.3999 71.3693 51.4254 71.875H49.7124C49.6641 71.5483 49.5362 71.2855 49.3288 71.0866C49.1243 70.8849 48.8558 70.7841 48.5234 70.7841C48.2422 70.7841 47.9964 70.8608 47.7862 71.0142C47.5788 71.1648 47.4169 71.3849 47.3004 71.6747C47.1839 71.9645 47.1257 72.3153 47.1257 72.7273C47.1257 73.1449 47.1825 73.5 47.2962 73.7926C47.4126 74.0852 47.576 74.3082 47.7862 74.4616C47.9964 74.6151 48.2422 74.6918 48.5234 74.6918C48.7308 74.6918 48.9169 74.6491 49.0817 74.5639C49.2493 74.4787 49.3871 74.3551 49.495 74.1932C49.6058 74.0284 49.6783 73.831 49.7124 73.6009H51.4254C51.397 74.1009 51.2607 74.5412 51.0163 74.9219C50.7749 75.2997 50.4411 75.5952 50.0149 75.8082C49.5888 76.0213 49.0845 76.1278 48.5021 76.1278ZM48.076 75.9659H48.9112L48.843 76.3366C49.1357 76.3821 49.3743 76.4915 49.5589 76.6648C49.7464 76.8381 49.8416 77.0739 49.8445 77.3722C49.8473 77.7955 49.6513 78.1321 49.2564 78.3821C48.8615 78.6349 48.3075 78.7614 47.5945 78.7614L47.5774 77.9517C47.9354 77.9517 48.2152 77.9077 48.4169 77.8196C48.6214 77.7344 48.728 77.6009 48.7365 77.419C48.7422 77.2457 48.6754 77.1136 48.5362 77.0227C48.397 76.9318 48.1797 76.8679 47.8842 76.831L48.076 75.9659ZM54.4542 76.1236C54.0366 76.1236 53.6644 76.0511 53.3377 75.9062C53.011 75.7585 52.7525 75.5412 52.5621 75.2543C52.3746 74.9645 52.2809 74.6037 52.2809 74.1719C52.2809 73.8082 52.3477 73.5028 52.4812 73.2557C52.6147 73.0085 52.7965 72.8097 53.0266 72.6591C53.2567 72.5085 53.5181 72.3949 53.8107 72.3182C54.1062 72.2415 54.4158 72.1875 54.7397 72.1562C55.1204 72.1165 55.4272 72.0795 55.6602 72.0455C55.8931 72.0085 56.0621 71.9545 56.1673 71.8835C56.2724 71.8125 56.3249 71.7074 56.3249 71.5682V71.5426C56.3249 71.2727 56.2397 71.0639 56.0692 70.9162C55.9016 70.7685 55.663 70.6946 55.3533 70.6946C55.0266 70.6946 54.7667 70.767 54.5735 70.9119C54.3803 71.054 54.2525 71.233 54.19 71.4489L52.511 71.3125C52.5962 70.9148 52.7638 70.571 53.0138 70.2812C53.2638 69.9886 53.5863 69.7642 53.9812 69.608C54.3789 69.4489 54.8391 69.3693 55.3619 69.3693C55.7255 69.3693 56.0735 69.4119 56.4059 69.4972C56.7411 69.5824 57.038 69.7145 57.2965 69.8935C57.5579 70.0724 57.7638 70.3026 57.9144 70.5838C58.065 70.8622 58.1403 71.196 58.1403 71.5852V76H56.4187V75.0923H56.3675C56.2624 75.2969 56.1218 75.4773 55.9457 75.6335C55.7695 75.7869 55.5579 75.9077 55.3107 75.9957C55.0636 76.081 54.7781 76.1236 54.4542 76.1236ZM54.9741 74.8707C55.2411 74.8707 55.4769 74.8182 55.6815 74.7131C55.886 74.6051 56.0465 74.4602 56.163 74.2784C56.2795 74.0966 56.3377 73.8906 56.3377 73.6605V72.9659C56.2809 73.0028 56.2028 73.0369 56.1033 73.0682C56.0067 73.0966 55.8974 73.1236 55.7752 73.1491C55.6531 73.1719 55.5309 73.1932 55.4087 73.2131C55.2866 73.2301 55.1758 73.2457 55.0763 73.2599C54.8633 73.2912 54.6772 73.3409 54.5181 73.4091C54.359 73.4773 54.2354 73.5696 54.1474 73.6861C54.0593 73.7997 54.0153 73.9418 54.0153 74.1122C54.0153 74.3594 54.1048 74.5483 54.2837 74.679C54.4656 74.8068 54.6957 74.8707 54.9741 74.8707ZM54.2113 68.6491L53.2013 68.6364C53.2013 68.0938 53.3349 67.6776 53.6019 67.3878C53.8718 67.098 54.1999 66.9517 54.5863 66.9489C54.7852 66.9489 54.9556 66.9815 55.0977 67.0469C55.2425 67.1094 55.3718 67.1832 55.4854 67.2685C55.6019 67.3537 55.7127 67.429 55.8178 67.4943C55.9229 67.5568 56.0366 67.5881 56.1587 67.5881C56.3235 67.5852 56.4485 67.5241 56.5337 67.4048C56.6218 67.2827 56.6658 67.1236 56.6658 66.9276L57.6587 66.9574C57.6531 67.4943 57.5167 67.9091 57.2496 68.2017C56.9826 68.4915 56.6573 68.6378 56.2738 68.6406C56.0607 68.6406 55.8817 68.6094 55.7369 68.5469C55.5948 68.4815 55.4698 68.4077 55.3619 68.3253C55.2539 68.2401 55.1488 68.1648 55.0465 68.0994C54.9442 68.0341 54.8292 68.0014 54.7013 68.0014C54.5536 68.0014 54.4343 68.0597 54.3434 68.1761C54.2553 68.2926 54.2113 68.4503 54.2113 68.6491ZM62.506 76.1278C61.8441 76.1278 61.2717 75.9872 60.7887 75.706C60.3086 75.4219 59.9379 75.027 59.6765 74.5213C59.4151 74.0128 59.2844 73.4233 59.2844 72.7528C59.2844 72.0767 59.4151 71.4858 59.6765 70.9801C59.9379 70.4716 60.3086 70.0767 60.7887 69.7955C61.2717 69.5114 61.8441 69.3693 62.506 69.3693C63.168 69.3693 63.739 69.5114 64.2191 69.7955C64.7021 70.0767 65.0742 70.4716 65.3356 70.9801C65.5969 71.4858 65.7276 72.0767 65.7276 72.7528C65.7276 73.4233 65.5969 74.0128 65.3356 74.5213C65.0742 75.027 64.7021 75.4219 64.2191 75.706C63.739 75.9872 63.168 76.1278 62.506 76.1278ZM62.5146 74.7216C62.8157 74.7216 63.0671 74.6364 63.2688 74.4659C63.4705 74.2926 63.6225 74.0568 63.7248 73.7585C63.8299 73.4602 63.8825 73.1207 63.8825 72.7401C63.8825 72.3594 63.8299 72.0199 63.7248 71.7216C63.6225 71.4233 63.4705 71.1875 63.2688 71.0142C63.0671 70.8409 62.8157 70.7543 62.5146 70.7543C62.2106 70.7543 61.9549 70.8409 61.7475 71.0142C61.543 71.1875 61.3881 71.4233 61.283 71.7216C61.1808 72.0199 61.1296 72.3594 61.1296 72.7401C61.1296 73.1207 61.1808 73.4602 61.283 73.7585C61.3881 74.0568 61.543 74.2926 61.7475 74.4659C61.9549 74.6364 62.2106 74.7216 62.5146 74.7216ZM72.6428 76.1278C71.9723 76.1278 71.3956 75.9858 70.9126 75.7017C70.4325 75.4148 70.0632 75.017 69.8047 74.5085C69.549 74 69.4212 73.4148 69.4212 72.7528C69.4212 72.0824 69.5504 71.4943 69.8089 70.9886C70.0703 70.4801 70.4411 70.0838 70.9212 69.7997C71.4013 69.5128 71.9723 69.3693 72.6342 69.3693C73.2053 69.3693 73.7053 69.473 74.1342 69.6804C74.5632 69.8878 74.9027 70.179 75.1527 70.554C75.4027 70.929 75.5405 71.3693 75.5661 71.875H73.853C73.8047 71.5483 73.6768 71.2855 73.4695 71.0866C73.2649 70.8849 72.9964 70.7841 72.6641 70.7841C72.3828 70.7841 72.1371 70.8608 71.9268 71.0142C71.7195 71.1648 71.5575 71.3849 71.4411 71.6747C71.3246 71.9645 71.2663 72.3153 71.2663 72.7273C71.2663 73.1449 71.3232 73.5 71.4368 73.7926C71.5533 74.0852 71.7166 74.3082 71.9268 74.4616C72.1371 74.6151 72.3828 74.6918 72.6641 74.6918C72.8714 74.6918 73.0575 74.6491 73.2223 74.5639C73.3899 74.4787 73.5277 74.3551 73.6357 74.1932C73.7464 74.0284 73.8189 73.831 73.853 73.6009H75.5661C75.5376 74.1009 75.4013 74.5412 75.157 74.9219C74.9155 75.2997 74.5817 75.5952 74.1555 75.8082C73.7294 76.0213 73.2251 76.1278 72.6428 76.1278ZM79.6857 76.1278C79.0238 76.1278 78.4513 75.9872 77.9684 75.706C77.4883 75.4219 77.1175 75.027 76.8562 74.5213C76.5948 74.0128 76.4641 73.4233 76.4641 72.7528C76.4641 72.0767 76.5948 71.4858 76.8562 70.9801C77.1175 70.4716 77.4883 70.0767 77.9684 69.7955C78.4513 69.5114 79.0238 69.3693 79.6857 69.3693C80.3477 69.3693 80.9187 69.5114 81.3988 69.7955C81.8817 70.0767 82.2539 70.4716 82.5153 70.9801C82.7766 71.4858 82.9073 72.0767 82.9073 72.7528C82.9073 73.4233 82.7766 74.0128 82.5153 74.5213C82.2539 75.027 81.8817 75.4219 81.3988 75.706C80.9187 75.9872 80.3477 76.1278 79.6857 76.1278ZM79.6942 74.7216C79.9954 74.7216 80.2468 74.6364 80.4485 74.4659C80.6502 74.2926 80.8022 74.0568 80.9045 73.7585C81.0096 73.4602 81.0621 73.1207 81.0621 72.7401C81.0621 72.3594 81.0096 72.0199 80.9045 71.7216C80.8022 71.4233 80.6502 71.1875 80.4485 71.0142C80.2468 70.8409 79.9954 70.7543 79.6942 70.7543C79.3903 70.7543 79.1346 70.8409 78.9272 71.0142C78.7227 71.1875 78.5678 71.4233 78.4627 71.7216C78.3604 72.0199 78.3093 72.3594 78.3093 72.7401C78.3093 73.1207 78.3604 73.4602 78.4627 73.7585C78.5678 74.0568 78.7227 74.2926 78.9272 74.4659C79.1346 74.6364 79.3903 74.7216 79.6942 74.7216ZM85.9031 72.2159V76H84.0877V69.4545H85.8178V70.6094H85.8945C86.0394 70.2287 86.2823 69.9276 86.6232 69.706C86.9641 69.4815 87.3775 69.3693 87.8633 69.3693C88.3178 69.3693 88.7141 69.4688 89.0522 69.6676C89.3903 69.8665 89.6531 70.1506 89.8406 70.5199C90.0281 70.8864 90.1218 71.3239 90.1218 71.8324V76H88.3065V72.1562C88.3093 71.7557 88.207 71.4432 87.9996 71.2188C87.7923 70.9915 87.5067 70.8778 87.1431 70.8778C86.8988 70.8778 86.6829 70.9304 86.4954 71.0355C86.3107 71.1406 86.1658 71.294 86.0607 71.4957C85.9585 71.6946 85.9059 71.9347 85.9031 72.2159ZM95.0341 69.4545V70.8182H91.0923V69.4545H95.0341ZM91.9872 67.8864H93.8026V73.9886C93.8026 74.1562 93.8281 74.2869 93.8793 74.3807C93.9304 74.4716 94.0014 74.5355 94.0923 74.5724C94.1861 74.6094 94.294 74.6278 94.4162 74.6278C94.5014 74.6278 94.5866 74.6207 94.6719 74.6065C94.7571 74.5895 94.8224 74.5767 94.8679 74.5682L95.1534 75.919C95.0625 75.9474 94.9347 75.9801 94.7699 76.017C94.6051 76.0568 94.4048 76.081 94.169 76.0895C93.7315 76.1065 93.348 76.0483 93.0185 75.9148C92.6918 75.7812 92.4375 75.5739 92.2557 75.2926C92.0739 75.0114 91.9844 74.6562 91.9872 74.2273V67.8864ZM96.2166 76V69.4545H97.9766V70.5966H98.0447C98.1641 70.1903 98.3643 69.8835 98.6456 69.6761C98.9268 69.4659 99.2507 69.3608 99.6172 69.3608C99.7081 69.3608 99.8061 69.3665 99.9112 69.3778C100.016 69.3892 100.109 69.4048 100.188 69.4247V71.0355C100.103 71.0099 99.9851 70.9872 99.8345 70.9673C99.6839 70.9474 99.5462 70.9375 99.4212 70.9375C99.1541 70.9375 98.9155 70.9957 98.7053 71.1122C98.4979 71.2259 98.3331 71.3849 98.2109 71.5895C98.0916 71.794 98.032 72.0298 98.032 72.2969V76H96.2166ZM102.806 76.1236C102.388 76.1236 102.016 76.0511 101.689 75.9062C101.363 75.7585 101.104 75.5412 100.914 75.2543C100.726 74.9645 100.632 74.6037 100.632 74.1719C100.632 73.8082 100.699 73.5028 100.833 73.2557C100.966 73.0085 101.148 72.8097 101.378 72.6591C101.608 72.5085 101.87 72.3949 102.162 72.3182C102.458 72.2415 102.767 72.1875 103.091 72.1562C103.472 72.1165 103.779 72.0795 104.012 72.0455C104.245 72.0085 104.414 71.9545 104.519 71.8835C104.624 71.8125 104.676 71.7074 104.676 71.5682V71.5426C104.676 71.2727 104.591 71.0639 104.421 70.9162C104.253 70.7685 104.015 70.6946 103.705 70.6946C103.378 70.6946 103.118 70.767 102.925 70.9119C102.732 71.054 102.604 71.233 102.542 71.4489L100.863 71.3125C100.948 70.9148 101.115 70.571 101.365 70.2812C101.615 69.9886 101.938 69.7642 102.333 69.608C102.73 69.4489 103.191 69.3693 103.713 69.3693C104.077 69.3693 104.425 69.4119 104.757 69.4972C105.093 69.5824 105.39 69.7145 105.648 69.8935C105.909 70.0724 106.115 70.3026 106.266 70.5838C106.417 70.8622 106.492 71.196 106.492 71.5852V76H104.77V75.0923H104.719C104.614 75.2969 104.473 75.4773 104.297 75.6335C104.121 75.7869 103.909 75.9077 103.662 75.9957C103.415 76.081 103.13 76.1236 102.806 76.1236ZM103.326 74.8707C103.593 74.8707 103.828 74.8182 104.033 74.7131C104.238 74.6051 104.398 74.4602 104.515 74.2784C104.631 74.0966 104.689 73.8906 104.689 73.6605V72.9659C104.632 73.0028 104.554 73.0369 104.455 73.0682C104.358 73.0966 104.249 73.1236 104.127 73.1491C104.005 73.1719 103.882 73.1932 103.76 73.2131C103.638 73.2301 103.527 73.2457 103.428 73.2599C103.215 73.2912 103.029 73.3409 102.87 73.4091C102.711 73.4773 102.587 73.5696 102.499 73.6861C102.411 73.7997 102.367 73.9418 102.367 74.1122C102.367 74.3594 102.456 74.5483 102.635 74.679C102.817 74.8068 103.047 74.8707 103.326 74.8707ZM110.678 76V69.4545H112.408V70.6094H112.484C112.621 70.2259 112.848 69.9233 113.166 69.7017C113.484 69.4801 113.865 69.3693 114.308 69.3693C114.757 69.3693 115.139 69.4815 115.455 69.706C115.77 69.9276 115.98 70.2287 116.085 70.6094H116.153C116.287 70.2344 116.528 69.9347 116.878 69.7102C117.23 69.483 117.646 69.3693 118.126 69.3693C118.737 69.3693 119.233 69.5639 119.614 69.9531C119.997 70.3395 120.189 70.8878 120.189 71.598V76H118.378V71.956C118.378 71.5923 118.281 71.3196 118.088 71.1378C117.895 70.956 117.653 70.8651 117.364 70.8651C117.034 70.8651 116.777 70.9702 116.592 71.1804C116.408 71.3878 116.315 71.6619 116.315 72.0028V76H114.555V71.9176C114.555 71.5966 114.463 71.3409 114.278 71.1506C114.097 70.9602 113.857 70.8651 113.558 70.8651C113.357 70.8651 113.175 70.9162 113.013 71.0185C112.854 71.1179 112.727 71.2585 112.634 71.4403C112.54 71.6193 112.493 71.8295 112.493 72.071V76H110.678ZM123.489 76.1236C123.072 76.1236 122.7 76.0511 122.373 75.9062C122.046 75.7585 121.788 75.5412 121.597 75.2543C121.41 74.9645 121.316 74.6037 121.316 74.1719C121.316 73.8082 121.383 73.5028 121.516 73.2557C121.65 73.0085 121.832 72.8097 122.062 72.6591C122.292 72.5085 122.553 72.3949 122.846 72.3182C123.141 72.2415 123.451 72.1875 123.775 72.1562C124.156 72.1165 124.462 72.0795 124.695 72.0455C124.928 72.0085 125.097 71.9545 125.202 71.8835C125.308 71.8125 125.36 71.7074 125.36 71.5682V71.5426C125.36 71.2727 125.275 71.0639 125.104 70.9162C124.937 70.7685 124.698 70.6946 124.388 70.6946C124.062 70.6946 123.802 70.767 123.609 70.9119C123.415 71.054 123.288 71.233 123.225 71.4489L121.546 71.3125C121.631 70.9148 121.799 70.571 122.049 70.2812C122.299 69.9886 122.621 69.7642 123.016 69.608C123.414 69.4489 123.874 69.3693 124.397 69.3693C124.761 69.3693 125.109 69.4119 125.441 69.4972C125.776 69.5824 126.073 69.7145 126.332 69.8935C126.593 70.0724 126.799 70.3026 126.95 70.5838C127.1 70.8622 127.175 71.196 127.175 71.5852V76H125.454V75.0923H125.403C125.298 75.2969 125.157 75.4773 124.981 75.6335C124.805 75.7869 124.593 75.9077 124.346 75.9957C124.099 76.081 123.813 76.1236 123.489 76.1236ZM124.009 74.8707C124.276 74.8707 124.512 74.8182 124.717 74.7131C124.921 74.6051 125.082 74.4602 125.198 74.2784C125.315 74.0966 125.373 73.8906 125.373 73.6605V72.9659C125.316 73.0028 125.238 73.0369 125.138 73.0682C125.042 73.0966 124.933 73.1236 124.81 73.1491C124.688 73.1719 124.566 73.1932 124.444 73.2131C124.322 73.2301 124.211 73.2457 124.112 73.2599C123.898 73.2912 123.712 73.3409 123.553 73.4091C123.394 73.4773 123.271 73.5696 123.183 73.6861C123.094 73.7997 123.05 73.9418 123.05 74.1122C123.05 74.3594 123.14 74.5483 123.319 74.679C123.501 74.8068 123.731 74.8707 124.009 74.8707ZM130.399 67.2727V76H128.584V67.2727H130.399ZM133.669 72.2159V76H131.853V67.2727H133.618V70.6094H133.694C133.842 70.223 134.081 69.9205 134.41 69.7017C134.74 69.4801 135.153 69.3693 135.65 69.3693C136.105 69.3693 136.501 69.4688 136.839 69.6676C137.18 69.8636 137.444 70.1463 137.632 70.5156C137.822 70.8821 137.916 71.321 137.913 71.8324V76H136.098V72.1562C136.1 71.7528 135.998 71.4389 135.791 71.2145C135.586 70.9901 135.299 70.8778 134.93 70.8778C134.683 70.8778 134.464 70.9304 134.274 71.0355C134.086 71.1406 133.939 71.294 133.831 71.4957C133.725 71.6946 133.672 71.9347 133.669 72.2159ZM141.208 76.1236C140.79 76.1236 140.418 76.0511 140.092 75.9062C139.765 75.7585 139.506 75.5412 139.316 75.2543C139.129 74.9645 139.035 74.6037 139.035 74.1719C139.035 73.8082 139.102 73.5028 139.235 73.2557C139.369 73.0085 139.55 72.8097 139.781 72.6591C140.011 72.5085 140.272 72.3949 140.565 72.3182C140.86 72.2415 141.17 72.1875 141.494 72.1562C141.874 72.1165 142.181 72.0795 142.414 72.0455C142.647 72.0085 142.816 71.9545 142.921 71.8835C143.026 71.8125 143.079 71.7074 143.079 71.5682V71.5426C143.079 71.2727 142.994 71.0639 142.823 70.9162C142.656 70.7685 142.417 70.6946 142.107 70.6946C141.781 70.6946 141.521 70.767 141.327 70.9119C141.134 71.054 141.006 71.233 140.944 71.4489L139.265 71.3125C139.35 70.9148 139.518 70.571 139.768 70.2812C140.018 69.9886 140.34 69.7642 140.735 69.608C141.133 69.4489 141.593 69.3693 142.116 69.3693C142.479 69.3693 142.827 69.4119 143.16 69.4972C143.495 69.5824 143.792 69.7145 144.05 69.8935C144.312 70.0724 144.518 70.3026 144.668 70.5838C144.819 70.8622 144.894 71.196 144.894 71.5852V76H143.173V75.0923H143.121C143.016 75.2969 142.876 75.4773 142.7 75.6335C142.523 75.7869 142.312 75.9077 142.065 75.9957C141.817 76.081 141.532 76.1236 141.208 76.1236ZM141.728 74.8707C141.995 74.8707 142.231 74.8182 142.435 74.7131C142.64 74.6051 142.8 74.4602 142.917 74.2784C143.033 74.0966 143.092 73.8906 143.092 73.6605V72.9659C143.035 73.0028 142.957 73.0369 142.857 73.0682C142.761 73.0966 142.651 73.1236 142.529 73.1491C142.407 73.1719 142.285 73.1932 142.163 73.2131C142.04 73.2301 141.93 73.2457 141.83 73.2599C141.617 73.2912 141.431 73.3409 141.272 73.4091C141.113 73.4773 140.989 73.5696 140.901 73.6861C140.813 73.7997 140.769 73.9418 140.769 74.1122C140.769 74.3594 140.859 74.5483 141.038 74.679C141.219 74.8068 141.45 74.8707 141.728 74.8707ZM152.6 69.4545V70.8182H148.56V69.4545H152.6ZM149.485 76V68.9815C149.485 68.5071 149.577 68.1136 149.762 67.8011C149.949 67.4886 150.205 67.2543 150.529 67.098C150.853 66.9418 151.221 66.8636 151.632 66.8636C151.911 66.8636 152.165 66.8849 152.395 66.9276C152.628 66.9702 152.801 67.0085 152.915 67.0426L152.591 68.4062C152.52 68.3835 152.432 68.3622 152.327 68.3423C152.225 68.3224 152.12 68.3125 152.012 68.3125C151.745 68.3125 151.559 68.375 151.453 68.5C151.348 68.6222 151.296 68.794 151.296 69.0156V76H149.485ZM153.709 76V69.4545H155.524V76H153.709ZM154.621 68.6108C154.351 68.6108 154.119 68.5213 153.926 68.3423C153.736 68.1605 153.641 67.9432 153.641 67.6903C153.641 67.4403 153.736 67.2259 153.926 67.0469C154.119 66.8651 154.351 66.7741 154.621 66.7741C154.891 66.7741 155.121 66.8651 155.311 67.0469C155.504 67.2259 155.601 67.4403 155.601 67.6903C155.601 67.9432 155.504 68.1605 155.311 68.3423C155.121 68.5213 154.891 68.6108 154.621 68.6108ZM158.794 72.2159V76H156.978V69.4545H158.708V70.6094H158.785C158.93 70.2287 159.173 69.9276 159.514 69.706C159.855 69.4815 160.268 69.3693 160.754 69.3693C161.208 69.3693 161.605 69.4688 161.943 69.6676C162.281 69.8665 162.544 70.1506 162.731 70.5199C162.919 70.8864 163.012 71.3239 163.012 71.8324V76H161.197V72.1562C161.2 71.7557 161.098 71.4432 160.89 71.2188C160.683 70.9915 160.397 70.8778 160.034 70.8778C159.789 70.8778 159.574 70.9304 159.386 71.0355C159.201 71.1406 159.056 71.294 158.951 71.4957C158.849 71.6946 158.797 71.9347 158.794 72.2159ZM166.31 76.1236C165.892 76.1236 165.52 76.0511 165.193 75.9062C164.866 75.7585 164.608 75.5412 164.418 75.2543C164.23 74.9645 164.136 74.6037 164.136 74.1719C164.136 73.8082 164.203 73.5028 164.337 73.2557C164.47 73.0085 164.652 72.8097 164.882 72.6591C165.112 72.5085 165.374 72.3949 165.666 72.3182C165.962 72.2415 166.271 72.1875 166.595 72.1562C166.976 72.1165 167.283 72.0795 167.516 72.0455C167.749 72.0085 167.918 71.9545 168.023 71.8835C168.128 71.8125 168.18 71.7074 168.18 71.5682V71.5426C168.18 71.2727 168.095 71.0639 167.925 70.9162C167.757 70.7685 167.518 70.6946 167.209 70.6946C166.882 70.6946 166.622 70.767 166.429 70.9119C166.236 71.054 166.108 71.233 166.045 71.4489L164.366 71.3125C164.452 70.9148 164.619 70.571 164.869 70.2812C165.119 69.9886 165.442 69.7642 165.837 69.608C166.234 69.4489 166.695 69.3693 167.217 69.3693C167.581 69.3693 167.929 69.4119 168.261 69.4972C168.597 69.5824 168.893 69.7145 169.152 69.8935C169.413 70.0724 169.619 70.3026 169.77 70.5838C169.92 70.8622 169.996 71.196 169.996 71.5852V76H168.274V75.0923H168.223C168.118 75.2969 167.977 75.4773 167.801 75.6335C167.625 75.7869 167.413 75.9077 167.166 75.9957C166.919 76.081 166.634 76.1236 166.31 76.1236ZM166.83 74.8707C167.097 74.8707 167.332 74.8182 167.537 74.7131C167.741 74.6051 167.902 74.4602 168.018 74.2784C168.135 74.0966 168.193 73.8906 168.193 73.6605V72.9659C168.136 73.0028 168.058 73.0369 167.959 73.0682C167.862 73.0966 167.753 73.1236 167.631 73.1491C167.509 73.1719 167.386 73.1932 167.264 73.2131C167.142 73.2301 167.031 73.2457 166.932 73.2599C166.719 73.2912 166.533 73.3409 166.374 73.4091C166.214 73.4773 166.091 73.5696 166.003 73.6861C165.915 73.7997 165.871 73.9418 165.871 74.1122C165.871 74.3594 165.96 74.5483 166.139 74.679C166.321 74.8068 166.551 74.8707 166.83 74.8707ZM35.0762 91.2266C35.334 91.2266 35.5723 91.1738 35.791 91.0684C36.0098 90.9629 36.1895 90.8184 36.3301 90.6348C36.4707 90.4473 36.5508 90.2344 36.5703 89.9961H37.6016C37.582 90.3711 37.4551 90.7207 37.2207 91.0449C36.9902 91.3652 36.6875 91.625 36.3125 91.8242C35.9375 92.0195 35.5254 92.1172 35.0762 92.1172C34.5996 92.1172 34.1836 92.0332 33.8281 91.8652C33.4766 91.6973 33.1836 91.4668 32.9492 91.1738C32.7188 90.8809 32.5449 90.5449 32.4277 90.166C32.3145 89.7832 32.2578 89.3789 32.2578 88.9531V88.707C32.2578 88.2812 32.3145 87.8789 32.4277 87.5C32.5449 87.1172 32.7188 86.7793 32.9492 86.4863C33.1836 86.1934 33.4766 85.9629 33.8281 85.7949C34.1836 85.627 34.5996 85.543 35.0762 85.543C35.5723 85.543 36.0059 85.6445 36.377 85.8477C36.748 86.0469 37.0391 86.3203 37.25 86.668C37.4648 87.0117 37.582 87.4023 37.6016 87.8398H36.5703C36.5508 87.5781 36.4766 87.3418 36.3477 87.1309C36.2227 86.9199 36.0508 86.752 35.832 86.627C35.6172 86.498 35.3652 86.4336 35.0762 86.4336C34.7441 86.4336 34.4648 86.5 34.2383 86.6328C34.0156 86.7617 33.8379 86.9375 33.7051 87.1602C33.5762 87.3789 33.4824 87.623 33.4238 87.8926C33.3691 88.1582 33.3418 88.4297 33.3418 88.707V88.9531C33.3418 89.2305 33.3691 89.5039 33.4238 89.7734C33.4785 90.043 33.5703 90.2871 33.6992 90.5059C33.832 90.7246 34.0098 90.9004 34.2324 91.0332C34.459 91.1621 34.7402 91.2266 35.0762 91.2266ZM38.5332 88.9004V88.7656C38.5332 88.3086 38.5996 87.8848 38.7324 87.4941C38.8652 87.0996 39.0566 86.7578 39.3066 86.4688C39.5566 86.1758 39.8594 85.9492 40.2148 85.7891C40.5703 85.625 40.9688 85.543 41.4102 85.543C41.8555 85.543 42.2559 85.625 42.6113 85.7891C42.9707 85.9492 43.2754 86.1758 43.5254 86.4688C43.7793 86.7578 43.9727 87.0996 44.1055 87.4941C44.2383 87.8848 44.3047 88.3086 44.3047 88.7656V88.9004C44.3047 89.3574 44.2383 89.7812 44.1055 90.1719C43.9727 90.5625 43.7793 90.9043 43.5254 91.1973C43.2754 91.4863 42.9727 91.7129 42.6172 91.877C42.2656 92.0371 41.8672 92.1172 41.4219 92.1172C40.9766 92.1172 40.5762 92.0371 40.2207 91.877C39.8652 91.7129 39.5605 91.4863 39.3066 91.1973C39.0566 90.9043 38.8652 90.5625 38.7324 90.1719C38.5996 89.7812 38.5332 89.3574 38.5332 88.9004ZM39.6172 88.7656V88.9004C39.6172 89.2168 39.6543 89.5156 39.7285 89.7969C39.8027 90.0742 39.9141 90.3203 40.0625 90.5352C40.2148 90.75 40.4043 90.9199 40.6309 91.0449C40.8574 91.166 41.1211 91.2266 41.4219 91.2266C41.7188 91.2266 41.9785 91.166 42.2012 91.0449C42.4277 90.9199 42.6152 90.75 42.7637 90.5352C42.9121 90.3203 43.0234 90.0742 43.0977 89.7969C43.1758 89.5156 43.2148 89.2168 43.2148 88.9004V88.7656C43.2148 88.4531 43.1758 88.1582 43.0977 87.8809C43.0234 87.5996 42.9102 87.3516 42.7578 87.1367C42.6094 86.918 42.4219 86.7461 42.1953 86.6211C41.9727 86.4961 41.7109 86.4336 41.4102 86.4336C41.1133 86.4336 40.8516 86.4961 40.625 86.6211C40.4023 86.7461 40.2148 86.918 40.0625 87.1367C39.9141 87.3516 39.8027 87.5996 39.7285 87.8809C39.6543 88.1582 39.6172 88.4531 39.6172 88.7656ZM46.7422 86.9199V92H45.6523V85.6602H46.6836L46.7422 86.9199ZM46.5195 88.5898L46.0156 88.5723C46.0195 88.1387 46.0762 87.7383 46.1855 87.3711C46.2949 87 46.457 86.6777 46.6719 86.4043C46.8867 86.1309 47.1543 85.9199 47.4746 85.7715C47.7949 85.6191 48.166 85.543 48.5879 85.543C48.8848 85.543 49.1582 85.5859 49.4082 85.6719C49.6582 85.7539 49.875 85.8848 50.0586 86.0645C50.2422 86.2441 50.3848 86.4746 50.4863 86.7559C50.5879 87.0371 50.6387 87.377 50.6387 87.7754V92H49.5547V87.8281C49.5547 87.4961 49.498 87.2305 49.3848 87.0312C49.2754 86.832 49.1191 86.6875 48.916 86.5977C48.7129 86.5039 48.4746 86.457 48.2012 86.457C47.8809 86.457 47.6133 86.5137 47.3984 86.627C47.1836 86.7402 47.0117 86.8965 46.8828 87.0957C46.7539 87.2949 46.6602 87.5234 46.6016 87.7812C46.5469 88.0352 46.5195 88.3047 46.5195 88.5898ZM50.627 87.9922L49.9004 88.2148C49.9043 87.8672 49.9609 87.5332 50.0703 87.2129C50.1836 86.8926 50.3457 86.6074 50.5566 86.3574C50.7715 86.1074 51.0352 85.9102 51.3477 85.7656C51.6602 85.6172 52.0176 85.543 52.4199 85.543C52.7598 85.543 53.0605 85.5879 53.3223 85.6777C53.5879 85.7676 53.8105 85.9062 53.9902 86.0938C54.1738 86.2773 54.3125 86.5137 54.4062 86.8027C54.5 87.0918 54.5469 87.4355 54.5469 87.834V92H53.457V87.8223C53.457 87.4668 53.4004 87.1914 53.2871 86.9961C53.1777 86.7969 53.0215 86.6582 52.8184 86.5801C52.6191 86.498 52.3809 86.457 52.1035 86.457C51.8652 86.457 51.6543 86.498 51.4707 86.5801C51.2871 86.6621 51.1328 86.7754 51.0078 86.9199C50.8828 87.0605 50.7871 87.2227 50.7207 87.4062C50.6582 87.5898 50.627 87.7852 50.627 87.9922ZM62.6094 83.4219V92H61.5254V84.7754L59.3398 85.5723V84.5938L62.4395 83.4219H62.6094ZM71.1523 87.0547V88.3555C71.1523 89.0547 71.0898 89.6445 70.9648 90.125C70.8398 90.6055 70.6602 90.9922 70.4258 91.2852C70.1914 91.5781 69.9082 91.791 69.5762 91.9238C69.248 92.0527 68.877 92.1172 68.4629 92.1172C68.1348 92.1172 67.832 92.0762 67.5547 91.9941C67.2773 91.9121 67.0273 91.7812 66.8047 91.6016C66.5859 91.418 66.3984 91.1797 66.2422 90.8867C66.0859 90.5938 65.9668 90.2383 65.8848 89.8203C65.8027 89.4023 65.7617 88.9141 65.7617 88.3555V87.0547C65.7617 86.3555 65.8242 85.7695 65.9492 85.2969C66.0781 84.8242 66.2598 84.4453 66.4941 84.1602C66.7285 83.8711 67.0098 83.6641 67.3379 83.5391C67.6699 83.4141 68.041 83.3516 68.4512 83.3516C68.7832 83.3516 69.0879 83.3926 69.3652 83.4746C69.6465 83.5527 69.8965 83.6797 70.1152 83.8555C70.334 84.0273 70.5195 84.2578 70.6719 84.5469C70.8281 84.832 70.9473 85.1816 71.0293 85.5957C71.1113 86.0098 71.1523 86.4961 71.1523 87.0547ZM70.0625 88.5312V86.873C70.0625 86.4902 70.0391 86.1543 69.9922 85.8652C69.9492 85.5723 69.8848 85.3223 69.7988 85.1152C69.7129 84.9082 69.6035 84.7402 69.4707 84.6113C69.3418 84.4824 69.1914 84.3887 69.0195 84.3301C68.8516 84.2676 68.6621 84.2363 68.4512 84.2363C68.1934 84.2363 67.9648 84.2852 67.7656 84.3828C67.5664 84.4766 67.3984 84.627 67.2617 84.834C67.1289 85.041 67.0273 85.3125 66.957 85.6484C66.8867 85.9844 66.8516 86.3926 66.8516 86.873V88.5312C66.8516 88.9141 66.873 89.252 66.916 89.5449C66.9629 89.8379 67.0312 90.0918 67.1211 90.3066C67.2109 90.5176 67.3203 90.6914 67.4492 90.8281C67.5781 90.9648 67.7266 91.0664 67.8945 91.1328C68.0664 91.1953 68.2559 91.2266 68.4629 91.2266C68.7285 91.2266 68.9609 91.1758 69.1602 91.0742C69.3594 90.9727 69.5254 90.8145 69.6582 90.5996C69.7949 90.3809 69.8965 90.1016 69.9629 89.7617C70.0293 89.418 70.0625 89.0078 70.0625 88.5312ZM77.9023 87.0547V88.3555C77.9023 89.0547 77.8398 89.6445 77.7148 90.125C77.5898 90.6055 77.4102 90.9922 77.1758 91.2852C76.9414 91.5781 76.6582 91.791 76.3262 91.9238C75.998 92.0527 75.627 92.1172 75.2129 92.1172C74.8848 92.1172 74.582 92.0762 74.3047 91.9941C74.0273 91.9121 73.7773 91.7812 73.5547 91.6016C73.3359 91.418 73.1484 91.1797 72.9922 90.8867C72.8359 90.5938 72.7168 90.2383 72.6348 89.8203C72.5527 89.4023 72.5117 88.9141 72.5117 88.3555V87.0547C72.5117 86.3555 72.5742 85.7695 72.6992 85.2969C72.8281 84.8242 73.0098 84.4453 73.2441 84.1602C73.4785 83.8711 73.7598 83.6641 74.0879 83.5391C74.4199 83.4141 74.791 83.3516 75.2012 83.3516C75.5332 83.3516 75.8379 83.3926 76.1152 83.4746C76.3965 83.5527 76.6465 83.6797 76.8652 83.8555C77.084 84.0273 77.2695 84.2578 77.4219 84.5469C77.5781 84.832 77.6973 85.1816 77.7793 85.5957C77.8613 86.0098 77.9023 86.4961 77.9023 87.0547ZM76.8125 88.5312V86.873C76.8125 86.4902 76.7891 86.1543 76.7422 85.8652C76.6992 85.5723 76.6348 85.3223 76.5488 85.1152C76.4629 84.9082 76.3535 84.7402 76.2207 84.6113C76.0918 84.4824 75.9414 84.3887 75.7695 84.3301C75.6016 84.2676 75.4121 84.2363 75.2012 84.2363C74.9434 84.2363 74.7148 84.2852 74.5156 84.3828C74.3164 84.4766 74.1484 84.627 74.0117 84.834C73.8789 85.041 73.7773 85.3125 73.707 85.6484C73.6367 85.9844 73.6016 86.3926 73.6016 86.873V88.5312C73.6016 88.9141 73.623 89.252 73.666 89.5449C73.7129 89.8379 73.7812 90.0918 73.8711 90.3066C73.9609 90.5176 74.0703 90.6914 74.1992 90.8281C74.3281 90.9648 74.4766 91.0664 74.6445 91.1328C74.8164 91.1953 75.0059 91.2266 75.2129 91.2266C75.4785 91.2266 75.7109 91.1758 75.9102 91.0742C76.1094 90.9727 76.2754 90.8145 76.4082 90.5996C76.5449 90.3809 76.6465 90.1016 76.7129 89.7617C76.7793 89.418 76.8125 89.0078 76.8125 88.5312ZM79.2031 85.5605V85.1094C79.2031 84.7852 79.2734 84.4902 79.4141 84.2246C79.5547 83.959 79.7559 83.7461 80.0176 83.5859C80.2793 83.4258 80.5898 83.3457 80.9492 83.3457C81.3164 83.3457 81.6289 83.4258 81.8867 83.5859C82.1484 83.7461 82.3496 83.959 82.4902 84.2246C82.6309 84.4902 82.7012 84.7852 82.7012 85.1094V85.5605C82.7012 85.877 82.6309 86.168 82.4902 86.4336C82.3535 86.6992 82.1543 86.9121 81.8926 87.0723C81.6348 87.2324 81.3242 87.3125 80.9609 87.3125C80.5977 87.3125 80.2832 87.2324 80.0176 87.0723C79.7559 86.9121 79.5547 86.6992 79.4141 86.4336C79.2734 86.168 79.2031 85.877 79.2031 85.5605ZM80.0176 85.1094V85.5605C80.0176 85.7402 80.0508 85.9102 80.1172 86.0703C80.1875 86.2305 80.293 86.3613 80.4336 86.4629C80.5742 86.5605 80.75 86.6094 80.9609 86.6094C81.1719 86.6094 81.3457 86.5605 81.4824 86.4629C81.6191 86.3613 81.7207 86.2305 81.7871 86.0703C81.8535 85.9102 81.8867 85.7402 81.8867 85.5605V85.1094C81.8867 84.9258 81.8516 84.7539 81.7812 84.5938C81.7148 84.4297 81.6113 84.2988 81.4707 84.2012C81.334 84.0996 81.1602 84.0488 80.9492 84.0488C80.7422 84.0488 80.5684 84.0996 80.4277 84.2012C80.291 84.2988 80.1875 84.4297 80.1172 84.5938C80.0508 84.7539 80.0176 84.9258 80.0176 85.1094ZM83.3574 90.3652V89.9082C83.3574 89.5879 83.4277 89.2949 83.5684 89.0293C83.709 88.7637 83.9102 88.5508 84.1719 88.3906C84.4336 88.2305 84.7441 88.1504 85.1035 88.1504C85.4707 88.1504 85.7832 88.2305 86.041 88.3906C86.3027 88.5508 86.5039 88.7637 86.6445 89.0293C86.7852 89.2949 86.8555 89.5879 86.8555 89.9082V90.3652C86.8555 90.6855 86.7852 90.9785 86.6445 91.2441C86.5078 91.5098 86.3086 91.7227 86.0469 91.8828C85.7891 92.043 85.4785 92.123 85.1152 92.123C84.752 92.123 84.4395 92.043 84.1777 91.8828C83.916 91.7227 83.7129 91.5098 83.5684 91.2441C83.4277 90.9785 83.3574 90.6855 83.3574 90.3652ZM84.1719 89.9082V90.3652C84.1719 90.5449 84.2051 90.7168 84.2715 90.8809C84.3418 91.041 84.4473 91.1719 84.5879 91.2734C84.7285 91.3711 84.9043 91.4199 85.1152 91.4199C85.3262 91.4199 85.5 91.3711 85.6367 91.2734C85.7773 91.1719 85.8809 91.041 85.9473 90.8809C86.0137 90.7207 86.0469 90.5488 86.0469 90.3652V89.9082C86.0469 89.7246 86.0117 89.5527 85.9414 89.3926C85.875 89.2324 85.7715 89.1035 85.6309 89.0059C85.4941 88.9043 85.3184 88.8535 85.1035 88.8535C84.8965 88.8535 84.7227 88.9043 84.582 89.0059C84.4453 89.1035 84.3418 89.2324 84.2715 89.3926C84.2051 89.5527 84.1719 89.7246 84.1719 89.9082ZM85.373 84.6816L81.207 91.3496L80.5977 90.9629L84.7637 84.2949L85.373 84.6816ZM95.1758 90.7695V83H96.2656V92H95.2695L95.1758 90.7695ZM90.9102 88.9004V88.7773C90.9102 88.293 90.9688 87.8535 91.0859 87.459C91.207 87.0605 91.377 86.7188 91.5957 86.4336C91.8184 86.1484 92.082 85.9297 92.3867 85.7773C92.6953 85.6211 93.0391 85.543 93.418 85.543C93.8164 85.543 94.1641 85.6133 94.4609 85.7539C94.7617 85.8906 95.0156 86.0918 95.2227 86.3574C95.4336 86.6191 95.5996 86.9355 95.7207 87.3066C95.8418 87.6777 95.9258 88.0977 95.9727 88.5664V89.1055C95.9297 89.5703 95.8457 89.9883 95.7207 90.3594C95.5996 90.7305 95.4336 91.0469 95.2227 91.3086C95.0156 91.5703 94.7617 91.7715 94.4609 91.9121C94.1602 92.0488 93.8086 92.1172 93.4062 92.1172C93.0352 92.1172 92.6953 92.0371 92.3867 91.877C92.082 91.7168 91.8184 91.4922 91.5957 91.2031C91.377 90.9141 91.207 90.5742 91.0859 90.1836C90.9688 89.7891 90.9102 89.3613 90.9102 88.9004ZM92 88.7773V88.9004C92 89.2168 92.0312 89.5137 92.0938 89.791C92.1602 90.0684 92.2617 90.3125 92.3984 90.5234C92.5352 90.7344 92.709 90.9004 92.9199 91.0215C93.1309 91.1387 93.3828 91.1973 93.6758 91.1973C94.0352 91.1973 94.3301 91.1211 94.5605 90.9688C94.7949 90.8164 94.9824 90.6152 95.123 90.3652C95.2637 90.1152 95.373 89.8438 95.4512 89.5508V88.1387C95.4043 87.9238 95.3359 87.7168 95.2461 87.5176C95.1602 87.3145 95.0469 87.1348 94.9062 86.9785C94.7695 86.8184 94.5996 86.6914 94.3965 86.5977C94.1973 86.5039 93.9609 86.457 93.6875 86.457C93.3906 86.457 93.1348 86.5195 92.9199 86.6445C92.709 86.7656 92.5352 86.9336 92.3984 87.1484C92.2617 87.3594 92.1602 87.6055 92.0938 87.8867C92.0312 88.1641 92 88.4609 92 88.7773ZM100.584 92.1172C100.143 92.1172 99.7422 92.043 99.3828 91.8945C99.0273 91.7422 98.7207 91.5293 98.4629 91.2559C98.209 90.9824 98.0137 90.6582 97.877 90.2832C97.7402 89.9082 97.6719 89.498 97.6719 89.0527V88.8066C97.6719 88.291 97.748 87.832 97.9004 87.4297C98.0527 87.0234 98.2598 86.6797 98.5215 86.3984C98.7832 86.1172 99.0801 85.9043 99.4121 85.7598C99.7441 85.6152 100.088 85.543 100.443 85.543C100.896 85.543 101.287 85.6211 101.615 85.7773C101.947 85.9336 102.219 86.1523 102.43 86.4336C102.641 86.7109 102.797 87.0391 102.898 87.418C103 87.793 103.051 88.2031 103.051 88.6484V89.1348H98.3164V88.25H101.967V88.168C101.951 87.8867 101.893 87.6133 101.791 87.3477C101.693 87.082 101.537 86.8633 101.322 86.6914C101.107 86.5195 100.814 86.4336 100.443 86.4336C100.197 86.4336 99.9707 86.4863 99.7637 86.5918C99.5566 86.6934 99.3789 86.8457 99.2305 87.0488C99.082 87.252 98.9668 87.5 98.8848 87.793C98.8027 88.0859 98.7617 88.4238 98.7617 88.8066V89.0527C98.7617 89.3535 98.8027 89.6367 98.8848 89.9023C98.9707 90.1641 99.0938 90.3945 99.2539 90.5938C99.418 90.793 99.6152 90.9492 99.8457 91.0625C100.08 91.1758 100.346 91.2324 100.643 91.2324C101.025 91.2324 101.35 91.1543 101.615 90.998C101.881 90.8418 102.113 90.6328 102.312 90.3711L102.969 90.8926C102.832 91.0996 102.658 91.2969 102.447 91.4844C102.236 91.6719 101.977 91.8242 101.668 91.9414C101.363 92.0586 101.002 92.1172 100.584 92.1172ZM108.377 86.8789V94.4375H107.287V85.6602H108.283L108.377 86.8789ZM112.648 88.7773V88.9004C112.648 89.3613 112.594 89.7891 112.484 90.1836C112.375 90.5742 112.215 90.9141 112.004 91.2031C111.797 91.4922 111.541 91.7168 111.236 91.877C110.932 92.0371 110.582 92.1172 110.188 92.1172C109.785 92.1172 109.43 92.0508 109.121 91.918C108.812 91.7852 108.551 91.5918 108.336 91.3379C108.121 91.084 107.949 90.7793 107.82 90.4238C107.695 90.0684 107.609 89.668 107.562 89.2227V88.5664C107.609 88.0977 107.697 87.6777 107.826 87.3066C107.955 86.9355 108.125 86.6191 108.336 86.3574C108.551 86.0918 108.811 85.8906 109.115 85.7539C109.42 85.6133 109.771 85.543 110.17 85.543C110.568 85.543 110.922 85.6211 111.23 85.7773C111.539 85.9297 111.799 86.1484 112.01 86.4336C112.221 86.7188 112.379 87.0605 112.484 87.459C112.594 87.8535 112.648 88.293 112.648 88.7773ZM111.559 88.9004V88.7773C111.559 88.4609 111.525 88.1641 111.459 87.8867C111.393 87.6055 111.289 87.3594 111.148 87.1484C111.012 86.9336 110.836 86.7656 110.621 86.6445C110.406 86.5195 110.15 86.457 109.854 86.457C109.58 86.457 109.342 86.5039 109.139 86.5977C108.939 86.6914 108.77 86.8184 108.629 86.9785C108.488 87.1348 108.373 87.3145 108.283 87.5176C108.197 87.7168 108.133 87.9238 108.09 88.1387V89.6562C108.168 89.9297 108.277 90.1875 108.418 90.4297C108.559 90.668 108.746 90.8613 108.98 91.0098C109.215 91.1543 109.51 91.2266 109.865 91.2266C110.158 91.2266 110.41 91.166 110.621 91.0449C110.836 90.9199 111.012 90.75 111.148 90.5352C111.289 90.3203 111.393 90.0742 111.459 89.7969C111.525 89.5156 111.559 89.2168 111.559 88.9004ZM115.115 86.6562V92H114.031V85.6602H115.086L115.115 86.6562ZM117.096 85.625L117.09 86.6328C117 86.6133 116.914 86.6016 116.832 86.5977C116.754 86.5898 116.664 86.5859 116.562 86.5859C116.312 86.5859 116.092 86.625 115.9 86.7031C115.709 86.7812 115.547 86.8906 115.414 87.0312C115.281 87.1719 115.176 87.3398 115.098 87.5352C115.023 87.7266 114.975 87.9375 114.951 88.168L114.646 88.3438C114.646 87.9609 114.684 87.6016 114.758 87.2656C114.836 86.9297 114.955 86.6328 115.115 86.375C115.275 86.1133 115.479 85.9102 115.725 85.7656C115.975 85.6172 116.271 85.543 116.615 85.543C116.693 85.543 116.783 85.5527 116.885 85.5723C116.986 85.5879 117.057 85.6055 117.096 85.625ZM120.611 92.1172C120.17 92.1172 119.77 92.043 119.41 91.8945C119.055 91.7422 118.748 91.5293 118.49 91.2559C118.236 90.9824 118.041 90.6582 117.904 90.2832C117.768 89.9082 117.699 89.498 117.699 89.0527V88.8066C117.699 88.291 117.775 87.832 117.928 87.4297C118.08 87.0234 118.287 86.6797 118.549 86.3984C118.811 86.1172 119.107 85.9043 119.439 85.7598C119.771 85.6152 120.115 85.543 120.471 85.543C120.924 85.543 121.314 85.6211 121.643 85.7773C121.975 85.9336 122.246 86.1523 122.457 86.4336C122.668 86.7109 122.824 87.0391 122.926 87.418C123.027 87.793 123.078 88.2031 123.078 88.6484V89.1348H118.344V88.25H121.994V88.168C121.979 87.8867 121.92 87.6133 121.818 87.3477C121.721 87.082 121.564 86.8633 121.35 86.6914C121.135 86.5195 120.842 86.4336 120.471 86.4336C120.225 86.4336 119.998 86.4863 119.791 86.5918C119.584 86.6934 119.406 86.8457 119.258 87.0488C119.109 87.252 118.994 87.5 118.912 87.793C118.83 88.0859 118.789 88.4238 118.789 88.8066V89.0527C118.789 89.3535 118.83 89.6367 118.912 89.9023C118.998 90.1641 119.121 90.3945 119.281 90.5938C119.445 90.793 119.643 90.9492 119.873 91.0625C120.107 91.1758 120.373 91.2324 120.67 91.2324C121.053 91.2324 121.377 91.1543 121.643 90.998C121.908 90.8418 122.141 90.6328 122.34 90.3711L122.996 90.8926C122.859 91.0996 122.686 91.2969 122.475 91.4844C122.264 91.6719 122.004 91.8242 121.695 91.9414C121.391 92.0586 121.029 92.1172 120.611 92.1172ZM126.881 91.2266C127.139 91.2266 127.377 91.1738 127.596 91.0684C127.814 90.9629 127.994 90.8184 128.135 90.6348C128.275 90.4473 128.355 90.2344 128.375 89.9961H129.406C129.387 90.3711 129.26 90.7207 129.025 91.0449C128.795 91.3652 128.492 91.625 128.117 91.8242C127.742 92.0195 127.33 92.1172 126.881 92.1172C126.404 92.1172 125.988 92.0332 125.633 91.8652C125.281 91.6973 124.988 91.4668 124.754 91.1738C124.523 90.8809 124.35 90.5449 124.232 90.166C124.119 89.7832 124.062 89.3789 124.062 88.9531V88.707C124.062 88.2812 124.119 87.8789 124.232 87.5C124.35 87.1172 124.523 86.7793 124.754 86.4863C124.988 86.1934 125.281 85.9629 125.633 85.7949C125.988 85.627 126.404 85.543 126.881 85.543C127.377 85.543 127.811 85.6445 128.182 85.8477C128.553 86.0469 128.844 86.3203 129.055 86.668C129.27 87.0117 129.387 87.4023 129.406 87.8398H128.375C128.355 87.5781 128.281 87.3418 128.152 87.1309C128.027 86.9199 127.855 86.752 127.637 86.627C127.422 86.498 127.17 86.4336 126.881 86.4336C126.549 86.4336 126.27 86.5 126.043 86.6328C125.82 86.7617 125.643 86.9375 125.51 87.1602C125.381 87.3789 125.287 87.623 125.229 87.8926C125.174 88.1582 125.146 88.4297 125.146 88.707V88.9531C125.146 89.2305 125.174 89.5039 125.229 89.7734C125.283 90.043 125.375 90.2871 125.504 90.5059C125.637 90.7246 125.814 90.9004 126.037 91.0332C126.264 91.1621 126.545 91.2266 126.881 91.2266ZM131.803 85.6602V92H130.713V85.6602H131.803ZM130.631 83.9785C130.631 83.8027 130.684 83.6543 130.789 83.5332C130.898 83.4121 131.059 83.3516 131.27 83.3516C131.477 83.3516 131.635 83.4121 131.744 83.5332C131.857 83.6543 131.914 83.8027 131.914 83.9785C131.914 84.1465 131.857 84.291 131.744 84.4121C131.635 84.5293 131.477 84.5879 131.27 84.5879C131.059 84.5879 130.898 84.5293 130.789 84.4121C130.684 84.291 130.631 84.1465 130.631 83.9785ZM137.234 90.3184C137.234 90.1621 137.199 90.0176 137.129 89.8848C137.062 89.748 136.924 89.625 136.713 89.5156C136.506 89.4023 136.193 89.3047 135.775 89.2227C135.424 89.1484 135.105 89.0605 134.82 88.959C134.539 88.8574 134.299 88.7344 134.1 88.5898C133.904 88.4453 133.754 88.2754 133.648 88.0801C133.543 87.8848 133.49 87.6562 133.49 87.3945C133.49 87.1445 133.545 86.9082 133.654 86.6855C133.768 86.4629 133.926 86.2656 134.129 86.0938C134.336 85.9219 134.584 85.7871 134.873 85.6895C135.162 85.5918 135.484 85.543 135.84 85.543C136.348 85.543 136.781 85.6328 137.141 85.8125C137.5 85.9922 137.775 86.2324 137.967 86.5332C138.158 86.8301 138.254 87.1602 138.254 87.5234H137.17C137.17 87.3477 137.117 87.1777 137.012 87.0137C136.91 86.8457 136.76 86.707 136.561 86.5977C136.365 86.4883 136.125 86.4336 135.84 86.4336C135.539 86.4336 135.295 86.4805 135.107 86.5742C134.924 86.6641 134.789 86.7793 134.703 86.9199C134.621 87.0605 134.58 87.209 134.58 87.3652C134.58 87.4824 134.6 87.5879 134.639 87.6816C134.682 87.7715 134.756 87.8555 134.861 87.9336C134.967 88.0078 135.115 88.0781 135.307 88.1445C135.498 88.2109 135.742 88.2773 136.039 88.3438C136.559 88.4609 136.986 88.6016 137.322 88.7656C137.658 88.9297 137.908 89.1309 138.072 89.3691C138.236 89.6074 138.318 89.8965 138.318 90.2363C138.318 90.5137 138.26 90.7676 138.143 90.998C138.029 91.2285 137.863 91.4277 137.645 91.5957C137.43 91.7598 137.172 91.8887 136.871 91.9824C136.574 92.0723 136.24 92.1172 135.869 92.1172C135.311 92.1172 134.838 92.0176 134.451 91.8184C134.064 91.6191 133.771 91.3613 133.572 91.0449C133.373 90.7285 133.273 90.3945 133.273 90.043H134.363C134.379 90.3398 134.465 90.5762 134.621 90.752C134.777 90.9238 134.969 91.0469 135.195 91.1211C135.422 91.1914 135.646 91.2266 135.869 91.2266C136.166 91.2266 136.414 91.1875 136.613 91.1094C136.816 91.0312 136.971 90.9238 137.076 90.7871C137.182 90.6504 137.234 90.4941 137.234 90.3184ZM143.48 90.916V87.6523C143.48 87.4023 143.43 87.1855 143.328 87.002C143.23 86.8145 143.082 86.6699 142.883 86.5684C142.684 86.4668 142.438 86.416 142.145 86.416C141.871 86.416 141.631 86.4629 141.424 86.5566C141.221 86.6504 141.061 86.7734 140.943 86.9258C140.83 87.0781 140.773 87.2422 140.773 87.418H139.689C139.689 87.1914 139.748 86.9668 139.865 86.7441C139.982 86.5215 140.15 86.3203 140.369 86.1406C140.592 85.957 140.857 85.8125 141.166 85.707C141.479 85.5977 141.826 85.543 142.209 85.543C142.67 85.543 143.076 85.6211 143.428 85.7773C143.783 85.9336 144.061 86.1699 144.26 86.4863C144.463 86.7988 144.564 87.1914 144.564 87.6641V90.6172C144.564 90.8281 144.582 91.0527 144.617 91.291C144.656 91.5293 144.713 91.7344 144.787 91.9062V92H143.656C143.602 91.875 143.559 91.709 143.527 91.502C143.496 91.291 143.48 91.0957 143.48 90.916ZM143.668 88.1562L143.68 88.918H142.584C142.275 88.918 142 88.9434 141.758 88.9941C141.516 89.041 141.312 89.1133 141.148 89.2109C140.984 89.3086 140.859 89.4316 140.773 89.5801C140.688 89.7246 140.645 89.8945 140.645 90.0898C140.645 90.2891 140.689 90.4707 140.779 90.6348C140.869 90.7988 141.004 90.9297 141.184 91.0273C141.367 91.1211 141.592 91.168 141.857 91.168C142.189 91.168 142.482 91.0977 142.736 90.957C142.99 90.8164 143.191 90.6445 143.34 90.4414C143.492 90.2383 143.574 90.041 143.586 89.8496L144.049 90.3711C144.021 90.5352 143.947 90.7168 143.826 90.916C143.705 91.1152 143.543 91.3066 143.34 91.4902C143.141 91.6699 142.902 91.8203 142.625 91.9414C142.352 92.0586 142.043 92.1172 141.699 92.1172C141.27 92.1172 140.893 92.0332 140.568 91.8652C140.248 91.6973 139.998 91.4727 139.818 91.1914C139.643 90.9062 139.555 90.5879 139.555 90.2363C139.555 89.8965 139.621 89.5977 139.754 89.3398C139.887 89.0781 140.078 88.8613 140.328 88.6895C140.578 88.5137 140.879 88.3809 141.23 88.291C141.582 88.2012 141.975 88.1562 142.408 88.1562H143.668ZM143.674 83.1172L144.406 83.1816C144.406 83.4668 144.35 83.7168 144.236 83.9316C144.123 84.1465 143.971 84.3125 143.779 84.4297C143.592 84.5469 143.379 84.6055 143.141 84.6055C142.941 84.6055 142.777 84.5781 142.648 84.5234C142.52 84.4648 142.404 84.4004 142.303 84.3301C142.201 84.2559 142.094 84.1914 141.98 84.1367C141.871 84.0781 141.734 84.0488 141.57 84.0488C141.406 84.0488 141.268 84.1113 141.154 84.2363C141.045 84.3613 140.99 84.5156 140.99 84.6992L140.258 84.6641C140.258 84.3789 140.312 84.1289 140.422 83.9141C140.535 83.6953 140.688 83.5254 140.879 83.4043C141.07 83.2793 141.283 83.2168 141.518 83.2168C141.686 83.2168 141.832 83.2461 141.957 83.3047C142.086 83.3594 142.207 83.4238 142.32 83.498C142.434 83.5684 142.551 83.6328 142.672 83.6914C142.793 83.7461 142.932 83.7734 143.088 83.7734C143.252 83.7734 143.391 83.7109 143.504 83.5859C143.617 83.457 143.674 83.3008 143.674 83.1172ZM145.982 88.9004V88.7656C145.982 88.3086 146.049 87.8848 146.182 87.4941C146.314 87.0996 146.506 86.7578 146.756 86.4688C147.006 86.1758 147.309 85.9492 147.664 85.7891C148.02 85.625 148.418 85.543 148.859 85.543C149.305 85.543 149.705 85.625 150.061 85.7891C150.42 85.9492 150.725 86.1758 150.975 86.4688C151.229 86.7578 151.422 87.0996 151.555 87.4941C151.688 87.8848 151.754 88.3086 151.754 88.7656V88.9004C151.754 89.3574 151.688 89.7812 151.555 90.1719C151.422 90.5625 151.229 90.9043 150.975 91.1973C150.725 91.4863 150.422 91.7129 150.066 91.877C149.715 92.0371 149.316 92.1172 148.871 92.1172C148.426 92.1172 148.025 92.0371 147.67 91.877C147.314 91.7129 147.01 91.4863 146.756 91.1973C146.506 90.9043 146.314 90.5625 146.182 90.1719C146.049 89.7812 145.982 89.3574 145.982 88.9004ZM147.066 88.7656V88.9004C147.066 89.2168 147.104 89.5156 147.178 89.7969C147.252 90.0742 147.363 90.3203 147.512 90.5352C147.664 90.75 147.854 90.9199 148.08 91.0449C148.307 91.166 148.57 91.2266 148.871 91.2266C149.168 91.2266 149.428 91.166 149.65 91.0449C149.877 90.9199 150.064 90.75 150.213 90.5352C150.361 90.3203 150.473 90.0742 150.547 89.7969C150.625 89.5156 150.664 89.2168 150.664 88.9004V88.7656C150.664 88.4531 150.625 88.1582 150.547 87.8809C150.473 87.5996 150.359 87.3516 150.207 87.1367C150.059 86.918 149.871 86.7461 149.645 86.6211C149.422 86.4961 149.16 86.4336 148.859 86.4336C148.562 86.4336 148.301 86.4961 148.074 86.6211C147.852 86.7461 147.664 86.918 147.512 87.1367C147.363 87.3516 147.252 87.5996 147.178 87.8809C147.104 88.1582 147.066 88.4531 147.066 88.7656Z\",\n fill: \"white\"\n});\nfunction SvgSeloGarantia(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 184,\n height: 96,\n viewBox: \"0 0 184 96\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSeloGarantia);\nexport default __webpack_public_path__ + \"static/media/selo-garantia.bd4d5268.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.054 26.1126H129.519V9.59581H127.054V26.1126ZM149.258 15.546L146.433 22.7064H146.348L143.415 15.546H140.76L145.159 25.5537L142.65 31.1209H145.221L152 15.5465L149.258 15.546ZM135.277 24.2365C134.471 24.2365 133.345 23.8323 133.345 22.8338C133.345 21.559 134.748 21.0703 135.958 21.0703C137.041 21.0703 137.552 21.3037 138.21 21.6226C138.019 23.1527 136.702 24.2365 135.277 24.2365ZM135.576 15.1847C133.791 15.1847 131.943 15.9712 131.178 17.7135L133.366 18.6269C133.833 17.7135 134.704 17.4163 135.618 17.4163C136.893 17.4163 138.189 18.1805 138.21 19.5409V19.7106C137.764 19.4557 136.807 19.0733 135.639 19.0733C133.28 19.0733 130.879 20.3691 130.879 22.7915C130.879 25.0013 132.813 26.4251 134.98 26.4251C136.637 26.4251 137.552 25.6814 138.124 24.8099H138.21V26.0855H140.591V19.7529C140.591 16.8206 138.4 15.1847 135.576 15.1847ZM120.34 17.5565H116.834V11.8954H120.34C122.183 11.8954 123.23 13.4209 123.23 14.7259C123.23 16.0058 122.183 17.5565 120.34 17.5565ZM120.277 9.5962H114.37V26.113H116.834V19.8557H120.277C123.009 19.8557 125.695 17.8782 125.695 14.7265C125.695 11.5755 123.009 9.5962 120.277 9.5962ZM88.0668 24.2392C86.3637 24.2392 84.9384 22.8128 84.9384 20.8554C84.9384 18.8753 86.3637 17.4287 88.0668 17.4287C89.7482 17.4287 91.0678 18.8754 91.0678 20.8554C91.0678 22.8128 89.7482 24.2392 88.0668 24.2392ZM90.8974 16.4705H90.8122C90.2591 15.8109 89.1944 15.2149 87.8542 15.2149C85.0442 15.2149 82.469 17.6843 82.469 20.8554C82.469 24.005 85.0442 26.4526 87.8542 26.4526C89.1944 26.4526 90.259 25.8565 90.8122 25.1759H90.8974V25.984C90.8974 28.1345 89.7482 29.2832 87.8965 29.2832C86.3859 29.2832 85.4494 28.1979 85.0659 27.2829L82.9166 28.1767C83.5333 29.666 85.1717 31.4971 87.8966 31.4971C90.7917 31.4971 93.2394 29.794 93.2394 25.6433V15.5553H90.8976L90.8974 16.4705ZM94.9424 26.1121H97.4102V9.59531H94.9424V26.1121ZM101.05 20.6635C100.987 18.4924 102.732 17.3859 103.987 17.3859C104.967 17.3859 105.796 17.8756 106.074 18.5775L101.05 20.6635ZM108.712 18.7902C108.244 17.5351 106.818 15.2149 103.902 15.2149C101.007 15.2149 98.6023 17.4922 98.6023 20.8338C98.6023 23.9839 100.987 26.4527 104.178 26.4527C106.754 26.4527 108.244 24.8782 108.862 23.9627L106.946 22.6855C106.307 23.6221 105.435 24.2393 104.178 24.2393C102.923 24.2393 102.029 23.6645 101.455 22.5364L108.967 19.4292L108.712 18.7902ZM48.8548 16.939V19.3227H54.5587C54.3884 20.6636 53.9415 21.6425 53.2603 22.3237C52.4299 23.1535 51.1316 24.069 48.8547 24.069C45.3428 24.069 42.5974 21.2384 42.5974 17.7266C42.5974 14.2147 45.3428 11.3837 48.8547 11.3837C50.749 11.3837 52.1322 12.1288 53.1539 13.0866L54.8358 11.4048C53.4093 10.0429 51.5154 9 48.8547 9C44.0438 9 40 12.9163 40 17.7266C40 22.5363 44.0438 26.4527 48.8547 26.4527C51.4509 26.4527 53.4094 25.6013 54.9416 24.0051C56.5167 22.43 57.0063 20.2166 57.0063 18.4285C57.0063 17.8757 56.9634 17.3649 56.8783 16.939H48.8548ZM63.4919 24.2392C61.7888 24.2392 60.3201 22.8345 60.3201 20.8338C60.3201 18.8119 61.7888 17.4288 63.4919 17.4288C65.1943 17.4288 66.6629 18.8119 66.6629 20.8338C66.6629 22.8345 65.1943 24.2392 63.4919 24.2392ZM63.4919 15.2149C60.3835 15.2149 57.8512 17.5773 57.8512 20.8338C57.8512 24.069 60.3835 26.4527 63.4919 26.4527C66.599 26.4527 69.1319 24.069 69.1319 20.8338C69.1319 17.5773 66.599 15.2149 63.4919 15.2149ZM75.7955 24.2392C74.0935 24.2392 72.6244 22.8345 72.6244 20.8338C72.6244 18.8119 74.0936 17.4288 75.7955 17.4288C77.4986 17.4288 78.9667 18.8119 78.9667 20.8338C78.9667 22.8345 77.4986 24.2392 75.7955 24.2392ZM75.7955 15.2149C72.6883 15.2149 70.1559 17.5773 70.1559 20.8338C70.1559 24.069 72.6883 26.4527 75.7955 26.4527C78.9038 26.4527 81.4362 24.069 81.4362 20.8338C81.4362 17.5773 78.9038 15.2149 75.7955 15.2149Z\",\n fill: \"white\"\n});\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.9155 62.1367V70H42.9219V63.3774L40.9185 64.1079V63.2109L43.7598 62.1367H43.9155ZM51.7466 65.4668V66.6592C51.7466 67.3001 51.6893 67.8408 51.5747 68.2812C51.4601 68.7217 51.2954 69.0762 51.0806 69.3447C50.8657 69.6133 50.6061 69.8084 50.3018 69.9302C50.001 70.0483 49.6608 70.1074 49.2812 70.1074C48.9805 70.1074 48.703 70.0698 48.4487 69.9946C48.1945 69.9194 47.9653 69.7995 47.7612 69.6348C47.5607 69.4665 47.3888 69.248 47.2456 68.9795C47.1024 68.7109 46.9932 68.3851 46.918 68.002C46.8428 67.6188 46.8052 67.1712 46.8052 66.6592V65.4668C46.8052 64.8258 46.8625 64.2887 46.9771 63.8555C47.0952 63.4222 47.2617 63.0749 47.4766 62.8135C47.6914 62.5485 47.9492 62.3587 48.25 62.2441C48.5544 62.1296 48.8945 62.0723 49.2705 62.0723C49.5749 62.0723 49.8542 62.1099 50.1084 62.1851C50.3662 62.2567 50.5954 62.373 50.7959 62.5342C50.9964 62.6917 51.1665 62.903 51.3062 63.168C51.4494 63.4294 51.5586 63.7498 51.6338 64.1294C51.709 64.509 51.7466 64.9548 51.7466 65.4668ZM50.7476 66.8203V65.3003C50.7476 64.9494 50.7261 64.6414 50.6831 64.3765C50.6437 64.1079 50.5846 63.8787 50.5059 63.689C50.4271 63.4992 50.3268 63.3452 50.2051 63.2271C50.0869 63.1089 49.9491 63.0229 49.7915 62.9692C49.6375 62.9119 49.4639 62.8833 49.2705 62.8833C49.0342 62.8833 48.8247 62.9281 48.6421 63.0176C48.4595 63.1035 48.3055 63.2414 48.1802 63.4312C48.0584 63.6209 47.9653 63.8698 47.9009 64.1777C47.8364 64.4857 47.8042 64.8599 47.8042 65.3003V66.8203C47.8042 67.1712 47.8239 67.481 47.8633 67.7495C47.9062 68.0181 47.9689 68.2508 48.0513 68.4478C48.1336 68.6411 48.2339 68.8005 48.3521 68.9258C48.4702 69.0511 48.6063 69.1442 48.7603 69.2051C48.9178 69.2624 49.0915 69.291 49.2812 69.291C49.5247 69.291 49.7378 69.2445 49.9204 69.1514C50.103 69.0583 50.2552 68.9132 50.377 68.7163C50.5023 68.5158 50.5954 68.2598 50.6562 67.9482C50.7171 67.6331 50.7476 67.2572 50.7476 66.8203ZM56.8491 65.3433V70H55.8501V64.1885H56.7954L56.8491 65.3433ZM56.645 66.874L56.1831 66.8579C56.1867 66.4604 56.2386 66.0934 56.3389 65.7568C56.4391 65.4167 56.5877 65.1213 56.7847 64.8706C56.9816 64.62 57.2269 64.4266 57.5205 64.2905C57.8141 64.1509 58.1543 64.0811 58.541 64.0811C58.8132 64.0811 59.0638 64.1204 59.293 64.1992C59.5221 64.2744 59.7209 64.3944 59.8892 64.5591C60.0575 64.7238 60.1882 64.9351 60.2812 65.1929C60.3743 65.4507 60.4209 65.7622 60.4209 66.1274V70H59.4272V66.1758C59.4272 65.8714 59.3753 65.6279 59.2715 65.4453C59.1712 65.2627 59.028 65.1302 58.8418 65.0479C58.6556 64.9619 58.4372 64.9189 58.1865 64.9189C57.8929 64.9189 57.6476 64.9709 57.4507 65.0747C57.2537 65.1785 57.0962 65.3218 56.978 65.5044C56.8599 65.687 56.7739 65.8965 56.7202 66.1328C56.6701 66.3656 56.645 66.6126 56.645 66.874ZM60.4102 66.3262L59.7441 66.5303C59.7477 66.2116 59.7996 65.9054 59.8999 65.6118C60.0037 65.3182 60.1523 65.0568 60.3457 64.8276C60.5426 64.5985 60.7843 64.4176 61.0708 64.2852C61.3573 64.1491 61.6849 64.0811 62.0537 64.0811C62.3652 64.0811 62.641 64.1222 62.8809 64.2046C63.1243 64.2869 63.3285 64.4141 63.4932 64.5859C63.6615 64.7542 63.7886 64.9709 63.8745 65.2358C63.9604 65.5008 64.0034 65.8159 64.0034 66.1812V70H63.0044V66.1704C63.0044 65.8446 62.9525 65.5921 62.8486 65.4131C62.7484 65.2305 62.6051 65.1034 62.4189 65.0317C62.2363 64.9565 62.0179 64.9189 61.7637 64.9189C61.5452 64.9189 61.3519 64.9565 61.1836 65.0317C61.0153 65.1069 60.8739 65.2108 60.7593 65.3433C60.6447 65.4722 60.557 65.6208 60.4961 65.7891C60.4388 65.9574 60.4102 66.1364 60.4102 66.3262ZM66.5869 64.1885V70H65.5879V64.1885H66.5869ZM65.5127 62.647C65.5127 62.4858 65.561 62.3498 65.6577 62.2388C65.758 62.1278 65.9048 62.0723 66.0981 62.0723C66.2879 62.0723 66.4329 62.1278 66.5332 62.2388C66.637 62.3498 66.689 62.4858 66.689 62.647C66.689 62.8009 66.637 62.9334 66.5332 63.0444C66.4329 63.1519 66.2879 63.2056 66.0981 63.2056C65.9048 63.2056 65.758 63.1519 65.6577 63.0444C65.561 62.9334 65.5127 62.8009 65.5127 62.647ZM69.2617 61.75V70H68.2627V61.75H69.2617ZM77.0122 69.0063V66.0146C77.0122 65.7855 76.9657 65.5868 76.8726 65.4185C76.783 65.2466 76.647 65.1141 76.4644 65.021C76.2817 64.9279 76.0562 64.8813 75.7876 64.8813C75.5369 64.8813 75.3167 64.9243 75.127 65.0103C74.9408 65.0962 74.7939 65.209 74.6865 65.3486C74.5827 65.4883 74.5308 65.6387 74.5308 65.7998H73.5371C73.5371 65.5921 73.5908 65.3862 73.6982 65.1821C73.8057 64.978 73.9596 64.7936 74.1602 64.6289C74.3643 64.4606 74.6077 64.3281 74.8906 64.2314C75.1771 64.1312 75.4958 64.0811 75.8467 64.0811C76.2692 64.0811 76.6416 64.1527 76.9639 64.2959C77.2897 64.4391 77.5439 64.6558 77.7266 64.9458C77.9128 65.2323 78.0059 65.5921 78.0059 66.0254V68.7324C78.0059 68.9258 78.022 69.1317 78.0542 69.3501C78.09 69.5685 78.1419 69.7565 78.21 69.9141V70H77.1733C77.1232 69.8854 77.0838 69.7332 77.0552 69.5435C77.0265 69.3501 77.0122 69.1711 77.0122 69.0063ZM77.1841 66.4766L77.1948 67.1748H76.1904C75.9076 67.1748 75.6551 67.1981 75.4331 67.2446C75.2111 67.2876 75.0249 67.3538 74.8745 67.4434C74.7241 67.5329 74.6095 67.6457 74.5308 67.7817C74.452 67.9142 74.4126 68.07 74.4126 68.249C74.4126 68.4316 74.4538 68.5981 74.5361 68.7485C74.6185 68.8989 74.742 69.0189 74.9067 69.1084C75.075 69.1943 75.2809 69.2373 75.5244 69.2373C75.8288 69.2373 76.0973 69.1729 76.3301 69.0439C76.5628 68.915 76.7472 68.7575 76.8833 68.5713C77.0229 68.3851 77.0981 68.2043 77.1089 68.0288L77.5332 68.5068C77.5081 68.6572 77.4401 68.8237 77.3291 69.0063C77.2181 69.189 77.0695 69.3644 76.8833 69.5327C76.7007 69.6974 76.4823 69.8353 76.228 69.9463C75.9774 70.0537 75.6945 70.1074 75.3794 70.1074C74.9855 70.1074 74.64 70.0304 74.3428 69.8765C74.0492 69.7225 73.82 69.5166 73.6553 69.2588C73.4941 68.9974 73.4136 68.7056 73.4136 68.3833C73.4136 68.0718 73.4744 67.7979 73.5962 67.5615C73.7179 67.3216 73.8934 67.1229 74.1226 66.9653C74.3517 66.8042 74.6274 66.6825 74.9497 66.6001C75.272 66.5177 75.6318 66.4766 76.0293 66.4766H77.1841ZM81.25 69.103L82.8398 64.1885H83.855L81.7656 70H81.0996L81.25 69.103ZM79.9233 64.1885L81.5615 69.1299L81.6743 70H81.0083L78.9028 64.1885H79.9233ZM88.1519 69.0063V66.0146C88.1519 65.7855 88.1053 65.5868 88.0122 65.4185C87.9227 65.2466 87.7866 65.1141 87.604 65.021C87.4214 64.9279 87.1958 64.8813 86.9272 64.8813C86.6766 64.8813 86.4564 64.9243 86.2666 65.0103C86.0804 65.0962 85.9336 65.209 85.8262 65.3486C85.7223 65.4883 85.6704 65.6387 85.6704 65.7998H84.6768C84.6768 65.5921 84.7305 65.3862 84.8379 65.1821C84.9453 64.978 85.0993 64.7936 85.2998 64.6289C85.5039 64.4606 85.7474 64.3281 86.0303 64.2314C86.3167 64.1312 86.6354 64.0811 86.9863 64.0811C87.4089 64.0811 87.7812 64.1527 88.1035 64.2959C88.4294 64.4391 88.6836 64.6558 88.8662 64.9458C89.0524 65.2323 89.1455 65.5921 89.1455 66.0254V68.7324C89.1455 68.9258 89.1616 69.1317 89.1938 69.3501C89.2297 69.5685 89.2816 69.7565 89.3496 69.9141V70H88.313C88.2629 69.8854 88.2235 69.7332 88.1948 69.5435C88.1662 69.3501 88.1519 69.1711 88.1519 69.0063ZM88.3237 66.4766L88.3345 67.1748H87.3301C87.0472 67.1748 86.7948 67.1981 86.5728 67.2446C86.3507 67.2876 86.1646 67.3538 86.0142 67.4434C85.8638 67.5329 85.7492 67.6457 85.6704 67.7817C85.5916 67.9142 85.5522 68.07 85.5522 68.249C85.5522 68.4316 85.5934 68.5981 85.6758 68.7485C85.7581 68.8989 85.8817 69.0189 86.0464 69.1084C86.2147 69.1943 86.4206 69.2373 86.6641 69.2373C86.9684 69.2373 87.237 69.1729 87.4697 69.0439C87.7025 68.915 87.8869 68.7575 88.0229 68.5713C88.1626 68.3851 88.2378 68.2043 88.2485 68.0288L88.6729 68.5068C88.6478 68.6572 88.5798 68.8237 88.4688 69.0063C88.3577 69.189 88.2091 69.3644 88.0229 69.5327C87.8403 69.6974 87.6219 69.8353 87.3677 69.9463C87.117 70.0537 86.8341 70.1074 86.519 70.1074C86.1252 70.1074 85.7796 70.0304 85.4824 69.8765C85.1888 69.7225 84.9596 69.5166 84.7949 69.2588C84.6338 68.9974 84.5532 68.7056 84.5532 68.3833C84.5532 68.0718 84.6141 67.7979 84.7358 67.5615C84.8576 67.3216 85.033 67.1229 85.2622 66.9653C85.4914 66.8042 85.7671 66.6825 86.0894 66.6001C86.4116 66.5177 86.7715 66.4766 87.1689 66.4766H88.3237ZM91.7881 61.75V70H90.7891V61.75H91.7881ZM94.4629 64.1885V70H93.4639V64.1885H94.4629ZM93.3887 62.647C93.3887 62.4858 93.437 62.3498 93.5337 62.2388C93.634 62.1278 93.7808 62.0723 93.9741 62.0723C94.1639 62.0723 94.3089 62.1278 94.4092 62.2388C94.513 62.3498 94.5649 62.4858 94.5649 62.647C94.5649 62.8009 94.513 62.9334 94.4092 63.0444C94.3089 63.1519 94.1639 63.2056 93.9741 63.2056C93.7808 63.2056 93.634 63.1519 93.5337 63.0444C93.437 62.9334 93.3887 62.8009 93.3887 62.647ZM99.4849 69.0063V66.0146C99.4849 65.7855 99.4383 65.5868 99.3452 65.4185C99.2557 65.2466 99.1196 65.1141 98.937 65.021C98.7544 64.9279 98.5288 64.8813 98.2603 64.8813C98.0096 64.8813 97.7894 64.9243 97.5996 65.0103C97.4134 65.0962 97.2666 65.209 97.1592 65.3486C97.0553 65.4883 97.0034 65.6387 97.0034 65.7998H96.0098C96.0098 65.5921 96.0635 65.3862 96.1709 65.1821C96.2783 64.978 96.4323 64.7936 96.6328 64.6289C96.8369 64.4606 97.0804 64.3281 97.3633 64.2314C97.6497 64.1312 97.9684 64.0811 98.3193 64.0811C98.7419 64.0811 99.1143 64.1527 99.4365 64.2959C99.7624 64.4391 100.017 64.6558 100.199 64.9458C100.385 65.2323 100.479 65.5921 100.479 66.0254V68.7324C100.479 68.9258 100.495 69.1317 100.527 69.3501C100.563 69.5685 100.615 69.7565 100.683 69.9141V70H99.646C99.5959 69.8854 99.5565 69.7332 99.5278 69.5435C99.4992 69.3501 99.4849 69.1711 99.4849 69.0063ZM99.6567 66.4766L99.6675 67.1748H98.6631C98.3802 67.1748 98.1278 67.1981 97.9058 67.2446C97.6838 67.2876 97.4976 67.3538 97.3472 67.4434C97.1968 67.5329 97.0822 67.6457 97.0034 67.7817C96.9246 67.9142 96.8853 68.07 96.8853 68.249C96.8853 68.4316 96.9264 68.5981 97.0088 68.7485C97.0911 68.8989 97.2147 69.0189 97.3794 69.1084C97.5477 69.1943 97.7536 69.2373 97.9971 69.2373C98.3014 69.2373 98.57 69.1729 98.8027 69.0439C99.0355 68.915 99.2199 68.7575 99.356 68.5713C99.4956 68.3851 99.5708 68.2043 99.5815 68.0288L100.006 68.5068C99.9808 68.6572 99.9128 68.8237 99.8018 69.0063C99.6908 69.189 99.5422 69.3644 99.356 69.5327C99.1733 69.6974 98.9549 69.8353 98.7007 69.9463C98.45 70.0537 98.1672 70.1074 97.8521 70.1074C97.4582 70.1074 97.1126 70.0304 96.8154 69.8765C96.5218 69.7225 96.2926 69.5166 96.1279 69.2588C95.9668 68.9974 95.8862 68.7056 95.8862 68.3833C95.8862 68.0718 95.9471 67.7979 96.0688 67.5615C96.1906 67.3216 96.366 67.1229 96.5952 66.9653C96.8244 66.8042 97.1001 66.6825 97.4224 66.6001C97.7446 66.5177 98.1045 66.4766 98.502 66.4766H99.6567ZM104.367 69.291C104.604 69.291 104.822 69.2427 105.022 69.146C105.223 69.0493 105.388 68.9168 105.517 68.7485C105.646 68.5767 105.719 68.3815 105.737 68.1631H106.682C106.664 68.5068 106.548 68.8273 106.333 69.1245C106.122 69.4181 105.844 69.6562 105.5 69.8389C105.157 70.0179 104.779 70.1074 104.367 70.1074C103.93 70.1074 103.549 70.0304 103.223 69.8765C102.901 69.7225 102.632 69.5112 102.417 69.2427C102.206 68.9741 102.047 68.6662 101.939 68.3188C101.836 67.9679 101.784 67.5973 101.784 67.207V66.9814C101.784 66.5911 101.836 66.2223 101.939 65.875C102.047 65.5241 102.206 65.2144 102.417 64.9458C102.632 64.6772 102.901 64.466 103.223 64.312C103.549 64.158 103.93 64.0811 104.367 64.0811C104.822 64.0811 105.219 64.1742 105.56 64.3604C105.9 64.543 106.167 64.7936 106.36 65.1123C106.557 65.4274 106.664 65.7855 106.682 66.1865H105.737C105.719 65.9466 105.651 65.73 105.533 65.5366C105.418 65.3433 105.261 65.1893 105.06 65.0747C104.863 64.9565 104.632 64.8975 104.367 64.8975C104.063 64.8975 103.807 64.9583 103.599 65.0801C103.395 65.1982 103.232 65.3594 103.11 65.5635C102.992 65.764 102.906 65.9878 102.853 66.2349C102.802 66.4784 102.777 66.7272 102.777 66.9814V67.207C102.777 67.4613 102.802 67.7119 102.853 67.959C102.903 68.2061 102.987 68.4299 103.105 68.6304C103.227 68.8309 103.39 68.992 103.594 69.1138C103.801 69.2319 104.059 69.291 104.367 69.291ZM103.819 70.0537H104.534L104.469 70.3384C104.677 70.3742 104.865 70.4601 105.033 70.5962C105.205 70.7323 105.291 70.9561 105.291 71.2676C105.291 71.4359 105.255 71.5881 105.184 71.7241C105.116 71.8638 105.014 71.9819 104.877 72.0786C104.741 72.1789 104.571 72.2559 104.367 72.3096C104.167 72.3633 103.932 72.3901 103.664 72.3901L103.626 71.8154C103.791 71.8154 103.939 71.7975 104.072 71.7617C104.208 71.7259 104.315 71.6686 104.394 71.5898C104.476 71.5111 104.518 71.409 104.518 71.2837C104.518 71.1655 104.487 71.0724 104.426 71.0044C104.365 70.9364 104.271 70.8844 104.142 70.8486C104.016 70.8164 103.853 70.7931 103.653 70.7788L103.819 70.0537ZM107.536 67.1587V67.0352C107.536 66.6162 107.597 66.2277 107.719 65.8696C107.84 65.508 108.016 65.1947 108.245 64.9297C108.474 64.6611 108.752 64.4535 109.078 64.3066C109.403 64.1562 109.769 64.0811 110.173 64.0811C110.582 64.0811 110.949 64.1562 111.274 64.3066C111.604 64.4535 111.883 64.6611 112.112 64.9297C112.345 65.1947 112.522 65.508 112.644 65.8696C112.766 66.2277 112.827 66.6162 112.827 67.0352V67.1587C112.827 67.5776 112.766 67.9661 112.644 68.3242C112.522 68.6823 112.345 68.9956 112.112 69.2642C111.883 69.5291 111.606 69.7368 111.28 69.8872C110.958 70.034 110.592 70.1074 110.184 70.1074C109.776 70.1074 109.409 70.034 109.083 69.8872C108.757 69.7368 108.478 69.5291 108.245 69.2642C108.016 68.9956 107.84 68.6823 107.719 68.3242C107.597 67.9661 107.536 67.5776 107.536 67.1587ZM108.53 67.0352V67.1587C108.53 67.4487 108.564 67.7227 108.632 67.9805C108.7 68.2347 108.802 68.4603 108.938 68.6572C109.078 68.8542 109.251 69.0099 109.459 69.1245C109.667 69.2355 109.908 69.291 110.184 69.291C110.456 69.291 110.694 69.2355 110.898 69.1245C111.106 69.0099 111.278 68.8542 111.414 68.6572C111.55 68.4603 111.652 68.2347 111.72 67.9805C111.792 67.7227 111.828 67.4487 111.828 67.1587V67.0352C111.828 66.7487 111.792 66.4784 111.72 66.2241C111.652 65.9663 111.548 65.7389 111.409 65.542C111.273 65.3415 111.101 65.1839 110.893 65.0693C110.689 64.9548 110.449 64.8975 110.173 64.8975C109.901 64.8975 109.661 64.9548 109.454 65.0693C109.25 65.1839 109.078 65.3415 108.938 65.542C108.802 65.7389 108.7 65.9663 108.632 66.2241C108.564 66.4784 108.53 66.7487 108.53 67.0352ZM111.366 61.8574L112.037 61.9165C112.037 62.1779 111.985 62.4071 111.881 62.604C111.778 62.8009 111.638 62.9531 111.462 63.0605C111.291 63.168 111.095 63.2217 110.877 63.2217C110.694 63.2217 110.544 63.1966 110.426 63.1465C110.308 63.0928 110.202 63.0337 110.109 62.9692C110.016 62.9012 109.917 62.8421 109.813 62.792C109.713 62.7383 109.588 62.7114 109.438 62.7114C109.287 62.7114 109.16 62.7687 109.056 62.8833C108.956 62.9979 108.906 63.1393 108.906 63.3076L108.234 63.2754C108.234 63.014 108.285 62.7848 108.385 62.5879C108.489 62.3874 108.628 62.2316 108.804 62.1206C108.979 62.006 109.174 61.9487 109.389 61.9487C109.543 61.9487 109.677 61.9756 109.792 62.0293C109.91 62.0794 110.021 62.1385 110.125 62.2065C110.229 62.271 110.336 62.3301 110.447 62.3838C110.558 62.4339 110.685 62.459 110.829 62.459C110.979 62.459 111.106 62.4017 111.21 62.2871C111.314 62.1689 111.366 62.0257 111.366 61.8574ZM116.484 70.1074C116.08 70.1074 115.713 70.0394 115.383 69.9033C115.057 69.7637 114.776 69.5685 114.54 69.3179C114.307 69.0672 114.128 68.77 114.003 68.4263C113.878 68.0825 113.815 67.7065 113.815 67.2983V67.0728C113.815 66.6001 113.885 66.1794 114.024 65.8105C114.164 65.4382 114.354 65.123 114.594 64.8652C114.834 64.6074 115.106 64.4123 115.41 64.2798C115.715 64.1473 116.03 64.0811 116.355 64.0811C116.771 64.0811 117.129 64.1527 117.43 64.2959C117.734 64.4391 117.983 64.6396 118.176 64.8975C118.37 65.1517 118.513 65.4525 118.606 65.7998C118.699 66.1436 118.746 66.5195 118.746 66.9277V67.3735H114.406V66.5625H117.752V66.4873C117.738 66.2295 117.684 65.9788 117.591 65.7354C117.501 65.4919 117.358 65.2913 117.161 65.1338C116.964 64.9762 116.696 64.8975 116.355 64.8975C116.13 64.8975 115.922 64.9458 115.732 65.0425C115.543 65.1356 115.38 65.2752 115.244 65.4614C115.108 65.6476 115.002 65.875 114.927 66.1436C114.852 66.4121 114.814 66.7218 114.814 67.0728V67.2983C114.814 67.5741 114.852 67.8337 114.927 68.0771C115.006 68.3171 115.118 68.5283 115.265 68.7109C115.416 68.8936 115.596 69.0368 115.808 69.1406C116.022 69.2445 116.266 69.2964 116.538 69.2964C116.889 69.2964 117.186 69.2248 117.43 69.0815C117.673 68.9383 117.886 68.7467 118.069 68.5068L118.67 68.9849C118.545 69.1746 118.386 69.3555 118.192 69.5273C117.999 69.6992 117.761 69.8389 117.478 69.9463C117.199 70.0537 116.868 70.1074 116.484 70.1074ZM123.29 68.4585C123.29 68.3153 123.257 68.1828 123.193 68.061C123.132 67.9357 123.005 67.8229 122.812 67.7227C122.622 67.6188 122.335 67.5293 121.952 67.4541C121.63 67.3861 121.338 67.3055 121.077 67.2124C120.819 67.1193 120.599 67.0065 120.416 66.874C120.237 66.7415 120.099 66.5858 120.002 66.4067C119.906 66.2277 119.857 66.0182 119.857 65.7783C119.857 65.5492 119.908 65.3325 120.008 65.1284C120.112 64.9243 120.257 64.7435 120.443 64.5859C120.633 64.4284 120.86 64.3049 121.125 64.2153C121.39 64.1258 121.685 64.0811 122.011 64.0811C122.477 64.0811 122.874 64.1634 123.204 64.3281C123.533 64.4928 123.785 64.7131 123.961 64.9888C124.136 65.2609 124.224 65.5635 124.224 65.8965H123.23C123.23 65.7354 123.182 65.5796 123.085 65.4292C122.992 65.2752 122.854 65.1481 122.672 65.0479C122.493 64.9476 122.273 64.8975 122.011 64.8975C121.736 64.8975 121.512 64.9404 121.34 65.0264C121.172 65.1087 121.048 65.2144 120.969 65.3433C120.894 65.4722 120.856 65.6082 120.856 65.7515C120.856 65.8589 120.874 65.9556 120.91 66.0415C120.95 66.1239 121.018 66.2008 121.114 66.2725C121.211 66.3405 121.347 66.4049 121.522 66.4658C121.698 66.5267 121.922 66.5876 122.194 66.6484C122.67 66.7559 123.062 66.8848 123.37 67.0352C123.678 67.1855 123.907 67.37 124.058 67.5884C124.208 67.8068 124.283 68.0718 124.283 68.3833C124.283 68.6375 124.229 68.8703 124.122 69.0815C124.018 69.2928 123.866 69.4754 123.666 69.6294C123.469 69.7798 123.232 69.8979 122.957 69.9839C122.684 70.0662 122.378 70.1074 122.038 70.1074C121.526 70.1074 121.093 70.0161 120.738 69.8335C120.384 69.6509 120.115 69.4146 119.933 69.1245C119.75 68.8345 119.659 68.5283 119.659 68.2061H120.658C120.672 68.4782 120.751 68.6948 120.894 68.856C121.037 69.0135 121.213 69.1263 121.42 69.1943C121.628 69.2588 121.834 69.291 122.038 69.291C122.31 69.291 122.538 69.2552 122.72 69.1836C122.906 69.112 123.048 69.0135 123.145 68.8882C123.241 68.7629 123.29 68.6196 123.29 68.4585Z\",\n fill: \"white\"\n});\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.6562 49.2812V50.8262H40.4854L40.3896 49.6299L44.5391 43.0469H46.1045L44.4092 45.8838L42.3447 49.2812H47.6562ZM46.5283 43.0469V53H44.5596V43.0469H46.5283ZM48.9004 52.0498C48.9004 51.7581 49.0007 51.5143 49.2012 51.3184C49.4062 51.1224 49.6774 51.0244 50.0146 51.0244C50.3519 51.0244 50.6208 51.1224 50.8213 51.3184C51.0264 51.5143 51.1289 51.7581 51.1289 52.0498C51.1289 52.3415 51.0264 52.5853 50.8213 52.7812C50.6208 52.9772 50.3519 53.0752 50.0146 53.0752C49.6774 53.0752 49.4062 52.9772 49.2012 52.7812C49.0007 52.5853 48.9004 52.3415 48.9004 52.0498ZM59.7559 49.2812V50.8262H52.585L52.4893 49.6299L56.6387 43.0469H58.2041L56.5088 45.8838L54.4443 49.2812H59.7559ZM58.6279 43.0469V53H56.6592V43.0469H58.6279Z\",\n fill: \"white\"\n});\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.4333 41.6304C73.62 41.0931 74.38 41.0931 74.5667 41.6304L75.7438 45.0168C75.8262 45.2538 76.0474 45.4145 76.2983 45.4197L79.8827 45.4927C80.4514 45.5043 80.6863 46.227 80.233 46.5707L77.3761 48.7366C77.1761 48.8882 77.0916 49.1483 77.1643 49.3885L78.2024 52.82C78.3672 53.3645 77.7524 53.8111 77.2854 53.4862L74.3427 51.4385C74.1367 51.2951 73.8633 51.2951 73.6573 51.4385L70.7146 53.4862C70.2476 53.8111 69.6328 53.3645 69.7976 52.82L70.8357 49.3885C70.9084 49.1483 70.8239 48.8882 70.6239 48.7366L67.767 46.5707C67.3137 46.227 67.5486 45.5043 68.1173 45.4927L71.7017 45.4197C71.9526 45.4145 72.1738 45.2538 72.2562 45.0168L73.4333 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M89.4333 41.6304C89.62 41.0931 90.38 41.0931 90.5667 41.6304L91.7438 45.0168C91.8262 45.2538 92.0474 45.4145 92.2983 45.4197L95.8827 45.4927C96.4514 45.5043 96.6863 46.227 96.233 46.5707L93.3761 48.7366C93.1761 48.8882 93.0916 49.1483 93.1643 49.3885L94.2024 52.82C94.3672 53.3645 93.7524 53.8111 93.2854 53.4862L90.3427 51.4385C90.1367 51.2951 89.8633 51.2951 89.6573 51.4385L86.7146 53.4862C86.2476 53.8111 85.6328 53.3645 85.7976 52.82L86.8357 49.3885C86.9084 49.1483 86.8239 48.8882 86.6239 48.7366L83.767 46.5707C83.3137 46.227 83.5486 45.5043 84.1173 45.4927L87.7017 45.4197C87.9526 45.4145 88.1738 45.2538 88.2562 45.0168L89.4333 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.433 41.6304C105.62 41.0931 106.38 41.0931 106.567 41.6304L107.744 45.0168C107.826 45.2538 108.047 45.4145 108.298 45.4197L111.883 45.4927C112.451 45.5043 112.686 46.227 112.233 46.5707L109.376 48.7366C109.176 48.8882 109.092 49.1483 109.164 49.3885L110.202 52.82C110.367 53.3645 109.752 53.8111 109.285 53.4862L106.343 51.4385C106.137 51.2951 105.863 51.2951 105.657 51.4385L102.715 53.4862C102.248 53.8111 101.633 53.3645 101.798 52.82L102.836 49.3885C102.908 49.1483 102.824 48.8882 102.624 48.7366L99.767 46.5707C99.3137 46.227 99.5486 45.5043 100.117 45.4927L103.702 45.4197C103.953 45.4145 104.174 45.2538 104.256 45.0168L105.433 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.433 41.6304C121.62 41.0931 122.38 41.0931 122.567 41.6304L123.744 45.0168C123.826 45.2538 124.047 45.4145 124.298 45.4197L127.883 45.4927C128.451 45.5043 128.686 46.227 128.233 46.5707L125.376 48.7366C125.176 48.8882 125.092 49.1483 125.164 49.3885L126.202 52.82C126.367 53.3645 125.752 53.8111 125.285 53.4862L122.343 51.4385C122.137 51.2951 121.863 51.2951 121.657 51.4385L118.715 53.4862C118.248 53.8111 117.633 53.3645 117.798 52.82L118.836 49.3885C118.908 49.1483 118.824 48.8882 118.624 48.7366L115.767 46.5707C115.314 46.227 115.549 45.5043 116.117 45.4927L119.702 45.4197C119.953 45.4145 120.174 45.2538 120.256 45.0168L121.433 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.433 41.6304C137.62 41.0931 138.38 41.0931 138.567 41.6304L139.744 45.0168C139.826 45.2538 140.047 45.4145 140.298 45.4197L143.883 45.4927C144.451 45.5043 144.686 46.227 144.233 46.5707L141.376 48.7366C141.176 48.8882 141.092 49.1483 141.164 49.3885L142.202 52.82C142.367 53.3645 141.752 53.8111 141.285 53.4862L138.343 51.4385C138.137 51.2951 137.863 51.2951 137.657 51.4385L134.715 53.4862C134.248 53.8111 133.633 53.3645 133.798 52.82L134.836 49.3885C134.908 49.1483 134.824 48.8882 134.624 48.7366L131.767 46.5707C131.314 46.227 131.549 45.5043 132.117 45.4927L135.702 45.4197C135.953 45.4145 136.174 45.2538 136.256 45.0168L137.433 41.6304Z\",\n fill: \"url(#paint0_linear_8665_87290)\"\n});\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.353 15.2824L0.123047 29.341C0.123545 29.3439 0.124538 29.3464 0.125004 29.3493C0.530757 30.8759 1.92354 32 3.57649 32C4.23726 32 4.85763 31.8212 5.38966 31.5072L5.43191 31.4824L20.3247 22.8789L13.353 15.2824Z\",\n fill: \"#EB3131\"\n});\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.7389 12.8889L26.7262 12.8802L20.2966 9.14862L13.0527 15.6018L20.3217 22.8781L26.7175 19.1836C27.8388 18.5776 28.6 17.3942 28.6 16.0295C28.6 14.6746 27.8491 13.4969 26.7389 12.8889Z\",\n fill: \"#F6B60B\"\n});\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.121337 2.65802C0.0418032 2.95164 0 3.25919 0 3.57857V28.4214C0 28.7402 0.0413099 29.0488 0.121841 29.3414L13.8085 15.642L0.121337 2.65802Z\",\n fill: \"#5778C5\"\n});\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4508 16L20.2991 9.14602L5.42311 0.511349C4.8824 0.187121 4.2513 0 3.57601 0C1.92307 0 0.528395 1.12611 0.122568 2.65449C0.12207 2.65598 0.12207 2.65701 0.12207 2.65831L13.4508 16Z\",\n fill: \"#3BAD49\"\n});\nvar _ref14 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_8665_87290\",\n x1: 146,\n y1: 48,\n x2: 130,\n y2: 48,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.495,\n stopColor: \"#ABAAA8\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.4951,\n stopColor: \"#FBC105\"\n})));\nfunction SvgSeloPlayStore(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 152,\n height: 73,\n viewBox: \"0 0 152 73\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSeloPlayStore);\nexport default __webpack_public_path__ + \"static/media/selo-play-store.a08d76cf.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.525 26.2846H52.7911L51.2935 21.5704H46.0882L44.6617 26.2846H42L47.1572 10.2353H50.3425L55.525 26.2846ZM50.8421 19.5926L49.4878 15.4017C49.3445 14.9736 49.0761 13.9654 48.68 12.3783H48.6319C48.4742 13.0609 48.2202 14.0691 47.8711 15.4017L46.5408 19.5926H50.8421Z\",\n fill: \"white\"\n});\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.7872 20.3559C68.7872 22.3241 68.2563 23.8798 67.1945 25.0219C66.2435 26.0385 65.0625 26.5463 63.6529 26.5463C62.1312 26.5463 61.0381 25.9987 60.3724 24.9037H60.3243V31H57.7577V18.5216C57.7577 17.2842 57.7252 16.0143 57.6626 14.7118H59.9198L60.063 16.5461H60.1112C60.9671 15.1641 62.266 14.4742 64.0092 14.4742C65.3719 14.4742 66.5095 15.0133 67.4196 16.0927C68.3321 17.1733 68.7872 18.5939 68.7872 20.3559ZM66.1725 20.45C66.1725 19.3236 65.9197 18.3949 65.4116 17.6641C64.8567 16.9019 64.1115 16.5208 63.1773 16.5208C62.5441 16.5208 61.9687 16.7331 61.4547 17.1516C60.9394 17.5737 60.6024 18.1248 60.4447 18.8074C60.3652 19.1258 60.3255 19.3863 60.3255 19.5913V21.5209C60.3255 22.3627 60.5831 23.073 61.0983 23.6531C61.6136 24.2332 62.2829 24.5226 63.1063 24.5226C64.073 24.5226 64.8254 24.1487 65.3635 23.4034C65.9028 22.6569 66.1725 21.6728 66.1725 20.45Z\",\n fill: \"white\"\n});\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.0742 20.3559C82.0742 22.3241 81.5433 23.8798 80.4803 25.0219C79.5305 26.0385 78.3495 26.5463 76.9399 26.5463C75.4182 26.5463 74.3251 25.9987 73.6606 24.9037H73.6125V31H71.0459V18.5216C71.0459 17.2842 71.0134 16.0143 70.9508 14.7118H73.208L73.3513 16.5461H73.3994C74.2541 15.1641 75.5531 14.4742 77.2974 14.4742C78.6589 14.4742 79.7965 15.0133 80.709 16.0927C81.6179 17.1733 82.0742 18.5939 82.0742 20.3559ZM79.4595 20.45C79.4595 19.3236 79.2055 18.3949 78.6974 17.6641C78.1425 16.9019 77.3997 16.5208 76.4643 16.5208C75.8299 16.5208 75.2557 16.7331 74.7405 17.1516C74.2252 17.5737 73.8894 18.1248 73.7317 18.8074C73.6534 19.1258 73.6125 19.3863 73.6125 19.5913V21.5209C73.6125 22.3627 73.8701 23.073 74.3829 23.6531C74.8982 24.232 75.5675 24.5226 76.3933 24.5226C77.36 24.5226 78.1124 24.1487 78.6505 23.4034C79.1898 22.6569 79.4595 21.6728 79.4595 20.45Z\",\n fill: \"white\"\n});\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.9297 21.7838C96.9297 23.149 96.4566 24.2597 95.5068 25.1172C94.4631 26.0542 93.0101 26.5221 91.143 26.5221C89.4191 26.5221 88.0371 26.1893 86.9909 25.5224L87.5856 23.3793C88.7124 24.0619 89.9488 24.4044 91.2958 24.4044C92.2625 24.4044 93.0149 24.1849 93.5554 23.7483C94.0935 23.3118 94.362 22.7257 94.362 21.9948C94.362 21.3436 94.1405 20.7949 93.6963 20.3499C93.2545 19.9048 92.5165 19.4912 91.486 19.1089C88.6811 18.0609 87.2799 16.5256 87.2799 14.5068C87.2799 13.1874 87.771 12.1057 88.7546 11.2639C89.7345 10.4209 91.0418 10 92.6766 10C94.1345 10 95.3455 10.2545 96.3122 10.7622L95.6705 12.8582C94.7677 12.3662 93.7468 12.1201 92.6044 12.1201C91.7015 12.1201 90.9961 12.3432 90.4905 12.7871C90.0631 13.1838 89.8488 13.6674 89.8488 14.2403C89.8488 14.8746 90.0932 15.3992 90.5844 15.8117C91.0117 16.1928 91.7882 16.6052 92.915 17.0502C94.2934 17.6062 95.3058 18.2562 95.9571 19.0015C96.6059 19.7444 96.9297 20.6743 96.9297 21.7838Z\",\n fill: \"white\"\n});\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.415 16.6414H102.586V22.2602C102.586 23.6893 103.085 24.4032 104.084 24.4032C104.542 24.4032 104.923 24.3634 105.224 24.2838L105.295 26.2363C104.789 26.4257 104.123 26.5209 103.299 26.5209C102.285 26.5209 101.493 26.211 100.921 25.5923C100.352 24.9724 100.065 23.9329 100.065 22.4724V16.639H98.38V14.7094H100.065V12.5905L102.586 11.8283V14.7094H105.415V16.6414Z\",\n fill: \"white\"\n});\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.179 20.4029C118.179 22.1818 117.671 23.6422 116.658 24.7843C115.595 25.9601 114.184 26.5463 112.425 26.5463C110.73 26.5463 109.38 25.9831 108.374 24.8567C107.368 23.7303 106.864 22.3084 106.864 20.5947C106.864 18.8013 107.382 17.3324 108.421 16.1904C109.457 15.0471 110.856 14.4754 112.615 14.4754C114.31 14.4754 115.674 15.0386 116.703 16.1663C117.688 17.2601 118.179 18.6723 118.179 20.4029ZM115.516 20.4861C115.516 19.4188 115.289 18.5035 114.828 17.7401C114.29 16.8163 113.52 16.3556 112.524 16.3556C111.492 16.3556 110.708 16.8175 110.17 17.7401C109.709 18.5047 109.482 19.4345 109.482 20.5344C109.482 21.6017 109.709 22.517 110.17 23.2792C110.725 24.203 111.5 24.6637 112.501 24.6637C113.481 24.6637 114.25 24.1934 114.805 23.2551C115.278 22.4772 115.516 21.5522 115.516 20.4861Z\",\n fill: \"white\"\n});\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.522 16.9731C126.268 16.926 125.997 16.9019 125.713 16.9019C124.811 16.9019 124.112 17.2432 123.621 17.927C123.194 18.53 122.979 19.2922 122.979 20.2124V26.2846H120.414L120.438 18.3563C120.438 17.0225 120.406 15.8081 120.342 14.713H122.577L122.671 16.9272H122.742C123.013 16.1663 123.441 15.5536 124.026 15.0941C124.597 14.6805 125.215 14.4742 125.881 14.4742C126.118 14.4742 126.332 14.4911 126.522 14.5213V16.9731Z\",\n fill: \"white\"\n});\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138 19.9507C138 20.4114 137.97 20.7997 137.906 21.1169H130.206C130.237 22.2602 130.609 23.1345 131.324 23.7375C131.972 24.2766 132.812 24.5467 133.842 24.5467C134.982 24.5467 136.022 24.3646 136.957 23.9992L137.36 25.7841C136.266 26.2616 134.976 26.4992 133.487 26.4992C131.696 26.4992 130.289 25.971 129.266 24.9158C128.245 23.8605 127.734 22.4435 127.734 20.6658C127.734 18.9208 128.209 17.4675 129.162 16.3086C130.158 15.0712 131.505 14.4525 133.2 14.4525C134.865 14.4525 136.126 15.0712 136.982 16.3086C137.659 17.2915 138 18.5071 138 19.9507ZM135.553 19.2838C135.569 18.5216 135.402 17.8631 135.054 17.3071C134.61 16.592 133.927 16.235 133.009 16.235C132.17 16.235 131.487 16.5835 130.966 17.283C130.539 17.839 130.285 18.5059 130.206 19.2826L135.553 19.2838Z\",\n fill: \"white\"\n});\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.9351 67.3682V68.1846H42.2847V67.5991L45.7866 62.1797H46.5977L45.7275 63.748L43.4126 67.3682H47.9351ZM46.8447 62.1797V70H45.8511V62.1797H46.8447ZM53.7681 67.8838C53.7681 68.36 53.6571 68.7646 53.4351 69.0977C53.2166 69.4271 52.9194 69.6777 52.5435 69.8496C52.1711 70.0215 51.7503 70.1074 51.2812 70.1074C50.8122 70.1074 50.3896 70.0215 50.0137 69.8496C49.6377 69.6777 49.3405 69.4271 49.1221 69.0977C48.9036 68.7646 48.7944 68.36 48.7944 67.8838C48.7944 67.5723 48.8535 67.2876 48.9717 67.0298C49.0934 66.7684 49.2635 66.541 49.4819 66.3477C49.7039 66.1543 49.9653 66.0057 50.2661 65.9019C50.5705 65.7944 50.9053 65.7407 51.2705 65.7407C51.7503 65.7407 52.1782 65.8338 52.5542 66.02C52.9302 66.2026 53.2256 66.4551 53.4404 66.7773C53.6589 67.0996 53.7681 67.4684 53.7681 67.8838ZM52.769 67.8623C52.769 67.5723 52.7064 67.3162 52.5811 67.0942C52.4557 66.8687 52.2803 66.6932 52.0547 66.5679C51.8291 66.4425 51.5677 66.3799 51.2705 66.3799C50.9661 66.3799 50.703 66.4425 50.481 66.5679C50.2625 66.6932 50.0924 66.8687 49.9707 67.0942C49.849 67.3162 49.7881 67.5723 49.7881 67.8623C49.7881 68.1631 49.8472 68.4209 49.9653 68.6357C50.0871 68.847 50.259 69.0099 50.481 69.1245C50.7065 69.2355 50.9733 69.291 51.2812 69.291C51.5892 69.291 51.8542 69.2355 52.0762 69.1245C52.2982 69.0099 52.4683 68.847 52.5864 68.6357C52.7082 68.4209 52.769 68.1631 52.769 67.8623ZM53.5854 64.2153C53.5854 64.5949 53.4852 64.9368 53.2847 65.2412C53.0841 65.5456 52.8102 65.7855 52.4629 65.9609C52.1156 66.1364 51.7217 66.2241 51.2812 66.2241C50.8337 66.2241 50.4344 66.1364 50.0835 65.9609C49.7362 65.7855 49.464 65.5456 49.2671 65.2412C49.0701 64.9368 48.9717 64.5949 48.9717 64.2153C48.9717 63.7606 49.0701 63.3739 49.2671 63.0552C49.4676 62.7365 49.7415 62.493 50.0889 62.3247C50.4362 62.1564 50.8319 62.0723 51.2759 62.0723C51.7235 62.0723 52.1209 62.1564 52.4683 62.3247C52.8156 62.493 53.0877 62.7365 53.2847 63.0552C53.4852 63.3739 53.5854 63.7606 53.5854 64.2153ZM52.5918 64.2314C52.5918 63.9701 52.5363 63.7391 52.4253 63.5386C52.3143 63.3381 52.1603 63.1805 51.9634 63.0659C51.7664 62.9478 51.5373 62.8887 51.2759 62.8887C51.0145 62.8887 50.7853 62.9442 50.5884 63.0552C50.395 63.1626 50.2428 63.3166 50.1318 63.5171C50.0244 63.7176 49.9707 63.9557 49.9707 64.2314C49.9707 64.5 50.0244 64.7345 50.1318 64.9351C50.2428 65.1356 50.3968 65.2913 50.5938 65.4023C50.7907 65.5133 51.0199 65.5688 51.2812 65.5688C51.5426 65.5688 51.77 65.5133 51.9634 65.4023C52.1603 65.2913 52.3143 65.1356 52.4253 64.9351C52.5363 64.7345 52.5918 64.5 52.5918 64.2314ZM59.9556 67.8838C59.9556 68.36 59.8446 68.7646 59.6226 69.0977C59.4041 69.4271 59.1069 69.6777 58.731 69.8496C58.3586 70.0215 57.9378 70.1074 57.4688 70.1074C56.9997 70.1074 56.5771 70.0215 56.2012 69.8496C55.8252 69.6777 55.528 69.4271 55.3096 69.0977C55.0911 68.7646 54.9819 68.36 54.9819 67.8838C54.9819 67.5723 55.041 67.2876 55.1592 67.0298C55.2809 66.7684 55.451 66.541 55.6694 66.3477C55.8914 66.1543 56.1528 66.0057 56.4536 65.9019C56.758 65.7944 57.0928 65.7407 57.458 65.7407C57.9378 65.7407 58.3657 65.8338 58.7417 66.02C59.1177 66.2026 59.4131 66.4551 59.6279 66.7773C59.8464 67.0996 59.9556 67.4684 59.9556 67.8838ZM58.9565 67.8623C58.9565 67.5723 58.8939 67.3162 58.7686 67.0942C58.6432 66.8687 58.4678 66.6932 58.2422 66.5679C58.0166 66.4425 57.7552 66.3799 57.458 66.3799C57.1536 66.3799 56.8905 66.4425 56.6685 66.5679C56.45 66.6932 56.2799 66.8687 56.1582 67.0942C56.0365 67.3162 55.9756 67.5723 55.9756 67.8623C55.9756 68.1631 56.0347 68.4209 56.1528 68.6357C56.2746 68.847 56.4465 69.0099 56.6685 69.1245C56.894 69.2355 57.1608 69.291 57.4688 69.291C57.7767 69.291 58.0417 69.2355 58.2637 69.1245C58.4857 69.0099 58.6558 68.847 58.7739 68.6357C58.8957 68.4209 58.9565 68.1631 58.9565 67.8623ZM59.7729 64.2153C59.7729 64.5949 59.6727 64.9368 59.4722 65.2412C59.2716 65.5456 58.9977 65.7855 58.6504 65.9609C58.3031 66.1364 57.9092 66.2241 57.4688 66.2241C57.0212 66.2241 56.6219 66.1364 56.271 65.9609C55.9237 65.7855 55.6515 65.5456 55.4546 65.2412C55.2576 64.9368 55.1592 64.5949 55.1592 64.2153C55.1592 63.7606 55.2576 63.3739 55.4546 63.0552C55.6551 62.7365 55.929 62.493 56.2764 62.3247C56.6237 62.1564 57.0194 62.0723 57.4634 62.0723C57.911 62.0723 58.3084 62.1564 58.6558 62.3247C59.0031 62.493 59.2752 62.7365 59.4722 63.0552C59.6727 63.3739 59.7729 63.7606 59.7729 64.2153ZM58.7793 64.2314C58.7793 63.9701 58.7238 63.7391 58.6128 63.5386C58.5018 63.3381 58.3478 63.1805 58.1509 63.0659C57.9539 62.9478 57.7248 62.8887 57.4634 62.8887C57.202 62.8887 56.9728 62.9442 56.7759 63.0552C56.5825 63.1626 56.4303 63.3166 56.3193 63.5171C56.2119 63.7176 56.1582 63.9557 56.1582 64.2314C56.1582 64.5 56.2119 64.7345 56.3193 64.9351C56.4303 65.1356 56.5843 65.2913 56.7812 65.4023C56.9782 65.5133 57.2074 65.5688 57.4688 65.5688C57.7301 65.5688 57.9575 65.5133 58.1509 65.4023C58.3478 65.2913 58.5018 65.1356 58.6128 64.9351C58.7238 64.7345 58.7793 64.5 58.7793 64.2314ZM67.4751 69.0063V66.0146C67.4751 65.7855 67.4285 65.5868 67.3354 65.4185C67.2459 65.2466 67.1099 65.1141 66.9272 65.021C66.7446 64.9279 66.519 64.8813 66.2505 64.8813C65.9998 64.8813 65.7796 64.9243 65.5898 65.0103C65.4036 65.0962 65.2568 65.209 65.1494 65.3486C65.0456 65.4883 64.9937 65.6387 64.9937 65.7998H64C64 65.5921 64.0537 65.3862 64.1611 65.1821C64.2686 64.978 64.4225 64.7936 64.623 64.6289C64.8271 64.4606 65.0706 64.3281 65.3535 64.2314C65.64 64.1312 65.9587 64.0811 66.3096 64.0811C66.7321 64.0811 67.1045 64.1527 67.4268 64.2959C67.7526 64.4391 68.0068 64.6558 68.1895 64.9458C68.3757 65.2323 68.4688 65.5921 68.4688 66.0254V68.7324C68.4688 68.9258 68.4849 69.1317 68.5171 69.3501C68.5529 69.5685 68.6048 69.7565 68.6729 69.9141V70H67.6362C67.5861 69.8854 67.5467 69.7332 67.5181 69.5435C67.4894 69.3501 67.4751 69.1711 67.4751 69.0063ZM67.647 66.4766L67.6577 67.1748H66.6533C66.3704 67.1748 66.118 67.1981 65.896 67.2446C65.674 67.2876 65.4878 67.3538 65.3374 67.4434C65.187 67.5329 65.0724 67.6457 64.9937 67.7817C64.9149 67.9142 64.8755 68.07 64.8755 68.249C64.8755 68.4316 64.9167 68.5981 64.999 68.7485C65.0814 68.8989 65.2049 69.0189 65.3696 69.1084C65.5379 69.1943 65.7438 69.2373 65.9873 69.2373C66.2917 69.2373 66.5602 69.1729 66.793 69.0439C67.0257 68.915 67.2101 68.7575 67.3462 68.5713C67.4858 68.3851 67.561 68.2043 67.5718 68.0288L67.9961 68.5068C67.971 68.6572 67.903 68.8237 67.792 69.0063C67.681 69.189 67.5324 69.3644 67.3462 69.5327C67.1636 69.6974 66.9451 69.8353 66.6909 69.9463C66.4403 70.0537 66.1574 70.1074 65.8423 70.1074C65.4484 70.1074 65.1029 70.0304 64.8057 69.8765C64.512 69.7225 64.2829 69.5166 64.1182 69.2588C63.957 68.9974 63.8765 68.7056 63.8765 68.3833C63.8765 68.0718 63.9373 67.7979 64.0591 67.5615C64.1808 67.3216 64.3563 67.1229 64.5854 66.9653C64.8146 66.8042 65.0903 66.6825 65.4126 66.6001C65.7349 66.5177 66.0947 66.4766 66.4922 66.4766H67.647ZM71.7129 69.103L73.3027 64.1885H74.3179L72.2285 70H71.5625L71.7129 69.103ZM70.3862 64.1885L72.0244 69.1299L72.1372 70H71.4712L69.3657 64.1885H70.3862ZM78.6147 69.0063V66.0146C78.6147 65.7855 78.5682 65.5868 78.4751 65.4185C78.3856 65.2466 78.2495 65.1141 78.0669 65.021C77.8843 64.9279 77.6587 64.8813 77.3901 64.8813C77.1395 64.8813 76.9193 64.9243 76.7295 65.0103C76.5433 65.0962 76.3965 65.209 76.2891 65.3486C76.1852 65.4883 76.1333 65.6387 76.1333 65.7998H75.1396C75.1396 65.5921 75.1934 65.3862 75.3008 65.1821C75.4082 64.978 75.5622 64.7936 75.7627 64.6289C75.9668 64.4606 76.2103 64.3281 76.4932 64.2314C76.7796 64.1312 77.0983 64.0811 77.4492 64.0811C77.8717 64.0811 78.2441 64.1527 78.5664 64.2959C78.8923 64.4391 79.1465 64.6558 79.3291 64.9458C79.5153 65.2323 79.6084 65.5921 79.6084 66.0254V68.7324C79.6084 68.9258 79.6245 69.1317 79.6567 69.3501C79.6925 69.5685 79.7445 69.7565 79.8125 69.9141V70H78.7759C78.7257 69.8854 78.6864 69.7332 78.6577 69.5435C78.6291 69.3501 78.6147 69.1711 78.6147 69.0063ZM78.7866 66.4766L78.7974 67.1748H77.793C77.5101 67.1748 77.2576 67.1981 77.0356 67.2446C76.8136 67.2876 76.6274 67.3538 76.4771 67.4434C76.3267 67.5329 76.2121 67.6457 76.1333 67.7817C76.0545 67.9142 76.0151 68.07 76.0151 68.249C76.0151 68.4316 76.0563 68.5981 76.1387 68.7485C76.221 68.8989 76.3446 69.0189 76.5093 69.1084C76.6776 69.1943 76.8835 69.2373 77.127 69.2373C77.4313 69.2373 77.6999 69.1729 77.9326 69.0439C78.1654 68.915 78.3498 68.7575 78.4858 68.5713C78.6255 68.3851 78.7007 68.2043 78.7114 68.0288L79.1357 68.5068C79.1107 68.6572 79.0426 68.8237 78.9316 69.0063C78.8206 69.189 78.672 69.3644 78.4858 69.5327C78.3032 69.6974 78.0848 69.8353 77.8306 69.9463C77.5799 70.0537 77.297 70.1074 76.9819 70.1074C76.5881 70.1074 76.2425 70.0304 75.9453 69.8765C75.6517 69.7225 75.4225 69.5166 75.2578 69.2588C75.0967 68.9974 75.0161 68.7056 75.0161 68.3833C75.0161 68.0718 75.077 67.7979 75.1987 67.5615C75.3205 67.3216 75.4959 67.1229 75.7251 66.9653C75.9543 66.8042 76.23 66.6825 76.5522 66.6001C76.8745 66.5177 77.2344 66.4766 77.6318 66.4766H78.7866ZM82.251 61.75V70H81.252V61.75H82.251ZM84.9258 64.1885V70H83.9268V64.1885H84.9258ZM83.8516 62.647C83.8516 62.4858 83.8999 62.3498 83.9966 62.2388C84.0968 62.1278 84.2437 62.0723 84.437 62.0723C84.6268 62.0723 84.7718 62.1278 84.8721 62.2388C84.9759 62.3498 85.0278 62.4858 85.0278 62.647C85.0278 62.8009 84.9759 62.9334 84.8721 63.0444C84.7718 63.1519 84.6268 63.2056 84.437 63.2056C84.2437 63.2056 84.0968 63.1519 83.9966 63.0444C83.8999 62.9334 83.8516 62.8009 83.8516 62.647ZM89.9478 69.0063V66.0146C89.9478 65.7855 89.9012 65.5868 89.8081 65.4185C89.7186 65.2466 89.5825 65.1141 89.3999 65.021C89.2173 64.9279 88.9917 64.8813 88.7231 64.8813C88.4725 64.8813 88.2523 64.9243 88.0625 65.0103C87.8763 65.0962 87.7295 65.209 87.6221 65.3486C87.5182 65.4883 87.4663 65.6387 87.4663 65.7998H86.4727C86.4727 65.5921 86.5264 65.3862 86.6338 65.1821C86.7412 64.978 86.8952 64.7936 87.0957 64.6289C87.2998 64.4606 87.5433 64.3281 87.8262 64.2314C88.1126 64.1312 88.4313 64.0811 88.7822 64.0811C89.2048 64.0811 89.5771 64.1527 89.8994 64.2959C90.2253 64.4391 90.4795 64.6558 90.6621 64.9458C90.8483 65.2323 90.9414 65.5921 90.9414 66.0254V68.7324C90.9414 68.9258 90.9575 69.1317 90.9897 69.3501C91.0256 69.5685 91.0775 69.7565 91.1455 69.9141V70H90.1089C90.0588 69.8854 90.0194 69.7332 89.9907 69.5435C89.9621 69.3501 89.9478 69.1711 89.9478 69.0063ZM90.1196 66.4766L90.1304 67.1748H89.126C88.8431 67.1748 88.5907 67.1981 88.3687 67.2446C88.1466 67.2876 87.9604 67.3538 87.8101 67.4434C87.6597 67.5329 87.5451 67.6457 87.4663 67.7817C87.3875 67.9142 87.3481 68.07 87.3481 68.249C87.3481 68.4316 87.3893 68.5981 87.4717 68.7485C87.554 68.8989 87.6776 69.0189 87.8423 69.1084C88.0106 69.1943 88.2165 69.2373 88.46 69.2373C88.7643 69.2373 89.0329 69.1729 89.2656 69.0439C89.4984 68.915 89.6828 68.7575 89.8188 68.5713C89.9585 68.3851 90.0337 68.2043 90.0444 68.0288L90.4688 68.5068C90.4437 68.6572 90.3757 68.8237 90.2646 69.0063C90.1536 69.189 90.005 69.3644 89.8188 69.5327C89.6362 69.6974 89.4178 69.8353 89.1636 69.9463C88.9129 70.0537 88.63 70.1074 88.3149 70.1074C87.9211 70.1074 87.5755 70.0304 87.2783 69.8765C86.9847 69.7225 86.7555 69.5166 86.5908 69.2588C86.4297 68.9974 86.3491 68.7056 86.3491 68.3833C86.3491 68.0718 86.41 67.7979 86.5317 67.5615C86.6535 67.3216 86.8289 67.1229 87.0581 66.9653C87.2873 66.8042 87.563 66.6825 87.8853 66.6001C88.2075 66.5177 88.5674 66.4766 88.9648 66.4766H90.1196ZM94.8301 69.291C95.0664 69.291 95.2848 69.2427 95.4854 69.146C95.6859 69.0493 95.8506 68.9168 95.9795 68.7485C96.1084 68.5767 96.1818 68.3815 96.1997 68.1631H97.145C97.1271 68.5068 97.0107 68.8273 96.7959 69.1245C96.5846 69.4181 96.3071 69.6562 95.9634 69.8389C95.6196 70.0179 95.2419 70.1074 94.8301 70.1074C94.3932 70.1074 94.0119 70.0304 93.686 69.8765C93.3638 69.7225 93.0952 69.5112 92.8804 69.2427C92.6691 68.9741 92.5098 68.6662 92.4023 68.3188C92.2985 67.9679 92.2466 67.5973 92.2466 67.207V66.9814C92.2466 66.5911 92.2985 66.2223 92.4023 65.875C92.5098 65.5241 92.6691 65.2144 92.8804 64.9458C93.0952 64.6772 93.3638 64.466 93.686 64.312C94.0119 64.158 94.3932 64.0811 94.8301 64.0811C95.2848 64.0811 95.6823 64.1742 96.0225 64.3604C96.3626 64.543 96.6294 64.7936 96.8228 65.1123C97.0197 65.4274 97.1271 65.7855 97.145 66.1865H96.1997C96.1818 65.9466 96.1138 65.73 95.9956 65.5366C95.881 65.3433 95.7235 65.1893 95.5229 65.0747C95.326 64.9565 95.0951 64.8975 94.8301 64.8975C94.5257 64.8975 94.2697 64.9583 94.062 65.0801C93.8579 65.1982 93.695 65.3594 93.5732 65.5635C93.4551 65.764 93.3691 65.9878 93.3154 66.2349C93.2653 66.4784 93.2402 66.7272 93.2402 66.9814V67.207C93.2402 67.4613 93.2653 67.7119 93.3154 67.959C93.3656 68.2061 93.4497 68.4299 93.5679 68.6304C93.6896 68.8309 93.8525 68.992 94.0566 69.1138C94.2643 69.2319 94.5221 69.291 94.8301 69.291ZM94.2822 70.0537H94.9966L94.9321 70.3384C95.1398 70.3742 95.3278 70.4601 95.4961 70.5962C95.668 70.7323 95.7539 70.9561 95.7539 71.2676C95.7539 71.4359 95.7181 71.5881 95.6465 71.7241C95.5785 71.8638 95.4764 71.9819 95.3403 72.0786C95.2043 72.1789 95.0342 72.2559 94.8301 72.3096C94.6296 72.3633 94.395 72.3901 94.1265 72.3901L94.0889 71.8154C94.2536 71.8154 94.4022 71.7975 94.5347 71.7617C94.6707 71.7259 94.7782 71.6686 94.8569 71.5898C94.9393 71.5111 94.9805 71.409 94.9805 71.2837C94.9805 71.1655 94.95 71.0724 94.8892 71.0044C94.8283 70.9364 94.7334 70.8844 94.6045 70.8486C94.4792 70.8164 94.3162 70.7931 94.1157 70.7788L94.2822 70.0537ZM97.999 67.1587V67.0352C97.999 66.6162 98.0599 66.2277 98.1816 65.8696C98.3034 65.508 98.4788 65.1947 98.708 64.9297C98.9372 64.6611 99.2147 64.4535 99.5405 64.3066C99.8664 64.1562 100.232 64.0811 100.636 64.0811C101.044 64.0811 101.411 64.1562 101.737 64.3066C102.067 64.4535 102.346 64.6611 102.575 64.9297C102.808 65.1947 102.985 65.508 103.107 65.8696C103.229 66.2277 103.29 66.6162 103.29 67.0352V67.1587C103.29 67.5776 103.229 67.9661 103.107 68.3242C102.985 68.6823 102.808 68.9956 102.575 69.2642C102.346 69.5291 102.069 69.7368 101.743 69.8872C101.42 70.034 101.055 70.1074 100.647 70.1074C100.239 70.1074 99.8717 70.034 99.5459 69.8872C99.2201 69.7368 98.9408 69.5291 98.708 69.2642C98.4788 68.9956 98.3034 68.6823 98.1816 68.3242C98.0599 67.9661 97.999 67.5776 97.999 67.1587ZM98.9927 67.0352V67.1587C98.9927 67.4487 99.0267 67.7227 99.0947 67.9805C99.1628 68.2347 99.2648 68.4603 99.4009 68.6572C99.5405 68.8542 99.7142 69.0099 99.9219 69.1245C100.13 69.2355 100.371 69.291 100.647 69.291C100.919 69.291 101.157 69.2355 101.361 69.1245C101.569 69.0099 101.741 68.8542 101.877 68.6572C102.013 68.4603 102.115 68.2347 102.183 67.9805C102.255 67.7227 102.291 67.4487 102.291 67.1587V67.0352C102.291 66.7487 102.255 66.4784 102.183 66.2241C102.115 65.9663 102.011 65.7389 101.872 65.542C101.736 65.3415 101.564 65.1839 101.356 65.0693C101.152 64.9548 100.912 64.8975 100.636 64.8975C100.364 64.8975 100.124 64.9548 99.9165 65.0693C99.7124 65.1839 99.5405 65.3415 99.4009 65.542C99.2648 65.7389 99.1628 65.9663 99.0947 66.2241C99.0267 66.4784 98.9927 66.7487 98.9927 67.0352ZM101.829 61.8574L102.5 61.9165C102.5 62.1779 102.448 62.4071 102.344 62.604C102.24 62.8009 102.101 62.9531 101.925 63.0605C101.753 63.168 101.558 63.2217 101.34 63.2217C101.157 63.2217 101.007 63.1966 100.889 63.1465C100.771 63.0928 100.665 63.0337 100.572 62.9692C100.479 62.9012 100.38 62.8421 100.276 62.792C100.176 62.7383 100.051 62.7114 99.9004 62.7114C99.75 62.7114 99.6229 62.7687 99.519 62.8833C99.4188 62.9979 99.3687 63.1393 99.3687 63.3076L98.6973 63.2754C98.6973 63.014 98.7474 62.7848 98.8477 62.5879C98.9515 62.3874 99.0911 62.2316 99.2666 62.1206C99.4421 62.006 99.6372 61.9487 99.8521 61.9487C100.006 61.9487 100.14 61.9756 100.255 62.0293C100.373 62.0794 100.484 62.1385 100.588 62.2065C100.692 62.271 100.799 62.3301 100.91 62.3838C101.021 62.4339 101.148 62.459 101.292 62.459C101.442 62.459 101.569 62.4017 101.673 62.2871C101.777 62.1689 101.829 62.0257 101.829 61.8574ZM106.947 70.1074C106.543 70.1074 106.176 70.0394 105.846 69.9033C105.52 69.7637 105.239 69.5685 105.003 69.3179C104.77 69.0672 104.591 68.77 104.466 68.4263C104.34 68.0825 104.278 67.7065 104.278 67.2983V67.0728C104.278 66.6001 104.348 66.1794 104.487 65.8105C104.627 65.4382 104.817 65.123 105.057 64.8652C105.297 64.6074 105.569 64.4123 105.873 64.2798C106.177 64.1473 106.493 64.0811 106.818 64.0811C107.234 64.0811 107.592 64.1527 107.893 64.2959C108.197 64.4391 108.446 64.6396 108.639 64.8975C108.833 65.1517 108.976 65.4525 109.069 65.7998C109.162 66.1436 109.208 66.5195 109.208 66.9277V67.3735H104.869V66.5625H108.215V66.4873C108.201 66.2295 108.147 65.9788 108.054 65.7354C107.964 65.4919 107.821 65.2913 107.624 65.1338C107.427 64.9762 107.159 64.8975 106.818 64.8975C106.593 64.8975 106.385 64.9458 106.195 65.0425C106.006 65.1356 105.843 65.2752 105.707 65.4614C105.57 65.6476 105.465 65.875 105.39 66.1436C105.314 66.4121 105.277 66.7218 105.277 67.0728V67.2983C105.277 67.5741 105.314 67.8337 105.39 68.0771C105.468 68.3171 105.581 68.5283 105.728 68.7109C105.878 68.8936 106.059 69.0368 106.271 69.1406C106.485 69.2445 106.729 69.2964 107.001 69.2964C107.352 69.2964 107.649 69.2248 107.893 69.0815C108.136 68.9383 108.349 68.7467 108.532 68.5068L109.133 68.9849C109.008 69.1746 108.849 69.3555 108.655 69.5273C108.462 69.6992 108.224 69.8389 107.941 69.9463C107.662 70.0537 107.33 70.1074 106.947 70.1074ZM113.752 68.4585C113.752 68.3153 113.72 68.1828 113.656 68.061C113.595 67.9357 113.468 67.8229 113.274 67.7227C113.085 67.6188 112.798 67.5293 112.415 67.4541C112.093 67.3861 111.801 67.3055 111.54 67.2124C111.282 67.1193 111.062 67.0065 110.879 66.874C110.7 66.7415 110.562 66.5858 110.465 66.4067C110.369 66.2277 110.32 66.0182 110.32 65.7783C110.32 65.5492 110.37 65.3325 110.471 65.1284C110.575 64.9243 110.72 64.7435 110.906 64.5859C111.096 64.4284 111.323 64.3049 111.588 64.2153C111.853 64.1258 112.148 64.0811 112.474 64.0811C112.94 64.0811 113.337 64.1634 113.667 64.3281C113.996 64.4928 114.248 64.7131 114.424 64.9888C114.599 65.2609 114.687 65.5635 114.687 65.8965H113.693C113.693 65.7354 113.645 65.5796 113.548 65.4292C113.455 65.2752 113.317 65.1481 113.135 65.0479C112.956 64.9476 112.736 64.8975 112.474 64.8975C112.198 64.8975 111.975 64.9404 111.803 65.0264C111.634 65.1087 111.511 65.2144 111.432 65.3433C111.357 65.4722 111.319 65.6082 111.319 65.7515C111.319 65.8589 111.337 65.9556 111.373 66.0415C111.412 66.1239 111.48 66.2008 111.577 66.2725C111.674 66.3405 111.81 66.4049 111.985 66.4658C112.161 66.5267 112.385 66.5876 112.657 66.6484C113.133 66.7559 113.525 66.8848 113.833 67.0352C114.141 67.1855 114.37 67.37 114.521 67.5884C114.671 67.8068 114.746 68.0718 114.746 68.3833C114.746 68.6375 114.692 68.8703 114.585 69.0815C114.481 69.2928 114.329 69.4754 114.128 69.6294C113.931 69.7798 113.695 69.8979 113.419 69.9839C113.147 70.0662 112.841 70.1074 112.501 70.1074C111.989 70.1074 111.556 70.0161 111.201 69.8335C110.847 69.6509 110.578 69.4146 110.396 69.1245C110.213 68.8345 110.122 68.5283 110.122 68.2061H111.121C111.135 68.4782 111.214 68.6948 111.357 68.856C111.5 69.0135 111.676 69.1263 111.883 69.1943C112.091 69.2588 112.297 69.291 112.501 69.291C112.773 69.291 113 69.2552 113.183 69.1836C113.369 69.112 113.511 69.0135 113.607 68.8882C113.704 68.7629 113.752 68.6196 113.752 68.4585Z\",\n fill: \"white\"\n});\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.6562 49.2812V50.8262H42.4854L42.3896 49.6299L46.5391 43.0469H48.1045L46.4092 45.8838L44.3447 49.2812H49.6562ZM48.5283 43.0469V53H46.5596V43.0469H48.5283ZM50.9004 52.0498C50.9004 51.7581 51.0007 51.5143 51.2012 51.3184C51.4062 51.1224 51.6774 51.0244 52.0146 51.0244C52.3519 51.0244 52.6208 51.1224 52.8213 51.3184C53.0264 51.5143 53.1289 51.7581 53.1289 52.0498C53.1289 52.3415 53.0264 52.5853 52.8213 52.7812C52.6208 52.9772 52.3519 53.0752 52.0146 53.0752C51.6774 53.0752 51.4062 52.9772 51.2012 52.7812C51.0007 52.5853 50.9004 52.3415 50.9004 52.0498ZM61.5439 43.0469V44.1064L57.6953 53H55.6172L59.4658 44.585H54.5098V43.0469H61.5439Z\",\n fill: \"white\"\n});\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.4333 41.6304C75.62 41.0931 76.38 41.0931 76.5667 41.6304L77.7438 45.0168C77.8262 45.2538 78.0474 45.4145 78.2983 45.4197L81.8827 45.4927C82.4514 45.5043 82.6863 46.227 82.233 46.5707L79.3761 48.7366C79.1761 48.8882 79.0916 49.1483 79.1643 49.3885L80.2024 52.82C80.3672 53.3645 79.7524 53.8111 79.2854 53.4862L76.3427 51.4385C76.1367 51.2951 75.8633 51.2951 75.6573 51.4385L72.7146 53.4862C72.2476 53.8111 71.6328 53.3645 71.7976 52.82L72.8357 49.3885C72.9084 49.1483 72.8239 48.8882 72.6239 48.7366L69.767 46.5707C69.3137 46.227 69.5486 45.5043 70.1173 45.4927L73.7017 45.4197C73.9526 45.4145 74.1738 45.2538 74.2562 45.0168L75.4333 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.4333 41.6304C91.62 41.0931 92.38 41.0931 92.5667 41.6304L93.7438 45.0168C93.8262 45.2538 94.0474 45.4145 94.2983 45.4197L97.8827 45.4927C98.4514 45.5043 98.6863 46.227 98.233 46.5707L95.3761 48.7366C95.1761 48.8882 95.0916 49.1483 95.1643 49.3885L96.2024 52.82C96.3672 53.3645 95.7524 53.8111 95.2854 53.4862L92.3427 51.4385C92.1367 51.2951 91.8633 51.2951 91.6573 51.4385L88.7146 53.4862C88.2476 53.8111 87.6328 53.3645 87.7976 52.82L88.8357 49.3885C88.9084 49.1483 88.8239 48.8882 88.6239 48.7366L85.767 46.5707C85.3137 46.227 85.5486 45.5043 86.1173 45.4927L89.7017 45.4197C89.9526 45.4145 90.1738 45.2538 90.2562 45.0168L91.4333 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.433 41.6304C107.62 41.0931 108.38 41.0931 108.567 41.6304L109.744 45.0168C109.826 45.2538 110.047 45.4145 110.298 45.4197L113.883 45.4927C114.451 45.5043 114.686 46.227 114.233 46.5707L111.376 48.7366C111.176 48.8882 111.092 49.1483 111.164 49.3885L112.202 52.82C112.367 53.3645 111.752 53.8111 111.285 53.4862L108.343 51.4385C108.137 51.2951 107.863 51.2951 107.657 51.4385L104.715 53.4862C104.248 53.8111 103.633 53.3645 103.798 52.82L104.836 49.3885C104.908 49.1483 104.824 48.8882 104.624 48.7366L101.767 46.5707C101.314 46.227 101.549 45.5043 102.117 45.4927L105.702 45.4197C105.953 45.4145 106.174 45.2538 106.256 45.0168L107.433 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123.433 41.6304C123.62 41.0931 124.38 41.0931 124.567 41.6304L125.744 45.0168C125.826 45.2538 126.047 45.4145 126.298 45.4197L129.883 45.4927C130.451 45.5043 130.686 46.227 130.233 46.5707L127.376 48.7366C127.176 48.8882 127.092 49.1483 127.164 49.3885L128.202 52.82C128.367 53.3645 127.752 53.8111 127.285 53.4862L124.343 51.4385C124.137 51.2951 123.863 51.2951 123.657 51.4385L120.715 53.4862C120.248 53.8111 119.633 53.3645 119.798 52.82L120.836 49.3885C120.908 49.1483 120.824 48.8882 120.624 48.7366L117.767 46.5707C117.314 46.227 117.549 45.5043 118.117 45.4927L121.702 45.4197C121.953 45.4145 122.174 45.2538 122.256 45.0168L123.433 41.6304Z\",\n fill: \"#FBC105\"\n});\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.433 41.6304C139.62 41.0931 140.38 41.0931 140.567 41.6304L141.744 45.0168C141.826 45.2538 142.047 45.4145 142.298 45.4197L145.883 45.4927C146.451 45.5043 146.686 46.227 146.233 46.5707L143.376 48.7366C143.176 48.8882 143.092 49.1483 143.164 49.3885L144.202 52.82C144.367 53.3645 143.752 53.8111 143.285 53.4862L140.343 51.4385C140.137 51.2951 139.863 51.2951 139.657 51.4385L136.715 53.4862C136.248 53.8111 135.633 53.3645 135.798 52.82L136.836 49.3885C136.908 49.1483 136.824 48.8882 136.624 48.7366L133.767 46.5707C133.314 46.227 133.549 45.5043 134.117 45.4927L137.702 45.4197C137.953 45.4145 138.174 45.2538 138.256 45.0168L139.433 41.6304Z\",\n fill: \"url(#paint0_linear_8665_87307)\"\n});\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.716 17.0176C21.6796 12.9748 25.0217 11.008 25.1745 10.9165C23.2818 8.15318 20.3481 7.77563 19.3171 7.74553C16.8532 7.48588 14.4631 9.22188 13.208 9.22188C11.9278 9.22188 9.99497 7.77061 7.91182 7.81326C5.23116 7.85465 2.72337 9.40877 1.34796 11.8221C-1.49053 16.7429 0.626442 23.9741 3.34593 27.9516C4.7063 29.8996 6.29591 32.0746 8.37655 31.9981C10.4121 31.914 11.1725 30.6986 13.6289 30.6986C16.0628 30.6986 16.7768 31.9981 18.8988 31.9491C21.0834 31.914 22.4588 29.9924 23.7715 28.0268C25.3436 25.7941 25.9749 23.5953 26 23.4824C25.9486 23.4648 21.7573 21.863 21.716 17.0176Z\",\n fill: \"white\"\n});\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.708 5.12897C18.8028 3.75798 19.5519 1.89279 19.3439 0C17.7594 0.0702427 15.7777 1.09754 14.6365 2.43842C13.6269 3.62001 12.725 5.5567 12.958 7.37799C14.738 7.51095 16.5656 6.47863 17.708 5.12897Z\",\n fill: \"white\"\n});\nvar _ref19 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_8665_87307\",\n x1: 148,\n y1: 48,\n x2: 132,\n y2: 48,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.495,\n stopColor: \"#ABAAA8\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.4951,\n stopColor: \"#FBC105\"\n})));\nfunction SvgSeloAppStore(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 152,\n height: 73,\n viewBox: \"0 0 152 73\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSeloAppStore);\nexport default __webpack_public_path__ + \"static/media/selo-app-store.e273569e.svg\";\nexport { ForwardRef as ReactComponent };","import { BiCheck } from \"react-icons/bi\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Tooltip, Typography, message } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport Button from \"../../components/Button\";\nimport HandleTag from \"../../services/handleTag\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { Container, PlanosContainer, LogoContainer } from \"./styles\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\nimport { UserPlanUpgradeEnum, getPlanPrice, planos } from \"./planos\";\nimport { ReactComponent as Selo7dias } from \"../../assets/icons/selo-7-dias.svg\";\nimport { ReactComponent as SeloGarantia } from \"../../assets/icons/selo-garantia.svg\";\nimport { ReactComponent as SeloGoogleStore } from \"../../assets/icons/selo-play-store.svg\";\nimport { ReactComponent as SeloAppStore } from \"../../assets/icons/selo-app-store.svg\";\n\n\nvar getStatus: NodeJS.Timeout;\n\nexport const Planos = () => {\n const navigate = useNavigate();\n const {\n user,\n hasPlan,\n // isIOSAPP,\n getUserInfo,\n // directPayment,\n // initIOSPlanCheck,\n // setDirectPayment,\n } = useAuth();\n const [selectedPlan, setSelectedPlan] = useState<any>();\n const [paymentModal, setPaymentModal] = useState(false);\n const [planUpgrade, setPlanUpgrade] = useState<UserPlanUpgradeEnum>();\n\n const handleSelectPlan = (plan: any) => {\n if (false) {\n // initIOSPlanCheck();\n window.location.href = !process.env.REACT_APP_URL?.includes(\"dev\")\n ? \"https://checkout.velotax.com.br/\"\n : \"https://checkout-dev.velotax.com.br/\";\n } else {\n setPaymentModal(true);\n }\n setSelectedPlan(plan);\n };\n\n const checkWasPaid = useCallback(\n (id: string, delay: number = 2) => {\n let attempts = 0;\n getStatus = setInterval(async () => {\n apiPayment\n .get(`/user-plan/plan-info`)\n .then((res) => {\n if (res.data?.active) {\n clearInterval(getStatus);\n message.success(\"Pagamento Confirmado com sucesso!\");\n HandleTag(\"75\");\n getUserInfo();\n user?.user?.isAd\n ? navigate(\"/sucesso?ad=true\")\n : navigate(\"/sucesso\");\n }\n })\n .finally(() => {\n attempts += 1;\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n },\n [navigate, getUserInfo, user?.user?.isAd]\n );\n\n const handleSuccess = (data: any) => {\n checkWasPaid(data.paymentId, 4);\n };\n\n const stopIntervalPix = () => {\n if (getStatus) clearInterval(getStatus);\n };\n\n useEffect(() => {\n return () => getStatus && clearInterval(getStatus);\n }, [checkWasPaid]);\n\n useEffect(() => {\n // setPaymentModal(true);\n setSelectedPlan(\n planos.find(\n (plan) => plan.type === user.user.userPlanInfoVelotax?.type\n ) ?? planos[1]\n );\n }, [user?.user?.userPlanInfoVelotax?.type]);\n\n return (\n <Container className=\"velotax-container\">\n <div className=\"velotax-content\">\n <Typography.Title className=\"page-title\">\n Selecione seu plano\n </Typography.Title>\n <Typography.Text className=\"subtitle\">\n Junte-se a nossa comunidade com mais de{\" \"}\n <strong>500 mil usuários satisfeitos!</strong>\n </Typography.Text>\n {/* <TrustPilotTrustBox /> */}\n <LogoContainer className=\"selos\">\n <div className=\"selo\">\n <SeloGoogleStore />\n </div>\n <div className=\"selo right-border\">\n <SeloAppStore />\n </div>\n <div className=\"selo left-border\">\n <SeloGarantia />\n </div>\n\n <div className=\"selo tooltip-container\">\n <div className=\"svg-container\">\n <Selo7dias />\n <div className=\"tooltip\">\n <Tooltip title=\"Oferecemos uma garantia de satisfação de sete dias para a sua contratação. Se, por qualquer motivo, você não estiver satisfeito, reembolsaremos integralmente o valor investido, desde que não tenhamos emitido DARFs ou gerado relatórios durante esse perÃodo.\">\n <InfoCircleOutlined />\n </Tooltip>\n </div>\n </div>\n </div>\n </LogoContainer>\n <PlanosContainer>\n {planos.map((plan) => {\n const actionTypeText = !hasPlan\n ? \"Selecionar\"\n : (hasPlan.basic &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) ||\n (hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO) ||\n (hasPlan.concierge &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE)\n ? \"Ativo\"\n : \"Fazer upgrade\"\n\n const price = getPlanPrice(plan, hasPlan)\n ?.toLocaleString(\"pt-br\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n const isUpgrade = actionTypeText === \"Fazer upgrade\"\n\n return (\n <div className=\"plan\" key={plan.name}>\n {plan.popular && <div className=\"plan-popular\">Popular</div>}\n <Typography.Paragraph className=\"plan-name\">\n {plan.name}\n </Typography.Paragraph>\n <Typography.Paragraph className=\"plan-price\">\n {isUpgrade ? \"+ \" : \"\"}R${\" \"}\n <span className=\"plan-price-main\">{price.split(\",\")[0]}</span>\n ,{price.split(\",\")[1]}\n </Typography.Paragraph>\n <Typography.Text className=\"plan-price-desc\">\n por mês no plano anual\n </Typography.Text>\n <Typography.Text className=\"plan-for\">\n {plan.for}\n </Typography.Text>\n <Button\n block\n size=\"large\"\n type=\"primary\"\n disabled={\n hasPlan &&\n (\n (hasPlan.basic && plan?.type === UserPlanEnum.VELOTAX_MAIN_BASIC) ||\n (hasPlan.premium && plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO) ||\n (hasPlan.concierge && plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE)\n )\n }\n onClick={() => {\n if (hasPlan) {\n setPlanUpgrade(\n hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.PRO_TO_CONCIERGE\n : !hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_PRO\n ? UserPlanUpgradeEnum.BASIC_TO_PRO\n : !hasPlan.premium &&\n plan?.type === UserPlanEnum.VELOTAX_MAIN_CONCIERGE\n ? UserPlanUpgradeEnum.BASIC_TO_CONCIERGE\n : undefined\n );\n }\n handleSelectPlan(plan);\n }}\n >\n {actionTypeText}\n </Button>\n <Typography.Text className=\"plan-includes\">\n {plan.includes}\n </Typography.Text>\n <div className=\"plan-benefits\">\n {plan.benefits.map((benefit, index) => (\n <div className=\"plan-benefit\" key={index}>\n <BiCheck className=\"check\" />\n {benefit.split(\"{\")[0]}\n {benefit.split(\"{\")?.[1]?.length > 0 ? (\n <Tooltip\n title={benefit.split(\"{\")?.[1].replace(\"}\", \"\")}\n getPopupContainer={(target) => target.parentElement!}\n >\n <InfoCircleOutlined className=\"info\" />\n </Tooltip>\n ) : (\n <></>\n )}\n </div>\n ))}\n </div>\n </div>\n )\n })}\n </PlanosContainer>\n </div>\n <PaymentModal\n hideDarfDownload\n show={paymentModal}\n callDarf={() => {}}\n planCurrent={selectedPlan}\n onSucessPix={checkWasPaid}\n onSucessCreditCard={handleSuccess}\n hidePixButton={\n \"VELOTAX_MAIN_PRO_MONTH\" === selectedPlan?.type || planUpgrade !== undefined\n }\n paymentData={{\n planUpgrade,\n type: selectedPlan?.type,\n isPlan: true,\n stopIntervalPix,\n }}\n onCancel={(e: any) => {\n setPaymentModal(false);\n setSelectedPlan(undefined);\n // setDirectPayment(false);\n }}\n />\n </Container>\n );\n};","export enum StatusCSSClassEnum {\n true = \"true\",\n false = \"false\",\n}\n\nexport enum StatusTextEnum {\n true = \"Acesso permitido\",\n false = \"Acesso bloqueado\",\n}\n","import { Typography } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 32px 128px;\n\n h1 {\n width: 700px;\n margin: 0 auto 1.5rem;\n font-weight: 400;\n font-size: 2rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n h2.ant-typography {\n display: flex;\n align-items: center;\n column-gap: 8px;\n width: 700px;\n margin: 0 auto 1.5rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n\n &.info {\n align-items: flex-start;\n font-size: 0.875rem;\n line-height: 1.125rem;\n opacity: 0.85;\n margin: 0 auto 2.5rem;\n svg {\n margin-top: 4px;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 0;\n\n h1 {\n width: calc(100% - 48px);\n margin: 0 24px 1.5rem;\n padding: 24px 0 1rem;\n }\n\n h2.ant-typography {\n width: 100%;\n margin: 0 auto 1.5rem;\n padding: 0 24px;\n }\n }\n`;\n\nexport const Content = styled.div`\n padding: 32px;\n margin: 0 auto;\n width: 700px;\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n\n .ant-list.ant-list-split {\n margin: 0;\n padding: 0 16px;\n background-color: var(--velotax-ghost);\n border: 1px solid var(--velotax-ghost);\n border-radius: 4px;\n .ant-list-item-action > li {\n padding: 0;\n }\n .ant-list-item-meta-description {\n opacity: 0.75;\n }\n .ant-list-item-action > li,\n .ant-list-item-meta-title,\n .ant-list-item-meta-description {\n color: var(--velotax-font-color);\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n .assessor-status {\n font-weight: 500;\n padding: 1px 8px;\n border-radius: 0px;\n color: var(--black);\n display: flex;\n &.true {\n background-color: var(--ant-success-color);\n }\n &.false {\n background-color: var(--ant-error-color);\n }\n &.awaiting {\n background-color: var(--ant-warning-color);\n }\n }\n @media only screen and (max-device-width: 812px) {\n width: 100%;\n padding: 24px;\n border-radius: 0;\n }\n`;\n\nexport const Field = styled(Typography.Text)`\n font-weight: 500;\n color: white;\n`;\n\nexport const Value = styled.span`\n font-weight: 300;\n margin-left: 0.5rem;\n`;\n\nexport const ActionContainers = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 3px;\n`","import styled from \"styled-components\";\n\nexport const Content = styled.div`\n // display: flex;\n // column-gap: 16px;\n // position: relative;\n // justify-content: center;\n // flex-direction: row;\n // @media only screen and (max-width: 812px) {\n // row-gap: 16px;\n // flex-direction: column;\n // }\n`;\n","import { Button } from \"@mui/material\";\nimport { Col, Divider, Row, Typography } from \"antd\";\nimport { Content } from \"./styles\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport { useRequireAccess } from \"../../contexts/RequireAccessContext\";\n\ninterface IPermissaoAssessorModal {\n visible: boolean;\n dataContent?: any;\n onCancel?: () => void;\n onOk: ({ token }: { token: string }) => void;\n}\n\nconst PermissaoAssessorModal: React.FC<IPermissaoAssessorModal> = ({\n onOk,\n visible,\n onCancel,\n dataContent,\n}) => {\n const { code } = dataContent;\n const { changePermission } = useRequireAccess();\n\n const handleCancel = () => {\n changePermission(code.token, false, true);\n if (onCancel) onCancel();\n };\n\n const handleOk = () => {\n changePermission(code.token, true, true);\n if (onOk) onOk(code.token);\n };\n\n return (\n <DrawerModal\n footer={null}\n height=\"auto\"\n visible={visible}\n onCancel={handleCancel}\n title=\"Solicitação de acesso\"\n >\n <Content>\n <Typography.Paragraph>\n O {code?.escritorio ? \"escritório de assessoria\" : \"assessor\"} de\n investimentos{\" \"}\n <strong>\n {code?.escritorio ? code?.escritorio?.name : code?.assessor?.name}{\" \"}\n </strong>\n solicitou o acesso à sua conta na XP by Velotax.\n </Typography.Paragraph>\n <Divider />\n <Row gutter={[16, 16]} className=\"column-reverse\">\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"info\"\n variant=\"contained\"\n onClick={handleCancel}\n >\n Não permitir\n </Button>\n </Col>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n onClick={handleOk}\n variant=\"contained\"\n >\n Permitir acesso\n </Button>\n </Col>\n </Row>\n </Content>\n </DrawerModal>\n );\n};\n\nexport default PermissaoAssessorModal;\n","import React, { createContext, useContext, useEffect, useState } from \"react\";\n\nimport PermissaoAssessorModal from \"../components/PermissaoAssessorModal\";\nimport { useAuth } from \"./AuthContext\";\nimport apiVeloPro from \"../services/apiVeloPro\";\nimport { message } from \"antd\";\n\ninterface IRequireAccessContext {\n checkPermissionUser: () => void;\n changePermission: (\n token: string,\n authorize?: boolean,\n preventNotification?: boolean\n ) => void;\n escritorioLiberados: any;\n assessoresLiberados: any;\n solicitantesAcesso: any;\n loading: boolean;\n removeOfficeIntegration: (\n token: string,\n authorize?: boolean,\n preventNotification?: boolean\n ) => void;\n}\n\nexport const RequireAccessContext = createContext<IRequireAccessContext>(\n {} as IRequireAccessContext\n);\n\nexport const RequireAccessProvider: React.FC = ({ children }) => {\n const [escritorioLiberados, setEscritorioLiberados] = useState<any[]>([]);\n const [assessoresLiberados, setAssessoresLiberados] = useState<any[]>([]);\n const [solicitantesAcesso, setSolicitantesAcesso] = useState<any[]>([]);\n const [showModal, setShowModal] = useState<boolean>(false);\n const [loading, setLoading] = useState(false);\n const { user } = useAuth();\n const solicitacaoModal = solicitantesAcesso.find(\n (s) => s.notified === false && s.isAuthorized === false\n );\n\n const checkPermissionUser = () => {\n const { cpf } = user.user;\n\n setLoading(true);\n apiVeloPro\n .get(`/clients/checkpermission?cpf=${cpf}`)\n .then(({ data }) => {\n setEscritorioLiberados(data?.escritorioId || []);\n setAssessoresLiberados(data?.assessorId || []);\n\n const listRequiredAccess: any = [];\n for (const solicitantes of data?.code || []) {\n const escritorio = data?.escritorioId?.find(\n (e: any) => e._id === solicitantes?.escritorioId\n );\n\n const assessor = data?.assessorId?.find((e: any) => {\n return e.escritorioId === solicitantes?.escritorioId;\n });\n\n listRequiredAccess.push({\n ...solicitantes,\n escritorio,\n assessor,\n });\n }\n setSolicitantesAcesso(listRequiredAccess);\n setShowModal(listRequiredAccess.length > 0 ? true : false);\n })\n .catch(() =>\n message.error(\"Ocorreu um erro, tente novamente mais tarde.\")\n )\n .finally(() => setLoading(false));\n };\n\n const changePermission = (\n token: string,\n authorize?: boolean,\n preventNotification?: boolean\n ) => {\n setLoading(true);\n apiVeloPro\n .post(\"/clients/changePermission\", {\n cpf: user.user.cpf,\n token,\n authorize,\n preventNotification,\n })\n .finally(() => checkPermissionUser());\n };\n const allowAccessOfficeAssessor = ({ token }: { token: string }) => {\n // apiVeloPro.post(\"/clients/allowAccessOfficeAssessor\", {\n // cpf: user.user.cpf,\n // token,\n // });\n };\n\n const handleOk = ({ token }: { token: string }) => {\n allowAccessOfficeAssessor({ token });\n setShowModal(false);\n };\n const handleCancel = () => setShowModal(false);\n\n const removeOfficeIntegration = (\n token: string,\n authorize?: boolean,\n preventNotification?: boolean\n ) => {\n setLoading(true);\n apiVeloPro\n .post(\"/clients/removeOffice\", {\n cpf: user.user.cpf,\n token,\n authorize,\n preventNotification,\n })\n .finally(() => checkPermissionUser());\n };\n\n\n useEffect(() => {\n if (user.user) {\n checkPermissionUser();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user.user]);\n\n return (\n <RequireAccessContext.Provider\n value={{\n removeOfficeIntegration,\n changePermission,\n checkPermissionUser,\n assessoresLiberados,\n escritorioLiberados,\n solicitantesAcesso,\n loading,\n }}\n >\n {children}\n {solicitacaoModal && (\n <PermissaoAssessorModal\n dataContent={{ code: solicitacaoModal, user: user.user }}\n onCancel={handleCancel}\n onOk={handleOk}\n visible={showModal}\n />\n )}\n </RequireAccessContext.Provider>\n );\n};\n\nexport const useRequireAccess = (): IRequireAccessContext =>\n useContext(RequireAccessContext);\n","import { Button } from \"@mui/material\";\nimport { Col, Modal, Row } from \"antd\";\n\nexport function ModalConfirmDesvinculo({\n action,\n closeFn,\n visible,\n}: {\n action: () => void;\n visible: boolean;\n closeFn: () => void;\n}) {\n function handleClick() {\n action();\n closeFn();\n }\n\n return (\n <Modal\n title=\"Desvincular escritório\"\n visible={visible}\n onCancel={closeFn}\n closable={true}\n footer={\n <Row gutter={[16, 16]} style={{ marginBottom: \"16px\" }}>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n handleClick();\n }}>\n Sim\n </Button>\n </Col>\n <Col xs={24} sm={12}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => {\n closeFn();\n }}>\n Não\n </Button>\n </Col>\n </Row>\n }>\n <Row>\n <Col>Deseja desvincular o escritório?</Col>\n </Row>\n </Modal>\n );\n}\n","import clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport { Button } from \"@mui/material\";\nimport { List, Skeleton, Space, Typography } from \"antd\";\nimport { ActionContainers, Container, Content, Field, Value } from \"./styles\";\nimport { Page } from \"../../constants/brokers\";\nimport {\n StatusCSSClassEnum,\n StatusTextEnum,\n} from \"../../constants/managerAccess\";\nimport { useRequireAccess } from \"../../contexts/RequireAccessContext\";\nimport { ModalConfirmDesvinculo } from \"../../components/ModalConfirmDesvinculo\";\n\ninterface ManagerAccessProps {\n item?: Page;\n}\n\nexport const ManagerAccess: React.FC<ManagerAccessProps> = () => {\n const [showModal, setShowModal] = useState(false)\n const { checkPermissionUser, solicitantesAcesso, changePermission, loading, removeOfficeIntegration } =\n useRequireAccess();\n\n window.history.replaceState({}, document.title);\n\n useEffect(() => {\n checkPermissionUser();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleClick = (token: string) => {\n changePermission(token);\n };\n\n return (\n <>\n <Container>\n <Typography.Title level={1}>Gestão de Acessos</Typography.Title>\n <Typography.Title level={2}>\n Escritórios e assessores com permissão de acesso à sua conta\n </Typography.Title>\n <Content>\n <List\n loading={loading}\n dataSource={solicitantesAcesso}\n itemLayout=\"horizontal\"\n renderItem={(item: any, index) => (\n <List.Item\n actions={[\n <ActionContainers>\n <Button\n fullWidth\n size=\"small\"\n color=\"secondary\"\n variant=\"outlined\"\n onClick={() => handleClick(item.token)}\n >\n {item?.isAuthorized ? \"Bloquear acesso\" : \"Permitir acesso\"}\n </Button>\n {!item?.isAuthorized &&\n <Button\n fullWidth\n size=\"small\"\n color=\"error\"\n variant=\"outlined\"\n onClick={() => {\n setShowModal(true)\n }}\n >\n Desvincular\n </Button>\n }\n </ActionContainers>\n ]}\n >\n <Skeleton title={false} loading={false} active>\n <List.Item.Meta\n title={item?.name || item?.officeName || \" \"}\n description={\n <Space direction=\"vertical\">\n {item?.escritorio && (\n <Field>\n Escritório:\n <Value>{item?.escritorio.name || \"\"}</Value>\n </Field>\n )}\n {item?.assessor && (\n <Field>\n Assessor:\n <Value>{item?.assessor.name || \"\"}</Value>\n </Field>\n )}\n <div style={{ display: \"flex\" }}>\n <span\n className={clsx(\n \"assessor-status\",\n StatusCSSClassEnum[\n String(\n item?.isAuthorized\n ) as keyof typeof StatusCSSClassEnum\n ]\n )}\n >\n {\n StatusTextEnum[\n String(\n item?.isAuthorized\n ) as keyof typeof StatusTextEnum\n ]\n }\n </span>\n </div>\n </Space>\n }\n />\n </Skeleton>\n <ModalConfirmDesvinculo\n visible={showModal}\n action={() => { removeOfficeIntegration(item.token) }}\n closeFn={() => setShowModal(false)}\n />\n </List.Item>\n )}\n />\n </Content>\n </Container>\n </>\n );\n};\n","import { Button, Col, Row, Tabs } from \"antd\";\nimport { AiOutlineArrowRight } from \"react-icons/ai\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport {\n CurrencyFormItem,\n NumberFormItem,\n RadioFormItem,\n} from \"../../constants/formItems\";\nimport { validationNumberField } from \"../../utils/formValidations\";\n\nexport interface HelpModal {\n title: React.ReactNode;\n body: React.ReactNode;\n}\n\ninterface PGBLQuestionsParams {\n data: any;\n setHelpModal: React.Dispatch<React.SetStateAction<HelpModal | undefined>>;\n}\n\ninterface TabFormItemProps extends PGBLQuestionsParams {\n name: string;\n helpModal: HelpModal;\n}\n\nconst TabFormItem = ({\n name,\n data,\n setHelpModal,\n helpModal,\n}: TabFormItemProps) => ({\n name,\n rules: [],\n onChange: undefined,\n getValueFromEvent: undefined,\n input: (\n <Tabs\n defaultActiveKey={data[name] ?? \"mensal\"}\n tabBarExtraContent={\n <Button type=\"text\" onClick={() => setHelpModal(helpModal)}>\n <InfoCircleOutlined />\n </Button>\n }\n >\n <Tabs.TabPane tab=\"Mensal\" key=\"mensal\"></Tabs.TabPane>\n <Tabs.TabPane tab=\"Anual\" key=\"anual\"></Tabs.TabPane>\n </Tabs>\n ),\n});\n\nconst SalarioText = (\n <>\n O valor inserido neste campo deve ser sua remuneração, considerando apenas:\n <br />\n <br />\n <ul style={{ listStyle: \"outside\" }}>\n <li>\n Trabalhadores CLT: salário, férias, terço de férias (adicionado\n automaticamente caso selecione o formato mensal), adicionais\n insalubridade/periculosidade, adicional noturno, comissões, corretagens,\n horas extras, bolsa de estudos sem isenção e bonificações;\n </li>\n <li>Empresários: pró-labore;</li>\n <li>Autônomos: rendimentos não-assalariados;</li>\n <li>\n MEI: rendimentos tributáveis, com receita recebida a maior que faixa de\n isenção, e pró-labore.\n </li>\n </ul>\n <br />\n Para realizar a estimativa em caso do valor mensal, faça a soma de todos os\n tipos de rendimentos acima mencionados recebidos durante ano e divida por\n 12. Obtendo assim média mensal.\n <br />\n <br />\n Atenção: Não devem ser incluÃdos valores recebidos à tÃtulo de PLR, 13º\n salário, parcela isenta de aposentadoria, diárias e ajuda de custo, férias e\n terço de férias vendidas, remuneração de stock option, dividendos, FGTS,\n seguro desemprego e indenização pagas pelo empregador em caso de demissão ou\n em caso de acidente de trabalho.\n </>\n);\n\nconst EducacaoText = (\n <>\n São aceitos gastos com educação profissional (ensino técnico e o\n tecnológico); educação superior, compreendendo os cursos de graduação e de\n pós-graduação (mestrado, doutorado e especialização); ensino médio; ensino\n fundamental e educação infantil. Sendo a dedução limitada ao valor de R$\n 3.561,50 por indivÃduo.\n </>\n);\n\nconst SaudeText = (\n <>\n Consideram-se despesas médicas ou de hospitalização os pagamentos efetuados\n a médicos de qualquer especialidade, dentistas, psicólogos, fisioterapeutas,\n terapeutas ocupacionais, fonoaudiólogos, hospitais, e as despesas\n provenientes de exames laboratoriais, serviços radiológicos, aparelhos\n ortopédicos, próteses ortopédicas e dentárias e planos de saúde.\n </>\n);\n\nconst DependenteText = (\n <>\n A Receita Federal considera como dependentes, para efeito do imposto de\n renda:\n <br />\n 1 - companheiro(a) com quem o contribuinte tenha filho ou viva há mais de 5\n anos, ou cônjuge;\n <br />\n 2 - filho(a) ou enteado(a), até 21 anos de idade;\n <br />\n 3 – filho(a) ou enteado(a) com deficiência, de qualquer idade, quando a sua\n remuneração não exceder as deduções autorizadas por lei (tendo em vista a\n decisão do Supremo Tribunal Federal – STF, na Ação Direta de\n Inconstitucionalidade nº 5.583/DF);\n <br />\n 4 - filho(a) ou enteado(a), se ainda estiverem cursando estabelecimento de\n ensino superior ou escola técnica de segundo grau, até 24 anos de idade;\n <br />\n 5 - irmão(ã), neto(a) ou bisneto(a), sem arrimo dos pais, de quem o\n contribuinte detenha a guarda judicial, até 21 anos, ou em qualquer idade,\n quando incapacitado fÃsica ou mentalmente para o trabalho;\n <br />\n 6 - irmão(ã), neto(a) ou bisneto(a), sem arrimo dos pais, com idade de 21\n anos até 24 anos, se ainda estiver cursando estabelecimento de ensino\n superior ou escola técnica de segundo grau, desde que o contribuinte tenha\n detido sua guarda judicial até os 21 anos;\n <br />\n 7 - Irmão(ã), neto(a) ou bisneto(a) com deficiência, sem arrimo dos pais,\n do(a) qual o contribuinte detém a guarda judicial, em qualquer idade, quando\n a sua remuneração não exceder as deduções autorizadas por lei (tendo em\n vista a decisão do Supremo Tribunal Federal – STF, na Ação Direta de\n Inconstitucionalidade nº 5.583/DF);\n <br />\n 8 - pais, avós e bisavós que, em 2021, tenham recebido rendimentos,\n tributáveis ou não, até R$ 22.847,76;\n <br />\n 9 - menor pobre até 21 anos que o contribuinte crie e eduque e de quem\n detenha a guarda judicial;\n <br />\n 10 – pessoa absolutamente incapaz, da qual o contribuinte seja tutor ou\n curador.\n </>\n);\n\nconst PensaoText = (\n <>\n A Receita só aceita despesas alimentÃcias definidas em acordo judicial ou\n escritura pública. Outras despesas, mesmo que sejam feitas em prol do\n alimentando, não podem ser incluÃdas.\n </>\n);\n\nconst AnualMensalText = (\n type:\n | \"gastos de saúde\"\n | \"gastos com educação\"\n | \"gastos com pensão\"\n | \"renda bruta\"\n) => (\n <>\n Caso selecione a opção <strong>\"Anual\"</strong>, insira o valor total de{\" \"}\n {type} que possui no ano. Caso selecione a opção <strong>\"Mensal\"</strong>,\n insira a média de {type} por mês.\n </>\n);\n\nexport const HelpModalTexts = {\n rendaBrutaMensal: { body: SalarioText, title: \"Renda bruta mensal\" },\n gastoMensalSaude: { body: SaudeText, title: \"Despesas com saúde\" },\n gastoMensalEducacao: { body: EducacaoText, title: \"Despesas com educação\" },\n possuiDependentes: { body: DependenteText, title: \"Dependentes\" },\n pagaPensaoAlimenticia: { body: PensaoText, title: \"Pensão alimentÃcia\" },\n rendaAnualMensal: {\n body: AnualMensalText(\"renda bruta\"),\n title: \"Mensal ou anual\",\n },\n saudeAnualMensal: {\n body: AnualMensalText(\"gastos de saúde\"),\n title: \"Mensal ou anual\",\n },\n educacaoAnualMensal: {\n body: AnualMensalText(\"gastos com educação\"),\n title: \"Mensal ou anual\",\n },\n pensaoAnualMensal: {\n body: AnualMensalText(\"gastos com pensão\"),\n title: \"Mensal ou anual\",\n },\n};\n\nexport const pgblQuestions = ({ data, setHelpModal }: PGBLQuestionsParams) => [\n {\n id: \"explicativo\",\n hideQuestionNumber: true,\n title: (\n <>\n Você pode ser elegÃvel para ter economia com aporte em PGBL, caso se\n enquadre em algum dos casos abaixo:\n </>\n ),\n formItems: [],\n children: (\n <Row className=\"income-types\">\n <Col span={12}>\n <p>\n <span>•</span> Assalariado (CLT)\n </p>\n <p>\n <span>•</span> Empresário (recebeu pró-labore)\n </p>\n <p>\n <span>•</span> Autônomo\n </p>\n <p>\n <span>•</span> MEI\n </p>\n </Col>\n <Col span={12}>\n <p>\n <span>•</span> Aposentado (rendimentos acima de R$ 3.807,96\n por mês)\n </p>\n <p>\n <span>•</span> Servidor público\n </p>\n <p>\n <span>•</span> Recebeu renda de aluguel\n </p>\n </Col>\n </Row>\n ),\n },\n {\n id: \"rendaBrutaMensal\",\n title: (\n <>\n Qual sua renda bruta {data.rendaBrutaMensalMode ?? \"mensal\"}\n ? \n <Button\n type=\"link\"\n className=\"pgbl-info-button\"\n onClick={() => setHelpModal(HelpModalTexts.rendaBrutaMensal)}\n >\n <span>\n Clique aqui e descubra o que é\n <br />\n considerado como renda bruta\n </span>\n <AiOutlineArrowRight />\n </Button>\n </>\n ),\n formItems: [\n TabFormItem({\n data,\n setHelpModal,\n name: \"rendaBrutaMensalMode\",\n helpModal: HelpModalTexts.rendaAnualMensal,\n }),\n CurrencyFormItem({\n name: \"rendaBrutaMensal\",\n label: \"\",\n rules: validationNumberField,\n }),\n ],\n },\n // {\n // id: \"gastoMensalSaude\",\n // title: (\n // <>\n // Você possui gastos com saúde? \n // <Button\n // type=\"text\"\n // onClick={() => setHelpModal(HelpModalTexts.gastoMensalSaude)}\n // >\n // <InfoCircleOutlined />\n // </Button>\n // </>\n // ),\n // formItems: [\n // RadioFormItem({\n // name: \"possuiGastoMensalSaude\",\n // label: \"\",\n // }),\n // ...(data.possuiGastoMensalSaude\n // ? [\n // TabFormItem({\n // data,\n // setHelpModal,\n // name: \"gastoMensalSaudeMode\",\n // helpModal: HelpModalTexts.saudeAnualMensal,\n // }),\n // CurrencyFormItem({\n // name: \"gastoMensalSaude\",\n // label: `Qual valor dos seus gastos ${\n // data.gastoMensalSaudeMode === \"anual\" ? \"anuais\" : \"mensais\"\n // } com saúde?`,\n // rules: validationNumberField,\n // }),\n // ]\n // : []),\n // ],\n // },\n // {\n // id: \"gastoMensalEducacao\",\n // title: (\n // <>\n // Você possui gastos com educação? \n // <Button\n // type=\"text\"\n // onClick={() => setHelpModal(HelpModalTexts.gastoMensalEducacao)}\n // >\n // <InfoCircleOutlined />\n // </Button>\n // </>\n // ),\n // formItems: [\n // RadioFormItem({\n // name: \"possuiGastoMensalEducacao\",\n // label: \"\",\n // }),\n // ...(data.possuiGastoMensalEducacao\n // ? [\n // TabFormItem({\n // data,\n // setHelpModal,\n // name: \"gastoMensalEducacaoMode\",\n // helpModal: HelpModalTexts.educacaoAnualMensal,\n // }),\n // CurrencyFormItem({\n // name: \"gastoMensalEducacao\",\n // label: `Qual valor dos seus gastos ${\n // data.gastoMensalEducacaoMode === \"anual\" ? \"anuais\" : \"mensais\"\n // } com educação?`,\n // rules: validationNumberField,\n // }),\n // ]\n // : []),\n // ],\n // },\n {\n id: \"possuiDependentes\",\n title: (\n <>\n Você possui dependentes? \n <Button\n type=\"link\"\n className=\"pgbl-info-button\"\n onClick={() => setHelpModal(HelpModalTexts.possuiDependentes)}\n >\n <span>\n Clique aqui e descubra quem é\n <br />\n considerado como dependente\n </span>\n <AiOutlineArrowRight />\n </Button>\n </>\n ),\n formItems: [\n RadioFormItem({\n name: \"possuiDependentes\",\n label: \"\",\n }),\n ...(data.possuiDependentes\n ? [\n NumberFormItem({\n name: \"quantidadeDependente\",\n label: \"Quantos dependentes você possui?\",\n maxLength: 2,\n placeholder: \"Ex: 1\",\n rules: validationNumberField,\n }),\n ]\n : []),\n ],\n },\n {\n id: \"possuiGastoMensalSaudeDependente\",\n title: (\n <>\n {data.possuiDependentes\n ? \"Você e seus dependentes possuem gastos com saúde?\"\n : \"Você possui gastos com saúde?\"}\n \n <Button\n type=\"link\"\n className=\"pgbl-info-button\"\n onClick={() => setHelpModal(HelpModalTexts.gastoMensalSaude)}\n >\n <span>\n Clique aqui e descubra o que pode\n <br />\n ser considerado como gasto de saúde\n </span>\n <AiOutlineArrowRight />\n </Button>\n </>\n ),\n formItems: [\n RadioFormItem({\n name: \"possuiGastoMensalSaudeDependente\",\n label: \"\",\n }),\n ...(data.possuiGastoMensalSaudeDependente\n ? [\n TabFormItem({\n data,\n setHelpModal,\n name: \"gastoMensalSaudeDependenteMode\",\n helpModal: HelpModalTexts.saudeAnualMensal,\n }),\n CurrencyFormItem({\n className: data.possuiDependentes ? \"handle-label\" : \"\",\n name: \"gastoMensalSaudeDependente\",\n label: `Qual o valor dos seus gastos ${\n data.gastoMensalSaudeDependenteMode === \"anual\"\n ? \"anuais\"\n : \"mensais\"\n } ${\n data.possuiDependentes ? \"e de todos os dependentes\" : \"\"\n } com saúde?`,\n rules: validationNumberField,\n }),\n ]\n : []),\n ],\n },\n {\n id: \"possuiGastoMensalEducacaoDependente\",\n title: (\n <>\n {data.possuiDependentes\n ? \"Você e seus dependentes possuem gastos com educação?\"\n : \"Você possui gastos com educação?\"}\n \n <Button\n type=\"link\"\n className=\"pgbl-info-button\"\n onClick={() => setHelpModal(HelpModalTexts.gastoMensalEducacao)}\n >\n <span>\n Clique aqui e descubra o que pode\n <br />\n ser considerado como gasto de educação\n </span>\n <AiOutlineArrowRight />\n </Button>\n </>\n ),\n formItems: [\n RadioFormItem({\n name: \"possuiGastoMensalEducacaoDependente\",\n label: \"\",\n }),\n ...(data.possuiGastoMensalEducacaoDependente\n ? [\n TabFormItem({\n data,\n setHelpModal,\n name: \"gastoMensalEducacaoDependenteMode\",\n helpModal: HelpModalTexts.educacaoAnualMensal,\n }),\n CurrencyFormItem({\n className: data.possuiDependentes ? \"handle-label\" : \"\",\n name: \"gastoMensalEducacaoDependente\",\n label: `Qual o valor dos seus gastos ${\n data.gastoMensalEducacaoDependenteMode === \"anual\"\n ? \"anuais\"\n : \"mensais\"\n } ${\n data.possuiDependentes ? \"e de todos os dependentes\" : \"\"\n } com educação?`,\n rules: validationNumberField,\n }),\n ]\n : []),\n ],\n },\n {\n id: \"pagaPensaoAlimenticia\",\n title: (\n <>\n Você paga pensão alimentÃcia? \n <Button\n type=\"link\"\n className=\"pgbl-info-button\"\n onClick={() => setHelpModal(HelpModalTexts.pagaPensaoAlimenticia)}\n >\n <span>\n Clique aqui e descubra o que pode ser\n <br />\n considerado como pensão alimentÃcia\n </span>\n <AiOutlineArrowRight />\n </Button>\n </>\n ),\n formItems: [\n RadioFormItem({\n name: \"pagaPensaoAlimenticia\",\n label: \"\",\n }),\n ...(data.pagaPensaoAlimenticia\n ? [\n TabFormItem({\n data,\n setHelpModal,\n name: \"gastoPensaoAlimenticiaMode\",\n helpModal: HelpModalTexts.pensaoAnualMensal,\n }),\n CurrencyFormItem({\n className: \"handle-label\",\n name: \"gastoPensaoAlimenticia\",\n rules: validationNumberField,\n label: `Qual o valor dos gastos ${\n data.gastoPensaoAlimenticiaMode === \"anual\"\n ? \"anuais\"\n : \"mensais\"\n } que você paga de pensão alimentÃcia?`,\n }),\n ]\n : []),\n ],\n },\n];\n","import styled, { css } from \"styled-components\";\n\nexport const Container = styled.div`\n padding: 64px 24px;\n @media only screen and (max-device-width: 812px) {\n padding: 24px 24px 64px;\n }\n`;\n\nexport const Content = styled.div`\n margin: 0 auto;\n max-width: 600px;\n\n h1 {\n font-weight: 400;\n font-size: 1.75rem;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n div.ant-typography {\n font-size: 1rem;\n line-height: 1.5rem;\n color: var(--velotax-font-color-light);\n }\n\n .loading-get {\n margin: 24px 0;\n .anticon.anticon-loading,\n .anticon.anticon-loading svg {\n width: 32px;\n height: 32px;\n }\n }\n\n .renda-container {\n opacity: 0.8;\n margin-top: 16px;\n font-weight: 400;\n font-size: 0.85rem;\n text-align: justify;\n line-height: 1.4rem;\n color: var(--velotax-font-color-light) !important;\n }\n`;\n\ninterface QuestionProps {\n show?: boolean;\n}\n\nexport const Question = styled.div<QuestionProps>`\n width: 100%;\n padding: 32px;\n margin-top: 32px;\n border-radius: 4px;\n background-color: var(--white);\n\n ${({ show }) =>\n show\n ? css`\n display: block;\n visibility: visible;\n `\n : css`\n display: none;\n overflow: hidden;\n visibility: hidden;\n max-height: 100px;\n `}\n\n .question-title {\n display: flex;\n align-items: flex-start;\n font-size: 1.5rem;\n margin-bottom: 1rem;\n\n button.ant-btn-text {\n padding: 4px;\n span,\n svg {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n .question-buttons {\n margin-top: 24px;\n }\n\n &,\n .anticon,\n .question-title,\n .ant-radio-wrapper,\n .ant-checkbox + span {\n color: var(--velotax-font-color-dark) !important;\n }\n\n .ant-tabs {\n color: var(--velotax-font-color) !important;\n .ant-tabs-nav {\n .ant-tabs-nav-wrap {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 140px;\n .ant-tabs-tab {\n padding: 4px 0;\n }\n }\n .anticon svg {\n color: var(--velotax-font-color-dark) !important;\n }\n }\n }\n\n .pgbl-info-button {\n padding: 4px;\n font-size: 12px;\n display: flex;\n column-gap: 4px;\n align-items: center;\n font-weight: 500;\n svg {\n width: 20px;\n height: 20px;\n min-width: 20px;\n min-height: 20px;\n }\n }\n\n .income-types {\n margin-bottom: 1rem;\n p {\n margin: 0;\n font-size: 1rem;\n display: flex;\n column-gap: 8px;\n span {\n }\n }\n }\n\n &.resume-container {\n font-size: 1.25rem;\n text-align: center;\n position: relative;\n .ant-typography {\n color: var(--velotax-font-color-dark) !important;\n }\n .assessor-text {\n font-size: 12px;\n margin: 16px 0 0;\n text-align: center;\n }\n button {\n margin-top: 16px;\n }\n .restituicao {\n margin: 16px 0;\n .ant-typography {\n margin-bottom: 0;\n font-size: 0.875rem;\n div {\n padding: 4px;\n font-weight: 500;\n line-height: 1rem;\n background-color: var(--ant-primary-color-hover);\n br {\n display: none;\n }\n }\n strong {\n padding: 4px;\n display: block;\n background-color: var(--ant-primary-color-outline);\n }\n }\n }\n .resume-edit-button {\n top: 32px;\n right: 32px;\n margin: 0;\n z-index: 1;\n position: absolute;\n svg {\n opacity: 0.85;\n fill: var(--velotax-font-color-dark);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 24px;\n margin-top: 8px;\n .question-buttons {\n button {\n font-size: 0.85rem;\n letter-spacing: 0.5px;\n padding-left: 16px;\n padding-right: 16px;\n }\n }\n &.resume-container {\n padding: 16px;\n font-size: 0.875rem;\n .restituicao {\n justify-content: center;\n .ant-typography {\n div {\n font-size: 12px;\n font-weight: 600;\n br {\n display: block;\n }\n }\n }\n }\n .resume-edit-button {\n top: 16px;\n right: 16px;\n }\n }\n .small-text {\n font-size: 10px;\n letter-spacing: 0px;\n padding-left: 8px;\n padding-right: 8px;\n }\n\n .question-title {\n flex-direction: column;\n }\n .pgbl-info-button {\n padding: 4px 0;\n text-align: left;\n }\n\n .handle-label {\n .MuiFormLabel-root.MuiInputLabel-root.MuiInputLabel-shrink {\n min-width: 133%;\n white-space: normal;\n transform: translate(0, -12px) scale(0.75);\n }\n }\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { FaRegEdit } from \"react-icons/fa\";\nimport { useNavigate } from \"react-router-dom\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { useState, useEffect, useCallback } from \"react\";\nimport {\n Button as AntButton,\n Checkbox,\n Col,\n Form,\n message,\n Modal,\n Row,\n Typography,\n} from \"antd\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport { HelpModal, pgblQuestions } from \"./items\";\nimport { Container, Content, Question } from \"./styles\";\nimport { errorMessage, formatCurrency } from \"../../utils\";\nimport HandleTag from \"../../services/handleTag\";\n\ninterface ResumeData {\n m: number;\n o: number;\n completa: { valorRestituicao: number };\n simplificada: { valorRestituicao: number };\n}\n\ninterface PGBLSimulatorProps {}\n\nexport const PGBLSimulator: React.FC<PGBLSimulatorProps> = () => {\n const [form] = Form.useForm();\n const navigate = useNavigate();\n const [resume, setResume] = useState<ResumeData>();\n const [helpModal, setHelpModal] = useState<HelpModal>();\n const [loading, setLoading] = useState(false);\n const [editting, setEditting] = useState(true);\n const [showModal, setShowModal] = useState(false);\n const [loadingGet, setLoadingGet] = useState(false);\n const [autorizacao, setAutorizacao] = useState(false);\n const [backupValues, setBackupValues] = useState({});\n const [currentQuestion, setCurrentQuestion] = useState(0);\n const [questions, setQuestions] = useState(\n pgblQuestions({ data: {}, setHelpModal })\n );\n\n const getResume = useCallback(() => {\n setLoadingGet(true);\n apiBolsa\n .get(\"/xpinvestimentos/pgblCalculate\")\n .then((response) => {\n const { resumoSimulacao, ...data } = response.data;\n if (resumoSimulacao) {\n const formData = {\n ...data,\n possuiGastoMensalSaude: !!data.gastoMensalSaude,\n possuiGastoMensalEducacao: !!data.gastoMensalEducacao,\n possuiDependentes: !!data.quantidadeDependente,\n possuiGastoMensalSaudeDependente: !!data.gastoMensalSaudeDependente,\n possuiGastoMensalEducacaoDependente:\n !!data.gastoMensalEducacaoDependente,\n };\n form.setFieldsValue(formData);\n setQuestions(pgblQuestions({ data: formData, setHelpModal }));\n setResume(resumoSimulacao);\n setEditting(false);\n }\n })\n .catch(() => {})\n .finally(() => {\n setLoadingGet(false);\n });\n }, [form]);\n\n const handleEdit = () => {\n setEditting(true);\n setAutorizacao(false);\n setCurrentQuestion(0);\n };\n\n // const openModal = () => {\n // setLoading(true);\n // apiBolsa\n // .post(\"/xpinvestimentos/pgblCalculate/sendMail\")\n // .then(() => {\n // setShowModal(true);\n // })\n // .catch(() => {})\n // .finally(() => setLoading(false));\n // }\n // };\n\n const calculate = () => {\n autorizacao &&\n formValidate(1)\n .then(() => {\n setLoading(true);\n const data = form.getFieldsValue();\n apiBolsa\n .post(\"/xpinvestimentos/pgblCalculate\", {\n ...data,\n rendaBrutaMensalMode: data.rendaBrutaMensalMode ?? \"mensal\",\n gastoMensalSaudeMode: data.gastoMensalSaudeMode ?? \"mensal\",\n gastoMensalEducacaoMode: data.gastoMensalEducacaoMode ?? \"mensal\",\n gastoMensalEducacaoDependenteMode:\n data.gastoMensalEducacaoDependenteMode ?? \"mensal\",\n gastoMensalSaudeDependenteMode:\n data.gastoMensalSaudeDependenteMode ?? \"mensal\",\n gastoPensaoAlimenticiaMode:\n data.gastoPensaoAlimenticiaMode ?? \"mensal\",\n // ...(!data.possuiGastoMensalSaude ? { gastoMensalSaude: 0 } : {}),\n // ...(!data.possuiGastoMensalEducacao\n // ? { gastoMensalEducacao: 0 }\n // : {}),\n ...(!data.possuiDependentes ? { quantidadeDependente: 0 } : {}),\n ...(!data.possuiGastoMensalSaudeDependente\n ? { gastoMensalSaudeDependente: 0, gastoMensalSaude: 0 }\n : { gastoMensalSaude: data.gastoMensalSaudeDependente }),\n ...(!data.possuiGastoMensalEducacaoDependente\n ? { gastoMensalEducacaoDependente: 0, gastoMensalEducacao: 0 }\n : { gastoMensalEducacao: data.gastoMensalEducacaoDependente }),\n ...(!data.pagaPensaoAlimenticia\n ? { gastoPensaoAlimenticia: 0 }\n : {}),\n })\n .then((response) => {\n setResume(response.data);\n setEditting(false);\n })\n .catch(() => {\n message.error(errorMessage);\n })\n .finally(() => {\n setLoading(false);\n });\n })\n .catch(() => {});\n };\n\n const formValidate = (n: 1 | -1) =>\n form.validateFields(\n n === 1\n ? questions[currentQuestion].formItems.map(\n (formItem) => formItem.name ?? \"\"\n )\n : []\n );\n\n const formNavigate = (n: 1 | -1) => {\n if (n === -1 && currentQuestion === 0) {\n navigate(\"/\");\n } else if (n === 1 && currentQuestion === questions.length - 1) {\n calculate();\n } else {\n formValidate(n)\n .then(() => {\n setCurrentQuestion((current) => current + n);\n })\n .catch(() => {});\n }\n };\n\n const onValuesChange = (changedValues: any, values: any) => {\n const inputs = questions.map((question) => question.formItems).flat();\n let data = {\n ...values,\n ...inputs\n .filter((input) => input.onChange)\n .reduce(\n (acc, cur) => ({\n ...acc,\n [cur.name]: cur.onChange?.(changedValues, { ...values, ...acc }),\n }),\n {}\n ),\n };\n if (changedValues.possuiDependentes === false) {\n const backupKeys = [\n \"gastoMensalSaudeDependente\",\n \"gastoMensalEducacaoDependente\",\n \"possuiGastoMensalSaudeDependente\",\n \"possuiGastoMensalEducacaoDependente\",\n ];\n const backupValues = Object.keys(values)\n .filter((key) => backupKeys.includes(key))\n .reduce((pre, cur) => ({ ...pre, [cur]: values[cur] }), {});\n setBackupValues(backupValues);\n }\n if (\n changedValues.possuiDependentes === true &&\n Object.keys(backupValues).length > 0\n ) {\n data = { ...data, ...backupValues };\n setBackupValues({});\n }\n const changedKeys = Object.keys(changedValues);\n const updateKeys = [\n \"pagaPensaoAlimenticia\",\n \"possuiGastoMensalSaude\",\n \"possuiGastoMensalEducacao\",\n \"possuiGastoMensalSaudeDependente\",\n \"possuiGastoMensalEducacaoDependente\",\n \"possuiDependentes\",\n \"rendaBrutaMensalMode\",\n \"gastoMensalSaudeMode\",\n \"gastoMensalEducacaoMode\",\n \"gastoMensalSaudeDependenteMode\",\n \"gastoMensalEducacaoDependenteMode\",\n \"gastoPensaoAlimenticiaMode\",\n ];\n const mustUpdate =\n changedKeys.filter((key) => updateKeys.includes(key)).length > 0;\n if (mustUpdate) {\n setQuestions(pgblQuestions({ data, setHelpModal }));\n }\n const dataEntries = Object.entries(data);\n form.setFields(dataEntries.map(([name, value]) => ({ name, value })));\n form.resetFields(\n dataEntries\n .filter(([, value]) => value === undefined || value === null)\n .map(([name]) => name)\n );\n };\n\n useEffect(() => {\n getResume();\n }, [getResume]);\n\n return (\n <Container>\n <Content>\n <Typography.Title level={1}>\n {!resume || !editting || (editting && currentQuestion !== 0) ? (\n <>Simule sua economia ao fazer aporte em PGBL.</>\n ) : (\n <>\n Descubra qual o perfil de quem pode ter economia com aporte em\n PGBL\n </>\n )}\n </Typography.Title>\n {(!resume || !editting || (editting && currentQuestion !== 0)) && (\n <Typography.Paragraph>\n Estime a sua economia no imposto de renda ao investir em previdência\n (PGBL) pela XP e optar pela declaração completa no próximo exercÃcio\n de IR.\n </Typography.Paragraph>\n )}\n {loadingGet ? (\n <Row justify=\"center\" align=\"middle\" className=\"loading-get\">\n <Col>\n <LoadingOutlined />\n </Col>\n </Row>\n ) : !resume || editting ? (\n <Form size=\"large\" form={form} onValuesChange={onValuesChange}>\n {questions.map((question, index, array) => (\n <Question key={question.id} show={index === currentQuestion}>\n {!question.hideQuestionNumber && (\n <span className=\"question-number\">\n {index}/{array.length - 1}\n </span>\n )}\n <Typography className=\"question-title\">\n {question.title}\n </Typography>\n {question.children}\n {question.formItems.map((formItem) => (\n <Form.Item\n key={formItem.name}\n name={formItem.name}\n rules={formItem.rules}\n getValueFromEvent={formItem.getValueFromEvent}\n >\n {formItem.input}\n </Form.Item>\n ))}\n {array.length - 1 === index && (\n <Checkbox\n value={autorizacao}\n onChange={() => setAutorizacao((value) => !value)}\n >\n Ao aceitar, você autoriza a coleta e o compartilhamento de\n seus dados pessoais pela Velotax junto à XP, que realizará o\n tratamento das informações obtidas através do Simulador com\n a finalidade de otimizar e personalizar a oferta de produtos\n e serviços do Grupo XP Inc.\n </Checkbox>\n )}\n <Row\n gutter={[8, 8]}\n justify=\"space-between\"\n className=\"question-buttons\"\n >\n <Col>\n <Button\n size=\"large\"\n variant=\"outlined\"\n onClick={() => formNavigate(-1)}\n >\n {index === 0 ? \"Cancelar\" : \"Anterior\"}\n </Button>\n </Col>\n <Col>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n startIcon={loading && <LoadingOutlined />}\n onClick={() => {\n if (array.length - 1 === index && !autorizacao) {\n message.warning(\n \"Você precisa aceitar nossa autorização de compartilhamento de dados para poder prosseguir com a simulação\"\n );\n } else {\n formNavigate(1);\n }\n if (array.length -1 === index && autorizacao) {\n HandleTag(\"91\")\n }\n }}\n >\n {loading\n ? \"\"\n : index === 0\n ? \"Começar agora\"\n : array.length - 1 === index\n ? \"Finalizar\"\n : \"Próximo\"}\n </Button>\n </Col>\n </Row>\n </Question>\n ))}\n {currentQuestion === 1 && (\n <Row className=\"renda-container\" gutter={[8, 8]}>\n <Col span={24}>\n (1) Consulta válida para rendas sujeitas a tabela progressiva\n de IR (IN RFB N° 1756/2017).\n </Col>\n <Col span={24}>\n (2) Valores de dedução de IR com base na IN RFB nº 2.065, de\n 24 de fevereiro de 2022.\n </Col>\n <Col span={24}>\n (3) Cálculo realizado com base na tabela progressiva de INSS\n do Anexo II da PI MTP nº 12/2022.\n </Col>\n </Row>\n )}\n </Form>\n ) : (\n <>\n <Question show={true} className=\"resume-container\">\n <Row gutter={[0, 0]}>\n <AntButton\n type=\"text\"\n onClick={handleEdit}\n className=\"resume-edit-button\"\n icon={<FaRegEdit size={20} />}\n />\n <Col span={24}>\n <Typography className=\"question-title\">\n Diagnóstico:\n </Typography>\n </Col>\n {resume.o > 0 ? (\n <>\n <Col span={24}>\n <Typography.Paragraph>\n Você pode investir até um limite de{\" \"}\n <strong style={{ whiteSpace: \"nowrap\" }}>\n {formatCurrency(resume?.m)}\n </strong>{\" \"}\n em PGBL.\n </Typography.Paragraph>\n </Col>\n <Col span={24}>\n <Row\n justify=\"space-between\"\n className=\"restituicao\"\n gutter={[2, 2]}\n >\n <Col span={12}>\n <Typography.Paragraph>\n <div>\n Restituição <br /> completa (a)\n </div>\n <strong style={{ whiteSpace: \"nowrap\" }}>\n {formatCurrency(\n resume?.completa?.valorRestituicao\n )}\n </strong>\n </Typography.Paragraph>\n </Col>\n <Col span={12}>\n <Typography.Paragraph>\n <div>\n Restituição <br /> simplificada (b)\n </div>\n <strong style={{ whiteSpace: \"nowrap\" }}>\n {formatCurrency(\n resume?.simplificada?.valorRestituicao\n )}\n </strong>\n </Typography.Paragraph>\n </Col>\n </Row>\n </Col>\n <Col span={24}>\n <Typography.Paragraph>\n Portanto, sua economia no IR na forma de declaração\n completa será de até{\" \"}\n <strong style={{ whiteSpace: \"nowrap\" }}>\n {formatCurrency(resume?.o)}\n </strong>{\" \"}\n no ano (a - b).\n </Typography.Paragraph>\n </Col>\n </>\n ) : (\n <Col span={24}>\n <Typography.Paragraph>\n Para o seu perfil, investir em VGBL pode ser uma melhor\n opção.\n </Typography.Paragraph>\n </Col>\n )}\n <Col span={24}>\n <Button\n fullWidth\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n startIcon={loading && <LoadingOutlined />}\n href=\"https://experiencia.xpi.com.br/previdencia/#/\"\n >\n Simular investimento\n </Button>\n </Col>\n <Col span={24} className=\"assessor-text\">\n Em caso de dúvidas, pergunte ao seu assessor.\n </Col>\n </Row>\n </Question>\n {resume.o > 0 && (\n <Row className=\"renda-container\" gutter={[8, 8]}>\n <Col span={24}>\n (1) A economia indicada é baseada na comparação entre a\n declaração feita de forma completa e desconto simplificado\n </Col>\n <Col span={24}>\n (2) A dedução de imposto de renda por aplicação de PGBL\n somente é válido para contribuintes do INSS.\n </Col>\n <Col span={24}>\n (3) Os valores simulados são para fins ilustrativos apenas,\n não englobando a possibilidade de perda no investimento em\n PGBL\n </Col>\n </Row>\n )}\n </>\n )}\n\n <Modal\n footer={null}\n title=\"Obrigado!\"\n visible={showModal}\n onCancel={() => setShowModal(false)}\n >\n O seu contato será enviado para um assessor da XP. Aguarde.\n <Button\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => setShowModal(false)}\n style={{\n display: \"flex\",\n marginLeft: \"auto\",\n marginTop: \"32px\",\n }}\n >\n Finalizar\n </Button>\n </Modal>\n <Modal\n footer={null}\n visible={!!helpModal}\n title={helpModal?.title}\n onCancel={() => setHelpModal(undefined)}\n >\n {helpModal?.body}\n </Modal>\n </Content>\n </Container>\n );\n};\n","import { Form, message } from \"antd\";\nimport React, { useState } from \"react\";\nimport ReactInputMask from \"react-input-mask\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Button, TextField } from \"@mui/material\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport api from \"../../services/api\";\nimport { cpfInputMask } from \"../../utils\";\nimport { validationCpf } from \"../../utils/formValidations\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\n\ninterface IData {\n cpf: string;\n}\n\nconst MaskCPF = React.forwardRef<HTMLElement>((props, ref) => (\n <ReactInputMask {...props} mask={cpfInputMask} />\n));\n\nexport const ForgotPassword: React.FC = () => {\n const navigate = useNavigate();\n const [form] = Form.useForm<IData>();\n const [loading, setLoading] = useState(false);\n const [fieldsError, setFieldsError] = useState<{ [key: string]: string[] }>(\n {}\n );\n\n const onFinish = async (data: IData) => {\n try {\n setLoading(true);\n\n const res = await api.post(\"/user/forgot-password\", { cpf: data.cpf });\n res.data?.message?.includes(\"@\")\n ? message.success(res.data?.message)\n : message.success(\n \"Um email com um link foi enviado para recuperar sua senha!\",\n 5\n );\n\n setTimeout(() => {\n setLoading(false);\n navigate(\"/p/login\");\n }, 500);\n } catch (err: any) {\n if (err?.response?.status === 400) {\n message.error(err.response?.data?.message || \"Ocorreu um erro\");\n }\n setLoading(false);\n return;\n }\n };\n\n const onValuesChange = (changed: any, values: any) => {\n const cpf = changed.cpf ? changed.cpf.replace(/[_.-/-]/g, \"\") : values.cpf;\n form.setFieldsValue({\n cpf,\n });\n };\n\n const onFieldsChange = () => {\n setFieldsError(\n form\n .getFieldsError()\n .reduce((acc, cur) => ({ ...acc, [cur.name?.[0]]: cur.errors }), {})\n );\n };\n\n const handleNavigateCreateAccount = () => {\n navigate(\"/p/cadastrar\");\n };\n\n const handleNavigateLogin = () => {\n navigate(\"/p/login\");\n };\n\n return (\n <AuthContainer className=\"beauty-scrollbar\">\n <div className=\"auth-content\">\n <div className=\"form-container\">\n <h1>Recupere sua senha</h1>\n <Form\n form={form}\n size=\"large\"\n onFinish={onFinish}\n onValuesChange={onValuesChange}\n onFieldsChange={onFieldsChange}\n >\n <Form.Item name=\"cpf\" rules={validationCpf}>\n <TextField\n label=\"CPF\"\n variant=\"standard\"\n error={fieldsError[\"cpf\"]?.length > 0}\n InputProps={{ inputComponent: MaskCPF as any }}\n />\n </Form.Item>\n\n <div className=\"buttons\">\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n disabled={loading}\n startIcon={loading && <LoadingOutlined />}\n >\n Recuperar\n </Button>\n </div>\n <div className=\"bottom-acessar\">\n <Button\n type=\"button\"\n onClick={handleNavigateLogin}\n style={{ fontSize: \"11px\" }}\n >\n <span className=\"xp-link\">Voltar para o login</span>\n </Button>\n </div>\n </Form>\n\n <div className=\"footer\">\n Ainda não possui uma conta?\n <Button type=\"button\" onClick={handleNavigateCreateAccount}>\n <span className=\"xp-link\">Começar</span>\n </Button>\n </div>\n </div>\n </div>\n </AuthContainer>\n );\n};\n","import { Form, message } from \"antd\";\nimport React, { useState } from \"react\";\nimport { Button, TextField } from \"@mui/material\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport api from \"../../services/api\";\nimport { AuthContainer } from \"../../styles/LoginSignUp/authContainer\";\nimport {\n validationPassConfirmation,\n validationPassword,\n} from \"../../utils/formValidations\";\n\ninterface IData {\n pass: string;\n passConfirmation: string;\n}\n\nexport const ChangePassword: React.FC = () => {\n const navigate = useNavigate();\n const { token } = useParams();\n const [form] = Form.useForm<IData>();\n const [loading, setLoading] = useState(false);\n const [fieldsError, setFieldsError] = useState<{ [key: string]: string[] }>(\n {}\n );\n\n const onFinish = async (data: IData) => {\n try {\n setLoading(true);\n\n await api.post(`/user/change-password/${token}`, data);\n message.success(\"Senha alterada com sucesso!\", 5);\n\n setTimeout(() => {\n setLoading(false);\n navigate(\"/p/login\");\n }, 500);\n } catch (err: any) {\n if (err?.response?.status === 400) {\n message.error(err.response?.data?.message || \"Ocorreu um erro\");\n }\n setLoading(false);\n return;\n }\n };\n\n const onFieldsChange = () => {\n setFieldsError(\n form\n .getFieldsError()\n .reduce((acc, cur) => ({ ...acc, [cur.name?.[0]]: cur.errors }), {})\n );\n };\n\n return (\n <AuthContainer className=\"beauty-scrollbar\">\n <div className=\"auth-content\">\n <div className=\"form-container\">\n <h1>Alterar senha</h1>\n <Form\n form={form}\n size=\"large\"\n onFinish={onFinish}\n onFieldsChange={onFieldsChange}\n >\n <Form.Item name=\"pass\" rules={validationPassword}>\n <TextField\n label=\"Senha\"\n type=\"password\"\n variant=\"standard\"\n error={fieldsError[\"pass\"]?.length > 0}\n />\n </Form.Item>\n\n <Form.Item\n name=\"passConfirmation\"\n rules={validationPassConfirmation}\n >\n <TextField\n type=\"password\"\n variant=\"standard\"\n label=\"Confirmar senha\"\n error={fieldsError[\"passConfirmation\"]?.length > 0}\n />\n </Form.Item>\n\n <div className=\"buttons\">\n <Button\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n disabled={loading}\n startIcon={loading && <LoadingOutlined />}\n >\n Enviar\n </Button>\n </div>\n </Form>\n </div>\n </div>\n </AuthContainer>\n );\n};\n","export default __webpack_public_path__ + \"static/media/xp-black.af040f4a.svg\";","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4167 13.5V15.1667M13.4167 5V6.66667M6.91674 16V17.6667M6.91674 2.5V4.16667M8.50008 4.16667V15.8333H5.16675V4.16667H8.50008ZM15.0001 6.66667V13.3333H11.6667V6.66667H15.0001Z\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\nfunction SvgBolsa(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBolsa);\nexport default __webpack_public_path__ + \"static/media/bolsa.21beab85.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5 10C17.5 5.84833 14.1517 2.5 10 2.5C5.84833 2.5 2.5 5.84833 2.5 10M17.5 10C17.5 14.1517 14.1517 17.5 10 17.5C5.84833 17.5 2.5 14.1517 2.5 10M17.5 10H2.5M8.47333 3.38333C6.065 7.40417 6.065 12.5967 8.47333 16.6175C9.17833 17.795 10.8225 17.795 11.5275 16.6175C13.9358 12.5967 13.9358 7.40417 11.5275 3.38333C10.8217 2.20583 9.17833 2.20583 8.47333 3.38333Z\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\nfunction SvgExterior(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExterior);\nexport default __webpack_public_path__ + \"static/media/exterior.f3649a48.svg\";\nexport { ForwardRef as ReactComponent };","import Cards from \"react-credit-cards\";\nimport { MdCheck } from \"react-icons/md\";\nimport { InfoCircleOutlined, LoadingOutlined } from \"@ant-design/icons\";\n\nimport React, {\n forwardRef,\n useMemo,\n useState,\n useEffect,\n useCallback,\n} from \"react\";\nimport { Row, Col, Spin, message, Typography } from \"antd\";\n\nimport { formatCurrency } from \"../../utils\";\nimport { Page } from \"../../constants/brokers\";\nimport PixPaymentStep from \"../Payment/PixPaymentStep\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport CreditCardStep, { ETypePurchase } from \"../Payment/CreditCardStep\";\nimport { Button } from \"@mui/material\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport { cardAttributes } from \"../CardList\";\nimport { CardButton, ModalStyled } from \"./style\";\nimport getInstallmentsByPrice from \"../../utils/getInstallmentsListByPrice\";\nimport { SelectLabled } from \"../../constants/inputs\";\nimport { apiPlan } from \"../../services/apiPlan\";\nimport HandleTag from \"../../services/handleTag\";\n\ninterface PaymentModalProps {\n item?: Page;\n show: boolean;\n onCancel?: (e: any) => void;\n paymentData: any;\n callDarf: any;\n hideDarfDownload?: boolean;\n onSucessPix?: (event: any) => void;\n onSucessCreditCard?: (event: any) => void;\n planCurrent?: any;\n disablePixOption?: boolean;\n disableCreditCardOption?: boolean;\n customInstallments?: number;\n maxPixValue?: number;\n maxCCValue?: number;\n selectedYear?: number;\n emitting?: boolean;\n cupom?: any;\n setCupom?: any;\n hidePixButton?: boolean;\n fromDarf?: boolean;\n closeModal?: () => void;\n closeDarfModal?: () => void;\n changeCardAction?: boolean;\n onSuccessGeneral?: () => void;\n blockListCard?: string[];\n}\n\ninterface PaymentInfoContentProps {\n content: JSX.Element;\n title?: string;\n amount?: number;\n}\n\nexport interface PaymentDetailsProp {\n value?: number;\n paymentId: string;\n qrCodeLink?: string;\n name?: string;\n}\n\nenum EPlanStep {\n CHOOSE_PAYMENT = \"CHOOSE_PAYMENT\",\n PIX_PAYMENT = \"PIX_PAYMENT\",\n CC_PAYMENT = \"CC_PAYMENT\",\n LOADING = \"LOADING\",\n FINISHED = \"FINISHED\",\n}\n\nlet getStatus: NodeJS.Timeout;\n\nexport const PaymentModal: React.FC<PaymentModalProps> = ({\n item,\n show,\n onCancel,\n paymentData,\n callDarf,\n closeDarfModal,\n hideDarfDownload,\n disablePixOption,\n disableCreditCardOption,\n onSucessPix,\n planCurrent,\n onSucessCreditCard,\n customInstallments,\n maxPixValue,\n maxCCValue,\n selectedYear,\n emitting = false,\n cupom,\n setCupom,\n hidePixButton,\n fromDarf,\n closeModal,\n changeCardAction,\n blockListCard,\n onSuccessGeneral,\n}) => {\n const pagarmeError = false;\n const [installment, setInstallment] = useState(1);\n const [loadingPayment, setLoadingPayment] = useState(false);\n const [selectedCard, setSelectedCard] = useState<cardAttributes>();\n const [cardList, setCardList] = useState<cardAttributes[]>([]);\n const [loading, setLoading] = useState(false);\n const [loadingCards, setLoadingCards] = useState(false);\n const [step, setStep] = useState<EPlanStep>(EPlanStep.CHOOSE_PAYMENT);\n const [data, setData] = useState({\n darf: { _id: \"\" },\n payment: { paymentId: 0 },\n });\n const { currentPage, currentBroker } = useBroker();\n \n const getCardList = () => {\n setLoadingCards(true);\n apiPayment\n .get(`/payment/list_cards`)\n .then((ret) => {\n setCardList(ret?.data?.list || []);\n })\n .catch((err) => {\n message.error(\"Ocorreu um erro ao buscar cartões\");\n })\n .finally(() => {\n setLoadingCards(false);\n });\n };\n\n const checkWasPaid = useCallback(\n (delay: number = 5) => {\n let attempts = 0;\n let check_id: any = data?.payment?.paymentId;\n\n if (step === \"PIX_PAYMENT\") {\n check_id = data;\n }\n\n let backend: any;\n\n // backend = currentPage?.api || apiPlan;\n backend = apiPayment;\n\n getStatus = setInterval(async () => {\n backend\n .get(`/payment?id=${check_id}`)\n .then((res: any) => {\n if (res.data?.status === \"paid\") {\n clearInterval(getStatus);\n setStep(EPlanStep.FINISHED);\n setLoading(false);\n closeModal?.();\n closeDarfModal?.();\n message.success(\"DARF pago com sucesso!\");\n }\n })\n .finally(() => {\n attempts += 1;\n\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n data,\n step,\n currentBroker?.path,\n item,\n // currentPage,\n selectedYear,\n ]\n );\n\n useEffect(() => {\n getStatus && clearInterval(getStatus);\n }, [step]);\n\n useEffect(() => {\n if (data?.payment?.paymentId !== 0) {\n checkWasPaid();\n }\n\n return () => getStatus && clearInterval(getStatus);\n }, [data, checkWasPaid]);\n\n useEffect(() => {\n if (show) {\n getCardList();\n } else {\n setSelectedCard(undefined);\n }\n }, [show]);\n\n useEffect(() => {\n if (step === EPlanStep.CHOOSE_PAYMENT) {\n setSelectedCard(undefined);\n }\n }, [step]);\n\n const changePaymentId = (value: any) => {\n if (step === \"CC_PAYMENT\") {\n setStep(EPlanStep.LOADING);\n setLoading(true);\n }\n setData(value);\n };\n\n const purchaseType = useMemo(() => {\n if (planCurrent?.type in ETypePurchase) return planCurrent?.type;\n\n return ETypePurchase.UNIQUE;\n }, [planCurrent]);\n\n const hasPlan = [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_PRO_MONTH\",\n \"VELOTAX_MAIN_CONCIERGE\",\n ].includes(planCurrent?.type || \"\");\n\n const value = useMemo(() => {\n const isPlan = [\n \"VELOTAX_MAIN_BASIC\",\n \"VELOTAX_MAIN_PRO\",\n \"VELOTAX_MAIN_PRO_MONTH\",\n \"VELOTAX_MAIN_CONCIERGE\",\n ].includes(planCurrent?.type || \"\");\n\n if (isPlan) {\n var isMonth = planCurrent?.interval === \"Mensal\";\n\n var planPrice =\n (!isMonth ? (planCurrent?.price || 0) * 12 : planCurrent?.price) || 0;\n\n if (cupom?.type === \"absolute\") {\n planPrice = planPrice - Number(cupom?.discountValue);\n } else if (cupom?.type === \"percent\") {\n planPrice = planPrice - planPrice * Number(cupom?.discountValue / 100);\n }\n\n planPrice = Number(planPrice.toFixed(2));\n\n return planPrice && isMonth ? planPrice * 12 : planPrice;\n }\n\n return paymentData?.impostoTotalFinal;\n }, [paymentData?.impostoTotalFinal, planCurrent?.interval, planCurrent?.price, planCurrent?.type, cupom]);\n\n const fixedInstallments = useMemo(\n () => (!!planCurrent?.type ? 12 : undefined),\n [planCurrent?.type]\n );\n\n const installments = useMemo(\n () => getInstallmentsByPrice(value, !!planCurrent?.type, fixedInstallments),\n [planCurrent, value, fixedInstallments]\n );\n\n const onChangeInstallments = (value: any) => {\n setInstallment(value);\n };\n\n const SelectInput = forwardRef((props, ref) => (\n <SelectLabled\n {...props}\n options={installments}\n value={\n fixedInstallments || planCurrent?.type\n ? installments?.[0]?.value\n : installment\n }\n placeholder=\"Selecione a(s) parcela(s)\"\n onChange={onChangeInstallments}\n />\n ));\n\n const createPlanMainVelotax = () => {\n const url = \"/user-plan\";\n\n const cardInfo = { card_id: selectedCard?.id };\n const clientInfo = { customer_id: selectedCard?.customer_id };\n\n setLoadingPayment(true);\n\n apiPayment\n .post(url, {\n ...paymentData,\n type: planCurrent?.type,\n from: \"XP\",\n paymentForm: \"credit_card\",\n installments: 12,\n cupomCode: cupom?.cupomCode,\n cardInfo,\n clientInfo,\n acceptTerms: true,\n })\n .then((res: any) => {\n if (res.data.paymentId || res.data.paymentRecurringId)\n onSucessCreditCard && onSucessCreditCard(res.data);\n\n setLoading(true);\n setStep(EPlanStep.LOADING);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoadingPayment(false);\n });\n };\n\n const createUniquePayment = () => {\n const url = \"/darf\";\n\n const cardInfo = { card_id: selectedCard?.id };\n const clientInfo = { customer_id: selectedCard?.customer_id };\n\n setLoadingPayment(true);\n (currentPage?.api || apiPlan)\n .post(url, {\n ...paymentData,\n paymentForm: \"credit_card\",\n paymentInfo: {\n installments: installment,\n cardInfo: cardInfo,\n clientInfo: clientInfo,\n },\n })\n .then((res: any) => {\n changePaymentId(res?.data);\n setStep(EPlanStep.LOADING);\n setLoading(true);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n })\n .finally(() => {\n setLoadingPayment(false);\n });\n };\n\n const changeCardService = async () => {\n if (!selectedCard?.id) return;\n\n let cardInfo: any = { card_id: selectedCard?.id };\n\n setLoadingPayment(true);\n\n apiPayment\n .post(`/user-plan/change_signature_card`, {\n card_id: cardInfo.card_id,\n })\n .then((ret) => {\n message.success(\"Cartão atualizado com sucesso!\");\n })\n .catch((err) => {\n message.error(\"Ocorreu um erro ao alterar cartão!\");\n })\n .finally(() => {\n setLoadingPayment(false);\n onSuccessGeneral && onSuccessGeneral();\n });\n };\n\n const handlePay = () => {\n if (changeCardAction) {\n changeCardService();\n } else if (purchaseType === \"UNIQUE\") {\n createUniquePayment();\n } else if ([\"VELOTAX_MAIN_BASIC\", \"VELOTAX_MAIN_PRO\", \"VELOTAX_MAIN_CONCIERGE\"].includes(purchaseType)) {\n createPlanMainVelotax();\n }\n };\n\n const plansContentDisplay: Record<EPlanStep, PaymentInfoContentProps> = {\n [EPlanStep.CHOOSE_PAYMENT]: {\n content: (\n <Spin spinning={emitting}>\n <Row gutter={[16, 8]}>\n {(disablePixOption || disableCreditCardOption) && fromDarf && (\n <Col span={24}>\n <Typography.Paragraph\n style={{\n color: \"var(--velotax-font-color-dark)\",\n textAlign: \"justify\",\n }}\n >\n <InfoCircleOutlined />\n Não aceitamos o pagamento de DARFs com valor acima\n de <strong>{formatCurrency(maxPixValue || 0)}</strong> através\n de PIX ou cartão de crédito. Faça o download do seu DARF e\n realize o pagamento diretamente no aplicativo do seu banco.{\" \"}\n </Typography.Paragraph>\n </Col>\n )}\n {!disableCreditCardOption && !pagarmeError && (\n <>\n {loadingCards ? (\n <Col span={24} style={{ marginBottom: \"16px\" }}>\n <Row justify=\"center\" align=\"middle\">\n <Col style={{ color: \"var(--velotax-font-color-dark)\" }}>\n <LoadingOutlined\n style={{ color: \"var(--ant-primary-color)\" }}\n />\n Carregando seus cartões\n </Col>\n </Row>\n </Col>\n ) : (\n <Col span={24} style={{ marginBottom: \"24px\" }}>\n <Row gutter={[8, 8]}>\n {cardList\n .filter(\n (card) => !selectedCard || selectedCard.id === card.id\n )\n .map((card) => {\n if (\n blockListCard?.length &&\n blockListCard.includes(card.id)\n )\n return undefined;\n return (\n <Col span={24} key={card.id}>\n <CardButton\n size=\"large\"\n color=\"info\"\n variant=\"outlined\"\n className=\"full-width\"\n onClick={() => setSelectedCard(card)}\n disableTouchRipple={\n selectedCard?.id === card.id\n }\n style={{\n cursor:\n selectedCard?.id === card.id\n ? \"default\"\n : \"pointer\",\n }}\n >\n <Row\n style={{ width: \"100%\" }}\n align=\"middle\"\n justify=\"space-between\"\n >\n <Col>\n <Cards\n preview\n cvc=\"***\"\n name=\"\"\n expiry=\"\"\n number={\n card.first_six_digits +\n \"** *****\" +\n card.last_four_digits\n }\n />\n </Col>\n <Col>\n {\"**** **** **** \" + card.last_four_digits}\n </Col>\n {/* <Col span={24}>\n {selectedCard && (\n <div style={{ margin: \"16px 0\" }}>\n <SelectInput />\n </div>\n )}\n </Col> */}\n </Row>\n </CardButton>\n </Col>\n );\n })}\n </Row>\n </Col>\n )}\n </>\n )}\n {selectedCard ? (\n <>\n {(selectedCard && !hasPlan) && <Col span={24}>\n <div\n style={{\n padding: \"8px 16px\",\n backgroundColor: \"var(--white)\",\n }}\n >\n <SelectInput />\n </div>\n </Col>}\n <div\n style={{\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginTop: 25,\n }}\n >\n <div\n style={{\n display: \"flex\",\n width: \"97%\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <Button\n size=\"large\"\n variant=\"text\"\n onClick={() => setSelectedCard(undefined)}\n >\n <span className=\"xp-link uppercase\">Voltar</span>\n </Button>\n\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={handlePay}\n disabled={loadingPayment}\n >\n {loadingPayment && <LoadingOutlined />}\n Finalizar pagamento\n </Button>\n </div>\n </div>\n </>\n ) : (\n <>\n {!pagarmeError && (\n <Col span={24}>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n disabled={disableCreditCardOption}\n onClick={() => {\n setStep(EPlanStep.CC_PAYMENT);\n }}\n >\n {cardList.length > 0\n ? \"Novo cartão de crédito\"\n : \"Cartão de crédito\"}\n </Button>\n </Col>\n )}\n <Col span={24}>\n {!hidePixButton && (\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n disabled={disablePixOption}\n onClick={() => {\n setStep(EPlanStep.PIX_PAYMENT);\n if (!paymentData?.impostoTotalFinal) {\n HandleTag(\"55\");\n }\n }}\n >\n PIX à vista\n </Button>\n )}\n </Col>\n\n {!hideDarfDownload && (\n <Col span={24}>\n <Button\n size=\"large\"\n color=\"secondary\"\n variant=\"contained\"\n className=\"full-width\"\n onClick={() => callDarf(true)}\n >\n Boleto DARF\n </Button>\n </Col>\n )}\n </>\n )}\n </Row>\n </Spin>\n ),\n title: selectedCard\n ? \"Cartão de crédito\"\n : changeCardAction\n ? \"Trocar Cartão:\"\n : \"Escolha sua forma de pagamento:\",\n },\n [EPlanStep.PIX_PAYMENT]: {\n content: (\n <PixPaymentStep\n paymentData={paymentData}\n cupom={cupom}\n handleIdBack={changePaymentId}\n onSucess={onSucessPix}\n backStep={() => {\n setData({ darf: { _id: \"\" }, payment: { paymentId: 0 } });\n setStep(EPlanStep.CHOOSE_PAYMENT);\n }}\n />\n ),\n title: \"Pagamento com PIX à vista\",\n },\n [EPlanStep.CC_PAYMENT]: {\n content: (\n <CreditCardStep\n initialized={true}\n closeMainModal={() => closeModal && closeModal()}\n typePurchase={purchaseType}\n handleClosableModal={() => {}}\n status=\"\"\n cupom={cupom}\n plan={planCurrent}\n handleSuccess={onSucessCreditCard}\n setInitialized={() => {}}\n darfData={paymentData}\n changeCardAction={changeCardAction}\n handleIdBack={changePaymentId}\n customInstallments={customInstallments}\n backToRoot={() => setStep(EPlanStep.CHOOSE_PAYMENT)}\n />\n ),\n title: \"Cartão de crédito\",\n },\n [EPlanStep.LOADING]: {\n title: \"Pagamento\",\n content: (\n <Row>\n <Col\n span={24}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: \"15px\",\n }}\n >\n <Spin spinning={loading}></Spin>\n <span style={{ marginLeft: \"10px\", color: \"#000\" }}>\n Processando pagamento...\n </span>\n </Col>\n </Row>\n ),\n },\n [EPlanStep.FINISHED]: {\n content: (\n <Row>\n <Col\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n }}\n >\n <MdCheck color={\"var(--ant-success-color)\"} size={120} />\n </Col>\n <span\n style={{\n marginTop: \"10px\",\n fontSize: \"16px\",\n textAlign: \"center\",\n marginBottom: \"35px\",\n fontWeight: \"500\",\n width: \"100%\",\n }}\n >\n Seu pagamento foi realizado com sucesso!\n </span>\n </Row>\n ),\n title: \"Confirmação de Pagamento\",\n },\n };\n\n const title = plansContentDisplay?.[step]?.title;\n const content = plansContentDisplay?.[step]?.content;\n\n const cancelActions = (e: any) => {\n setStep(EPlanStep.CHOOSE_PAYMENT);\n clearInterval(getStatus);\n setData({ darf: { _id: \"\" }, payment: { paymentId: 0 } });\n setCupom?.(undefined);\n if (onCancel) {\n onCancel(e);\n }\n };\n\n return (\n <ModalStyled\n title={title}\n visible={show}\n footer={null}\n width={580}\n maskClosable={false}\n keyboard={false}\n className=\"payment-modal\"\n onCancel={(e) => cancelActions(e)}\n bodyStyle={\n step !== EPlanStep.CHOOSE_PAYMENT && step !== EPlanStep.PIX_PAYMENT\n ? {\n minHeight: \"150px\",\n }\n : {}\n }\n >\n {content}\n </ModalStyled>\n );\n};\n","import { AxiosInstance } from \"axios\";\nimport { GiProfit } from \"react-icons/gi\";\nimport { VscHistory } from \"react-icons/vsc\";\nimport { AiOutlineApi } from \"react-icons/ai\";\nimport { BiTransferAlt } from \"react-icons/bi\";\nimport { RiFileList3Line } from \"react-icons/ri\";\n// import { BsCurrencyBitcoin } from \"react-icons/bs\";\n// import { HiOutlineCalculator } from \"react-icons/hi\";\nimport { MdSwapVerticalCircle } from \"react-icons/md\";\nimport XP_logo from \"../../assets/xp.svg\";\nimport apiBolsa from \"../../services/apiBolsa\";\nimport apiExterior from \"../../services/apiExterior\";\nimport XP_logo_black from \"../../assets/xp-black.svg\";\nimport { ReactComponent as BolsaIcon } from \"../../assets/icons/sidebar/bolsa.svg\";\nimport { ReactComponent as CriptoIcon } from \"../../assets/icons/sidebar/cripto.svg\";\nimport { ReactComponent as ExteriorIcon } from \"../../assets/icons/sidebar/exterior.svg\";\n\ninterface HTML {\n favicon: string;\n title: string;\n}\n\ninterface Input {\n name: string;\n label: string;\n placeholder: string;\n rules: any[];\n}\n\ninterface Feature {\n apiUrl: string;\n title?: string;\n inputs?: Input[];\n disabled?: boolean;\n buttonLabel?: string;\n}\n\nexport interface Page {\n calcId?: string;\n path: string;\n title: React.ReactNode;\n name: string;\n header: boolean;\n sidebar: boolean;\n features: Feature[];\n component?: string;\n disabled?: boolean;\n icon?: React.ReactNode;\n disabledIfIntegrated?: boolean;\n disabledIfNotIntegrated?: boolean;\n settings?: any;\n subPages?: Page[];\n showOnSidebar?: boolean;\n api?: AxiosInstance;\n legacyHistory?: string;\n premium?: boolean;\n integratedOnly?: boolean;\n}\n\nexport interface Broker {\n id: string;\n dns: string;\n name: string;\n dark: boolean;\n link: string;\n path: string;\n apiUrl: string;\n html: HTML;\n pages: Page[];\n colors: { [key: string]: string };\n initialYear: number;\n icon: any;\n iconStyle?: any;\n iconAlternative?: any;\n iconAlternativeStyle?: any;\n disabled?: boolean;\n defaultPath?: string;\n defaultProviderExistsPath?: string;\n useSSO?: boolean;\n useSettings?: boolean;\n hidePoweredBy?: boolean;\n hideCalculadoras?: boolean;\n hideJuridicMessage?: boolean;\n usePGBL?: boolean;\n useCarteira?: boolean;\n useTransferenciaCustodia?: boolean;\n}\n\nexport const brokers: Broker[] = [\n {\n id: \"xp-investimentos\",\n name: \"XP Investimentos\",\n dns: \"xpi-bolsa-dev.velotax.com.br\",\n path: \"xpinvestimentos\",\n apiUrl: \"/bitcoin-trade\",\n link: \"https://www.xpi.com.br\",\n dark: true,\n useSSO: true,\n usePGBL: true,\n useCarteira: true,\n useSettings: false,\n useTransferenciaCustodia: true,\n hideCalculadoras: true,\n hideJuridicMessage: true,\n colors: {\n primary: \"#fbc105\",\n secondary: \"#222\",\n sidebarSelectedColor: \"#fbc105\",\n sidebarSelectedColorDark: \"#ffffff\",\n },\n html: {\n favicon: XP_logo_black,\n title: \"XP Investimentos | Imposto de Renda by Velotax\",\n },\n icon: XP_logo_black,\n iconAlternative: XP_logo,\n iconStyle: {\n width: \"auto\",\n height: \"40px\",\n },\n iconAlternativeStyle: {\n width: \"128px\",\n height: \"128px\",\n },\n initialYear: 2020,\n hidePoweredBy: false,\n defaultPath: \"/xpinvestimentos/bolsa-integration\",\n defaultProviderExistsPath: \"/xpinvestimentos/bolsa-historic\",\n pages: [\n {\n calcId: \"bolsa\",\n header: true,\n sidebar: true,\n integratedOnly: true,\n path: \"/xpinvestimentos/bolsa\",\n name: \"Bolsa de valores\",\n icon: <BolsaIcon className=\"stroke\" />,\n title: \"\",\n api: apiBolsa,\n showOnSidebar: true,\n features: [\n {\n apiUrl: \"/xpinvestimentos/transaction\",\n },\n {\n apiUrl: \"/darf\",\n buttonLabel: \"Emitir DARF\",\n },\n {\n apiUrl: \"/darf/year\",\n },\n {\n apiUrl: \"/xpinvestimentos/prejuizos\",\n },\n {\n apiUrl: \"/xpinvestimentos/irrf\",\n },\n ],\n component: \"Bolsa\",\n subPages: [\n // {\n // header: true,\n // sidebar: true,\n // component: \"DarfBolsa\",\n // name: \"Calculadora\",\n // icon: (\n // <HiOutlineCalculator\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // title: \"\",\n // settings: {\n // historicUrl: \"/xpinvestimentos/bolsa-historic\",\n // integrationPath: \"/xpinvestimentos/bolsa-integration\",\n // showNavigateToIntegrationButton: true,\n // },\n // features: [\n // {\n // apiUrl: \"/xpinvestimentos/transaction\",\n // },\n // {\n // apiUrl: \"/darf\",\n // buttonLabel: \"Emitir DARF\",\n // },\n // {\n // apiUrl: \"/darf/year\",\n // },\n // {\n // apiUrl: \"/xpinvestimentos/prejuizos\",\n // },\n // {\n // apiUrl: \"/xpinvestimentos/irrf\",\n // },\n // ],\n // },\n {\n premium: false,\n integratedOnly: true,\n disabled: false,\n header: true,\n sidebar: true,\n component: \"ReportBolsa\",\n path: \"/xpinvestimentos/bolsa-report\",\n name: \"Relatórios\",\n title: \"\",\n icon: (\n <RiFileList3Line\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [\n {\n apiUrl: \"/darf/report/transactions\",\n },\n {\n apiUrl: \"/darf/report/download\",\n },\n {\n apiUrl: \"/darf/report/sendEmail\",\n },\n ],\n },\n {\n header: true,\n sidebar: true,\n integratedOnly: true,\n component: \"HistoricBolsa\",\n path: \"/xpinvestimentos/bolsa-historic\",\n name: \"Histórico\",\n title: \"\",\n icon: (\n <VscHistory\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [\n {\n apiUrl: \"/xpinvestimentos/historic\",\n },\n {\n apiUrl: \"/darf/pay\",\n },\n {\n apiUrl: \"/darf/download\",\n },\n ],\n },\n {\n premium: true,\n integratedOnly: true,\n header: true,\n sidebar: true,\n component: \"DividendosBolsa\",\n path: \"/xpinvestimentos/bolsa-dividendos\",\n name: \"Dividendos\",\n title: \"\",\n icon: <GiProfit size={24} className=\"no-fill\" />,\n settings: {\n darfComponent: \"HistoricBolsa\",\n darfUrl: \"/velotax/bolsa-historic\",\n },\n features: [\n {\n apiUrl: \"/xpinvestimentos/historic\",\n },\n ],\n },\n {\n header: true,\n sidebar: true,\n component: \"IntegrationBolsa\",\n path: \"/xpinvestimentos/bolsa-integration\",\n name: \"Integração com B3\",\n title: \"\",\n icon: (\n <AiOutlineApi\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [\n {\n apiUrl: \"/xpinvestimentos/integrate\",\n buttonLabel: \"Integrar\",\n title:\n \"Clique para autorizar que a Velotax possa acessar suas informações\",\n },\n {\n apiUrl:\n \"https://b3Investidor.b2clogin.com/b3Investidor.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_FINTECH&client_id=069ecfdf-7471-48eb-be82-d50799c99e5c&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fwww.investidor.b3.com.br&scope=openid&response_type=code&prompt=login\",\n buttonLabel: \"Permita o nosso app acessar suas transações!\",\n },\n {\n apiUrl: \"/xpinvestimentos/verify-user\",\n },\n ],\n },\n {\n integratedOnly: true,\n header: true,\n sidebar: true,\n component: \"BolsaManual\",\n path: \"/xpinvestimentos/bolsa-insert-manual\",\n name: \"Posição 31/12/2019\",\n title: \"\",\n icon: (\n <MdSwapVerticalCircle\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [],\n },\n {\n integratedOnly: true,\n header: true,\n sidebar: true,\n component: \"DoacoesHeranca\",\n path: \"/xpinvestimentos/bolsa-doacoes-heranca\",\n name: \"Doações e heranças\",\n title: \"\",\n icon: (\n <MdSwapVerticalCircle\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [],\n },\n ],\n },\n {\n calcId: \"exterior\",\n header: true,\n sidebar: true,\n name: \"Ativos no exterior\",\n path: \"/xpinvestimentos/exterior\",\n component: \"Exterior\",\n icon: <ExteriorIcon className=\"stroke\" />,\n title: \"\",\n api: apiExterior,\n showOnSidebar: true,\n // legacyHistory: \"https://www.velotax.com.br/historico/exterior\",\n features: [],\n subPages: [\n // {\n // header: true,\n // sidebar: true,\n // component: \"DarfExterior\",\n // name: \"Calculadora\",\n // icon: (\n // <HiOutlineCalculator\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // title: \"\",\n // settings: {\n // integrationUrl: \"/xpinvestimentos/exterior-integrations\",\n // historicUrl: \"/xpinvestimentos/exterior-historic\",\n // showNavigateToIntegrationButton: true,\n // },\n // features: [\n // {\n // apiUrl: \"/transaction\",\n // },\n // {\n // apiUrl: \"/darf\",\n // buttonLabel: \"Emitir DARF\",\n // },\n // {\n // apiUrl: \"/darf/year\",\n // },\n // ],\n // },\n {\n premium: false,\n disabled: false,\n header: true,\n sidebar: true,\n component: \"ReportExterior\",\n path: \"/xpinvestimentos/exterior-report\",\n name: \"Relatórios\",\n title: \"\",\n icon: (\n <RiFileList3Line\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [\n {\n apiUrl: \"/darf/report/transactions\",\n },\n {\n apiUrl: \"/darf/report/download\",\n },\n {\n apiUrl: \"/darf/report/sendEmail\",\n },\n {\n apiUrl: \"/velotax/exterior/historic\"\n },\n {\n apiUrl: \"/darf\"\n }\n ],\n },\n {\n header: true,\n sidebar: true,\n component: \"Historic\",\n path: \"/xpinvestimentos/exterior-historic\",\n name: \"Histórico\",\n title: \"\",\n icon: (\n <VscHistory\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [\n {\n apiUrl: \"/velotax/exterior/historic\",\n },\n {\n apiUrl: \"/darf/pay\",\n },\n {\n apiUrl: \"/darf/download\",\n },\n ],\n },\n {\n premium: true,\n header: true,\n sidebar: true,\n component: \"DividendosExterior\",\n path: \"/xpinvestimentos/exterior-dividendos\",\n name: \"Dividendos\",\n title: \"\",\n icon: (\n <GiProfit\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [\n {\n apiUrl: \"/velotax/exterior/historic\",\n },\n ],\n },\n // {\n // disabled: false,\n // header: true,\n // sidebar: true,\n // component: \"IntegrationExteriorXP\",\n // path: \"/xpinvestimentos/exterior-integration\",\n // name: \"Integração com XP\",\n // title: \"\",\n // icon: (\n // <AiOutlineApi\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // features: [],\n // },\n {\n disabled: false,\n header: true,\n sidebar: true,\n component: \"TransferenciaCustodia\",\n path: \"/xpinvestimentos/transferencia-custodia\",\n name: \"Transferência de custódia\",\n title: \"\",\n icon: (\n <BiTransferAlt\n size={24}\n className=\"no-fill\"\n color=\"var(--ant-primary-color)\"\n />\n ),\n features: [],\n },\n // {\n // header: true,\n // sidebar: true,\n // component: \"IntegrationExterior\",\n // path: \"/xpinvestimentos/exterior-integrations\",\n // name: \"Integrações\",\n // title: \"\",\n // icon: <AiOutlineApi size={24} className=\"no-fill\" />,\n // features: [],\n // },\n ],\n },\n // {\n // header: true,\n // calcId: \"cripto\",\n // sidebar: true,\n // name: \"Criptoativos\",\n // path: \"/xpinvestimentos/cripto\",\n // icon: <CriptoIcon className=\"stroke\" />,\n // title: \"Investimento em Criptoativos\",\n // api: apiCrypto,\n // // legacyHistory: \"https://www.velotax.com.br/historico/crypto\",\n // showOnSidebar: true,\n // features: [],\n // component: \"Crypto\",\n // subPages: [\n // // {\n // // premium: true,\n // // integratedOnly: true,\n // // disabled: false,\n // // header: true,\n // // sidebar: true,\n // // component: \"ReportBolsa\",\n // // path: \"/xpinvestimentos/bolsa-report\",\n // // name: \"Relatórios\",\n // // title: \"\",\n // // icon: (\n // // <RiFileList3Line\n // // size={24}\n // // className=\"no-fill\"\n // // color=\"var(--ant-primary-color)\"\n // // />\n // // ),\n // // features: [\n // // {\n // // apiUrl: \"/darf/report/transactions\",\n // // },\n // // {\n // // apiUrl: \"/darf/report/download\",\n // // },\n // // {\n // // apiUrl: \"/darf/report/sendEmail\",\n // // },\n // // ],\n // // },\n // {\n // header: true,\n // sidebar: true,\n // integratedOnly: true,\n // component: \"Historic\",\n // path: \"/xpinvestimentos/cripto-historic\",\n // name: \"Histórico\",\n // title: \"\",\n // icon: (\n // <VscHistory\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // features: [\n // {\n // apiUrl: \"/xpinvestimentos/historic\",\n // },\n // {\n // apiUrl: \"/darf/pay\",\n // },\n // {\n // apiUrl: \"/darf/download\",\n // },\n // ],\n // },\n // {\n // header: true,\n // sidebar: true,\n // component: \"IntegrationCrypto\",\n // path: \"/xpinvestimentos/cripto-integration\",\n // name: \"Integração com B3\",\n // title: \"\",\n // icon: (\n // <AiOutlineApi\n // size={24}\n // className=\"no-fill\"\n // color=\"var(--ant-primary-color)\"\n // />\n // ),\n // features: [\n // {\n // apiUrl: \"/xpinvestimentos/integrate\",\n // buttonLabel: \"Integrar\",\n // title:\n // \"Clique para autorizar que a Velotax possa acessar suas informações\",\n // },\n // {\n // apiUrl:\n // \"https://b3Investidor.b2clogin.com/b3Investidor.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_FINTECH&client_id=069ecfdf-7471-48eb-be82-d50799c99e5c&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fwww.investidor.b3.com.br&scope=openid&response_type=code&prompt=login\",\n // buttonLabel: \"Permita o nosso app acessar suas transações!\",\n // },\n // {\n // apiUrl: \"/xpinvestimentos/verify-user\",\n // },\n // ],\n // },\n // ],\n // },\n // {\n // header: true,\n // sidebar: true,\n // calcId: \"autonomos\",\n // name: \"Autônomos/Aluguel\",\n // path: \"/xpinvestimentos/autonomos\",\n // title: \"Autônomos e Aluguel\",\n // api: msDarf,\n // icon: <BsBriefcase size={24} className=\"no-fill\" />,\n // features: [],\n // legacyHistory: \"https://www.velotax.com.br/rendimentos/historico\",\n // subPages: [\n // {\n // header: true,\n // sidebar: true,\n // component: \"Rendimentos\",\n // path: \"/velotax/autonomos\",\n // name: \"Calculadora\",\n // icon: <HiOutlineCalculator size={24} className=\"no-fill\" />,\n // title: \"Histórico de impostos em Rendimentos\",\n // features: [\n // {\n // apiUrl: \"/transaction\",\n // },\n // {\n // apiUrl: \"/darf\",\n // buttonLabel: \"Emitir DARF\",\n // },\n // {\n // apiUrl: \"/darf/year\",\n // },\n // ],\n // },\n // {\n // header: true,\n // sidebar: true,\n // component: \"Historic\",\n // path: \"/velotax/autonomos-historico\",\n // name: \"Histórico\",\n // icon: <RiFileList3Line size={24} className=\"no-fill\" />,\n // title: \"Histórico de impostos em Rendimentos\",\n // features: [\n // {\n // apiUrl: \"/rendimentos/historic\",\n // },\n // {\n // apiUrl: \"/darf/pay\",\n // },\n // {\n // apiUrl: \"/darf/download\",\n // },\n // ],\n // },\n // ],\n // },\n // {\n // header: true,\n // sidebar: true,\n // features: [],\n // name: \"MEI\",\n // title: \"MEI\",\n // calcId: \"mei\",\n // path:\n // process.env.REACT_APP_MEI_FRONT_URL ?? \"https://mei.velotax.com.br\",\n // icon: (\n // <MeiIcon\n // width=\"28px\"\n // height=\"28px\"\n // style={{ marginLeft: \"-4px\" }}\n // fill=\"var(--velotax-font-color-ghost)\"\n // />\n // ),\n // },\n ],\n },\n];\n","import { LoadingOutlined } from \"@ant-design/icons\";\nimport veloLogo from \"../../assets/velotax/velologo.svg\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\n\nexport const LoadingSession: React.FC = () => {\n const { currentBroker } = useBroker();\n\n return (\n <div className=\"loading-session\">\n <img\n src={currentBroker?.iconAlternative || currentBroker?.icon || veloLogo}\n style={currentBroker?.iconAlternativeStyle || {}}\n alt={currentBroker?.name || \"Velotax Logo\"}\n />\n <LoadingOutlined />\n </div>\n );\n};\n","import { Button } from \"@mui/material\";\nimport React, { useEffect, useState } from \"react\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { AiOutlineArrowDown } from \"react-icons/ai\";\nimport { Col, Divider, Form, Input, Row, message } from \"antd\";\nimport api from \"../../services/api\";\nimport { errorMessage } from \"../../utils\";\nimport { DrawerModal } from \"../DrawerModal\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { validationFullName } from \"../../utils/formValidations\";\n\nexport const NameNotification = () => {\n const { loadingIntegrationStatus } = useBroker();\n const {\n user,\n loadingSession,\n updateUserInfo,\n showNameModal,\n cameFromRegister,\n setShowNameModal,\n } = useAuth();\n\n const [showed, setShowed] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const onFinish = ({ name }: { name: string }) => {\n setLoading(true);\n api\n .put(\"/user/feed-userinfo\", {\n name,\n document: user.user.cpf,\n })\n .then(() => {\n message.success(\"Obrigado por adicionar seu nome\");\n updateUserInfo();\n setTimeout(() => {\n setShowNameModal(false);\n }, 1000);\n })\n .catch(() => {\n message.success(errorMessage);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (\n !showed &&\n user.user &&\n !loadingSession &&\n !loadingIntegrationStatus &&\n !user?.user?.name &&\n !cameFromRegister.bolsa\n ) {\n setShowed(true);\n setShowNameModal(true);\n }\n }, [\n showed,\n user.user,\n loadingSession,\n setShowNameModal,\n cameFromRegister.bolsa,\n loadingIntegrationStatus,\n ]);\n\n return (\n <DrawerModal\n width={600}\n height=\"auto\"\n closable={false}\n onCancel={() => {}}\n maskClosable={false}\n className=\"no-closable\"\n visible={showNameModal}\n title={<span style={{ fontWeight: \"700\" }}>Insira seu nome</span>}\n >\n <Form size=\"large\" layout=\"vertical\" onFinish={onFinish}>\n <Form.Item name=\"name\" rules={validationFullName}>\n <Input disabled={loading} placeholder=\"Nome completo\" />\n </Form.Item>\n <Divider />\n <Row gutter={[16, 16]}>\n <Col span={24}>\n <Button\n fullWidth\n size=\"large\"\n type=\"submit\"\n color=\"secondary\"\n disabled={loading}\n variant=\"contained\"\n startIcon={loading ? <LoadingOutlined /> : <AiOutlineArrowDown />}\n >\n Prosseguir\n </Button>\n </Col>\n </Row>\n </Form>\n </DrawerModal>\n );\n};\n","import moment from \"moment\";\nimport { message } from \"antd\";\nimport { Route, useLocation, useNavigate } from \"react-router-dom\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport SSO from \"../pages/SSO\";\nimport apis from \"../services/apis\";\nimport { Home } from \"../pages/Home\";\nimport { Login } from \"../pages/Login\";\nimport { useAuth } from \"./AuthContext\";\nimport Cadastro from \"../pages/Cadastro\";\nimport { Sucesso } from \"../pages/Sucesso\";\nimport apiBolsa from \"../services/apiBolsa\";\nimport { Wallet } from \"../pages/Carteira\";\nimport { useCarteira } from \"./CarteiraContext\";\nimport { MinhaConta } from \"../pages/MinhaConta\";\nimport { Regulation } from \"../pages/Regulation\";\nimport { tenteIntegrarNovamente } from \"../utils\";\nimport { Pages } from \"../constants/brokers/pages\";\nimport { Planos } from \"../pages/Planos\";\nimport { apiPayment } from \"../services/apiPayment\";\nimport { ManagerAccess } from \"../pages/ManagerAccess\";\nimport { PGBLSimulator } from \"../pages/PGBLSimulator\";\nimport { ForgotPassword } from \"../pages/ForgotPassword\";\nimport { ChangePassword } from \"../pages/ChangePassword\";\nimport rendimentosBackend from \"../services/rendimentos\";\nimport { DeclaracaoIRPF } from \"../pages/Declaracao-IRPF\";\nimport { Broker, brokers, Page } from \"../constants/brokers\";\nimport { LoadingSession } from \"../components/LoadingSession\";\nimport { NameNotification } from \"../components/NameNotification\";\nimport { PhoneNotification } from \"../components/PhoneNotification\";\n\nconst UPDATE_INTEGRATION_TIME_STAMP = 1711630800000;\n\nexport interface Integration {\n key: string;\n integrated: boolean;\n lastUpdate: string;\n providerExists: boolean;\n plans?: { name: string; status: string };\n secret?: string;\n userId?: string;\n status?: string;\n provider?: string;\n statusTimestamp?: string;\n hasError?: boolean;\n}\n\nconst defaultIntegration: Integration = {\n key: \"unset\",\n lastUpdate: \"\",\n integrated: false,\n providerExists: false,\n hasError: false,\n};\n\ninterface IBrokerContext {\n currentBroker: Broker;\n currentPage: Page;\n integration: Integration;\n xtageIntegration: boolean;\n integrations: Integration[];\n sidebarPages: Page[];\n integrouHoje: boolean;\n initIntegration: boolean;\n loadingIntegrationStatus: boolean;\n handleIntegrationInit: () => void;\n setInitIntegration: (v: boolean) => void;\n getIntegrationStatus: (options: {\n token?: string;\n firstTime?: boolean;\n hideLoading?: boolean;\n onFinish?: () => void;\n }) => void;\n handleProviderExists: (value: boolean) => void;\n pathBackup: string;\n allPaths: string[];\n brokerRoutes: JSX.Element[];\n publicRoutes: { path: string; element: JSX.Element }[];\n privateRoutes: {\n path: string;\n element: JSX.Element;\n header?: boolean;\n sidebar?: boolean;\n }[];\n}\n\nexport const BrokerContext = createContext<any>({});\n\nexport const BrokerProvider: React.FC = ({ children }) => {\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const { hostname } = window.location;\n const { getCarteira } = useCarteira();\n const {\n user,\n loadingSession,\n cameFromRegister,\n hasPlan,\n b3Authorized,\n hasPermissionExterior,\n hasPermissionExteriorPlanos,\n hasPermissionGeneral,\n } = useAuth();\n\n const [pathBackup, setPathBackup] = useState<string>();\n const [initIntegration, setInitIntegration] = useState(false);\n const [integration, setIntegration] = useState(defaultIntegration);\n const [xtageIntegration, setXtageIntegration] = useState(false);\n const [integrations, setIntegrations] = useState<Integration[]>([]);\n const [loadingIntegrationStatus, setLoadingIntegrationStatus] =\n useState(false);\n\n const interval = useRef<ReturnType<typeof setInterval>>();\n\n useEffect(() => {\n setPathBackup((path) =>\n path !== pathname && pathname !== \"/\" && !pathname.includes(\"/p/\")\n ? pathname\n : path\n );\n }, [pathname]);\n\n const brokerList = useMemo(\n () => brokers.filter((broker) => !broker.disabled),\n []\n );\n\n const dnsBroker = useMemo(\n () => brokerList.find((broker) => hostname.includes(broker.dns)),\n [brokerList, hostname]\n );\n\n const currentBroker = useMemo(\n () =>\n dnsBroker ||\n brokerList.find((broker) => pathname.includes(broker.path)) ||\n brokerList[0],\n [pathname, brokerList, dnsBroker]\n );\n\n const integrouHoje = useMemo(\n () =>\n integration.lastUpdate\n ? moment(integration.lastUpdate).isAfter(moment().startOf(\"day\"))\n : false,\n [integration]\n );\n\n const sidebarPages = useMemo(\n () => currentBroker.pages.filter((page) => page.showOnSidebar),\n [currentBroker?.pages]\n );\n\n const currentPage = useMemo(() => {\n const current = currentBroker?.pages.find((page) =>\n pathname.includes(page.path)\n );\n if (current?.api) {\n current.api.defaults.headers.common[\"Authorization\"] = `Bearer ${\n user?.token || localStorage.getItem(\"@VeloTax:token\")\n }`;\n }\n return current;\n }, [pathname, user?.token, currentBroker?.pages]);\n\n const handleIntegrateStatus = useCallback(async ({\n apiName = \"bolsa\",\n hideLoading,\n firstTime,\n onFinish,\n }: {\n apiName?: \"bolsa\" | \"crypto\";\n firstTime?: boolean;\n hideLoading?: boolean;\n onFinish?: () => void;\n }) => {\n !hideLoading && setLoadingIntegrationStatus(true);\n await (apiName === \"crypto\" ? apis : apiBolsa)\n .get(`providers/integration-status`)\n .then((response) => {\n if (response.data) {\n const pathname = window.location.pathname;\n if (Array.isArray(response.data)) {\n setIntegrations(response.data);\n } else {\n const {\n key,\n integrated,\n lastUpdate,\n providerExists,\n plans,\n hasError,\n } = response.data;\n setIntegration({\n key,\n integrated,\n lastUpdate,\n providerExists,\n plans,\n hasError,\n });\n if (firstTime) {\n if (providerExists) {\n navigate(currentBroker.defaultProviderExistsPath!);\n } else {\n navigate(currentBroker.defaultPath!);\n }\n }\n }\n\n if (response.data.integrated && pathname === \"/carteira\") {\n getCarteira();\n }\n } else {\n setIntegrations([]);\n setIntegration(defaultIntegration);\n }\n })\n .catch(() => {\n setIntegration(defaultIntegration);\n })\n .finally(() => {\n !hideLoading && setLoadingIntegrationStatus(false)\n onFinish?.()\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentBroker, user.token])\n\n const getIntegrationStatus = useCallback(\n ({\n token = user.token,\n hideLoading,\n firstTime,\n onFinish,\n }: {\n token?: string;\n firstTime?: boolean;\n hideLoading?: boolean;\n onFinish?: () => void\n }) => {\n if (token && currentBroker) {\n const pathnameWindowArray = String(window.location.href || \"\").split(\n \"/\"\n );\n const pathnameWindow =\n pathnameWindowArray?.[pathnameWindowArray.length - 1] || \"\";\n\n // !hideLoading && setLoadingIntegrationStatus(true);\n handleIntegrateStatus({ \n apiName: pathnameWindow === \"crypto-integrations\" ? \"crypto\" : \"bolsa\",\n firstTime,\n hideLoading,\n onFinish,\n });\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [currentBroker, user.token]\n );\n\n const handleIntegrationInit = useCallback(() => {\n setIntegration((integration) => ({\n ...integration,\n hasError: false,\n integrated: false,\n }));\n setTimeout(() => {\n setInitIntegration(true);\n }, 250);\n }, []);\n\n const handleProviderExists = useCallback((providerExists: boolean) => {\n setIntegration((integration) => ({ ...integration, providerExists }));\n }, []);\n\n const abledPages = useMemo(\n () =>\n currentBroker.pages\n .reduce(\n (acc, cur) => [...acc, cur, ...(cur.subPages ?? [])],\n [] as Page[]\n )\n .filter((page) => !!page.component && !page.disabled)\n .filter((page) =>\n page.path.includes(\"exterior\")\n ? hasPlan ||\n hasPermissionExterior ||\n hasPermissionExteriorPlanos ||\n hasPermissionGeneral ||\n !page.premium\n : hasPlan || !page.premium || hasPermissionGeneral\n )\n .filter((page) =>\n hasPermissionGeneral\n ? true\n : !page.path.includes(\"bolsa\")\n ? true\n : b3Authorized && page.integratedOnly\n ? true\n : !b3Authorized && !page.integratedOnly\n ),\n [\n hasPlan,\n b3Authorized,\n currentBroker.pages,\n hasPermissionExterior,\n hasPermissionExteriorPlanos,\n hasPermissionGeneral,\n ]\n );\n\n const publicRoutes = [\n { path: \"/p/login\", element: <Login /> },\n { path: \"/p/cadastrar\", element: <Cadastro /> },\n { path: \"/p/forgot-password\", element: <ForgotPassword /> },\n { path: \"/p/change-password/:token\", element: <ChangePassword /> },\n ...(currentBroker.useSSO\n ? [\n {\n path: \"/p/sso/:token\",\n element: <SSO />,\n },\n ]\n : []),\n ];\n\n const privateRoutes = [\n { path: \"/\", element: <Home />, header: true, sidebar: true },\n { path: \"/conta\", element: <MinhaConta />, header: true, sidebar: true },\n {\n path: \"/regulacao\",\n element: <Regulation />,\n header: true,\n sidebar: true,\n },\n // {\n // path: \"/declaracao-irpf\",\n // element: <DeclaracaoIRPF />,\n // header: true,\n // sidebar: true,\n // },\n ...(!hasPlan || !hasPlan.concierge\n ? [\n {\n path: \"/planos\",\n element: <Planos />,\n header: true,\n sidebar: true,\n },\n ]\n : []),\n { path: \"/gestaoacesso\", element: <ManagerAccess /> },\n { path: \"/sucesso\", element: <Sucesso />, header: false, sidebar: true },\n ...(currentBroker.usePGBL\n ? [{ path: \"/pgbl\", element: <PGBLSimulator /> }]\n : []),\n ...(currentBroker.useCarteira\n ? [\n {\n path: \"/carteira\",\n element: <Wallet />,\n header: true,\n sidebar: true,\n },\n ]\n : []),\n ];\n\n const brokerRoutes = useMemo(\n () =>\n abledPages.map((page) => {\n const Element = Pages[page.component!];\n return (\n <Route\n key={page.path}\n path={page.path}\n element={<Element item={page} />}\n />\n );\n }),\n [abledPages]\n );\n\n const privatePaths = privateRoutes.map((page) => page.path);\n const publicPaths = publicRoutes.map((page) =>\n page.path.replace(\"/:token\", \"\")\n );\n\n const abledPagesPaths = abledPages.map((page) => page.path);\n const allPaths = [...abledPagesPaths, ...privatePaths, ...publicPaths];\n\n useEffect(() => {\n if (currentBroker?.html.favicon) {\n const link = (document.querySelector(\"link[rel~='icon']\") ||\n document.createElement(\"link\")) as HTMLLinkElement;\n link.rel = \"icon\";\n document.getElementsByTagName(\"head\")[0].appendChild(link);\n link.href = currentBroker?.html.favicon;\n }\n if (currentBroker?.html.title) {\n const title = (document.querySelector(\"head title\") ||\n document.createElement(\"title\")) as HTMLTitleElement;\n document.getElementsByTagName(\"head\")[0].appendChild(title);\n title.innerHTML = currentBroker.html.title;\n }\n }, [currentBroker]);\n\n useEffect(() => {\n if (integration.key === \"unset\") {\n getIntegrationStatus({\n token: user.token,\n hideLoading: cameFromRegister.bolsa,\n });\n }\n }, [\n user.token,\n integration.key,\n getIntegrationStatus,\n cameFromRegister.bolsa,\n ]);\n\n useEffect(() => {\n if (integration.integrated && interval.current) {\n clearInterval(interval.current);\n setInitIntegration(false);\n setTimeout(() => {\n if (\n initIntegration &&\n pathname === `/${currentBroker.path}/bolsa-integration`\n ) {\n navigate(`/${currentBroker.path}/bolsa-insert-manual`);\n }\n }, 2500);\n } else if (initIntegration && integration.hasError && interval.current) {\n clearInterval(interval.current);\n setInitIntegration(false);\n setTimeout(() => {\n message.info(tenteIntegrarNovamente, 6);\n }, 300);\n }\n }, [\n integration.integrated,\n integration.hasError,\n pathname,\n currentBroker,\n navigate,\n initIntegration,\n ]);\n\n useEffect(() => {\n getIntegrationStatus({\n token: user.token,\n hideLoading: true,\n })\n }, [getIntegrationStatus, user.token]);\n\n apis.defaults.headers.common[\"x-api-provider\"] = currentBroker?.id || \"\";\n apiPayment.defaults.headers.common[\"x-api-provider\"] =\n currentBroker?.id || \"\";\n rendimentosBackend.defaults.headers.common[\"x-api-provider\"] =\n \"velotax-rendimentos\" || \"\";\n return (\n <BrokerContext.Provider\n value={{\n allPaths,\n pathBackup,\n currentPage,\n integration,\n xtageIntegration,\n brokerRoutes,\n integrations,\n integrouHoje,\n sidebarPages,\n publicRoutes,\n currentBroker,\n privateRoutes,\n initIntegration,\n setInitIntegration,\n handleProviderExists,\n getIntegrationStatus,\n handleIntegrationInit,\n loadingIntegrationStatus,\n }}\n >\n {children}\n {!initIntegration && (loadingSession || loadingIntegrationStatus) && (\n <LoadingSession />\n )}\n {/* <PhoneNotification /> */}\n <NameNotification />\n </BrokerContext.Provider>\n );\n};\n\nexport const useBroker = (): IBrokerContext => useContext(BrokerContext);\n","import React, { useEffect, useState } from \"react\";\nimport { Col, Row, Typography, Spin, message } from \"antd\";\nimport Button from \"../../Button\";\nimport apis from \"../../../services/apis\";\nimport { CopyText } from \"../../CopyText\";\nimport { formatCurrency } from \"../../../utils\";\n// import pixLogo from \"../../../assets/logo-pix.png\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { apiPayment } from \"../../../services/apiPayment\";\nimport { useBroker } from \"../../../contexts/BrokerContext\";\nimport { getPlanPrice, planos } from \"../../../pages/Planos/planos\";\n\ninterface IPixPaymentProps {\n paymentData: any;\n handleIdBack: (event: any) => void;\n onSucess?: (event: any) => void;\n backStep?: () => void;\n cupom?: any;\n}\n\nconst pixTaxesByInsitution: Record<string, number> = {\n \"imoveis-velotax\": 350,\n \"rendimentos-velotax\": 9.9,\n \"bolsa-velotax\": 9.9,\n \"exterior-velotax\": 9.9,\n \"crypto-velotax\": 9.9,\n};\n\nconst PixPaymentStep: React.FC<IPixPaymentProps> = ({\n paymentData,\n handleIdBack,\n onSucess,\n backStep,\n cupom,\n}) => {\n const { user, hasPlan } = useAuth();\n const { currentPage } = useBroker();\n const [brCode, setBrCode] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [qrCodeLink, setQRCodeLink] = useState(null);\n const [qrCodeLinkUrl, setQRCodeLinkUrl] = useState(null);\n const provider = paymentData.isPlan ? \"pagarme\" : \"starkbank\";\n\n useEffect(() => {\n if (provider === \"pagarme\") {\n callUserPlanPayment();\n } else {\n callDarfPix();\n }\n // eslint-disable-next-line\n }, []);\n\n // const planPixInfo = {\n // ...paymentData,\n // value: 238.8,\n // oldValue: 310.8,\n // };\n\n // const priceNew = useMemo(() => {\n // if (paymentData.isPlan) {\n // var planPrice = planPixInfo?.value || 0;\n\n // if (cupom?.type === \"absolute\") {\n // planPrice =\n // Number(((planPrice - Number(cupom?.discountValue)) / 12).toFixed(2)) *\n // 12;\n // } else if (cupom?.type === \"percent\") {\n // planPrice =\n // Number(\n // (\n // (planPrice - planPrice * Number(cupom?.discountValue / 100)) /\n // 12\n // ).toFixed(2)\n // ) * 12;\n // }\n\n // return planPrice;\n // }\n // }, [\n // cupom?.discountValue,\n // cupom?.type,\n // paymentData.isPlan,\n // planPixInfo?.value,\n // ]);\n\n const callUserPlanPayment = () => {\n let url: string = \"/user-plan/\";\n setLoading(true);\n apiPayment\n .post(url, {\n ...paymentData,\n cupomCode: cupom?.cupomCode,\n paymentForm: \"pix\",\n from: \"XP\",\n acceptTerms: true,\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n })\n .then((res: any) => {\n setLoading(false);\n // handleIdBack(res?.data?.paymentId);\n if (onSucess && typeof onSucess === \"function\")\n onSucess(res?.data?.paymentId);\n setQRCodeLinkUrl(res?.data?.qrCode);\n setBrCode(res?.data?.br_code);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n });\n };\n\n const callDarfPix = () => {\n let url: string = \"/darf\";\n setLoading(true);\n (currentPage?.api || apis)\n .post(url, {\n ...paymentData,\n paymentForm: \"pix\",\n paymentInfo: {\n clientInfo: {\n name: user?.user?.name,\n email: user?.user?.email,\n document: user?.user?.cpf,\n },\n },\n })\n .then((res: any) => {\n setLoading(false);\n handleIdBack(res?.data?.payment?.paymentId);\n setQRCodeLink(res?.data?.qrCode);\n setBrCode(res?.data?.br_code);\n })\n .catch((err) => {\n message.error(err.response?.data?.message);\n });\n };\n\n // const cutBrCode = () => {\n // let cut_brcode: any = \"\";\n // if (brCode) {\n // cut_brcode = brCode.split(\"/\");\n // }\n\n // return cut_brcode[0];\n // };\n\n const plano = planos.find(p => p.type === paymentData.type)\n const price = getPlanPrice(plano!, hasPlan) ?? 25.9;\n const installments = plano?.installments || 1;\n let totalPrice = price * installments;\n if (cupom && cupom.active && cupom.type === \"absolute\")\n totalPrice -= cupom.discountValue;\n if (cupom && cupom.active && cupom.type === \"percent\")\n totalPrice -= totalPrice * (cupom.discountValue / 100);\n const planPrice = totalPrice / installments;\n\n return (\n <Row>\n <Col>\n {/* {paymentData.isPlan && (\n <>\n <Row justify=\"center\">\n <div className=\"original-price\">\n <Typography.Text\n style={{\n color: \"var(--velotax-font-color-dark)\",\n fontSize: 15,\n }}\n >\n <strong>\n Plano Premium: {formatCurrency(priceNew)} por ano\n </strong>\n </Typography.Text>\n <br />\n <Typography.Text\n delete\n style={{\n color: \"red\",\n fontSize: 12,\n justifyContent: \"right\",\n display: \"flex\",\n }}\n className=\"per-month\"\n >\n de {formatCurrency(planPixInfo.oldValue)} por ano\n </Typography.Text>\n {cupom?.type && (\n <Typography.Text\n style={{\n fontSize: 12,\n display: \"flex\",\n justifyContent: \"right\",\n color: \"var(--velotax-font-color-ghost)\",\n }}\n className=\"per-month\"\n >\n cupom de desconto de{\" \"}\n {cupom.type === \"percent\" ? (\n cupom.discountValue + \" %\"\n ) : (\n <div style={{ marginLeft: 5 }}>\n {formatCurrency(cupom.discountValue)}\n </div>\n )}\n </Typography.Text>\n )}\n </div>\n </Row>\n </>\n )} */}\n {/* <Row>\n <Col\n style={{\n margin: \"auto\",\n marginTop: paymentData.isPlan ? -25 : -35,\n }}\n >\n <img\n alt=\"PIX Logo\"\n style={{ width: 150, height: 150 }}\n src={pixLogo}\n />\n </Col>\n </Row> */}\n {/* {provider !== \"pagarme\" && (\n <Row justify=\"center\">\n <Col\n style={{ fontSize: \"14px\", color: \"var(--ant-primary-color)\" }}\n >\n <strong>\n Taxa PIX:{\" \"}\n {formatCurrency(\n pixTaxesByInsitution?.[paymentData.institution] || 9.9\n )}\n </strong>\n </Col>\n </Row>\n )} */}\n <Row\n gutter={[16, 16]}\n // style={{ marginTop: paymentData.isPlan ? \"-10px\" : \"30px\" }}\n >\n <Col>\n <Typography style={{ color: \"var(--velotax-font-color-dark)\" }}>\n Abra o aplicativo do banco em que você possui o PIX cadastrado e\n selecione a opção de escanear QR Code ou PIX copia e cola.{\" \"}\n {paymentData.isPlan && (\n <Col\n style={{\n width: \"100%\",\n display: \"flex\",\n margin: \"16px 0\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n }}\n >\n <Typography.Text\n strong\n style={{\n textAlign: \"center\",\n color: \"var(--velotax-font-color-dark)\",\n }}\n >\n Plano anual\n </Typography.Text>\n <Typography.Text\n style={{\n textAlign: \"center\",\n color: \"var(--velotax-font-color-dark)\",\n }}\n >\n 12x de {formatCurrency(planPrice)} ={\" \"}\n {formatCurrency(planPrice * 12)}\n </Typography.Text>\n </Col>\n )}\n </Typography>\n </Col>\n <Col\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"16px\",\n width: \"100%\",\n // marginTop: -35,\n }}\n >\n {qrCodeLink && (\n <img\n alt=\"PIX QRCode\"\n style={{ width: 190 }}\n src={`data:image/jpeg;base64, ${qrCodeLink}`}\n />\n )}\n\n {!qrCodeLink && !qrCodeLinkUrl && (\n <Spin spinning={loading} style={{ margin: \"32px\" }}></Spin>\n )}\n\n {qrCodeLinkUrl && (\n <img\n alt=\"PIX QRCode\"\n style={{ width: 190 }}\n src={qrCodeLinkUrl}\n />\n )}\n </Col>\n </Row>\n <Row gutter={[16, 16]} justify=\"center\">\n {brCode ? (\n <>\n {/* <Col span={24}>\n <Button\n type=\"text\"\n size=\"small\"\n style={{ margin: \"0 auto\" }}\n onClick={() => {\n navigator.clipboard.writeText(brCode);\n message.success(\"Pix copiado!\");\n }}\n >\n <span className=\"xp-link\">Copiar código PIX</span>\n </Button>\n </Col> */}\n <Col span={24}>\n <Typography.Paragraph\n style={{\n textAlign: \"center\",\n wordBreak: \"break-all\",\n fontWeight: 500,\n fontSize: \"11px\",\n maxWidth: \"240px\",\n margin: \"0 auto\",\n color: \"var(--velotax-font-color-dark)\",\n }}\n >\n <CopyText id=\"pix-code\">{brCode}</CopyText>\n </Typography.Paragraph>\n </Col>\n </>\n ) : (\n \"\"\n )}\n </Row>\n {/* <Row style={{ marginTop: \"25px\" }}>\n <Col>\n <Typography.Paragraph style={{ fontSize: 12 }}>\n <strong>Instruções de pagamento por PIX:</strong> Abra o\n aplicativo do banco que você possui o PIX cadastrado e selecione a\n opção de escanear o QR Code.\n </Typography.Paragraph>\n </Col>\n </Row> */}\n {!paymentData.isPlan && (\n <Row style={{ marginTop: \"5px\" }}>\n <Col>\n <Typography.Paragraph style={{ textAlign: \"left\", fontSize: 12 }}>\n Taxa de serviço:{\" \"}\n {formatCurrency(\n pixTaxesByInsitution?.[paymentData.institution] || 9.9\n )}\n </Typography.Paragraph>\n </Col>\n </Row>\n )}\n <Button\n size=\"middle\"\n type=\"default\"\n onClick={() => backStep && backStep()}\n >\n <span className=\"xp-link uppercase\">Voltar</span>\n </Button>\n </Col>\n </Row>\n );\n};\n\nexport default PixPaymentStep;\n","import { Button } from \"@mui/material\";\nimport styled from \"styled-components\";\nimport { DrawerModal } from \"../DrawerModal\";\n\nexport const ModalStyled = styled(DrawerModal)`\n &.ant-modal {\n .ant-modal-content {\n background-color: var(--white);\n .ant-modal-close {\n .anticon {\n color: var(--ant-primary-color);\n }\n }\n .ant-modal-header {\n padding: 64px 88px 32px !important;\n border-radius: 8px 8px 0 0 !important;\n background-color: var(--white) !important;\n .ant-modal-title {\n font-size: 20px !important;\n line-height: 26px !important;\n color: var(--velotax-font-color-dark) !important;\n }\n }\n .ant-modal-body {\n border-radius: 0 0 8px 8px;\n padding: 0 88px 64px !important;\n background-color: var(--white);\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.ant-modal {\n .ant-modal-content {\n .ant-modal-header {\n padding: 24px !important;\n .ant-modal-title {\n font-size: 24px !important;\n line-height: 32px !important;\n }\n }\n .ant-modal-body {\n padding: 0 24px 24px !important;\n }\n }\n }\n }\n`;\n\nexport const CardButton = styled(Button)`\n &.MuiButton-root {\n justify-content: space-between;\n height: auto !important;\n min-height: 53px !important;\n display: flex;\n font-size: 20px !important;\n font-weight: 600 !important;\n font-family: \"Consolas\", \"Courier\", monospace !important;\n color: var(--velotax-font-color-dark) !important;\n border-radius: 8px !important;\n border: 1px solid #e8e8e8 !important;\n box-shadow: 0px 4px 8px #e8e8e8 !important;\n }\n .rccs {\n width: 80px;\n margin: -2px 0 0;\n .rccs__card {\n width: 90px;\n height: 64px;\n margin: 0;\n\n .rccs__card--front {\n padding: 8px;\n box-shadow: none;\n border-radius: 4px;\n background: transparent;\n\n .rccs__card__background,\n .rccs__number,\n .rccs__expiry,\n .rccs__name,\n .rccs__chip {\n display: none;\n }\n\n .rccs__issuer {\n top: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n position: relative;\n background-position: center center;\n }\n }\n .rccs__card--back {\n display: none;\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n &.MuiButton-root {\n font-size: 14px !important;\n padding: 6px 16px;\n }\n .rccs {\n width: 48px;\n margin: -2px 0 0 -8px;\n\n .rccs__card {\n width: 64px;\n height: 48px;\n }\n }\n }\n\n .rccs__card--visa .rccs__issuer {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSIxMDAwLjA0NiIKICAgaGVpZ2h0PSIzMjMuNjUzMDIiCiAgIHZpZXdCb3g9IjAgMCAxMDAwLjA0NiAzMjMuNjUzIgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNTguMzgxIDE2MS4xNTQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJWaXNhXzIwMDYuc3ZnIj48bWV0YWRhdGEKICAgaWQ9Im1ldGFkYXRhMjMiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGU+PC9kYzp0aXRsZT48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgaWQ9ImRlZnMyMSI+CgkKCQoJCgkKCQoJCgkKPC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTM2NiIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNzA1IgogICBpZD0ibmFtZWR2aWV3MTkiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMC4zNTM1NTMzOSIKICAgaW5rc2NhcGU6Y3g9IjM0LjY5MDg5NyIKICAgaW5rc2NhcGU6Y3k9IjEzMS4xNTQ4MyIKICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICBpbmtzY2FwZTp3aW5kb3cteT0iLTgiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9IkxheWVyXzEiIC8+CjxnCiAgIGlkPSJnNDE1OCIKICAgdHJhbnNmb3JtPSJtYXRyaXgoNC40Mjk5NjMxLDAsMCw0LjQyOTk2MzEsLTgxLjE2NTc4MywtMTA1LjA0NzgzKSI+PHBvbHlnb24KICAgICBwb2ludHM9IjExNi4xNDUsOTUuNzE5IDk3Ljg1OCw5NS43MTkgMTA5LjI5NiwyNC45OTUgMTI3LjU4MiwyNC45OTUgIgogICAgIGlkPSJwb2x5Z29uOSIKICAgICBzdHlsZT0iZmlsbDojMDA1NzlmIiAvPjxwYXRoCiAgICAgZD0ibSAxODIuNDM3LDI2LjcyNCBjIC0zLjYwNywtMS40MzEgLTkuMzI4LC0zLjAxMSAtMTYuNDAyLC0zLjAxMSAtMTguMDU5LDAgLTMwLjc3Niw5LjYzIC0zMC44NTQsMjMuMzk4IC0wLjE1LDEwLjE1OCA5LjEwNSwxNS44IDE2LjAyNywxOS4xODcgNy4wNzUsMy40NjEgOS40OCw1LjcyIDkuNDgsOC44MDUgLTAuMDcyLDQuNzM4IC01LjcxNyw2LjkyMiAtMTAuOTgyLDYuOTIyIC03LjMwMSwwIC0xMS4yMTMsLTEuMTI2IC0xNy4xNTgsLTMuNzYyIGwgLTIuNDA4LC0xLjEzIC0yLjU1OSwxNS44NzYgYyA0LjI4OSwxLjk1NCAxMi4xOTEsMy42ODggMjAuMzk1LDMuNzY0IDE5LjE4OCwwIDMxLjY4LC05LjQ4MSAzMS44MjgsLTI0LjE1MyAwLjA3MywtOC4wNTEgLTQuODE0LC0xNC4yMiAtMTUuMzUsLTE5LjI2MSAtNi4zOTYsLTMuMjM2IC0xMC4zMTMsLTUuNDE4IC0xMC4zMTMsLTguNzI5IDAuMDc1LC0zLjAxIDMuMzEzLC02LjA5MyAxMC41MzMsLTYuMDkzIDUuOTQ1LC0wLjE1MSAxMC4zMTMsMS4yNzggMTMuNjIyLDIuNzA4IGwgMS42NTQsMC43NTEgMi40ODcsLTE1LjI3MiAwLDAgeiIKICAgICBpZD0icGF0aDExIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgc3R5bGU9ImZpbGw6IzAwNTc5ZiIgLz48cGF0aAogICAgIGQ9Im0gMjA2Ljc0Miw3MC42NjQgYyAxLjUwNiwtNC4wNjMgNy4zMDEsLTE5Ljc4OCA3LjMwMSwtMTkuNzg4IC0wLjA3NiwwLjE1MSAxLjUwMywtNC4xMzggMi40MDYsLTYuNzcxIGwgMS4yNzgsNi4wOTQgYyAwLDAgMy40NjMsMTYuOTI5IDQuMjE1LDIwLjQ2NSAtMi44NTgsMCAtMTEuNTg4LDAgLTE1LjIsMCBsIDAsMCB6IG0gMjIuNTczLC00NS42NjkgLTE0LjE0NSwwIGMgLTQuMzYyLDAgLTcuNjc2LDEuMjc4IC05LjU1OCw1Ljg2OCBsIC0yNy4xNjMsNjQuODU1IDE5LjE4OCwwIGMgMCwwIDMuMTU5LC04LjcyOSAzLjgzOCwtMTAuNjA5IDIuMTA1LDAgMjAuNzcxLDAgMjMuNDc5LDAgMC41MjUsMi40ODMgMi4xODIsMTAuNjA5IDIuMTgyLDEwLjYwOSBsIDE2LjkzMiwwIC0xNC43NTMsLTcwLjcyMyAwLDAgeiIKICAgICBpZD0icGF0aDEzIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgc3R5bGU9ImZpbGw6IzAwNTc5ZiIgLz48cGF0aAogICAgIGQ9Ik0gODIuNTg0LDI0Ljk5NSA2NC42NzUsNzMuMjIyIDYyLjcxOCw2My40NDEgQyA1OS40MDcsNTIuMTU1IDQ5LjAyMywzOS44OTMgMzcuNDM1LDMzLjc5NiBsIDE2LjQwNCw2MS44NDggMTkuMzM4LDAgMjguNzQ0LC03MC42NDkgLTE5LjMzNywwIDAsMCB6IgogICAgIGlkPSJwYXRoMTUiCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICBzdHlsZT0iZmlsbDojMDA1NzlmIiAvPjxwYXRoCiAgICAgZD0ibSA0OC4wNDUsMjQuOTk1IC0yOS40MjIsMCAtMC4zMDEsMS40MjkgYyAyMi45NTEsNS44NjkgMzguMTUxLDIwLjAxNiA0NC4zOTYsMzcuMDIgTCA1Ni4zMjIsMzAuOTQgYyAtMS4wNTMsLTQuNTE3IC00LjI4OSwtNS43OTYgLTguMjc3LC01Ljk0NSBsIDAsMCB6IgogICAgIGlkPSJwYXRoMTciCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICBzdHlsZT0iZmlsbDojZmFhNjFhIiAvPjwvZz4KPC9zdmc+);\n }\n\n .rccs__card--visaelectron .rccs__issuer {\n background-image: url(data:image/png;base64,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);\n }\n\n .rccs__card--hipercard .rccs__issuer {\n background-image: url(data:image/png;base64,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);\n }\n`;\n","import { MdDone } from \"react-icons/md\";\nimport { VscError } from \"react-icons/vsc\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Input, message, ModalProps } from \"antd\";\nimport { useEffect, useState, ChangeEvent } from \"react\";\nimport {\n LoadingOutlined,\n MinusOutlined,\n PlusOutlined,\n} from \"@ant-design/icons\";\nimport { UserPlan } from \"./UserPlan/index\";\nimport HandleTag from \"../../services/handleTag\";\nimport { UserPlans } from \"../../constants/plans\";\nimport { PlanModalStyled } from \"./UserPlan/styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { apiPayment } from \"../../services/apiPayment\";\nimport { Content, Loading } from \"../PlanModal/styles\";\nimport { PaymentModal } from \"../../components/PaymentModal\";\n\ninterface IUserPlanModal extends ModalProps {\n modalPlans?: any[];\n paymentData?: any;\n closeModal?: any;\n}\nvar getStatus: NodeJS.Timeout;\nvar blockMultipleReq: NodeJS.Timeout | undefined;\nvar debounce: NodeJS.Timeout;\n\nexport const UserPlanModal: React.FC<IUserPlanModal> = ({\n title,\n modalPlans,\n onCancel,\n paymentData,\n closeModal,\n ...rest\n}) => {\n const navigate = useNavigate();\n const { getUserInfo, user, showUserPlanModal } = useAuth();\n const [loading] = useState(false);\n const [cupom, setCupom] = useState();\n const [tabPlanActive] = useState(\"Anual\");\n const [planCurrent, setPlan] = useState<any>();\n const [codeSave, setCode] = useState<string>(\"\");\n const [textCupomErr, setTextCupomErr] = useState(\"\");\n const [paymentModal, setPaymentModal] = useState(false);\n const [buttonLoading, setButtonLoading] = useState(false);\n const [showInputCupom, setShowInputCupom] = useState(false);\n\n useEffect(() => {\n if (!buttonLoading && codeSave) setButtonLoading(true);\n // eslint-disable-next-line\n }, [codeSave]);\n\n const handleDeselectPlan = () => {\n setPlan(undefined);\n };\n\n const handleSuccess = (data: any) => {\n checkWasPaid(data.paymentId, 4);\n };\n\n // eslint-disable-next-line\n const checkWasPaid = (id: string, delay: number = 2) => {\n let attempts = 0;\n\n getStatus = setInterval(async () => {\n apiPayment\n .get(`user-plan/plan-info`)\n .then((res) => {\n if (res.data?.active) {\n message.success(\"Pagamento Confirmado com sucesso!\");\n HandleTag(\"61\");\n setPlan(undefined);\n showUserPlanModal(false);\n getUserInfo();\n navigate(\"/sucesso\");\n clearInterval(getStatus);\n }\n })\n .finally(() => {\n attempts += 1;\n\n if (attempts > 100) {\n clearInterval(getStatus);\n }\n });\n }, delay * 1000);\n };\n\n useEffect(() => {\n return () => getStatus && clearInterval(getStatus);\n }, [checkWasPaid]);\n\n useEffect(() => {\n if (planCurrent) {\n showUserPlanModal(true, \"Pagamento\");\n }\n }, [planCurrent, showUserPlanModal]);\n\n const checkIfCupomIsValid = (code: string) => {\n if (!buttonLoading) setButtonLoading(true);\n\n if (blockMultipleReq) {\n setButtonLoading(false);\n return;\n }\n\n blockMultipleReq = setTimeout(() => {\n blockMultipleReq = undefined;\n }, 2000);\n\n if (!code) {\n setButtonLoading(false);\n return;\n }\n\n apiPayment\n .get(`/cupom/valid?code=${code}`)\n .then((ret) => {\n message.success(\"Cupom adicionado com sucesso\");\n setTextCupomErr(\"valid\");\n setCupom(ret.data);\n setButtonLoading(false);\n })\n .catch((err) => {\n message.error(err.response.data.message);\n setTextCupomErr(\"invalid\");\n setButtonLoading(false);\n });\n };\n\n const handleCupomCode = (event: ChangeEvent<HTMLInputElement>) => {\n let code: string = event.target.value;\n setCode(code);\n\n if (debounce) clearTimeout(debounce);\n\n debounce = setTimeout(() => {\n checkIfCupomIsValid(code);\n }, 1500);\n };\n\n const onKeyPress = (key: any) => {\n if (key.code === \"Enter\" || key.key === \"Enter\")\n checkIfCupomIsValid(codeSave);\n };\n\n return (\n <PlanModalStyled\n footer={null}\n destroyOnClose\n bodyStyle={\n planCurrent && planCurrent.title !== \"VELOTAX_MAIN_FREE\"\n ? { backgroundColor: \"var(--white)\" }\n : {}\n }\n title={title ? title : \"Contrate o plano\"}\n onCancel={(e) => {\n if (buttonLoading) return;\n\n if (onCancel) onCancel(e);\n setPlan(undefined);\n setCode(\"\");\n setTextCupomErr(\"\");\n setCupom(undefined);\n setShowInputCupom(false);\n }}\n {...rest}\n >\n <Content>\n {loading && (\n <Loading>\n <LoadingOutlined color=\"var(--ant-primary-color)\" size={24} />\n </Loading>\n )}\n\n {!planCurrent && (\n // <Tabs\n // onChange={(key) => {\n // setTextCupomErr(\"\");\n // setCupom(undefined);\n // setCode(\"\");\n // setTabPlanActive(key);\n // }}\n // defaultActiveKey={tabPlanActive}\n // >\n <>\n {UserPlans.map((plan: any) => (\n // <Tabs.TabPane tab={plan?.interval} key={plan?.interval}>\n <UserPlan\n key={plan?.interval}\n buttonLoading={buttonLoading}\n codeSave={codeSave}\n setCode={setCode}\n cupomInfo={cupom}\n cupomMsg={textCupomErr}\n showInputCupom={showInputCupom}\n plan={plan}\n handleSelect={() => {\n if ([\"VELOTAX_MAIN_PRO\", \"VELOTAX_MAIN_PRO_MONTH\"].includes(plan?.type))\n setPaymentModal(true);\n setTextCupomErr(\"\");\n setCode(\"\");\n plan && setPlan(plan);\n }}\n checkIfCupomIsValid={checkIfCupomIsValid}\n planBuyed={user?.user?.userPlanInfoVelotax?.type}\n />\n // </Tabs.TabPane>\n ))}\n </>\n // </Tabs>\n )}\n\n {planCurrent &&\n [\"XP_PRO\", \"XP_PRO_MONTH\", \"VELOTAX_MAIN_PRO\", \"VELOTAX_MAIN_PRO_MONTH\"].includes(planCurrent?.type) && (\n <PaymentModal\n show={paymentModal}\n onCancel={(e: any) => {\n setPaymentModal(false);\n closeModal(false);\n handleDeselectPlan();\n setPlan(undefined);\n }}\n paymentData={{\n ...paymentData,\n type: planCurrent?.type,\n isPlan: true,\n }}\n callDarf={(value: boolean) => {}}\n planCurrent={planCurrent}\n hideDarfDownload\n hidePixButton={[\"XP_PRO_MONTH\", \"VELOTAX_MAIN_PRO_MONTH\"].includes(planCurrent?.type)}\n onSucessCreditCard={handleSuccess}\n onSucessPix={checkWasPaid}\n cupom={cupom}\n setCupom={setCupom}\n />\n )}\n </Content>\n {!user?.user?.userPlanInfoVelotax?.type && tabPlanActive !== \"Mensal\" && (\n <span\n className=\"click-here\"\n onClick={() => {\n setShowInputCupom((show) => {\n if (!show) {\n setCode(\"\");\n setTextCupomErr(\"\");\n setCupom(undefined);\n }\n return !show;\n });\n }}\n >\n {!showInputCupom ? <PlusOutlined color=\"\" /> : <MinusOutlined />}\n Incluir cupom de desconto\n </span>\n )}\n {tabPlanActive !== \"Mensal\" &&\n !user?.user?.userPlanInfoVelotax?.active &&\n showInputCupom ? (\n <div className=\"cupom-content\">\n <div className=\"input-content\">\n <Input\n onKeyPress={onKeyPress}\n value={codeSave}\n maxLength={16}\n disabled={textCupomErr === \"valid\"}\n onChange={handleCupomCode}\n size=\"middle\"\n className=\"input-cupom\"\n placeholder=\"Cupom\"\n />\n <div className=\"icon-cupom\">\n {textCupomErr && textCupomErr === \"valid\" ? (\n <MdDone size={20} color=\"var(--velotax-green-amount)\" />\n ) : textCupomErr === \"invalid\" ? (\n <VscError size={20} color=\"var(--velotax-red-prejuizo)\" />\n ) : undefined}\n </div>\n </div>\n {!!textCupomErr && (\n <span\n className=\"cupom-msg\"\n style={{\n color:\n textCupomErr !== \"valid\"\n ? \"var(--ant-error-color)\"\n : \"var(--velotax-green-amount)\",\n }}\n >\n {textCupomErr === \"valid\" ? \"Cupom Válido\" : \"Cupom Inválido\"}\n </span>\n )}\n </div>\n ) : undefined}\n </PlanModalStyled>\n );\n};\n","import { message } from \"antd\";\nimport { useNavigate } from \"react-router\";\nimport { useLocation } from \"react-router-dom\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n ReactNode,\n useMemo,\n} from \"react\";\nimport api from \"../services/api\";\nimport apis from \"../services/apis\";\nimport { isMobile, planInfoToHasPlan } from \"../utils\";\nimport msDarf from \"../services/msDarf\";\nimport apiBolsa from \"../services/apiBolsa\";\nimport { apiPlan } from \"../services/apiPlan\";\nimport apiVeloPro from \"../services/apiVeloPro\";\nimport sslSecure from \"../assets/ssl-secure.svg\";\nimport apiExterior from \"../services/apiExterior\";\nimport { apiPayment } from \"../services/apiPayment\";\nimport backnedRendimentos from \"../services/rendimentos\";\nimport apiBolsaVelotax from \"../services/apiBolsaVelotax\";\nimport apiIrpf2023 from \"../services/apiIrpf2023\";\nimport { UserPlanModal } from \"../components/UserPlanModal\";\n\ninterface ILoginData {\n cpf: string;\n pass: string;\n}\n\ninterface IModuleData {\n name: string;\n completed: boolean;\n}\n\ninterface ISignUpData {\n email: string;\n pass: string;\n passConfirmation: string;\n cpf: string;\n}\n\ninterface IDependent {\n name: string;\n cpf: string;\n profileId: string;\n type: string;\n _id: string;\n}\n\nexport interface HasPlan {\n basic: boolean;\n premium: boolean;\n concierge: boolean;\n}\n\ninterface IUser {\n name: string;\n email: string;\n cpf: string;\n birthdate?: string;\n cellphone?: string;\n cpfProtegido: boolean;\n profileId: string;\n dependents?: IDependent[];\n visibleCalcs: string[];\n visibleModules: IModuleData[];\n modulesStatus: IModuleData[];\n answeredStepDec: boolean;\n isAccountant?: boolean;\n userId?: string;\n cellphoneFilled?: boolean;\n showAccountantPremiumButton: {\n show: boolean;\n disabled: boolean;\n };\n showContratarContador: {\n show: boolean;\n disabled: boolean;\n };\n showContratarMalhaFina: {\n show: boolean;\n protected: boolean;\n };\n userPlanInfoVelotax: {\n active: boolean;\n dueDate: number;\n type: string;\n paid: boolean;\n actionFree: boolean;\n permissions?: any;\n cupomDueDate?: string;\n currentPlan?: any\n };\n isIntegratedBolsa?: boolean;\n isIntegratedExterior?: boolean;\n isAd?: boolean\n}\n\ninterface ISessionData extends IUser {\n token: string;\n}\n\ninterface IAuthState {\n token: string;\n user: IUser;\n}\n\ninterface HandleCalcsParamas {\n calcs: any[];\n navigateTo?: string;\n}\n\ninterface CameFromRegister {\n bolsa: boolean;\n phone: boolean;\n}\n\ninterface IAuthContext {\n handleSignIn: (loginData: ILoginData) => void;\n handleSignUp: (\n signUpData: ISignUpData,\n onboardingData: any,\n hiringData?: any\n ) => void;\n setLocalStorageWithAuthData: (sesionData: ISessionData) => void;\n signOut: () => void;\n signed: boolean;\n user: IAuthState;\n loading: boolean;\n loadingSession: boolean;\n setLoadingSession: React.Dispatch<React.SetStateAction<boolean>>;\n getUserInfo: () => void;\n updateUserInfo: () => void;\n updateUserDec: () => void;\n authAccountantSSOCnpj: () => void;\n decUrl: string;\n setDecUrl: (decUrl: string) => void;\n showDbkModal: boolean;\n setShowDbkModal: (showDbkModal: boolean) => void;\n showIndicarModal: boolean;\n setShowIndicarModal: (showIndicarModal: boolean) => void;\n wasMessageSent: boolean;\n setWasMessageSent: (wasMessageSent: boolean) => void;\n showUserPlanModal: (show: boolean, title?: ReactNode) => void;\n userPlanModal: boolean;\n handleCalcs: (params: HandleCalcsParamas) => void;\n setUser: (data: any) => void;\n ssoToken: string;\n irpfBannerActive: boolean;\n forceUpdateTabNavigator: boolean;\n setForceUpdateTabNavigator: React.Dispatch<React.SetStateAction<boolean>>;\n hasPlan: any;\n b3Authorized: boolean;\n setB3Authorized: React.Dispatch<React.SetStateAction<boolean>>;\n showDrawer: boolean;\n setShowDrawer: Function;\n chatNotificationQtt: number;\n setChatNotificationQtt: React.Dispatch<React.SetStateAction<number>>;\n chatOpen: boolean;\n setChatOpen: React.Dispatch<React.SetStateAction<boolean>>;\n showPhoneModal: boolean;\n setShowPhoneModal: React.Dispatch<React.SetStateAction<boolean>>;\n showNameModal: boolean;\n setShowNameModal: React.Dispatch<React.SetStateAction<boolean>>;\n cameFromRegister: CameFromRegister;\n setCameFromRegister: React.Dispatch<React.SetStateAction<CameFromRegister>>;\n hasPermissionExterior: boolean;\n hasPermissionExteriorPlanos: boolean;\n hasPermissionGeneral: boolean;\n}\n\nexport const AuthContext = createContext<IAuthContext>({} as IAuthContext);\n\nexport const AuthProvider: React.FC = ({ children }) => {\n const navigate = useNavigate();\n const { search, pathname } = useLocation();\n\n const [decUrl, setDecUrl] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [chatOpen, setChatOpen] = useState(false);\n const [showDrawer, setShowDrawer] = useState(false);\n const [showDbkModal, setShowDbkModal] = useState(false);\n const [b3Authorized, setB3Authorized] = useState(false);\n const [showNameModal, setShowNameModal] = useState(false);\n const [loadingSession, setLoadingSession] = useState(true);\n const [wasMessageSent, setWasMessageSent] = useState(false);\n const [showPhoneModal, setShowPhoneModal] = useState(false);\n const [user, setUser] = useState<IAuthState>({} as IAuthState);\n const [showIndicarModal, setShowIndicarModal] = useState(false);\n const [chatNotificationQtt, setChatNotificationQtt] = useState(0);\n const [userPlanModal, showUserPlanModal] = useState<boolean>(false);\n const [userPlanModalTitle, setUserPlanModalTitle] = useState<ReactNode>();\n const [forceUpdateTabNavigator, setForceUpdateTabNavigator] = useState(false);\n const [cameFromRegister, setCameFromRegister] = useState<CameFromRegister>({\n bolsa: false,\n phone: false,\n });\n\n const hasPermissionExterior = user?.user?.userPlanInfoVelotax?.permissions?.[\"exterior-xpinvestimentos\"];\n const hasPermissionExteriorPlanos = user?.user?.userPlanInfoVelotax?.permissions?.[\"relatoriosanual-xpinvestimentos\"];\n //@ts-ignore\n const hasPermissionGeneral = user?.user?.userPlanInfoVelotax?.permissions?.[\"xpinvestimentos\"] && new Date(user?.user?.userPlanInfoVelotax?.dueDate) > new Date();\n\n const hasPlan = useMemo(\n () => planInfoToHasPlan(user?.user?.userPlanInfoVelotax, hasPermissionGeneral),\n [user?.user?.userPlanInfoVelotax, hasPermissionGeneral]\n );\n\n const handleCalcs = async ({ calcs, navigateTo }: HandleCalcsParamas) => {\n try {\n setLoading(true);\n await api.put(\"/configuracoes/calcs\", { calcs });\n setUser((user) => ({\n ...user,\n user: { ...user.user, visibleCalcs: calcs },\n }));\n setLoading(false);\n navigate(navigateTo ?? \"/\");\n } catch (err) {\n setLoading(false);\n throw Error;\n }\n };\n\n const getUserInformation = async () => {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const user = localStorage.getItem(\"@VeloTax:user\");\n if (user && token && !pathname.includes(\"/p/sso\")) {\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apis.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiPayment.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiVeloPro.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n backnedRendimentos.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n msDarf.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n\n const response = await api.get(\"/session/userInfo\");\n if (response.data.isBlocked) {\n message.warning(\n \"Sua conta foi temporariamente bloqueada, favor entrar em contato com o suporte.\",\n 5000\n );\n await signOut();\n }\n const retPlanInfo = await apiPayment.get(`/user-plan/plan-info`, {\n headers: {\n \"x-api-provider\": \"xp-investimentos\",\n },\n });\n\n let userFromApi = null;\n if (response.data) {\n const {\n cpf,\n cpfProtegido,\n name,\n email,\n birthdate,\n cellphone,\n profileId,\n dependents,\n visibleCalcs,\n visibleModules,\n modulesStatus,\n answeredStepDec,\n showContratarMalhaFina,\n userId,\n cellphoneFilled,\n showAccountantPremiumButton,\n showContratarContador,\n isBlocked,\n isIntegratedBolsa,\n isIntegratedExterior\n } = response.data;\n userFromApi = {\n cpf,\n cpfProtegido,\n name,\n email,\n birthdate,\n cellphone,\n profileId,\n dependents,\n visibleCalcs,\n visibleModules,\n modulesStatus,\n answeredStepDec,\n cellphoneFilled,\n showContratarContador,\n showContratarMalhaFina,\n isAccountant: cpf.length > 11,\n userId,\n showAccountantPremiumButton,\n userPlanInfoVelotax: retPlanInfo.data,\n isBlocked,\n isIntegratedBolsa,\n isIntegratedExterior\n };\n }\n\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apis.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiExterior.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n backnedRendimentos.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n msDarf.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiPayment.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiVeloPro.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiPlan.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiBolsaVelotax.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n apiIrpf2023.defaults.headers.common[\"Authorization\"] = `Bearer ${response.headers.token || token\n }`;\n\n return {\n token: response.headers.token || token,\n user: userFromApi || JSON.parse(user),\n };\n }\n return {} as IAuthState;\n };\n\n const getUserInfo = useCallback(\n (callback?: () => void) => {\n setLoadingSession(true);\n getUserInformation()\n .then((res) => {\n setUser(res);\n setLoadingSession(false);\n callback && callback();\n })\n .catch((err) => {\n console.log(\"err\", err);\n setLoadingSession(false);\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [pathname]\n );\n\n const updateUserInfo = useCallback(() => {\n getUserInformation().then((res) => {\n setUser(res);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pathname]);\n\n const updateUserDec = useCallback(() => {\n const updatedUser = { ...user.user, answeredStepDec: true };\n const token = localStorage.getItem(\"@VeloTax:token\") || \"\";\n\n setUser({ user: updatedUser, token });\n }, [user]);\n\n const signOut = useCallback(() => {\n setLoadingSession(true);\n localStorage.removeItem(\"@VeloTax:token\");\n localStorage.removeItem(\"@VeloTax:user\");\n api.defaults.headers.common[\"Authorization\"] = \"\";\n apis.defaults.headers.common[\"Authorization\"] = \"\";\n apiPayment.defaults.headers.common[\"Authorization\"] = \"\";\n apiBolsa.defaults.headers.common[\"Authorization\"] = \"\";\n apiBolsaVelotax.defaults.headers.common[\"Authorization\"] = \"\";\n apiVeloPro.defaults.headers.common[\"Authorization\"] = \"\";\n apiIrpf2023.defaults.headers.common[\"Authorization\"] = \"\";\n\n setUser({} as IAuthState);\n navigate(\"/p/login\");\n setTimeout(() => {\n window.location.reload();\n }, 500);\n }, [navigate]);\n\n useEffect(() => {\n apiExterior.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error?.response?.status === 401) {\n setTimeout(() => {\n signOut();\n }, 3000);\n }\n return Promise.reject(error);\n }\n );\n apiVeloPro.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error?.response?.status === 401) {\n setTimeout(() => {\n signOut();\n }, 3000);\n }\n return Promise.reject(error);\n }\n );\n api.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error?.response?.status === 401) {\n signOut();\n }\n\n return Promise.reject(error);\n }\n );\n\n getUserInfo();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setLocalStorageWithAuthData = useCallback(\n ({\n token,\n cpf,\n cpfProtegido,\n email,\n name,\n birthdate,\n cellphone,\n profileId,\n dependents,\n visibleCalcs,\n visibleModules,\n modulesStatus,\n answeredStepDec,\n cellphoneFilled,\n showContratarMalhaFina,\n userId,\n showAccountantPremiumButton,\n showContratarContador,\n userPlanInfoVelotax,\n isIntegratedBolsa,\n isIntegratedExterior\n }: ISessionData) => {\n localStorage.setItem(\"@VeloTax:token\", token);\n localStorage.setItem(\n \"@VeloTax:user\",\n JSON.stringify({\n cpf,\n email,\n name,\n profileId,\n mostrouRecomendacao: false,\n })\n );\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apis.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiExterior.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n backnedRendimentos.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n msDarf.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiPayment.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiPlan.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsaVelotax.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n apiVeloPro.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiIrpf2023.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n\n apis.post(\"/billing\", { cpf, name, email });\n\n setUser({\n token,\n user: {\n cpfProtegido,\n cpf,\n email,\n name,\n birthdate,\n cellphone,\n profileId,\n dependents,\n visibleCalcs,\n visibleModules,\n modulesStatus,\n cellphoneFilled,\n answeredStepDec,\n showContratarMalhaFina,\n isAccountant: cpf.length > 11,\n userId,\n showAccountantPremiumButton,\n showContratarContador,\n userPlanInfoVelotax,\n isIntegratedBolsa,\n isIntegratedExterior\n },\n });\n if (search === \"?redirect=true\") {\n navigate(\"/conta\");\n } else {\n navigate(\"/\");\n }\n },\n // eslint-disable-next-line\n []\n );\n\n const authAccountantSSOCnpj = useCallback(async () => {\n if (!user.user.cpf.includes(\"_\")) return;\n\n const { data } = await api.post(\"/session/accountant-sso-cnpj\", {\n cnpj: user.user.cpf.includes(\"_\")\n ? user.user.cpf.split(\"_\")[1]\n : user.user.cpf,\n });\n\n navigate(data.url);\n }, [user, navigate]);\n\n const handleSignIn = useCallback(\n async (data: ILoginData) => {\n setLoading(true);\n try {\n const response: any = await api.post(\"/session\", {\n cpf: data.cpf,\n pass: data.pass,\n from: \"XP\",\n });\n if (response.data.isBlocked) {\n message.warning(\n \"Sua conta foi temporariamente bloqueada, favor entrar em contato com o suporte.\",\n 5000\n );\n await signOut();\n }\n const {\n token,\n cpf,\n cpfProtegido,\n email,\n name,\n birthdate,\n cellphone,\n profileId,\n dependents,\n visibleCalcs,\n visibleModules,\n modulesStatus,\n answeredStepDec,\n cellphoneFilled,\n showContratarMalhaFina,\n userId,\n showAccountantPremiumButton,\n showContratarContador,\n isIntegratedBolsa,\n isIntegratedExterior\n } = response.data;\n\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apis.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiPayment.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiPlan.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiExterior.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n backnedRendimentos.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n msDarf.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsaVelotax.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n apiVeloPro.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiIrpf2023.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n\n const retPlanInfo = await apiPayment.get(`/user-plan/plan-info`, {\n headers: {\n \"x-api-provider\": \"xp-investimentos\",\n },\n });\n\n setLoadingSession(true);\n setLocalStorageWithAuthData({\n token,\n cpf,\n cpfProtegido,\n email,\n name,\n birthdate,\n cellphone,\n profileId,\n dependents,\n visibleCalcs,\n visibleModules,\n modulesStatus,\n cellphoneFilled,\n answeredStepDec,\n showContratarContador,\n showContratarMalhaFina,\n userId,\n showAccountantPremiumButton,\n userPlanInfoVelotax: retPlanInfo.data,\n isIntegratedBolsa,\n isIntegratedExterior\n });\n setLoading(false);\n setTimeout(() => {\n setLoadingSession(false);\n }, 500);\n } catch (err: any) {\n const errorMessage =\n err.response?.data?.message ||\n \"CPF e/ou senha incorretos. Tente novamente\";\n message.error(errorMessage);\n setLoading(false);\n throw Error;\n }\n },\n [setLocalStorageWithAuthData, signOut]\n );\n\n const handleSignUp = useCallback(\n (signUpData, onboardingData, hiringData = null) => {\n setLoading(true);\n const { name, cpf, email, pass, policiesAccepted } = signUpData;\n\n const modules = [\n ...(onboardingData.goods || []),\n ...(onboardingData.incomeTypes || []),\n ...(onboardingData.operationTypes || []),\n ];\n\n const user: { [key: string]: any } = {\n name,\n cpf,\n email,\n pass,\n policiesAccepted,\n from: \"XP\",\n dependents: onboardingData.dependents || [],\n modules: modules,\n isMobile: isMobile(),\n \n };\n\n const formData = hiringData ? (hiringData as FormData) : new FormData();\n\n for (const key in user) {\n formData.set(\n key,\n key === \"modules\" || key === \"dependents\"\n ? JSON.stringify(user[key])\n : user[key]\n );\n }\n\n api\n .post(\"/user\", formData)\n .then((response) => {\n const { token, cpf, email, name, profileId } = response.data;\n\n localStorage.removeItem(\"publiconboarding\");\n localStorage.setItem(\"@VeloTax:token\", token);\n localStorage.setItem(\n \"@VeloTax:user\",\n JSON.stringify({\n cpf,\n email,\n name,\n profileId,\n mostrouRecomendacao: false,\n })\n );\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apis.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsa.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiExterior.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n backnedRendimentos.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n msDarf.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiPayment.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n apiPlan.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\n apiBolsaVelotax.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n apiVeloPro.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n apiIrpf2023.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${token}`;\n\n apis.post(\"/billing\", { cpf, name, email });\n\n setCameFromRegister({ bolsa: true, phone: true });\n getUserInfo(() => {\n navigate(\"/\");\n setLoading(false);\n });\n })\n .catch((err) => {\n message.error(\n err.response?.data?.message ||\n \"Algo deu errado, tente novemente mais tarde\"\n );\n setLoading(false);\n });\n },\n [navigate, getUserInfo]\n );\n\n const irpfBannerActive = true;\n const [ssoToken, setSsoToken] = useState(\"\");\n useEffect(() => {\n if (irpfBannerActive && user?.user?.cpf) {\n api\n .post(\"/user/sso-token\", { from: \"XP\" })\n .then((response) => {\n setSsoToken(response.data.token || \"\");\n })\n .catch(() => { });\n }\n }, [irpfBannerActive, user?.user?.cpf]);\n\n return (\n <AuthContext.Provider\n value={{\n hasPlan,\n handleSignUp,\n handleSignIn,\n signOut,\n signed: !!Object.keys(user).length,\n user,\n loading,\n loadingSession,\n setLoadingSession,\n getUserInfo,\n setLocalStorageWithAuthData,\n updateUserInfo,\n updateUserDec,\n authAccountantSSOCnpj,\n decUrl,\n setDecUrl,\n showDbkModal,\n setShowDbkModal,\n showIndicarModal,\n setShowIndicarModal,\n wasMessageSent,\n setWasMessageSent,\n userPlanModal,\n showUserPlanModal: (show, title) => {\n // showUserPlanModal(show);\n navigate(\"/planos\");\n // setUserPlanModalTitle(title);\n },\n setUser,\n chatOpen,\n ssoToken,\n showDrawer,\n handleCalcs,\n setChatOpen,\n b3Authorized,\n setShowDrawer,\n showNameModal,\n showPhoneModal,\n setB3Authorized,\n irpfBannerActive,\n cameFromRegister,\n setShowNameModal,\n setShowPhoneModal,\n setCameFromRegister,\n chatNotificationQtt,\n setChatNotificationQtt,\n forceUpdateTabNavigator,\n setForceUpdateTabNavigator,\n hasPermissionExterior,\n hasPermissionExteriorPlanos,\n hasPermissionGeneral,\n }}\n >\n <UserPlanModal\n title={userPlanModalTitle}\n visible={userPlanModal}\n onCancel={() => showUserPlanModal(false)}\n closeModal={showUserPlanModal}\n />\n {children}\n {!isMobile() ? (\n <div className=\"footer-secure\">\n <img src={sslSecure} alt=\"ssl secure\" />\n </div>\n ) : null}\n </AuthContext.Provider>\n );\n};\n\nexport const useAuth = (): IAuthContext => useContext(AuthContext);\n","import React from \"react\";\nimport { Navigate, Outlet, useLocation } from \"react-router-dom\";\nimport { useAuth } from \"../contexts/AuthContext\";\nimport { useBroker } from \"../contexts/BrokerContext\";\n\ninterface IPrivateRouteProps {}\n\nconst PrivateRoute: React.FC<IPrivateRouteProps> = () => {\n const { currentBroker } = useBroker();\n const { pathname, search } = useLocation();\n const { signed, loadingSession, user } = useAuth();\n const visibleCalcs = user?.user?.visibleCalcs ? user?.user?.visibleCalcs : [];\n\n if (loadingSession) {\n return <></>;\n }\n\n if (signed) {\n if (\n !currentBroker.hideCalculadoras &&\n visibleCalcs.length === 0 &&\n pathname !== \"/calculadoras\"\n ) {\n return <Navigate to=\"/calculadoras\" />;\n } else {\n return <Outlet />;\n }\n } else {\n if (pathname === \"/conta\" && search === \"?redirect=true\") {\n return <Navigate to=\"/p/login?redirect=true\" />;\n } else if (pathname === \"/xpinvestimentos/exterior-integration\") {\n return <Navigate to=\"/p/login\" />;\n } else {\n return <Navigate to=\"/p/cadastrar\" />;\n }\n }\n};\n\nexport default PrivateRoute;\n","import React from \"react\";\nimport { Navigate, Outlet, useLocation } from \"react-router-dom\";\nimport { useAuth } from \"../contexts/AuthContext\";\n\nconst OnlyPublicRoute: React.FC = () => {\n const { pathname } = useLocation();\n const { signed, loadingSession } = useAuth();\n\n if (loadingSession) {\n return <></>;\n }\n\n return !signed ? (\n <Outlet />\n ) : pathname === \"/p/cadastrar\" ? (\n <Navigate to=\"/xpinvestimentos/bolsa-integration\" />\n ) : (\n <Navigate to=\"/\" />\n );\n};\n\nexport default OnlyPublicRoute;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.21 68.556L0.0999756 0V66.1133C0.0999756 75.9813 5.58003 84.8533 14.41 89.2653L49.74 106.935L74.09 96.1226L23.6 70.8773C21.79 69.9693 20.66 68.144 20.66 66.1133V33.2666L128.02 86.9453C130.75 88.3106 130.98 90.828 130.96 91.8466C130.93 92.864 130.57 95.3626 127.77 96.588L68.55 122.499L68.53 122.504L51.34 130.025V130.024L32.5 138.268C23.08 142.389 16.99 151.697 16.99 161.983V226.865L115.29 182.187C124.51 177.997 130.46 168.748 130.46 158.621V141.609L109.9 150.739V158.621C109.9 160.704 108.68 162.608 106.78 163.469L37.55 194.937V161.983C37.55 159.867 38.8 157.952 40.74 157.103L136.01 115.423C145.31 111.355 151.25 102.523 151.51 92.372C151.77 82.2226 146.29 73.0973 137.21 68.556Z\",\n fill: \"#FFFFFD\"\n});\nfunction SvgVeloicon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 152,\n height: 227,\n viewBox: \"0 0 152 227\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVeloicon);\nexport default __webpack_public_path__ + \"static/media/veloicon.2ac5c010.svg\";\nexport { ForwardRef as ReactComponent };","import { Result, Row } from \"antd\";\nimport { useNavigate } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport Button from \"../../components/Button\";\nimport { ReactComponent as Veloicon } from \"../../assets/velotax/veloicon.svg\";\n\nexport const Container = styled.div`\n height: 100vh;\n background-color: var(--ant-info-color);\n .ant-result-subtitle,\n .ant-result-title {\n color: var(--white);\n }\n svg.error * {\n fill: var(--ant-error-color);\n }\n`;\n\nconst PageNotFound: React.FC = () => {\n const navigate = useNavigate();\n return (\n <Container>\n <Result\n icon={<Veloicon />}\n title=\"Página não encontrada\"\n subTitle=\"Esta página que você visitou não existe\"\n extra={\n <Row justify=\"center\">\n <Button size=\"large\" type=\"primary\" onClick={() => navigate(\"/\")}>\n Voltar para o app\n </Button>\n </Row>\n }\n />\n </Container>\n );\n};\n\nexport default PageNotFound;\n","import { Layout } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const LayoutHeader = styled(Layout.Header)`\n display: none;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n z-index: 1;\n height: 64px;\n padding: 0 24px;\n column-gap: 8px;\n background: var(--velotax-background-color);\n box-shadow: 0px 0px 16px 12px rgba(0, 0, 0, 0.3);\n\n .ant-btn {\n &.menu-button {\n z-index: 1;\n width: 48px;\n height: 48px;\n margin-right: -8px;\n svg {\n width: 30px;\n height: 30px;\n min-width: 30px;\n min-height: 30px;\n * {\n stroke: var(--ant-primary-color) !important;\n }\n }\n }\n &.back-button {\n width: 48px;\n height: 48px;\n margin-left: -16px;\n svg {\n width: 30px;\n height: 30px;\n min-width: 30px;\n min-height: 30px;\n * {\n fill: var(--ant-primary-color) !important;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n display: flex;\n }\n`;\n","import { useLocation, useNavigate } from \"react-router-dom\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { useAuth } from \"./AuthContext\";\n\ntype History = {\n pathname: string;\n};\n\ninterface IHistoryContext {\n history: History[];\n handleBackHistory: () => void;\n}\n\nconst HistoryContext = createContext({} as IHistoryContext);\n\nexport const HistoryProvider: React.FC = ({ children }) => {\n const { user } = useAuth();\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const [history, setHistory] = useState<History[]>([]);\n\n useEffect(() => {\n if (user.user) {\n setHistory((history) =>\n history[history.length - 1]?.pathname === pathname\n ? history\n : [...history, { pathname }]\n );\n } else {\n setHistory([]);\n }\n }, [user.user, pathname]);\n\n const handleBackHistory = useCallback(() => {\n const i = history.length - 2;\n const last = history[i];\n if (last?.pathname && last?.pathname !== \"/\") {\n setHistory((history) => history.slice(0, i));\n setTimeout(() => {\n navigate(last.pathname);\n }, 300);\n } else {\n setHistory([]);\n setTimeout(() => {\n navigate(\"/carteira\");\n }, 300);\n }\n }, [navigate, history]);\n\n return (\n <HistoryContext.Provider value={{ history, handleBackHistory }}>\n {children}\n </HistoryContext.Provider>\n );\n};\n\nexport const useHistory = () => useContext(HistoryContext);\n","import { Col, Row } from \"antd\";\nimport { GrMenu } from \"react-icons/gr\";\nimport { BsChevronLeft } from \"react-icons/bs\";\nimport Button from \"../Button\";\nimport { isMobile } from \"../../utils\";\nimport { LayoutHeader } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useHistory } from \"../../contexts/HistoryContext\";\n\ninterface IHeaderProps {}\n\nconst Header: React.FC<IHeaderProps> = () => {\n const { setShowDrawer } = useAuth();\n const { handleBackHistory } = useHistory();\n\n return (\n <>\n <LayoutHeader>\n {isMobile() && (\n <Row\n align=\"middle\"\n justify=\"space-between\"\n style={{ width: \"100%\", flexWrap: \"nowrap\" }}\n >\n <Col>\n <Button\n type=\"link\"\n className=\"back-button\"\n icon={<BsChevronLeft />}\n onClick={handleBackHistory}\n />\n </Col>\n <Col>\n <Button\n type=\"text\"\n size=\"large\"\n icon={<GrMenu />}\n className=\"menu-button\"\n onClick={() => setShowDrawer(true)}\n />\n </Col>\n </Row>\n )}\n </LayoutHeader>\n </>\n );\n};\n\nexport default Header;\n","import styled from \"styled-components\";\n\nexport const LogoStyled = styled.div`\n height: 96px;\n background-color: var(--velotax-background-color);\n .ant-image {\n width: 100%;\n height: 96px;\n display: flex;\n align-items: center;\n img {\n width: auto;\n height: 48px;\n margin: 0 auto;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n height: 64px;\n #velo-xp.ant-image {\n height: 64px;\n justify-content: center;\n img {\n margin: 0 !important;\n width: 44px !important;\n height: 40px !important;\n }\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/velotax-light.9bb89f4f.svg\";","import { Image } from \"antd\";\nimport { LogoStyled } from \"./styles\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport VelotaxLogo from \"../../assets/velotax/velotax-light.svg\";\n\nexport const Logo: React.FC = () => {\n const { currentBroker } = useBroker();\n return (\n <LogoStyled>\n <a\n href={currentBroker?.link || \"https://www.velotax.com.br/\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Image\n id=\"velo-xp\"\n preview={false}\n alt={currentBroker?.name || \"Velotax logo light\"}\n src={\n currentBroker.iconAlternative\n ? currentBroker.iconAlternative\n : currentBroker?.icon\n ? currentBroker?.icon\n : VelotaxLogo\n }\n />\n </a>\n </LogoStyled>\n );\n};\n","import VelotaxLogoWhite from \"../../assets/velotax/velologo.svg\";\n\ninterface PoweredByVelotaxProps {\n className?: string;\n}\n\nexport const PoweredByVelotax: React.FC<PoweredByVelotaxProps> = ({\n className,\n}) => {\n return (\n <a\n target=\"_blank\"\n rel=\"noreferrer\"\n className={className}\n href=\"https://www.velotax.com.br/\"\n >\n <i>powered by</i>\n <img src={VelotaxLogoWhite} alt=\"velotax\" />\n </a>\n );\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.85999 11.2C9.41816 11.2 9.05999 11.5582 9.05999 12C9.05999 12.4418 9.41816 12.8 9.85999 12.8V11.2ZM20 12L20.5657 12.5657C20.7157 12.4157 20.8 12.2122 20.8 12C20.8 11.7878 20.7157 11.5843 20.5657 11.4343L20 12ZM10.8676 20.781C11.3095 20.779 11.666 20.4192 11.664 19.9774C11.662 19.5355 11.3022 19.179 10.8603 19.181L10.8676 20.781ZM6.69599 20L6.69234 19.2L6.69198 19.2L6.69599 20ZM11 4.8C11.4418 4.8 11.8 4.44183 11.8 4C11.8 3.55817 11.4418 3.2 11 3.2V4.8ZM15.4343 15.4343C15.1219 15.7467 15.1219 16.2533 15.4343 16.5657C15.7467 16.8781 16.2533 16.8781 16.5657 16.5657L15.4343 15.4343ZM16.5657 7.43431C16.2533 7.12189 15.7467 7.12189 15.4343 7.43431C15.1219 7.74673 15.1219 8.25327 15.4343 8.56568L16.5657 7.43431ZM9.85999 12.8H20V11.2H9.85999V12.8ZM10.8603 19.181L6.69234 19.2L6.69964 20.8L10.8676 20.781L10.8603 19.181ZM6.69198 19.2C5.93298 19.2038 5.32899 18.5973 5.32899 17.865H3.72899C3.72899 19.4987 5.069 20.8082 6.70001 20.8L6.69198 19.2ZM5.32899 17.865V6.135H3.72899V17.865H5.32899ZM5.32899 6.135C5.32899 5.40534 5.92827 4.8 6.68599 4.8V3.2C5.05971 3.2 3.72899 4.50666 3.72899 6.135H5.32899ZM6.68599 4.8H11V3.2H6.68599V4.8ZM16.5657 16.5657L20.5657 12.5657L19.4343 11.4343L15.4343 15.4343L16.5657 16.5657ZM20.5657 11.4343L16.5657 7.43431L15.4343 8.56568L19.4343 12.5657L20.5657 11.4343Z\"\n});\nfunction SvgSair(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSair);\nexport default __webpack_public_path__ + \"static/media/sair.4ef32787.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5001 7.91666H15.8334M14.5001 11.25H12.5001M10.0792 13.75C9.93341 13.3842 9.70841 13.0558 9.41925 12.7883C8.93008 12.335 8.28842 12.0833 7.62175 12.0833H6.54508C5.87841 12.0833 5.23675 12.335 4.74758 12.7883C4.45841 13.0558 4.23341 13.3842 4.08758 13.75M8.40925 6.79917C9.14148 7.5314 9.14148 8.71858 8.40925 9.45082C7.67701 10.183 6.48983 10.183 5.7576 9.45082C5.02536 8.71858 5.02536 7.5314 5.7576 6.79917C6.48983 6.06693 7.67701 6.06693 8.40925 6.79917ZM1.66675 15.4167V4.61749C1.66675 3.67832 2.42841 2.91666 3.36758 2.91666H16.6667C17.5876 2.91666 18.3334 3.66249 18.3334 4.58332V15.4167C18.3334 16.3375 17.5876 17.0833 16.6667 17.0833H3.33341C2.41258 17.0833 1.66675 16.3375 1.66675 15.4167Z\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\nfunction SvgIrpf(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIrpf);\nexport default __webpack_public_path__ + \"static/media/irpf.2437e7f1.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.4225 16.0475C14.1025 14.5142 12.2542 13.3333 10 13.3333C7.74582 13.3333 5.89749 14.5142 5.57749 16.0475M15.3032 4.6967C18.2322 7.62563 18.2322 12.3743 15.3032 15.3032C12.3743 18.2322 7.62562 18.2322 4.6967 15.3032C1.76777 12.3743 1.76777 7.62562 4.6967 4.6967C7.62563 1.76777 12.3743 1.76777 15.3032 4.6967ZM11.7677 6.56557C12.7441 7.54188 12.7441 9.12475 11.7677 10.1011C10.7914 11.0774 9.2085 11.0774 8.23223 10.1011C7.25593 9.12475 7.25593 7.54188 8.23223 6.56557C9.2085 5.58926 10.7914 5.58926 11.7677 6.56557Z\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\nfunction SvgConta(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgConta);\nexport default __webpack_public_path__ + \"static/media/conta.814b3af4.svg\";\nexport { ForwardRef as ReactComponent };","import { Drawer, Layout, Menu } from \"antd\";\nimport styled, { css } from \"styled-components\";\nimport Button from \"../Button\";\n\nexport const ContentButton = styled.div`\n width: 100%;\n height: 70px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n border-top: 2px solid #313131;\n border-bottom: 2px solid #313131;\n\n .plan-sidebar {\n font-size: 16px;\n user-select: none;\n color: var(--velotax-font-color-light);\n &.pointer {\n cursor: pointer;\n }\n strong {\n font-weight: 900;\n }\n }\n`;\n\nexport const DrawerSider = styled(Drawer)`\n z-index: 99999999999;\n .ant-drawer-wrapper-body {\n position: relative;\n .ant-drawer-header {\n right: 16px;\n top: 24px;\n padding: 0;\n position: absolute;\n background-color: var(--velotax-background-color);\n }\n .ant-drawer-body {\n padding: 0;\n background-color: var(--velotax-background-color);\n }\n }\n`;\n\nexport const LayoutSider = styled(Layout.Sider)`\n box-shadow: 8px 8px 32px 16px rgba(0, 0, 0, 0.05);\n position: relative;\n z-index: 11;\n\n .ant-layout-sider-children {\n max-height: 100dvh;\n display: flex;\n flex-direction: column;\n }\n`;\n\nexport const Modules = styled(Menu)`\n border: none;\n padding-top: 8px;\n overflow-y: auto;\n overflow-x: hidden;\n /* height: calc(100% - 96px - 70px); */\n height: 100%;\n border-top: 2px solid #313131;\n &.user {\n /* 100% - header - botão de plano - botao de sair */\n /* height: calc(100% - 96px - 70px - 72px); */\n height: 100%;\n }\n &.poweredBy {\n /* 100% - header - poweredby - botao de sair */\n height: calc(100% - 96px - 70px - 64px);\n }\n &.user.poweredBy {\n /* 100% - header - botão de plano - poweredby - botao de sair */\n height: calc(100% - 96px - 70px - 64px - 72px);\n }\n @media only screen and (max-device-width: 812px) {\n height: calc(100% - 64px - 72px);\n &.user {\n height: calc(100% - 64px - 72px - 72px);\n }\n &.poweredBy {\n height: calc(100% - 64px - 72px - 64px);\n }\n &.user.poweredBy {\n height: calc(100% - 64px - 72px - 72px - 64px);\n }\n }\n`;\n\nexport const Settings = styled(Menu)`\n width: 100%;\n height: 72px;\n border: none;\n display: flex;\n border-top: 2px solid #313131;\n\n .ant-row {\n width: 100%;\n }\n`;\n\ninterface ModuleProps {\n sidebarselectedcolor: string;\n}\n\nexport const Module = styled(Menu.Item)<ModuleProps>`\n border: none;\n height: 48px !important;\n margin: 6px 0 !important;\n padding-left: 12px !important;\n background-color: var(--velotax-background-color);\n\n * {\n z-index: 1;\n }\n\n svg {\n width: 20px;\n height: 20px;\n margin-right: 8px;\n color: var(--velotax-font-color-ghost);\n &.stroke {\n transition: stroke 0.3s;\n stroke: var(--velotax-font-color-ghost);\n }\n }\n\n .ant-menu-title-content {\n font-weight: 500;\n margin-left: 0 !important;\n color: var(--velotax-font-color-ghost);\n }\n\n &.ant-menu-item:hover {\n .ant-menu-title-content {\n color: var(--ant-primary-color);\n }\n svg {\n color: var(--ant-primary-color);\n &.stroke {\n stroke: var(--ant-primary-color);\n }\n }\n }\n\n &.ant-menu-item:active {\n background-color: var(--velotax-background-color);\n }\n\n &.ant-menu-item-selected {\n .ant-menu-title-content {\n font-weight: 600;\n color: var(--ant-primary-color);\n }\n svg {\n color: var(--ant-primary-color);\n &.stroke {\n stroke: var(--ant-primary-color);\n }\n }\n background-color: var(--velotax-background-color) !important;\n\n &::after {\n border-right: none;\n opacity: 0;\n }\n\n &::before {\n opacity: 1;\n }\n }\n\n &::before {\n content: \"\";\n top: 0;\n left: 0;\n z-index: 0;\n opacity: 0;\n height: 100%;\n position: absolute;\n width: calc(100% - 8px);\n border-radius: 0 4px 4px 0;\n background-color: var(--velotax-ghost);\n transition: opacity 500ms ease-in-out;\n }\n\n &.conta {\n width: 100%;\n border: none;\n margin: 0 !important;\n height: 72px !important;\n padding: 12px 8px 4px 8px !important;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n\n &::before {\n top: 6px;\n left: 8px;\n border-radius: 6px;\n width: calc(100% - 16px);\n height: calc(100% - 12px);\n }\n\n svg {\n width: 20px;\n height: 20px;\n min-width: 20px;\n min-height: 20px;\n margin-right: 0;\n stroke: var(--velotax-font-color-ghost);\n &.sair {\n transition: fill 0.3s, stroke 0.3s;\n fill: var(--velotax-font-color-ghost);\n }\n &.stroke {\n transition: stroke 0.3s;\n }\n }\n\n .ant-menu-title-content {\n margin: 0;\n }\n\n :hover {\n svg.stroke {\n stroke: var(--ant-primary-color);\n }\n }\n\n &.logout {\n border-left: 2px solid #313131;\n &::before {\n opacity: 0;\n }\n :hover {\n .ant-menu-title-content {\n color: var(--ant-error-color);\n }\n svg {\n stroke: var(--ant-error-color);\n fill: var(--ant-error-color);\n }\n }\n }\n }\n\n ${(props) =>\n props.sidebarselectedcolor\n ? css`\n &:hover {\n color: ${props.sidebarselectedcolor} !important;\n }\n &.ant-menu-item-selected {\n color: ${props.sidebarselectedcolor} !important;\n &:hover {\n color: ${props.sidebarselectedcolor};\n }\n }\n `\n : css`\n &:hover {\n color: var(--ant-primary-color) !important;\n svg {\n color: var(--ant-primary-color) !important;\n }\n svg:not(.no-fill) {\n fill: var(--ant-primary-color) !important;\n }\n }\n &.ant-menu-item-selected {\n color: var(--ant-primary-color) !important;\n svg {\n color: var(--ant-primary-color);\n }\n svg:not(.no-fill) {\n fill: var(--ant-primary-color);\n }\n &:hover {\n color: var(--ant-primary-color);\n }\n }\n `}\n`;\n\nexport const FeaturePromo = styled.div`\n height: 72px;\n display: flex;\n cursor: pointer;\n position: relative;\n align-items: center;\n padding: 0 16px 0 12px;\n border-top: 2px solid #313131;\n\n :before {\n content: \"\";\n top: 12px;\n left: 0;\n z-index: 0;\n opacity: 0;\n position: absolute;\n width: calc(100% - 8px);\n height: calc(100% - 24px);\n border-radius: 0 4px 4px 0;\n background-color: var(--velotax-ghost);\n -webkit-transition: opacity 500ms ease-in-out;\n transition: opacity 500ms ease-in-out;\n }\n\n &.active {\n .title-features {\n color: var(--ant-primary-color);\n }\n svg {\n color: var(--ant-primary-color);\n stroke: var(--ant-primary-color);\n }\n :before {\n opacity: 1;\n }\n }\n\n .title-features {\n z-index: 1;\n height: 40px;\n font-size: 14px;\n font-weight: 500;\n line-height: 42px;\n transition: color 0.3s;\n color: var(--velotax-font-color-ghost);\n }\n\n svg {\n z-index: 1;\n font-size: 14px;\n min-width: 14px;\n margin-right: 8px;\n color: var(--velotax-font-color-ghost);\n stroke: var(--velotax-font-color-ghost);\n transition: stroke 0.3s;\n }\n\n :hover {\n color: var(--ant-primary-color);\n\n .title-features {\n color: var(--ant-primary-color);\n }\n\n svg {\n color: var(--ant-primary-color);\n stroke: var(--ant-primary-color);\n }\n }\n`;\n\nexport const FeatureButton = styled(Button)`\n font-size: 8px !important;\n padding: 6px !important;\n height: auto !important;\n top: 4px !important;\n line-height: 1 !important;\n right: -6px !important;\n\n @media screen and (max-device-width: 812px) {\n right: -2px !important;\n }\n`;\n\nexport const IntegrationFeedback = styled.div<{\n percent: number;\n}>`\n background-image: ${({ percent }) => `linear-gradient(to right, #fbc105 ${percent}%, transparent ${percent}%)`};\n width: 75%;\n transition: background 0.5s ease-out;\n background-repeat: no-repeat;\n height: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid #fbc10520;\n border-radius: 20px;\n overflow: hidden;\n font-weight: 800;\n text-align: center;\n`;\n\nexport const SupportContainerIcon = styled.div`\n & svg {\n height: 17px;\n width: 17px;\n margin-left: 2px;\n }\n`","import clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { MdOutlineSavings } from \"react-icons/md\";\nimport { Logo } from \"../Logo\";\nimport { isMobile } from \"../../utils\";\nimport HandleTag from \"../../services/handleTag\";\nimport { UserPlanEnum } from \"../../constants/plans\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { PoweredByVelotax } from \"../PoweredByVelotax\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { useB3Integration } from \"../../contexts/B3IntegrationContext\";\nimport { ReactComponent as SairIcon } from \"../../assets/icons/sidebar/sair.svg\";\nimport { ReactComponent as IrpfIcon } from \"../../assets/icons/sidebar/irpf.svg\";\nimport { ReactComponent as ContaIcon } from \"../../assets/icons/sidebar/conta.svg\";\nimport {\n ContentButton,\n DrawerSider,\n FeatureButton,\n FeaturePromo,\n LayoutSider,\n Module,\n Modules,\n Settings,\n SupportContainerIcon,\n} from \"./styles\";\nimport { QuestionCircleOutlined } from \"@ant-design/icons\";\n\ninterface ISideBarProps {\n pagePath: string;\n}\n\ninterface ISideBarContainerProps {\n visible: boolean;\n setVisible: Function;\n}\n\nconst SideBarContainer: React.FC<ISideBarContainerProps> = ({\n children,\n visible,\n setVisible,\n}) =>\n isMobile() ? (\n <DrawerSider\n title=\"\"\n width=\"208px\"\n footer={null}\n closeIcon={null}\n placement=\"left\"\n visible={visible}\n onClose={() => setVisible(false)}>\n {children}\n </DrawerSider>\n ) : (\n <LayoutSider theme=\"light\" width=\"208px\">\n {children}\n </LayoutSider>\n );\n\nexport interface ItegrationStatus {\n description?: string;\n started?: boolean;\n finished?: boolean;\n error?: boolean;\n alert?: boolean;\n confirm?: boolean;\n processing?: boolean;\n}\n\nconst Sidebar: React.FC<ISideBarProps> = ({ pagePath }) => {\n const navigate = useNavigate();\n const { b3Authorized } = useB3Integration();\n const {\n sidebarPages,\n currentBroker,\n xtageIntegration,\n } = useBroker();\n const {\n user,\n hasPlan,\n signOut,\n showDrawer,\n setShowDrawer,\n hasPermissionGeneral,\n } = useAuth();\n\n const [openKeys, setOpenKeys] = useState([\"\"]);\n\n const handleNavigate = (path: string) => {\n if (path.includes(\"http\")) {\n window.open(path, \"_blank\")?.focus();\n } else if (!user.user) {\n setShowDrawer(false);\n const extension: Record<string, string> = {\n bolsa: \"-integration\",\n cripto: \"-integrations\",\n exterior: \"-integrations\",\n };\n navigate(`${path}${extension[path.split(\"/\")[2]]}`);\n } else if (path.includes(\"http\")) {\n window.open(path, \"_blank\")?.focus();\n } else {\n setShowDrawer(false);\n if (path === `/${currentBroker.path}/bolsa`) {\n if (b3Authorized) {\n navigate(path);\n } else {\n navigate(`/${currentBroker.path}/bolsa-integration`);\n }\n } else if (path === `/${currentBroker.path}/cripto`) {\n if (xtageIntegration) {\n navigate(path);\n } else {\n navigate(`/${currentBroker.path}/cripto-integration`);\n }\n } else {\n navigate(path);\n }\n }\n };\n\n const sidebarselectedcolor = currentBroker.colors.sidebarSelectedColor;\n\n useEffect(() => {\n const currentPage = [\n ...sidebarPages,\n {\n path: \"/irpf\",\n subPages: [],\n },\n ].find(\n (page) =>\n page.path === pagePath ||\n page.subPages?.find((subPage) => subPage.path === pagePath)\n );\n setOpenKeys([currentPage?.path || \"\"]);\n }, [pagePath, sidebarPages]);\n\n const DECLARACAO_IRPF = false;\n\n const loginInSupport = async (cpf: string) => {\n try {\n const token = localStorage.getItem(\"@VeloTax:token\");\n const urlSupportSSO = process.env.REACT_APP_SUPPORT_URL ? `${process.env.REACT_APP_SUPPORT_URL}p/sso/${token}` : `http://localhost:3000/p/sso/${token}`;\n window.open(\n urlSupportSSO,\n isMobile() ? \"_self\" : \"_blank\"\n );\n } catch (err) {\n console.log('erro ao tentar logar no suporte')\n }\n };\n\n return (\n <SideBarContainer visible={showDrawer} setVisible={setShowDrawer}>\n <Logo />\n {DECLARACAO_IRPF && (\n <FeaturePromo\n className={clsx({ active: pagePath === \"/declaracao-irpf\" })}\n onClick={() => {\n handleNavigate(\"/declaracao-irpf\");\n }}>\n <IrpfIcon className=\"stroke\" />\n <span className=\"title-features\">Declaração IRPF</span>\n <FeatureButton type=\"primary\" className=\"btn-premium\">\n DISPONÃVEL\n </FeatureButton>\n </FeaturePromo>\n )}\n <Modules\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={[pagePath, ...openKeys]}\n className={clsx(\"beauty-scrollbar zero-scrollbar\", {\n user: !!user.user,\n poweredBy: !currentBroker.hidePoweredBy,\n })}>\n {currentBroker.useCarteira &&\n (currentBroker.hideCalculadoras ||\n user?.user?.visibleCalcs?.includes(\"carteira\")) && (\n <Module\n key=\"/carteira\"\n title=\"carteira\"\n icon={<ContaIcon className=\"stroke\" />}\n onClick={() => handleNavigate(\"/carteira\")}\n sidebarselectedcolor={sidebarselectedcolor}>\n Meus investimentos\n </Module>\n )}\n {user.user &&\n sidebarPages.map((page) => (\n <Module\n key={page.path}\n icon={page.icon}\n title={page.name}\n onClick={() => handleNavigate(page.path)}\n sidebarselectedcolor={sidebarselectedcolor}>\n {page.name}\n </Module>\n ))}\n {isMobile() &&\n <Module\n icon={\n <SupportContainerIcon>\n <QuestionCircleOutlined style={{ fontSize: '24px' }} />\n </SupportContainerIcon>\n }\n title={'suporte'}\n onClick={() => {\n loginInSupport(user.user.cpf);\n }}\n sidebarselectedcolor={sidebarselectedcolor}\n >\n Suporte \n </Module>\n }\n {currentBroker.usePGBL &&\n (currentBroker.hideCalculadoras ||\n user?.user?.visibleCalcs?.includes(\"pgbl\")) &&\n false && (\n <Module\n key=\"/pgbl\"\n title=\"Simulador de previdência\"\n onClick={() => handleNavigate(\"/pgbl\")}\n sidebarselectedcolor={sidebarselectedcolor}\n icon={<MdOutlineSavings size={24} />}>\n Simulador de previdência\n </Module>\n )}\n </Modules>\n {/* <IntegrationButton /> */}\n <ContentButton\n onClick={() => {\n if (!hasPlan || !hasPlan.concierge) navigate(\"/planos\");\n HandleTag(\"54\");\n }}>\n {!hasPlan && !hasPermissionGeneral ? (\n <div className=\"plan-sidebar pointer\">\n Seu plano: <strong>Gratuito</strong>\n </div>\n ) : user?.user?.userPlanInfoVelotax?.type?.includes('PRO') ||\n user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.XP_PRO ||\n user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.XP_PRO_MONTH ||\n user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.VELOTAX_MAIN_PRO ||\n user?.user?.userPlanInfoVelotax?.type ===\n UserPlanEnum.VELOTAX_MAIN_PRO_MONTH ||\n hasPermissionGeneral ? (\n <div\n className={`plan-sidebar ${\n hasPlan && !hasPlan.concierge ? \"pointer\" : \"\"\n }`}>\n Seu plano: <strong>Premium</strong>\n </div>\n ) : user?.user?.userPlanInfoVelotax?.type?.includes('CONCIERGE') ||\n user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.XP_CONCIERGE ||\n user?.user?.userPlanInfoVelotax?.type ===\n UserPlanEnum.VELOTAX_MAIN_CONCIERGE ? (\n <div\n className={`plan-sidebar ${\n hasPlan && !hasPlan.concierge ? \"pointer\" : \"\"\n }`}>\n Seu plano: <strong>Concierge</strong>\n </div>\n ) : user?.user?.userPlanInfoVelotax?.type?.includes('BASIC') ||\n user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.XP_BASIC ||\n user?.user?.userPlanInfoVelotax?.type === UserPlanEnum.VELOTAX_MAIN_BASIC ? (\n <div\n className={`plan-sidebar ${\n hasPlan && !hasPlan.concierge ? \"pointer\" : \"\"\n }`}>\n Seu plano: <strong>Basic</strong>\n </div>\n ) : undefined}\n </ContentButton>\n {!currentBroker.hidePoweredBy && (\n <PoweredByVelotax className=\"poweredby-velotax sidebar\" />\n )}\n {user.user && (\n <Settings selectedKeys={[pagePath]}>\n <Module\n key=\"/conta\"\n className=\"conta\"\n sidebarselectedcolor={sidebarselectedcolor}\n onClick={() => handleNavigate(\"/conta\")}\n icon={<ContaIcon className=\"stroke\" />}>\n Conta\n </Module>\n <Module\n key=\"signout\"\n className=\"conta logout\"\n sidebarselectedcolor=\"var(--ant-error-color)\"\n icon={<SairIcon width=\"20px\" height=\"20px\" className=\"sair\" />}\n onClick={() => {\n signOut();\n }}>\n Sair\n </Module>\n </Settings>\n )}\n </SideBarContainer>\n );\n};\n\nexport default Sidebar;\n","import { Layout as AntLayout } from \"antd\";\nimport styled from \"styled-components\";\n\nexport const Layout = styled(AntLayout)`\n height: 100%;\n background-color: var(--velotax-background-color-ghost);\n &.showIrpfBanner {\n height: calc(100% - 80px);\n }\n & > .content {\n height: 100%;\n &.overflow {\n overflow-y: auto;\n }\n }\n\n .banner {\n padding: 8px 0;\n display: flex;\n justify-content: center;\n background-color: var(--ant-primary-6);\n color: black;\n font-weight: 600;\n }\n\n @media only screen and (max-device-width: 812px) {\n & > .content.tab-navigator {\n height: calc(100% - 64px - 64px);\n }\n }\n`;\n","import styled from \"styled-components\";\n\nexport const Container = styled.nav`\n display: none;\n bottom: 0px;\n width: 100%;\n height: 64px;\n position: fixed;\n background-color: var(--velotax-background-color);\n border-top: 1px solid var(--velotax-background-color-ghost);\n\n .hidden {\n display: none;\n }\n\n .ant-menu {\n width: 100%;\n display: flex;\n &.ant-menu-horizontal {\n border-bottom: none;\n }\n .ant-menu-item {\n width: calc(100% / 5);\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n .ant-menu-title-content {\n opacity: 0.8;\n margin: 6px 0 0;\n font-size: 13px;\n line-height: 13px;\n color: var(--velotax-font-color);\n }\n .ant-menu-item-icon {\n width: 24px;\n height: 24px;\n opacity: 0.7;\n fill: var(--velotax-font-color);\n }\n &.ant-menu-item-active {\n .ant-menu-title-content {\n opacity: 1;\n font-weight: 500;\n color: var(--ant-primary-color);\n }\n .ant-menu-item-icon {\n opacity: 1;\n fill: var(--ant-primary-color);\n }\n }\n &.finalizar {\n .ant-menu-title-content {\n margin: 4px 0 0;\n }\n .ant-menu-item-icon {\n width: 26px;\n height: 26px;\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n display: flex;\n }\n`;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.2 5H11C11 4.55817 10.6418 4.2 10.2 4.2V5ZM10.2 19V19.8C10.6418 19.8 11 19.4418 11 19H10.2ZM6.20001 19H5.40001C5.40001 19.4418 5.75818 19.8 6.20001 19.8V19ZM6.20001 5V4.2C5.75818 4.2 5.40001 4.55817 5.40001 5H6.20001ZM18 8H18.8C18.8 7.55817 18.4418 7.2 18 7.2V8ZM18 16V16.8C18.4418 16.8 18.8 16.4418 18.8 16H18ZM14 16H13.2C13.2 16.4418 13.5582 16.8 14 16.8V16ZM14 8V7.2C13.5582 7.2 13.2 7.55817 13.2 8H14ZM16.9 16.2C16.9 15.7582 16.5418 15.4 16.1 15.4C15.6582 15.4 15.3 15.7582 15.3 16.2H16.9ZM15.3 18.2C15.3 18.6418 15.6582 19 16.1 19C16.5418 19 16.9 18.6418 16.9 18.2H15.3ZM16.9 6C16.9 5.55817 16.5418 5.2 16.1 5.2C15.6582 5.2 15.3 5.55817 15.3 6H16.9ZM15.3 8C15.3 8.44183 15.6582 8.8 16.1 8.8C16.5418 8.8 16.9 8.44183 16.9 8H15.3ZM9.1 19.2C9.1 18.7582 8.74183 18.4 8.3 18.4C7.85817 18.4 7.5 18.7582 7.5 19.2H9.1ZM7.5 21.2C7.5 21.6418 7.85817 22 8.3 22C8.74183 22 9.1 21.6418 9.1 21.2H7.5ZM9.1 3C9.1 2.55817 8.74183 2.2 8.3 2.2C7.85817 2.2 7.5 2.55817 7.5 3H9.1ZM7.5 5C7.5 5.44183 7.85817 5.8 8.3 5.8C8.74183 5.8 9.1 5.44183 9.1 5H7.5ZM9.40001 5V19H11V5H9.40001ZM10.2 18.2H6.20001V19.8H10.2V18.2ZM7.00001 19V5H5.40001V19H7.00001ZM6.20001 5.8H10.2V4.2H6.20001V5.8ZM17.2 8V16H18.8V8H17.2ZM18 15.2H14V16.8H18V15.2ZM14.8 16V8H13.2V16H14.8ZM14 8.8H18V7.2H14V8.8ZM15.3 16.2V18.2H16.9V16.2H15.3ZM15.3 6V8H16.9V6H15.3ZM7.5 19.2V21.2H9.1V19.2H7.5ZM7.5 3V5H9.1V3H7.5Z\"\n});\nfunction SvgBolsaDeValores(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBolsaDeValores);\nexport default __webpack_public_path__ + \"static/media/bolsa-de-valores.5d5809a1.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.168 4.06L10.8543 4.47107L10.8544 4.47095L10.168 4.06ZM10.168 19.941L10.8544 19.53L10.8543 19.5299L10.168 19.941ZM13.833 19.941L13.1467 19.5299L13.1466 19.53L13.833 19.941ZM13.833 4.06L14.5193 3.64893L14.5192 3.64869L13.833 4.06ZM12 3.8C16.5402 3.8 20.2 7.45983 20.2 12H21.8C21.8 6.57617 17.4238 2.2 12 2.2V3.8ZM20.2 12C20.2 16.5402 16.5402 20.2 12 20.2V21.8C17.4238 21.8 21.8 17.4238 21.8 12H20.2ZM12 20.2C7.45983 20.2 3.8 16.5402 3.8 12H2.2C2.2 17.4238 6.57617 21.8 12 21.8V20.2ZM3.8 12C3.8 7.45983 7.45983 3.8 12 3.8V2.2C6.57617 2.2 2.2 6.57617 2.2 12H3.8ZM9.48169 3.64893C6.4401 8.72701 6.4401 15.274 9.48169 20.3521L10.8543 19.5299C8.1159 14.958 8.1159 9.04299 10.8543 4.47107L9.48169 3.64893ZM9.48162 20.352C10.6382 22.2837 13.3628 22.2837 14.5194 20.352L13.1466 19.53C12.6112 20.4243 11.3898 20.4243 10.8544 19.53L9.48162 20.352ZM14.5193 20.3521C17.5609 15.274 17.5609 8.72701 14.5193 3.64893L13.1467 4.47107C15.8851 9.04299 15.8851 14.958 13.1467 19.5299L14.5193 20.3521ZM14.5192 3.64869C13.3617 1.71774 10.6384 1.71701 9.48162 3.64905L10.8544 4.47095C11.3896 3.57699 12.6103 3.57626 13.1468 4.47131L14.5192 3.64869ZM3 12.8H21V11.2H3V12.8Z\"\n});\nfunction SvgAtivosNoExterior(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAtivosNoExterior);\nexport default __webpack_public_path__ + \"static/media/ativos-no-exterior.2781f8ec.svg\";\nexport { ForwardRef as ReactComponent };","import { Menu } from \"antd\";\nimport { BsChat } from \"react-icons/bs\";\nimport { BiUserCircle } from \"react-icons/bi\";\nimport { useEffect, useRef, useMemo, useState } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { Container } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { ReactComponent as BolsaIcon } from \"../../assets/calculadoras/bolsa-de-valores.svg\";\nimport { ReactComponent as CryptoIcon } from \"../../assets/calculadoras/criptomoedas.svg\";\nimport { ReactComponent as ExteriorIcon } from \"../../assets/calculadoras/ativos-no-exterior.svg\";\n\nexport const TabNavigator = () => {\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const { currentBroker, xtageIntegration } = useBroker();\n const {\n chatOpen,\n setChatOpen,\n b3Authorized,\n chatNotificationQtt,\n forceUpdateTabNavigator,\n } = useAuth();\n\n const [activeKey, setActiveKey] = useState<string>(\"\");\n useEffect(() => {\n const path = pathname.substring(1, 40);\n setActiveKey(path);\n }, [navigate])\n\n const menuItems = useMemo(\n () => [\n {\n key: \"carteira\",\n label: \"Carteira\",\n icon: <BiUserCircle />,\n },\n {\n key: \"xpinvestimentos/bolsa\",\n label: \"Bolsa\",\n icon: <BolsaIcon />,\n },\n {\n key: \"xpinvestimentos/exterior\",\n label: \"Exterior\",\n icon: <ExteriorIcon />,\n },\n // {\n // key: \"xpinvestimentos/cripto\",\n // label: \"Cripto\",\n // icon: <CryptoIcon />,\n // },\n {\n key: \"chat\",\n label: \"Chat\",\n icon: <BsChat />,\n },\n ],\n [chatNotificationQtt]\n );\n\n useEffect(() => {\n const interval = setInterval(() => {\n const element = document.getElementById('chatbase-bubble-window');\n setChatOpen(element?.style.display == 'flex');\n }, 500)\n return () => {\n clearInterval(interval);\n }\n }, [])\n\n useEffect(() => {\n if (!chatOpen)\n {\n const matchItem = menuItems\n .filter((item) => item.key !== \"/\")\n .find(\n (item) =>\n (item.key.includes(\"exterior\") &&\n pathname.includes(\"transferencia-custodia\")) ||\n pathname.includes(item.key)\n );\n setActiveKey(matchItem?.key || \"carteira\");\n }\n }, [chatOpen])\n\n return (\n <Container>\n <Menu\n mode=\"horizontal\"\n disabledOverflow\n activeKey={activeKey}\n selectedKeys={[activeKey]}\n style={{ justifyContent: \"space-between\" }}\n onClick={(e) => {\n const element = document.getElementById('chatbase-bubble-window');\n if (element && element !== null) element.style.display = 'none';\n setActiveKey(e.key);\n if (e.key === \"chat\") {\n document.getElementById(\"chat-gpt-button\")?.click();\n } else {\n navigate(\n e.key === `/${currentBroker.path}/bolsa` && !b3Authorized\n ? `/${currentBroker.path}/bolsa-integration`\n : e.key === `/${currentBroker.path}/cripto` && !xtageIntegration\n ? `/${currentBroker.path}/cripto-integration`\n : e.key\n );\n }\n }}\n >\n {menuItems.map((item) => (\n <Menu.Item key={item.key} icon={item.icon}>\n {item.label}\n </Menu.Item>\n ))}\n </Menu>\n <span className=\"hidden\">{forceUpdateTabNavigator}</span>\n </Container>\n );\n};\n","import styled from \"styled-components\";\n\nexport const IRPFBannerContainer = styled.div`\n display: none;\n align-items: center;\n background-color: #000058;\n padding: 16px 16px 16px 320px;\n user-select: none;\n &.show {\n display: flex;\n }\n h1 {\n font-size: 1.5rem;\n font-weight: 700;\n margin: 0 16px 0 0;\n color: var(--white);\n }\n .banner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 auto;\n max-width: 680px;\n min-width: 680px;\n .ant-btn-primary {\n height: 48px;\n color: #fff;\n border-radius: 8px;\n border-color: #1634ff;\n background-color: #1634ff;\n padding-top: 6.4px !important;\n :hover {\n color: #fff;\n border-color: #4060ff;\n background-color: #4060ff;\n }\n :active {\n border-color: #000cb3;\n background-color: #000cb3;\n }\n }\n }\n .ant-btn-text {\n width: 48px;\n height: 48px;\n display: flex;\n margin-left: 16px;\n align-items: center;\n justify-content: center;\n svg {\n width: 24px;\n height: 24px;\n fill: #fff !important;\n }\n }\n @media only screen and (max-device-width: 812px) {\n position: relative;\n padding: 16px 8px 16px 24px;\n h1 {\n font-size: 1rem;\n line-height: 1.5rem;\n }\n .banner {\n margin: 0;\n max-width: calc(100% - 52px);\n min-width: calc(100% - 52px);\n }\n .ant-btn-text {\n margin-left: 4px;\n }\n }\n`;","import clsx from \"clsx\";\nimport { Typography } from \"antd\";\nimport { AiOutlineClose } from \"react-icons/ai\";\nimport { Dispatch, SetStateAction } from \"react\";\nimport { isMobile } from \"../../../utils\";\nimport { IRPFBannerContainer } from \"./styles\";\nimport Button from \"../../../components/Button\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\n\ninterface IRPFBannerProps {\n active: boolean;\n show: boolean;\n setShow: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const IRPFBanner: React.FC<IRPFBannerProps> = ({ show, setShow }) => {\n const { ssoToken, irpfBannerActive } = useAuth();\n\n return (\n <IRPFBannerContainer className={clsx({ show })}>\n <div className=\"banner\">\n <Typography.Title level={1}>\n Declare seu IRPF {new Date().getFullYear()} com o Velotax\n </Typography.Title>\n {irpfBannerActive ? (\n <Button\n size=\"large\"\n type=\"primary\"\n href={\n !process.env.REACT_APP_URL?.includes(\"dev\")\n ? `https://irpf.velotax.com.br/p/sso/${ssoToken}`\n : `https://irpfdev.velotax.com.br/p/sso/${ssoToken}`\n }\n {...!isMobile() ? { target: \"_blank\" } : {}}\n >\n Clique aqui\n </Button>\n ) : (\n <Button type=\"primary\" size=\"large\" style={{ cursor: \"default\" }}>\n Em breve!\n </Button>\n )}\n </div>\n <Button\n type=\"text\"\n size=\"large\"\n icon={<AiOutlineClose />}\n onClick={() => {\n setShow(false);\n }}\n />\n </IRPFBannerContainer>\n );\n};\n","import clsx from \"clsx\";\nimport { useScroll } from \"react-use\";\nimport { useLocation } from \"react-router-dom\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport Header from \"../Header\";\nimport Sidebar from \"../Sidebar\";\nimport { Layout } from \"./styles\";\nimport { PageInfo } from \"../PageInfo\";\nimport { Page } from \"../../constants/brokers\";\nimport { TabNavigator } from \"../TabNavigator\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { useBroker } from \"../../contexts/BrokerContext\";\nimport { IRPFBanner } from \"../../pages/Home/IRPFBanner\";\nimport { Row } from \"antd\";\n\ninterface IPageWrapperProps {\n header?: boolean;\n sideBar?: boolean;\n overflow?: boolean;\n page?: string;\n}\n\nconst PageWrapper: React.FC<IPageWrapperProps> = ({\n children,\n sideBar,\n header,\n overflow,\n}) => {\n const scrollRef = useRef(null);\n const { y } = useScroll(scrollRef);\n const { pathname } = useLocation();\n const { currentBroker, integration } = useBroker();\n const {\n user,\n loadingSession,\n b3Authorized,\n cameFromRegister,\n setCameFromRegister,\n setShowPhoneModal,\n } = useAuth();\n const [showIrpfBanner, setShowIrpfBanner] = useState(false);\n\n useEffect(() => {\n if (\n y > 100 &&\n user.user &&\n !loadingSession &&\n !user?.user?.cellphone &&\n cameFromRegister.phone &&\n !user?.user?.cellphoneFilled &&\n pathname.includes(\"historic\") &&\n b3Authorized &&\n integration.lastUpdate !== \"\"\n ) {\n setShowPhoneModal(true);\n setCameFromRegister((data) => ({ ...data, phone: false }));\n }\n }, [\n y,\n pathname,\n user.user,\n b3Authorized,\n loadingSession,\n setShowPhoneModal,\n setCameFromRegister,\n cameFromRegister.phone,\n integration?.lastUpdate,\n ]);\n\n const currentPage = useMemo(\n () =>\n [\n {\n sidebar: true,\n header: true,\n path: \"/\",\n name: \"InÃcio\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/carteira\",\n name: \"Meus investimentos\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/pgbl\",\n name: \"Simulador de previdência\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/conta\",\n name: \"Minha conta\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/regulacao\",\n name: \"Regulação\",\n title: \"\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/p/cadastrar\",\n name: \"Cadastre-se\",\n title: \"Cadastre-se\",\n },\n {\n sidebar: true,\n header: true,\n path: \"/p/login\",\n name: \"Entrar\",\n title: \"Entrar\",\n },\n ...(currentBroker?.pages.reduce(\n (acc, cur) => [...acc, cur, ...(cur.subPages ?? [])],\n [] as Page[]\n ) || []),\n ].find(\n (page) =>\n pathname ===\n (page.path.substring(0, 1) === \"/\" ? page.path : `/${page.path}`)\n ),\n [pathname, currentBroker]\n );\n\n return (\n <>\n <IRPFBanner\n active={true}\n show={showIrpfBanner}\n setShow={setShowIrpfBanner}\n />\n <Layout className={clsx({ showIrpfBanner })}>\n {(sideBar ||\n (typeof currentPage?.sidebar === \"boolean\" &&\n currentPage?.sidebar)) && (\n <Sidebar pagePath={currentPage?.path || pathname} />\n )}\n <Layout>\n {process.env.REACT_APP_SHOW_B3_BANNER === 'true' && \n <Row className=\"banner\">\n No momento nossa integração com os sistemas da B3 está instável.\n Tente novamente mais tarde.\n </Row>\n }\n {(header ||\n (typeof currentPage?.header === \"boolean\" &&\n currentPage?.header)) && <Header />}\n <div\n ref={scrollRef}\n className={clsx(\"content\", \"beauty-scrollbar\", \"tab-navigator\", {\n overflow,\n })}\n >\n {currentBroker.id === \"mei\" &&\n currentPage?.name === \"Cadastre-se\" && (\n <PageInfo\n title=\"Faça a sua declaração IR do MEI\"\n subtitle=\"As informações do formulário são necessárias para prepararmos sua declaração\"\n />\n )}\n {children}\n </div>\n <TabNavigator />\n </Layout>\n </Layout>\n </>\n );\n};\n\nexport default PageWrapper;\n","import styled from \"styled-components\";\n\nexport const HeaderContainer = styled.header`\n z-index: 1;\n display: flex;\n column-gap: 32px;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 80px;\n padding: 16px 48px;\n top: 0;\n position: fixed;\n border-bottom: 1px solid transparent;\n background-color: var(--velotax-background-color);\n\n h1 {\n margin: 0;\n\n img {\n height: 40px;\n }\n }\n\n .buttons {\n display: flex;\n column-gap: 8px;\n\n .xp-link {\n color: var(--white);\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n padding: 16px 24px;\n }\n`;\n","import { Button } from \"@mui/material\";\nimport { useNavigate } from \"react-router-dom\";\nimport { HeaderContainer } from \"./styles\";\nimport { useAuth } from \"../../../contexts/AuthContext\";\nimport { useBroker } from \"../../../contexts/BrokerContext\";\nimport VelotaxLogo from \"../../../assets/velotax/velotax-light.svg\";\n\nexport const Header = () => {\n const { user } = useAuth();\n const { currentBroker } = useBroker();\n\n const navigate = useNavigate();\n return (\n <HeaderContainer>\n <h1>\n <a\n href={currentBroker?.link || \"https://www.velotax.com.br/\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <img\n className=\"fixed\"\n alt={currentBroker?.name || \"Velotax logo light\"}\n src={\n currentBroker.iconAlternative\n ? currentBroker.iconAlternative\n : currentBroker?.icon\n ? currentBroker?.icon\n : VelotaxLogo\n }\n />\n </a>\n </h1>\n {!user.user && (\n <div className=\"buttons\">\n <Button size=\"medium\" onClick={() => navigate(\"/p/login\")}>\n <span className=\"xp-link\">Entrar</span>\n </Button>\n <Button\n size=\"medium\"\n type=\"button\"\n color=\"secondary\"\n variant=\"contained\"\n onClick={() => navigate(\"/p/cadastrar\")}\n >\n Começar\n </Button>\n </div>\n )}\n </HeaderContainer>\n );\n};\n","import styled from \"styled-components\";\n\nexport const Container = styled.div`\n height: 100%;\n`;\n","import { Header } from \"./Header\";\nimport { Container } from \"./styles\";\n\nexport const PublicWrapper: React.FC = ({ children }) => {\n return (\n <Container>\n <Header />\n {children}\n </Container>\n );\n};\n","import { ConfigProvider } from \"antd\";\nimport { TextField } from \"@mui/material\";\nimport { useEffect, useState } from \"react\";\nimport {\n Navigate,\n Route,\n Routes as Switch,\n useLocation,\n} from \"react-router-dom\";\nimport PrivateRoute from \"./PrivateRoutes\";\nimport HandleTag from \"../services/handleTag\";\nimport OnlyPublicRoute from \"./OnlyPublicRoute\";\nimport PageNotFound from \"../pages/PageNotFound\";\nimport PageWrapper from \"../components/PageWrapper\";\nimport { useBroker } from \"../contexts/BrokerContext\";\nimport { PublicWrapper } from \"../components/PublicWrapper\";\n\nfunction Routes() {\n const { pathname } = useLocation();\n const { currentBroker, publicRoutes, privateRoutes, brokerRoutes } =\n useBroker();\n const [lastPath, setLastPath] = useState(\"\");\n\n useEffect(() => {\n if (pathname !== lastPath) {\n setLastPath(pathname);\n if (!lastPath.includes(\"bolsa\") && pathname.includes(\"bolsa\")) {\n HandleTag(\"47\");\n }\n if (!lastPath.includes(\"exterior\") && pathname.includes(\"exterior\")) {\n HandleTag(\"48\");\n }\n if (!lastPath.includes(\"pgbl\") && pathname.includes(\"pgbl\")) {\n HandleTag(\"90\");\n }\n }\n }, [pathname, lastPath]);\n\n ConfigProvider.config({\n theme: {\n primaryColor: currentBroker?.colors.primary || \"#1634ff\",\n infoColor: currentBroker?.colors.secondary || \"#000058\",\n successColor: \"#05aa99\",\n },\n });\n\n return (\n <>\n <TextField\n variant=\"standard\"\n style={{ display: \"none\", position: \"fixed\", top: 0, right: 0 }}\n />\n <Switch>\n <Route\n path=\"p\"\n element={\n <PublicWrapper>\n <OnlyPublicRoute />\n </PublicWrapper>\n }\n >\n {publicRoutes.map((route) => (\n <Route key={route.path} path={route.path} element={route.element} />\n ))}\n <Route path=\"\" element={<Navigate to=\"cadastrar\" />} />\n <Route path=\"*\" element={<Navigate to=\"cadastrar\" />} />\n </Route>\n\n <Route\n path=\"/\"\n element={\n <PageWrapper sideBar={true} header={true} overflow={true}>\n <PrivateRoute />\n </PageWrapper>\n }\n >\n {brokerRoutes}\n {privateRoutes.map((route) => (\n <Route key={route.path} path={route.path} element={route.element} />\n ))}\n <Route path=\"\" element={<Navigate to=\"/\" />} />\n <Route path=\"*\" element={<Navigate to=\"/\" />} />\n </Route>\n\n <Route path=\"\" element={<PageNotFound />} />\n <Route path=\"*\" element={<PageNotFound />} />\n </Switch>\n </>\n );\n}\n\nexport default Routes;\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n body {\n --white: #ffffff;\n --black: #000000;\n --green: #08CC88;\n --velotax-ghost: #f4f6f8;\n --velotax-ghost-white: #f4f6f8;\n --velotax-disabled: #626368;\n --velotax-font-color: #272A30;\n --velotax-font-color-ghost: #9099aa;\n --velotax-background-color: #ffffff;\n --velotax-background-color-ghost: #eaecee;\n --velotax-shadow-primary: rgba(0, 0, 88, 0.24);\n --velotax-shadow-default: rgba(144, 153, 170, 0.16);\n --velotax-green-amount: #00B300;\n --velotax-red-prejuizo: #ff0000;\n --velotax-orange: #ff8400;\n --em-aberto: #9ABC;\n &.dark {\n --velotax-ghost: #101112;\n --velotax-ghost-white: #848688;\n --velotax-disabled: #525358;\n --velotax-font-color: #ABAAA8;\n --velotax-font-color-dark: #272A30;\n --velotax-font-color-light: #FFFFFF;\n --velotax-font-color-ghost: #808080;\n --velotax-background-color: #1f1f1f;\n --velotax-background-color-ghost: #121212;\n --velotax-shadow-primary: rgba(0, 0, 88, 0.24);\n --velotax-green-amount: #00B300;\n --velotax-red-prejuizo: #ff0000;\n --velotax-shadow-default: rgba(144, 153, 170, 0.16);\n }\n }\n\n * {\n margin: 0;\n padding: 0;\n outline: 0;\n box-sizing: border-box;\n }\n\n path.recharts-sector {\n stroke: var(--velotax-background-color);\n }\n\n *:focus {\n outline: 0;\n }\n\n html, body, #root {\n height: 100%;\n overflow: hidden;\n color: var(--velotax-font-color);\n }\n\n body {\n -webkit-font-smoothing: antialiased;\n position: relative;\n width: 100% !important;\n background: var(--velotax-background-color);\n }\n\n body, input, button {\n font: 14px 'Roboto', sans-serif;\n font-weight: 300;\n }\n\n a {\n text-decoration: none;\n }\n\n ul {\n list-style: none;\n }\n\n button {\n cursor: pointer;\n background: transparent;\n border: 0;\n outline: 0;\n color: var(--white);\n letter-spacing: 0.4px;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: var(--velotax-font-color);\n }\n\n body > iframe {\n display: none;\n }\n .ant-steps-item-finish .ant-steps-item-icon { \n background-color: var(--ant-primary-color);\n }\n\n .full-width {\n width: 100%;\n }\n\n .column-center {\n text-align: center;\n }\n\n .MuiButtonBase-root.MuiButton-containedSecondary.Mui-disabled {\n opacity: 0.35;\n color: var(--velotax-font-color-dark) !important;\n background-color: var(--ant-primary-color) !important;\n }\n\n .beauty-scrollbar.zero-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 0;\n }\n }\n\n .modal-drawer.modalProventos {\n width: calc(100% - 128px) !important;\n }\n\n .notas-corretagem-historico-modal,\n .ant-modal.modal-drawer.modalProventos,\n .modal-drawer.modalProventos {\n .ant-modal-content {\n background-color: var(--white);\n .ant-modal-close {\n top: 8px;\n right: 8px;\n .anticon {\n color: var(--ant-primary-color);\n }\n }\n .ant-modal-header {\n padding: 64px 64px 32px;\n background-color: var(--white);\n .ant-modal-title {\n font-weight: 900;\n color: var(--velotax-font-color-dark);\n }\n }\n .ant-modal-body {\n padding: 32px 64px 32px;\n }\n }\n }\n\n .ant-drawer.modal-drawer.modalProventos {\n .ant-drawer-content {\n background-color: var(--white) !important;\n .ant-drawer-wrapper-body {\n .ant-drawer-header {\n .ant-drawer-header-title {\n .ant-drawer-title {\n color: var(--velotax-font-color-dark) !important;\n }\n }\n }\n }\n }\n }\n\n .modal-drawer.modalZeroBuyPrice {\n .ant-modal-body {\n padding: 0px 32px 16px !important;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .modal-drawer.modalProventos {\n width: 100% !important;\n }\n\n #chatbase-bubble-button {\n display: none;\n }\n\n #chatbase-bubble-window {\n top: 0px;\n box-shadow: none !important;\n width: 50px;\n height: calc(100% - 64px) !important;\n }\n }\n\n .beauty-scrollbar.slim-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 4px;\n }\n }\n\n .ant-modal-wrap,\n .beauty-scrollbar {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-thumb,\n ::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: rgb(251, 193, 5);\n }\n\n &::-webkit-scrollbar-track,\n ::-webkit-scrollbar-track {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n\n .input {\n\n .label {\n margin-bottom: 6px;\n }\n\n & + div {\n margin-top: 12px;\n }\n }\n\n .ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .error {\n margin: 12px auto -12px auto;\n color: var(--ant-error-color);\n }\n\n .loading-session {\n background: var(--ant-info-color);\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 12;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n width: 250px;\n padding: 20px;\n }\n\n .anticon {\n color: var(--white);\n\n svg {\n\n height: 40px;\n width: 40px;\n }\n }\n }\n\n .hiring-modal {\n .ant-typography {\n color: var(--velotax-font-color);\n }\n .ant-modal-title::before {\n display: none;\n }\n .hiring-modal-title {\n font-size: 32px;\n font-weight: bold;\n margin: 32px auto;\n text-align: center;\n color: var(--ant-primary-color);\n }\n }\n\n .ant-modal .malha-fina-button {\n width: 100% !important;\n }\n\n ::placeholder {\n color: var(--velotax-font-color-ghost) !important;\n }\n .ant-upload {\n color: var(--velotax-font-color);\n background-color: var(--velotax-ghost);\n border: none !important;\n }\n\n .ant-btn-text:focus,\n .ant-btn-text:hover {\n color: var(--velotax-font-color-ghost);\n }\n\n .ant-card,\n .ant-dropdown-menu,\n .ant-layout-sider-light,\n .ant-menu,\n .ant-modal-content,\n .ant-modal-header,\n .ant-select-dropdown,\n .ant-select-item {\n background-color: var(--velotax-background-color);\n }\n\n .anticon,\n .ant-btn-text,\n .ant-checkbox + span,\n .ant-divider-inner-text,\n .ant-dropdown-menu,\n .ant-dropdown-menu-item,\n .ant-empty,\n .ant-form,\n .ant-form-item-label > label,\n .ant-input,\n .ant-input-number-input,\n .ant-list,\n .ant-list-item,\n .ant-modal,\n .ant-modal-title,\n .ant-radio-wrapper,\n .ant-select,\n .ant-select-dropdown,\n .ant-select-item,\n .ant-tabs,\n .ant-upload-list-item-name,\n .ant-typography {\n color: var(--velotax-font-color-light);\n }\n .ant-tabs-tab.ant-tabs-tab-disabled {\n color: var(--velotax-disabled) !important;\n }\n .ant-input[disabled],\n .ant-select-disabled .ant-select-selector {\n color: var(--velotax-disabled) !important;\n background-color: var(--velotax-ghost);\n }\n .ant-select-item:hover,\n .ant-dropdown-menu-item:hover,\n .ant-select-item-option-active {\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-select-item-option-selected {\n color: var(--ant-primary-color) !important;\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-modal-footer,\n .ant-divider {\n border-color: var(--velotax-ghost-white);\n }\n .ant-btn.ant-btn-icon-only.ant-btn-primary {\n svg {\n fill: var(--white);\n }\n }\n .ant-btn.ant-btn-icon-only {\n svg {\n fill: var(--velotax-font-color);\n }\n }\n\n .ant-select.year-select {\n min-width: 120px;\n .ant-select-arrow {\n top: calc(50% - 6px);\n width: 24px;\n height: 24px;\n svg {\n fill: var(--velotax-font-color);\n }\n }\n }\n\n .success-icon {\n svg {\n fill: var(--ant-success-color) !important;\n }\n }\n .error-icon {\n svg {\n fill: var(--ant-error-color) !important;\n }\n }\n\n .footer-secure {\n position: fixed;\n background: var(--white);\n height: 56px;\n bottom: 24px;\n right: 104px;\n z-index: 10;\n display: flex;\n justify-content: flex-end;\n padding: 0 10px;\n max-height: 64px;\n border-radius: 6px;\n box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.1);\n\n &.goleft {\n left: 32px;\n right: auto;\n }\n\n img {\n width: 70px;\n }\n }\n\n .footer-velotax {\n left: 0;\n right: auto;\n row-gap: 5px;\n display: flex;\n box-shadow: none;\n align-items: center;\n flex-direction: column;\n background-color: transparent;\n transform: scale(0.75) translateY(16px);\n opacity: 0.625;\n color: var(--velotax-font-color);\n :hover {\n color: var(--velotax-font-color);\n i {\n opacity: 0.8;\n }\n }\n\n img {\n width: 128px;\n }\n\n i {\n font-size: 12px;\n font-weight: 600;\n }\n }\n\n .poweredby-velotax {\n height: 64px;\n padding: 6px 10px;\n max-height: 64px;\n row-gap: 5px;\n display: flex;\n align-items: center;\n flex-direction: column;\n color: var(--velotax-font-color);\n :hover {\n color: var(--velotax-font-color);\n i {\n opacity: 0.8;\n }\n }\n \n &.sidebar {\n img {\n height: 20px;\n }\n i {\n font-size: 12px;\n font-weight: 600;\n }\n }\n }\n\n /**\n * ANT-RADIO\n */\n .ant-radio-group {\n display: flex;\n row-gap: 8px;\n flex-direction: column;\n\n .ant-radio-wrapper {\n font-size: 18px;\n\n .ant-radio {\n width: 20px;\n height: 20px;\n margin-right: 8px;\n }\n\n .ant-radio-inner {\n width: 22px;\n height: 22px;\n border-width: 2px;\n\n &:after {\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 8px;\n }\n }\n }\n }\n\n /**\n * ANT-INPUT\n */\n .ant-input {\n font-weight: 500;\n border-radius: 8px;\n border: 2px solid var(--velotax-ghost);\n background-color: var(--velotax-ghost);\n\n &:hover, &:focus {\n border-right-width: 2px !important;\n }\n\n &:focus {\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline);\n }\n\n &[disabled] {\n cursor: default;\n border-color: var(--velotax-ghost);\n }\n\n &.ant-input-lg {\n height: 56px;\n }\n }\n\n .ant-form-item-has-error {\n .ant-input:not(.ant-input-disabled):not(.ant-input-borderless) {\n background-color: var(--velotax-ghost) !important;\n }\n\n .ant-input:not(.ant-input-disabled):not(.ant-input-borderless):focus {\n border-right-width: 2px !important;\n box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important;\n }\n }\n\n .ant-form-item-explain {\n margin-top: 4px;\n }\n\n /**\n * ANT-INPUT-NUMBER\n */\n .ant-input-number {\n font-weight: 500;\n border-radius: 8px;\n border: 2px solid var(--velotax-ghost);\n background-color: var(--velotax-ghost);\n display: flex;\n align-items: center;\n\n &:hover {\n border-right-width: 2px !important;\n }\n\n &.ant-input-number-focused {\n border-right-width: 2px !important;\n border-color: var(--ant-primary-color);\n box-shadow: 0 0 0 4px var(--ant-primary-color-outline);\n }\n\n &.ant-input-number-lg {\n height: 56px;\n }\n\n &.ant-input-number-disabled,\n &.ant-input-number-disabled .ant-input-number-input {\n cursor: default;\n }\n\n .ant-input-number-handler-wrap {\n display: none;\n }\n\n .ant-input-number-input-wrap {\n .ant-input-number-input {\n font-size: 18px;\n font-weight: 500;\n }\n }\n }\n\n .ant-form-item-has-error {\n .ant-input-number:not([disabled]):hover,\n .ant-input-number-focused:not([disabled]) {\n background-color: var(--velotax-ghost-white) !important;\n border-right-width: 2px !important;\n border-color: var(--ant-error-color);\n box-shadow: 0 0 0 4px var(--ant-error-color-outline) !important;\n }\n }\n\n /**\n * ANT-SELECT\n */\n .ant-select {\n border-radius: 0px !important;\n\n &[disabled],\n &.ant-select-disabled,\n &.ant-select-disabled input,\n &.ant-select-disabled .ant-select-selector {\n cursor: default !important;\n }\n }\n\n .ant-select .ant-select-selector {\n border-radius: 0px !important;\n border: none !important;\n border-bottom: 2px solid var(--ant-primary-color) !important;\n background-color: var(--velotax-ghost) !important;\n .ant-select-selection-search, .ant-select-selection-item {\n display: flex;\n align-items: center;\n font-weight: 500 !important;\n }\n }\n\n .ant-select-focused.ant-select-open {\n box-shadow: none !important;\n\n .ant-select-selector {\n border-color: var(--ant-primary-color) !important;\n }\n }\n\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {\n box-shadow: none !important;\n }\n\n .ant-form-item-has-error {\n .ant-select:not(.ant-select-disabled):hover .ant-select-selector,\n .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {\n box-shadow: nonde !important;\n }\n }\n\n .ant-select-lg, .ant-select-lg .ant-select-selector {\n height: 56px !important;\n\n .ant-select-selection-placeholder {\n display: flex;\n align-items: center;\n }\n }\n\n /**\n * ANT-DROPDOWN\n */\n .ant-dropdown,\n .ant-select-dropdown {\n border-radius: 4px;\n box-shadow: none;\n border: 2px solid var(--ant-primary-color);\n\n .ant-select-item,\n .ant-dropdown-menu-item {\n font-size: 16px\n }\n\n .ant-dropdown-menu {\n border-radius: 4px;\n }\n }\n\n /**\n * ANT-MODAL\n */\n .ant-modal-root {\n .ant-modal {\n top: 64px;\n\n .ant-modal-content {\n border-radius: 4px;\n\n .ant-modal-close {\n top: 16px;\n right: 16px;\n\n .ant-modal-close-x {\n .anticon.anticon-close.ant-modal-close-icon {\n font-size: 20px;\n }\n }\n }\n\n .ant-modal-header {\n border-bottom: none;\n padding: 32px 64px 32px 32px;\n border-radius: 16px 16px 0 0;\n\n .ant-modal-title {\n font-size: 20px;\n position: relative;\n\n &::after {\n content: '';\n left: 0;\n width: 50px;\n height: 2px;\n bottom: -12px;\n position: absolute;\n background-color: var(--ant-primary-color);\n }\n }\n }\n\n .ant-modal-body {\n padding: 32px 32px 16px;\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n width: 100% !important;\n max-width: calc(100% - 32px);\n margin: 0 16px;\n padding-bottom: 54px;\n }\n }\n }\n\n /**\n * ANT-TABLE\n */\n .ant-table {\n .ant-table-cell {\n background-color: var(--white);\n :before {\n background-color: transparent !important;\n }\n }\n .ant-table-thead > tr > th {\n color: var(--velotax-font-color-dark);\n }\n }\n .ant-pagination-item-link {\n .anticon {\n color: inherit;\n }\n }\n /* .ant-table-title + .ant-table-container {\n border-radius: 12px;\n }\n .ant-table,\n .ant-table-title,\n .ant-table-footer {\n color: var(--velotax-font-color);\n background-color: var(--velotax-background-color);\n }\n .ant-table-tbody > tr.ant-table-row:hover > td,\n .ant-table-tbody > tr > td.ant-table-cell-row-hover,\n .ant-table-tbody > tr.ant-table-placeholder:hover > td {\n background-color: var(--velotax-background-color-ghost);\n }\n\n .ant-table-title {\n font-weight: 600;\n padding: 16px 0;\n }\n\n .ant-table-container {\n border-radius: 12px;\n border: 1px solid var(--velotax-ghost-white);\n background-color: var(--velotax-background-color);\n\n .ant-table-content {\n border-radius: 8px;\n\n overflow-x: auto;\n @media only screen and (min-device-width: 813px) {\n &::-webkit-scrollbar,\n ::-webkit-scrollbar {\n height: 4px;\n }\n\n &::-webkit-scrollbar-thumb,\n ::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--ant-primary-color);\n }\n\n &::-webkit-scrollbar-track,\n ::-webkit-scrollbar-track {\n background-color: var(--velotax-background-color-ghost);\n }\n }\n\n .ant-table-thead {\n .ant-table-cell {\n color: var(--velotax-font-color);\n border-bottom-color: var(--velotax-ghost-white);\n background-color: var(--velotax-ghost);\n &::before {\n display: none;\n }\n\n &:first-child {\n border-radius: 12px 0 0 0;\n }\n\n &:last-child {\n border-radius: 0 12px 0 0;\n }\n }\n }\n\n .ant-table-tbody {\n .ant-table-cell {\n border-bottom-color: var(--velotax-ghost-white);\n }\n .ant-table-row:last-child {\n .ant-table-cell {\n border-bottom: none;\n\n &:first-child {\n border-radius: 0 0 0 12px;\n }\n\n &:last-child {\n border-radius: 0 0 12px 0;\n }\n }\n }\n }\n\n .ant-table-placeholder {\n .ant-table-cell {\n border-bottom: none;\n }\n }\n }\n\n .ant-table-row-error {\n .ant-table-cell {\n border-top: 1px solid;\n border-bottom: 1px solid !important;\n border-color: var(--ant-error-color) !important;\n\n &:first-of-type {\n border-left: 1px solid;\n }\n\n &:last-child {\n border-right: 1px solid;\n }\n }\n\n svg.error-icon {\n display: block;\n margin: 0 auto;\n fill: var(--ant-error-color);\n }\n }\n\n .ant-table-row-error + .ant-table-row-error {\n .ant-table-cell {\n border-top: none;\n }\n }\n }\n */\n\n /**\n * ANT-DESCRIPTIONS\n */\n .ant-descriptions.ant-descriptions-bordered {\n .ant-descriptions-view {\n border-radius: 8px;\n border-color: var(--velotax-background-color-ghost);\n\n tbody {\n .ant-descriptions-row {\n border-color: var(--velotax-background-color-ghost);\n .ant-descriptions-item-label {\n color: var(--velotax-font-color);\n background-color: var(--velotax-ghost);\n border-color: var(--velotax-background-color-ghost);\n }\n .ant-descriptions-item-content {\n background-color: var(--velotax-background-color);\n color: var(--velotax-font-color) !important;\n }\n }\n }\n }\n }\n\n /**\n * ANT-TABS\n */\n .ant-tabs {\n &.fillers-tabs {\n margin-top: -48px;\n\n .ant-tabs-nav {\n height: 32px;\n max-width: 600px;\n margin: 0 auto 16px;\n\n .ant-tabs-nav-wrap {\n justify-content: space-around;\n\n @media only screen and (max-device-width: 812px) {\n .ant-tabs-tab {\n display: none;\n &.ant-tabs-tab-active {\n display: inline-flex;\n }\n }\n }\n }\n }\n\n .ant-tabs-nav-operations {\n display: none;\n }\n }\n\n &.operations-tabs {\n margin-top: 0;\n overflow-x: auto;\n\n .ant-tabs-content-holder {\n min-width: 756px;\n }\n\n .ant-tabs-nav {\n margin: 0;\n height: auto;\n padding: 0 8px;\n min-width: 756px;\n max-width: 100%;\n\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n width: 100%;\n }\n\n .ant-tabs-tab {\n display: inline-flex;\n @media only screen and (min-device-width: 813px) {\n width: calc(100% / 12);\n }\n }\n\n .ant-tabs-tab + .ant-tabs-tab {\n margin: 0 0 0 16px;\n }\n\n &:before {\n top: 4px;\n height: calc(100% - 8px);\n box-shadow: inset 10px 0 8px -10px rgb(0 0 0 / 8%);\n }\n }\n }\n\n .ant-tabs-nav-operations {\n display: flex;\n }\n }\n\n &.operations-report-tabs {\n margin-top: 0;\n\n .ant-tabs-nav {\n margin: 0;\n padding: 0;\n width: 64px;\n height: auto;\n\n .ant-tabs-tab {\n display: inline-flex !important;\n margin: 0 !important;\n }\n }\n\n .ant-tabs-nav-operations {\n display: flex;\n }\n }\n\n .ant-tabs-nav {\n margin: 0;\n\n &::before {\n display: none;\n }\n\n .ant-tabs-nav-wrap {\n .ant-tabs-nav-list {\n .ant-tabs-tab {\n .ant-tabs-tab-btn {\n font-weight: 500;\n }\n }\n\n .ant-tabs-tab-disabled {\n cursor: default;\n }\n\n .ant-tabs-ink-bar {\n max-width: 32px;\n }\n }\n }\n }\n\n .anticon svg {\n color: var(--ant-primary-color);\n }\n }\n\n /**\n * ANT-COLLAPSE\n */\n .ant-collapse,\n .ant-collapse.ant-collapse-borderless {\n background-color: transparent;\n /* background-color: var(--white); verificar */\n .ant-collapse-item {\n border-bottom: none;\n .ant-collapse-header {\n color: var(--velotax-font-color);\n }\n }\n }\n\n /**\n * ANT-LIST\n */\n .ant-list {\n &.ant-list-vertical {\n .ant-list-item {\n .ant-list-item-extra {\n text-align: right;\n }\n }\n }\n }\n .ant-list.ant-list-split {\n .ant-list-item {\n border-bottom-color: var(--velotax-background-color-ghost);\n }\n }\n .ant-list-empty-text {\n opacity: 0.75;\n color: var(--velotax-font-color);\n }\n\n .ant-list-loading {\n .ant-spin-blur:after {\n opacity: 0;\n }\n }\n\n /**\n * ANT-STEPS\n */\n .ant-steps {\n .ant-steps-item {\n &.ant-steps-item-active .ant-steps-item-title {\n color: var(--ant-primary-color) !important;\n }\n &.ant-steps-item-disabled .ant-steps-item-title {\n color: var(--velotax-font-color-ghost) !important;\n }\n .ant-steps-item-title {\n color: var(--velotax-font-color) !important;\n }\n }\n .ant-steps-item-process\n > .ant-steps-item-container\n > .ant-steps-item-tail::after,\n .ant-steps-item-wait\n > .ant-steps-item-container\n > .ant-steps-item-tail::after {\n background: var(--velotax-background-color-ghost);\n }\n }\n\n /**\n * ANTICON-LOADING\n */\n .anticon.anticon-loading.anticon-spin {\n width: 24px;\n height: 24px;\n svg {\n width: 24px;\n height: 24px;\n }\n }\n\n /**\n * ANT-MESSAGE\n */\n .ant-message {\n .ant-message-notice {\n text-align: right;\n max-width: calc(100% - 8px);\n }\n }\n\n /**\n * ANT-PICKER\n */\n .ant-picker:not(.original-date-picker) {\n display: flex;\n align-items: center;\n border: none;\n border-radius: 0;\n border-bottom: 2px solid var(--ant-primary-color);\n background-color: var(--velotax-ghost);\n &.ant-picker-large {\n height: 56px;\n border-radius: 0;\n }\n &.ant-picker-disabled {\n background-color: var(--velotax-ghost);\n .ant-picker-input input {\n opacity: 0.75;\n }\n }\n .ant-picker-input input {\n color: var(--velotax-font-color);\n }\n .ant-picker-suffix {\n svg {\n fill: var(--velotax-font-color);\n }\n }\n &.ant-picker-focused {\n box-shadow: none;\n .ant-picker-input input {\n color: var(--ant-primary-color);\n }\n .ant-picker-suffix {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n }\n .ant-picker-dropdown:not(.original-date-picker) {\n .ant-picker-panel {\n border-bottom: none;\n }\n .ant-picker-panel-container {\n * {\n color: var(--velotax-font-color);\n }\n border-radius: 4px;\n background-color: var(--velotax-background-color);\n border: 2px solid var(--velotax-background-color-ghost);\n .ant-picker-header {\n border-bottom-color: var(--velotax-background-color-ghost);\n }\n .ant-picker-body {\n padding: 8px 0;\n .ant-picker-content {\n height: 240px;\n .ant-picker-cell-inner {\n height: 48px;\n line-height: 48px;\n border-radius: 6px;\n border: 1px solid var(--velotax-background-color-ghost);\n }\n }\n }\n .ant-picker-footer {\n border-top-color: var(--velotax-background-color-ghost);\n }\n }\n .ant-picker-cell:hover:not(.ant-picker-cell-selected) .ant-picker-cell-inner {\n opacity: 0.45;\n background-color: var(--velotax-ghost) !important;\n }\n }\n\n .ant-notification {\n .anticon.anticon-loading.anticon-spin {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n }\n\n body.dark .ant-picker-dropdown .ant-picker-panel-container {\n box-shadow: 0 3px 6px -4px #6666661E, 0 6px 16px 0 #66666614, 0 9px 28px 8px #6666660C;\n }\n\n .ant-picker-cell-disabled {\n opacity: 0.2;\n }\n\n .sample-payed::after,\n .sample-regular::after,\n .sample-pending::after,\n .sample-not-payed::after,\n .ant-picker-cell-inner.payed::after,\n .ant-picker-cell-inner.regular::after,\n .ant-picker-cell-inner.pending::after,\n .ant-picker-cell-inner.not-payed::after {\n content: \"\";\n top: -4px;\n right: -4px;\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--ant-primary-color);\n }\n .sample-payed::after,\n .sample-regular::after,\n .ant-picker-cell-inner.payed::after,\n .ant-picker-cell-inner.regular::after {\n background-color: var(--ant-success-color);\n }\n .sample-pending::after,\n .ant-picker-cell-inner.pending::after {\n background-color: var(--ant-error-color);\n }\n .sample-not-payed::after,\n .ant-picker-cell-inner.not-payed::after {\n display: none;\n }\n .sample-payed,\n .sample-regular,\n .sample-pending,\n .sample-not-payed {\n position: relative;\n &::after {\n top: 11px;\n left: 0px;\n }\n span {\n margin-left: 24px;\n }\n }\n\n /**\n * ANT-UPLOAD\n */\n .ant-upload-text-icon {\n svg {\n fill: var(--ant-primary-color);\n }\n }\n\n .anticon.anticon-delete {\n svg {\n fill: var(--ant-error-color);\n }\n }\n\n .ant-upload-list-item .ant-upload-list-item-info {\n padding: 8px;\n height: 32px;\n border-radius: 8px;\n }\n .ant-upload-list-item:hover .ant-upload-list-item-info {\n background-color: var(--velotax-ghost);\n }\n\n .progress {\n height: 5px;\n z-index: 1;\n background: var(--ant-primary-color);\n position: fixed;\n -webkit-transition: width 0.6s ease-in-out;\n -moz-transition: width 0.6s ease-in-out;\n -o-transition: width 0.6s ease-in-out;\n transition: width 0.6s ease-in-out;\n }\n\n .xmovel-content.ant-collapse-item {\n border-top: none;\n margin-bottom: 16px;\n .ant-collapse-header {\n margin-bottom: 4px;\n border-radius: 8px !important;\n color: var(--velotax-font-color);\n background-color: var(--velotax-ghost-white) !important;\n }\n .ant-collapse-content > .ant-collapse-content-box {\n padding: 0;\n }\n .ant-descriptions-view {\n table {\n tbody {\n .ant-descriptions-row {\n .ant-descriptions-item-label {\n border-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-item-content {\n border-color: var(--velotax-background-color-ghost);\n padding: 8px 16px !important;\n }\n }\n }\n }\n }\n }\n body.dark {\n .xmovel-content.ant-collapse-item {\n .ant-collapse-header {\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-view {\n border-color: var(--velotax-background-color-ghost) !important;\n table {\n tbody {\n .ant-descriptions-row {\n border-color: var(--velotax-disabled) !important;\n .ant-descriptions-item-label {\n border-color: var(--velotax-background-color-ghost) !important;\n background-color: var(--velotax-background-color-ghost) !important;\n }\n .ant-descriptions-item-content {\n border-color: var(--velotax-background-color-ghost);\n }\n }\n }\n }\n }\n }\n }\n\n .exterior-mode {\n flex-direction: row;\n .ant-radio-wrapper {\n color: var(--velotax-font-color-dark);\n }\n }\n\n /** MUI-BUTTON */\n .MuiButton-root {\n border-radius: 0 !important;\n box-shadow: none !important;\n text-transform: uppercase !important;\n &.MuiButton-sizeLarge {\n height: 53px;\n font-size: 16px !important;\n }\n\n &.MuiButton-containedInherit {\n background-color: var(--white);\n color: var(--velotax-font-color-dark);\n }\n\n .MuiButton-startIcon,\n .MuiButton-endIcon {\n svg {\n fill: var(--velotax-font-color-dark);\n }\n }\n }\n\n .MuiTextField-root {\n width: 100%;\n }\n\n .MuiInputBase-root {\n width: 100%;\n }\n\n .xp-link {\n color: #18191a;\n font-weight: bold;\n text-decoration: none;\n border-bottom: 2px solid var(--ant-primary-color);\n }\n\n .uppercase {\n text-transform: uppercase;\n }\n\n .exterior-content-title {\n display: block;\n font-weight: 600;\n text-align: center;\n font-size: 1.125rem;\n color: var(--velotax-font-color-dark);\n border-bottom: 2px solid var(--ant-primary-color);\n }\n\n .mui-select-with-description {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n .left {\n font-size: 1rem;\n }\n .right {\n font-weight: 500;\n font-size: 0.675rem;\n letter-spacing: 0;\n }\n }\n .installments-select {\n width: 100%;\n text-transform: none !important;\n .installment-tax {\n text-align: right;\n font-size: 8px;\n line-height: 12px;\n }\n }\n @media only screen and (max-device-width: 812px) {\n .installments-select {\n .installment-tax {\n text-align: left;\n }\n }\n .column-reverse {\n flex-direction: column-reverse;\n }\n .desc-content {\n .ant-form-item {\n margin: 0;\n }\n }\n }\n\n .justify {\n text-align: justify !important;\n }\n\n .juridic-messages-container-integration {\n opacity: 0.8;\n margin: 0 auto;\n padding: 32px 45px;\n max-width: 600px;\n .message {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 1rem;\n }\n p {\n font-size: 12px;\n font-weight: 400;\n text-align: justify;\n line-height: 1rem;\n color: var(--velotax-font-color-light);\n margin-bottom: 0;\n i {\n font-weight: bold;\n color: var(--velotax-font-color-light);\n }\n }\n \n }\n .info-circle-red {\n svg {\n fill: red !important;\n }\n }\n\n @media only screen and (max-device-width: 450px) {\n .form-card-container {\n .rccs {\n width: auto;\n margin: 0 -12px;\n max-width: calc(100% + 24px);\n .rccs__card {\n width: auto;\n max-width: 100%;\n }\n }\n }\n }\n .ant-popover{\n z-index: 1000;\n }\n .ant-popover-inner{\n background-color: #282828;\n border-bottom: 2px solid rgb(251, 193, 5);\n }\n .ant-popover-title{\n color: rgb(255 255 255 / 85%);\n border-bottom: 1px solid rgb(255 255 255 / 10%);\n }\n .ant-popover-inner-content{\n color: rgb(255 255 255 / 85%);\n max-width: 240px;\n }\n .ant-popover-arrow-content{\n background-color: #282828;\n }\n .parametrizacao-modal {\n svg {\n margin-right: 0.5rem;\n transform: translateY(2px);\n }\n .ant-select{\n margin: 1rem 0 2rem 0;\n width: 100%;\n }\n .ant-select-selection-item{\n justify-content: center;\n }\n }\n .ant-drawer-content, .ant-drawer-header {\n background-color: var(--velotax-background-color);\n .ant-drawer-title, .ant-drawer-close {\n color: white;\n }\n }\n .ant-drawer-header {\n border-bottom: 1px solid var(--velotax-disabled);\n }\n .filter-modal {\n .ant-checkbox-group {\n display: block;\n }\n .corretoras-allcheck {\n margin-bottom: 8px;\n }\n .ant-checkbox-wrapper {\n font-size: 15px;\n align-items: center;\n .ant-checkbox {\n top: 0;\n }\n .ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n :after {\n width: 7px;\n height: 13px;\n top: calc(50% - 2px);\n }\n }\n }\n .ant-checkbox-inner {\n width: 20px;\n height: 20px;\n border-color: var(--velotax-ghost);\n background-color: var(--velotax-ghost);\n }\n }\n }\n .filter-proventos-modal {\n .ant-modal-content {\n background-color: var(--white);\n .ant-modal-close {\n .ant-modal-close-x {\n .anticon {\n color: var(--ant-primary-color);\n }\n }\n }\n .ant-modal-header {\n background-color: var(--white);\n .ant-modal-title {\n color: var(--velotax-font-color-dark);\n }\n }\n .ant-modal-body {\n .ant-checkbox + span,\n .ant-typography {\n color: var(--velotax-font-color-dark);\n }\n .ant-picker {\n display: flex;\n .ant-picker-suffix {\n .anticon {\n color: var(--velotax-font-color-dark);\n }\n }\n .ant-picker-input {\n input {\n font-weight: 500;\n }\n }\n }\n .ant-checkbox-wrapper {\n align-items: center;\n .ant-checkbox {\n top: 0;\n }\n .ant-checkbox-checked {\n .ant-checkbox-inner {\n border-color: var(--ant-primary-color);\n background-color: var(--ant-primary-color);\n }\n }\n .ant-checkbox-inner {\n width: 20px;\n height: 20px;\n border-color: #e8e8e8;\n background-color: #e8e8e8;\n :after {\n width: 7px;\n height: 13px;\n top: calc(50% - 2px);\n }\n }\n }\n }\n }\n }\n .ant-select-clear > span > svg {\n background-color: var(--velotax-background-color) !important;\n }\n .ant-select-multiple > .ant-select-selector > .ant-select-selection-overflow > .ant-select-selection-overflow-item > .ant-select-selection-item {\n background-color: var(--velotax-font-color-dark);\n border: none;\n }\n .ant-select-item-group {\n font-weight: 700;\n padding-top: 1rem;\n }\n .ant-select-item-group:first-of-type{\n padding-top: 0;\n }\n .ant-select-item-option:hover{\n background-color: var(--velotax-font-color-dark) !important;\n }\n`;\n","import axios from \"axios\";\n\nexport const chatApi = axios.create({\n baseURL:\n process.env.REACT_APP_AI_DASHBOARD_API_URL || \"http://localhost:4000\",\n});\n","import styled from \"styled-components\";\n\nexport const ChatButton = styled.div`\n position: fixed;\n width: 3.75rem;\n height: 3.75rem;\n right: 0.625rem;\n bottom: 0.625rem;\n z-index: 100;\n display: flex;\n cursor: pointer;\n user-select: none;\n border-radius: 2rem;\n align-items: center;\n justify-content: center;\n transition: 0.3s filter;\n background-color: #1634ff;\n :hover {\n filter: contrast(1.2);\n }\n :active {\n filter: contrast(1.5);\n }\n\n svg {\n width: 2rem;\n height: 2rem;\n stroke: white;\n margin-top: -0.25rem;\n }\n\n @media (max-device-width: 812px) {\n display: none;\n }\n`;\n\nexport const ChatWindow = styled.div`\n left: unset;\n right: 0.875rem;\n border: none;\n bottom: 80px;\n width: 458px;\n height: 85dvh;\n display: flex;\n position: fixed;\n user-select: none;\n max-height: 824px;\n border-radius: 8px;\n z-index: 2147483647;\n flex-direction: column;\n background-color: white;\n box-shadow: rgba(150, 150, 150, 0.2) 0 10px 30px 0,\n rgba(150, 150, 150, 0.2) 0 0 0 1px;\n\n &.hide,\n &.hidden {\n display: none;\n }\n\n .chat-header {\n height: 80px;\n padding: 1rem;\n display: flex;\n align-items: center;\n border-bottom: 1px solid #f0f0f0;\n\n h1 {\n color: #212121;\n }\n .chat-icon {\n display: flex;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 1.25rem;\n align-items: center;\n justify-content: center;\n background-color: #000058;\n\n svg {\n width: 1rem;\n height: 1.5rem;\n margin-left: 2px;\n }\n }\n\n .reset-icon,\n .close-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .reset-icon {\n cursor: pointer;\n margin-left: auto;\n margin-right: 0.5rem;\n transition: 0.3s opacity, 0.3s transform;\n :hover {\n opacity: 0.5;\n }\n svg {\n width: 1.25rem;\n height: 1.25rem;\n path {\n stroke: #212121;\n }\n }\n }\n .close-icon {\n cursor: pointer;\n transition: 0.3s opacity, 0.3s transform;\n :hover {\n opacity: 0.5;\n }\n svg {\n width: 2rem;\n height: 2rem;\n fill: #212121;\n }\n }\n\n h1 {\n font-size: 1.125rem;\n margin: 0 0 0 0.75rem;\n }\n }\n\n .chat-body {\n display: flex;\n flex: 1 1 100%;\n overflow-y: auto;\n scroll-behavior: smooth;\n\n .chat-body-conversation {\n width: 100%;\n flex: 1 1 0%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 1rem 1rem 0 1rem;\n\n .chat-body-white-space {\n width: 100%;\n min-height: 1rem;\n }\n\n .chat-msg {\n :first-of-type {\n margin-top: 0;\n }\n &.chat-msg-user {\n padding-right: 0;\n padding-left: 2.5rem;\n justify-content: flex-end;\n .chat-mgs-text {\n color: white;\n background-color: #2573e2;\n border-radius: 1.25rem 1.25rem 0.25rem 1.25rem;\n }\n }\n display: flex;\n margin-top: 1.25rem;\n padding-right: 2rem;\n align-items: flex-end;\n .chat-msg-icon {\n display: flex;\n width: 2rem;\n height: 2rem;\n min-width: 2rem;\n min-height: 2rem;\n border-radius: 1rem;\n align-items: center;\n margin-right: 0.5rem;\n justify-content: center;\n background-color: #000058;\n &.error {\n margin: 0 0.5rem 0 0;\n background-color: #ff4d4f;\n svg {\n margin: 0;\n fill: white;\n width: 1.5rem;\n }\n }\n svg {\n width: 0.75rem;\n height: 1.125rem;\n margin-left: 0.125rem;\n }\n }\n .chat-mgs-text {\n color: #212121;\n text-align: left;\n user-select: text;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.875rem 1rem;\n background-color: #f0f0f0;\n border-radius: 1.25rem 1.25rem 1.25rem 0.25rem;\n\n ol,\n ul {\n list-style-position: inside;\n }\n\n .anticon-loading,\n .anticon-loading svg {\n width: 1rem;\n height: 1rem;\n color: #1634ff;\n }\n }\n }\n }\n }\n\n .chat-footer {\n display: flex;\n margin-top: auto;\n flex-direction: column;\n justify-content: flex-end;\n border-top: 1px solid #f0f0f0;\n .chat-input-container {\n display: flex;\n align-items: flex-end;\n textarea {\n flex-grow: 1;\n padding: 0.75rem;\n min-height: 2rem;\n max-height: 10rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin: 0;\n border: none;\n resize: none;\n overflow-y: auto;\n border-radius: 0;\n pointer-events: auto;\n background-color: white;\n overflow-wrap: break-word;\n tab-size: 4;\n text-align: start;\n border-bottom-left-radius: 0.5rem;\n display: flex;\n color: #212121;\n }\n button {\n cursor: pointer;\n white-space: nowrap;\n align-items: center;\n display: inline-flex;\n justify-content: center;\n background-color: transparent;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 0.375rem;\n margin: 0.75rem 0.75rem 1rem;\n background-color: hsla(240, 5%, 96%, 0.9);\n :hover {\n filter: opacity(0.8);\n }\n :disabled {\n cursor: default;\n filter: grayscale(1) opacity(0.8);\n background-color: hsla(240, 5%, 96%, 0.9);\n }\n svg {\n fill: #1634ff;\n }\n }\n }\n }\n\n @media (max-device-width: 812px) {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: calc(100vh - 63px);\n border-radius: 0;\n }\n`;","import clsx from \"clsx\";\nimport DOMPurify from \"dompurify\";\nimport { BsX } from \"react-icons/bs\";\nimport { FaPaperPlane } from \"react-icons/fa\";\nimport { GrPowerReset } from \"react-icons/gr\";\nimport { MdErrorOutline } from \"react-icons/md\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\nimport { IoChatbubblesOutline } from \"react-icons/io5\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { chatApi } from \"../../services/chatApi\";\nimport { ChatButton, ChatWindow } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { ReactComponent as VelotaxIcon } from \"../../assets/velotax/veloicon.svg\";\n\ninterface Msg {\n user: \"velotax\" | \"user\";\n text: string;\n error?: boolean;\n}\n\ninterface APIChatMessage {\n userMessage: string;\n botResponse: string;\n formattedGptAnswer: string;\n createdAt: Date;\n}\n\nconst KEY = \"velochat.thread_id\";\nconst KEY_TIMESTAMP = \"velochat.timestamp\";\nconst USER_MESSAGE_MAX_LENGTH = 200;\nconst defaultMsg: Msg = {\n user: \"velotax\",\n text: \"Olá! Eu sou o assistente virtual da Velotax. Como posso te ajudar?\",\n};\n\nexport const ChatGPT = () => {\n const storage = localStorage;\n const { signed, user } = useAuth();\n const chatBodyRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const [msg, setMsg] = useState(\"\");\n const [show, setShow] = useState(false);\n const [loading, setLoading] = useState(false);\n const [scrolled, setScrolled] = useState(false);\n const [firstLoading, setFirstLoading] = useState(false);\n const [msgs, setMsgs] = useState<Msg[]>([defaultMsg]);\n\n chatApi.defaults.headers.common[\"Authorization\"] = `Bearer ${user?.token}`;\n\n const hide =\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\n const disabled =\n !msg.replace(/\\s/g, \"\").length || msg.length > USER_MESSAGE_MAX_LENGTH;\n\n const resetChat = () => {\n setMsg(\"\");\n setMsgs([defaultMsg]);\n storage.removeItem(KEY);\n storage.removeItem(KEY_TIMESTAMP);\n };\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n chatBodyRef.current?.scrollTo({\n top: chatBodyRef.current?.scrollHeight,\n });\n }, 50);\n }, []);\n\n const after24H = useCallback(() => {\n try {\n const timestamp = storage.getItem(KEY_TIMESTAMP);\n if (\n timestamp &&\n new Date().getTime() >\n new Date(Number(timestamp)).getTime() + 24 * 60 * 60 * 1000\n ) {\n storage.removeItem(KEY);\n return true;\n }\n return false;\n } catch (err) {\n console.log(err);\n return true;\n }\n }, [storage]);\n\n const loadMsgs = useCallback(async () => {\n const threadId = storage.getItem(KEY);\n if (!threadId) return;\n if (after24H()) return;\n try {\n setFirstLoading(true);\n const { data } = await chatApi.get<APIChatMessage[]>(\"/chat/user\", {\n params: { threadId },\n });\n if (data?.length > 0) {\n setMsgs([\n defaultMsg,\n ...data.reduce(\n (acc, cur) => [\n ...acc,\n { user: \"user\", text: cur.userMessage } as Msg,\n {\n user: \"velotax\",\n text: cur.formattedGptAnswer\n ? DOMPurify.sanitize(cur.formattedGptAnswer)\n : cur.botResponse,\n } as Msg,\n ],\n [] as Msg[]\n ),\n ]);\n }\n } catch {\n } finally {\n setFirstLoading(false);\n scrollToBottom();\n }\n }, [scrollToBottom, storage, after24H]);\n\n const sendMsg = async (text: string) => {\n setMsgs((msgs) => [...msgs, { user: \"user\", text }]);\n setLoading(true);\n scrollToBottom();\n setTimeout(() => setMsg(\"\"), 100);\n try {\n const threadId = storage.getItem(KEY);\n const { data } = await chatApi.post(\"/chat/user\", {\n userMessage: text,\n threadId,\n });\n setLoading(false);\n const now = new Date();\n storage.setItem(KEY, data.threadId);\n storage.setItem(\n KEY_TIMESTAMP,\n String(\n new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime()\n )\n );\n setMsgs((msgs) => [\n ...msgs,\n {\n user: \"velotax\",\n text: data.formattedGptAnswer\n ? DOMPurify.sanitize(data.formattedGptAnswer)\n : data.botResponse,\n },\n ]);\n } catch {\n setLoading(false);\n setMsgs((msgs) => [\n ...msgs,\n {\n error: true,\n user: \"velotax\",\n text: \"Não conseguimos responder sua mensagem. Tente novamente mais tarde!\",\n },\n ]);\n } finally {\n scrollToBottom();\n }\n };\n\n useEffect(() => {\n if (signed) {\n loadMsgs();\n }\n }, [signed, loadMsgs]);\n\n return signed ? (\n <>\n <ChatButton\n id=\"chat-gpt-button\"\n className={clsx({ hide })}\n onClick={() => {\n setShow((show) => {\n if (!show && !scrolled) {\n setScrolled(true);\n scrollToBottom();\n }\n return !show;\n });\n }}\n >\n <IoChatbubblesOutline />\n </ChatButton>\n <ChatWindow className={clsx({ hidden: !show })}>\n <div className=\"chat-header\">\n <div className=\"chat-icon\">\n <VelotaxIcon />\n </div>\n <h1>Assistente Velotax</h1>\n <div className=\"reset-icon\" onClick={resetChat}>\n <GrPowerReset size={16} />\n </div>\n <div className=\"close-icon\" onClick={() => setShow(false)}>\n <BsX />\n </div>\n </div>\n <div className=\"chat-body\" ref={chatBodyRef}>\n <div className=\"chat-body-conversation\">\n {firstLoading ? (\n <></>\n ) : (\n msgs.map(({ user, text, error }, i) =>\n user === \"velotax\" ? (\n <div className=\"chat-msg\" key={i}>\n <span className={clsx(\"chat-msg-icon\", { error })}>\n {error ? <MdErrorOutline /> : <VelotaxIcon />}\n </span>\n <span\n className=\"chat-mgs-text\"\n dangerouslySetInnerHTML={{ __html: text }}\n />\n </div>\n ) : (\n <div className=\"chat-msg chat-msg-user\" key={i}>\n <span className=\"chat-mgs-text\">{text}</span>\n </div>\n )\n )\n )}\n {(loading || firstLoading) && (\n <div className=\"chat-msg\">\n <div className=\"chat-msg\">\n <span className=\"chat-msg-icon\">\n <VelotaxIcon />\n </span>\n <span className=\"chat-mgs-text\">\n <LoadingOutlined />\n </span>\n </div>\n </div>\n )}\n <div className=\"chat-body-white-space\" />\n </div>\n </div>\n <div className=\"chat-footer\">\n <div className=\"chat-input-container\">\n <textarea\n rows={2}\n value={msg}\n ref={textareaRef}\n placeholder=\"Digite sua dúvida aqui...\"\n onChange={(e) => {\n setMsg(e.target.value || \"\");\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }}\n onKeyDown={(e) => {\n if (e.code === \"Enter\" && !disabled) {\n sendMsg(msg);\n }\n }}\n />\n <button\n disabled={disabled}\n onClick={() => {\n if (!disabled) {\n sendMsg(msg);\n }\n }}\n >\n <FaPaperPlane size={20} />\n </button>\n </div>\n </div>\n </ChatWindow>\n </>\n ) : (\n <></>\n );\n};\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n .velotax-container {\n display: flex;\n align-items: center;\n flex-direction: column;\n padding: 64px 32px 32px;\n\n & > .ant-typography {\n width: 700px;\n display: block;\n color: var(--velotax-font-color-light);\n &.destak {\n font-weight: 700;\n font-size: 1rem;\n padding-left: 16px;\n line-height: 1.5rem;\n margin: 32px auto 24px;\n border-left: 4px solid var(--ant-primary-color);\n }\n }\n\n .page-subtitle {\n width: 700px;\n column-gap: 8px;\n font-Size: 1rem;\n font-weight: 400;\n line-height: 1.5rem;\n margin: 0 auto 2.5rem;\n color: var(--velotax-font-color-light);\n }\n\n .velotax-content {\n width: 700px;\n padding: 48px;\n margin: 0 auto;\n border-radius: 4px;\n box-shadow: 0px 4px 8px 0px rgba(0, 0, 88, 0.08);\n background-color: var(--velotax-background-color);\n\n &.plano {\n margin-bottom: 48px;\n background-color: var(--white);\n }\n\n &.velotax-content-transparent {\n padding: 0;\n border: none;\n box-shadow: none;\n margin: 24px auto 0;\n background-color: transparent;\n }\n\n &.historic {\n .anticon.anticon-loading.anticon-spin {\n width: 16px !important;\n height: 16px !important;\n svg {\n width: 16px !important;\n height: 16px !important;\n }\n }\n }\n\n h2.subtitle-lined {\n display: flex;\n white-space: nowrap;\n align-items: center;\n width: 100%;\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.5rem;\n margin: 2.5rem 0 1.5rem;\n span {\n margin-right: 16px;\n }\n &:after {\n content: \"\";\n height: 2px;\n flex-grow: 1;\n background-color: #313131;\n }\n }\n }\n }\n\n h1.page-title {\n width: 700px;\n font-size: 2rem;\n font-weight: 400;\n position: relative;\n line-height: 2.5rem;\n padding-bottom: 1rem;\n margin: 0 auto 1.5rem;\n color: var(--velotax-font-color-light);\n\n :after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n height: 2px;\n width: 100px;\n background-color: var(--ant-primary-color);\n }\n }\n\n .ant-btn.ant-btn-primary.btn-premium {\n z-index: 1;\n right: -6px;\n font-size: 13px;\n position: absolute;\n top: calc(50% - 16px);\n border-radius: 4px 4px 0 4px;\n svg {\n width: 15px;\n height: 15px;\n }\n :after {\n content: \"\";\n width: 0;\n height: 0;\n right: -1px;\n bottom: -10px;\n position: absolute;\n border-left: 0 solid transparent;\n border-right: 6px solid transparent;\n border-top: 10px solid var(--ant-primary-color-active);\n }\n }\n\n .btn-contratar-plano-historic {\n top: 0;\n right: 0;\n height: 40px;\n position: absolute;\n }\n\n @media only screen and (max-device-width: 812px) {\n .velotax-container {\n padding: 0;\n min-height: 100%;\n\n .page-title-outside {\n width: 100%;\n font-size: 1.5rem;\n line-height: 2rem;\n padding: 24px 24px 0;\n }\n\n & > .ant-typography {\n width: 100%;\n &.destak {\n margin: 16px 0;\n font-size: 14px;\n line-height: 20px;\n padding-left: 20px;\n }\n }\n\n .velotax-content {\n width: 100%;\n padding: 24px 24px 64px;\n border-radius: 0;\n box-shadow: none;\n\n &.plano {\n margin-bottom: 24px;\n }\n\n &.velotax-content-transparent {\n padding: 24px;\n margin: 0 auto;\n border-top: 1px solid var(--velotax-background-color-ghost);\n }\n }\n }\n\n h1.page-title {\n font-size: 1.5rem;\n line-height: 2rem;\n padding-bottom: 0.5rem;\n padding: 24px 0 1rem;\n margin: 0 24px 1.5rem;\n width: calc(100% - 48px) !important;\n }\n\n h2.subtitle-lined {\n padding: 0 !important;\n font-size: 1.125rem;\n line-height: 1.5rem;\n margin: 3rem 0 1.5rem;\n }\n\n .page-subtitle {\n width: 100%;\n padding: 0 24px;\n }\n\n .ant-btn.ant-btn-primary.btn-premium {\n right: -6px;\n font-size: 11px;\n svg {\n width: 13px;\n height: 13px;\n }\n }\n\n .ant-btn.ant-btn-primary.btn-contratar-plano-historic {\n display: none;\n }\n }\n`;\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n .ant-drawer.modal-drawer.no-closable {\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n .ant-drawer-wrapper-body {\n .ant-drawer-header {\n .ant-drawer-header-title {\n flex-direction: row;\n }\n }\n }\n }\n }\n }\n\n .ant-drawer.modal-drawer,\n .ant-drawer.help-drawer {\n &.untitled {\n .ant-drawer-wrapper-body {\n padding-top: 0 !important;\n .ant-drawer-header {\n z-index: 2;\n height: 0 !important;\n padding: 0 !important;\n border-left: none !important;\n .ant-drawer-header-title {\n height: 0 !important;\n .ant-drawer-close {\n margin: 24px 24px 0 12px !important;\n }\n }\n }\n .ant-drawer-body {\n z-index: 1;\n overflow: unset;\n }\n }\n }\n &.payment-modal {\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n background-color: var(--white);\n .ant-drawer-wrapper-body {\n .ant-drawer-header {\n .ant-drawer-header-title {\n .ant-drawer-title {\n color: var(--velotax-font-color-dark);\n }\n }\n }\n }\n }\n }\n }\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n background-color: var(--velotax-background-color);\n .ant-drawer-wrapper-body {\n padding-top: 32px;\n .ant-drawer-header {\n padding: 8px 24px;\n background-color: transparent;\n border-left: 4px solid var(--ant-primary-color);\n border-bottom: none;\n border-radius: 0;\n .ant-drawer-header-title {\n width: 100%;\n flex-direction: row-reverse;\n .ant-drawer-close {\n align-self: flex-start;\n margin: -24px 0 0 12px;\n .anticon.anticon-close {\n svg {\n width: 24px;\n height: 24px;\n fill: var(--ant-primary-color);\n }\n }\n }\n .ant-drawer-title {\n font-size: 18px;\n line-height: 24px;\n color: var(--velotax-font-color-light);\n }\n }\n }\n .ant-drawer-body {\n iframe {\n max-width: 100%;\n }\n }\n }\n }\n }\n }\n\n .ant-table-filter-trigger:hover {\n color: var(--velotax-font-color-light);\n }\n .ant-table-filter-dropdown-btns {\n border-top: 1px solid var(--velotax-background-color-ghost);\n background-color: var(--velotax-background-color);\n .ant-btn-link[disabled] {\n color: var(--velotax-font-color-ghost);\n }\n }\n .ant-dropdown-menu-item-selected {\n background-color: var(--velotax-background-color-ghost);\n }\n\n @media only screen and (min-device-width: 813px) {\n .ant-drawer.modal-drawer,\n .ant-drawer.help-drawer {\n .ant-drawer-content-wrapper {\n .ant-drawer-content {\n .ant-drawer-wrapper-body {\n .ant-drawer-body {\n padding: 32px;\n }\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { AuthProvider } from \"./AuthContext\";\nimport { BrokerProvider } from \"./BrokerContext\";\nimport { HistoryProvider } from \"./HistoryContext\";\nimport { CarteiraProvider } from \"./CarteiraContext\";\nimport { B3IntegrationProvider } from \"./B3IntegrationContext\";\nimport { RequireAccessProvider } from \"./RequireAccessContext\";\nimport { TransferenciaCustodiaProvider } from \"./TransferenciaCustodiaContext\";\nimport { UploadDecProvider } from \"./UploadDecContext\";\nimport { OldTransactionsProvider } from \"./OldTransactionsContext\";\nimport { NotificationProvider } from \"./NotificationContext\";\nimport { WebSocketProvider } from \"./Notification.context\";\n\nconst ContextWrapper: React.FC = ({ children }) => {\n return (\n <AuthProvider>\n <WebSocketProvider>\n <CarteiraProvider>\n <NotificationProvider>\n <BrokerProvider>\n <HistoryProvider>\n <B3IntegrationProvider>\n <UploadDecProvider>\n <OldTransactionsProvider>\n <TransferenciaCustodiaProvider>\n <RequireAccessProvider>{children}</RequireAccessProvider>\n </TransferenciaCustodiaProvider>\n </OldTransactionsProvider>\n </UploadDecProvider>\n </B3IntegrationProvider>\n </HistoryProvider>\n </BrokerProvider>\n </NotificationProvider>\n </CarteiraProvider>\n </WebSocketProvider>\n </AuthProvider>\n );\n};\n\nexport default ContextWrapper;\n","import { createGlobalStyle } from \"styled-components\";\n\nexport default createGlobalStyle`\n .velotax-historic-list.ant-list.ant-list-split {\n padding: 0;\n margin: 32px 0 0;\n .ant-spin-nested-loading {\n .ant-spin-container {\n .ant-list-items {\n .ant-list-item {\n padding: 0;\n border-radius: 4px;\n margin-bottom: 16px;\n position: relative;\n border: 2px solid var(--velotax-ghost);\n .ant-list-item-meta {\n .ant-list-item-meta-content {\n .ant-list-item-meta-title {\n margin: 0;\n height: 48px;\n display: flex;\n font-size: 1rem;\n font-weight: 700;\n padding: 12px 24px;\n line-height: 1.5rem;\n align-items: center;\n justify-content: space-between;\n color: var(--velotax-font-color-light);\n background-color: var(--velotax-ghost);\n .ant-switch {\n &:not(.ant-switch-checked) {\n padding-right: 6px;\n }\n &.ant-switch-checked {\n padding-left: 6px;\n background-color: var(--ant-success-color);\n }\n }\n }\n .ant-list-item-meta-description {\n padding: 16px 24px;\n color: var(--velotax-font-color-light);\n .ant-space.ant-space-vertical {\n gap: 2px !important;\n .ant-space-item {\n .ant-typography {\n & > span {\n width: 120px;\n display: inline-block;\n }\n strong {\n font-weight: 700;\n word-spacing: 2px;\n }\n }\n .tax-value {\n font-weight: 700;\n word-spacing: 2px;\n letter-spacing: -1px;\n color: var(--velotax-font-color-light);\n }\n .no-plan-imposto-a-pagar {\n display: flex;\n align-items: baseline;\n .ant-btn {\n padding: 0;\n height: 24px;\n font-size: 14px;\n font-weight: 600;\n display: inline-flex;\n strong {\n color: var(--ant-primary-color);\n display: flex;\n font-weight: 500;\n align-items: center;\n word-spacing: -0.5px;\n }\n }\n }\n }\n }\n }\n }\n }\n .ant-list-item-action {\n right: 16px;\n display: flex;\n margin-left: 24px;\n position: absolute;\n top: calc(50% + 6px);\n li + li {\n margin-left: 8px;\n }\n & > li {\n padding: 0;\n color: var(--velotax-font-color-light);\n .MuiButton-containedSecondary {\n height: 36px;\n padding: 4px 24px;\n }\n .ant-btn-link {\n height: 36px;\n background-color: var(--velotax-ghost);\n &.ant-btn-icon-only {\n width: 36px;\n }\n :hover {\n opacity: 0.7;\n }\n svg {\n stroke-width: 0.3px;\n fill: var(--ant-primary-color);\n }\n }\n .ant-list-item-action-split {\n opacity: 0;\n }\n }\n }\n }\n }\n }\n }\n }\n\n @media only screen and (max-device-width: 812px) {\n .velotax-historic-list.ant-list.ant-list-split {\n .ant-spin-nested-loading {\n .ant-spin-container {\n .ant-list-items {\n .ant-list-item {\n flex-wrap: nowrap;\n align-items: unset;\n flex-direction: column;\n justify-content: unset;\n .ant-list-item-meta {\n .ant-list-item-meta-content {\n .ant-list-item-meta-title {\n padding: 12px 16px;\n }\n .ant-list-item-meta-description {\n padding: 16px;\n .ant-space.ant-space-vertical {\n width: 100%;\n .ant-space-item {\n .ant-typography {\n & > * {\n width: 50%;\n text-align: right;\n display: inline-block;\n }\n .tax-value {\n text-align: right;\n }\n span + span {\n text-align: right;\n }\n & > span {\n width: 50%;\n text-align: left;\n }\n }\n .no-plan-imposto-a-pagar {\n flex-wrap: nowrap;\n white-space: nowrap;\n .ant-btn {\n display: flex;\n margin-left: 4px;\n padding: 0 !important;\n justify-content: end;\n }\n }\n }\n }\n }\n }\n }\n .ant-list-item-action {\n top: unset;\n right: unset;\n margin-left: 0;\n position: relative;\n justify-content: end;\n padding: 8px 12px;\n border-top: 2px solid var(--velotax-background-color-ghost);\n .ant-btn-primary {\n width: 100%;\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { Result, Row } from \"antd\";\nimport { ErrorBoundary } from \"@rollbar/react\";\nimport Button from \"../Button\";\nimport { Container } from \"../../pages/PageNotFound\";\nimport { ReactComponent as Veloicon } from \"../../assets/velotax/veloicon.svg\";\n\nconst FallbackUI = () => (\n <Container>\n <Result\n icon={<Veloicon className=\"error\" />}\n title=\"Erro inesperado\"\n subTitle=\"Um erro inesperado ocorreu\"\n extra={\n <Row justify=\"center\">\n <Button\n size=\"large\"\n type=\"primary\"\n onClick={() => (window.location.href = \"/\")}\n >\n Volte para o app\n </Button>\n </Row>\n }\n />\n </Container>\n);\n\nconst ErrorBoundaryRollbar: React.FC = ({ children }) => (\n <ErrorBoundary fallbackUI={FallbackUI}>{children}</ErrorBoundary>\n);\n\nexport default ErrorBoundaryRollbar;\n","import styled from \"styled-components\";\n\nexport const SupportButton = styled.div`\n position: fixed;\n width: 3rem;\n height: 3rem;\n right: 0.625rem;\n top: 0.625rem;\n z-index: 100;\n display: flex;\n cursor: pointer;\n user-select: none;\n border-radius: 2rem;\n align-items: center;\n justify-content: center;\n transition: 0.3s filter;\n :hover {\n filter: contrast(1.2);\n }\n :active {\n filter: contrast(1.5);\n }\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n stroke: white;\n margin-top: -0.25rem;\n }\n\n &.hide {\n display: none;\n }\n\n @media (max-device-width: 812px) {\n display: none;\n }\n`;\n","import { SupportButton } from \"./styles\";\nimport { useAuth } from \"../../contexts/AuthContext\";\nimport { QuestionCircleOutlined } from \"@ant-design/icons\";\nimport { isMobile } from \"../../utils\";\nimport { useState } from \"react\";\n\nexport const Support = () => {\n const { signed, user } = useAuth();\n const [loadingLogin, setLoadingLogin] = useState(false);\n\n const loginInSupport = async (cpf: string) => {\n try {\n setLoadingLogin(true);\n const token = localStorage.getItem(\"@VeloTax:token\");\n setLoadingLogin(false);\n const urlSupportSSO = process.env.REACT_APP_SUPPORT_URL ? `${process.env.REACT_APP_SUPPORT_URL}p/sso/${token}` : `http://localhost:3000/p/sso/${token}`;\n window.open(\n urlSupportSSO,\n isMobile() ? \"_self\" : \"_blank\"\n );\n } catch (err) {\n setLoadingLogin(false);\n }\n };\n\n\n return signed ? (\n <>\n <SupportButton\n onClick={() => {\n loginInSupport(user.user.cpf);\n }}\n >\n <QuestionCircleOutlined />\n </SupportButton>\n </>\n ) : (\n <></>\n );\n};\n","import { ConfigProvider } from \"antd\";\nimport ptBR from \"antd/lib/locale/pt_BR\";\nimport { Provider } from \"@rollbar/react\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport { createTheme, ThemeProvider } from \"@mui/material\";\nimport Routes from \"./routes\";\nimport GlobalStyles from \"./styles/global\";\nimport { ChatGPT } from \"./components/ChatGPT\";\nimport ContainerStyles from \"./styles/container\";\nimport DrawerModalStyles from \"./styles/drawer-modal\";\nimport ContextWrapper from \"./contexts/ContextWrapper\";\nimport HistoricListStyles from \"./styles/historic-list\";\nimport ErrorBoundaryRollbar from \"./components/ErrorBoundary\";\nimport { Support } from \"./components/Support\";\n\nfunction App() {\n const { host } = window.location;\n const isDev = host.includes(\"localhost\") || host.includes(\"dev\");\n const rollbarConfig = {\n accessToken: \"30ca0272bd6e40e0bd69c225fa9e2c64\",\n captureUncaught: true,\n captureUnhandledRejections: true,\n payload: {\n environment: isDev ? \"development\" : \"production\",\n },\n };\n\n const theme = createTheme({\n palette: {\n primary: {\n main: \"#18191a\",\n },\n secondary: {\n main: \"#fbc105\",\n },\n info: {\n main: \"#ffff\",\n },\n },\n });\n\n return (\n <Provider config={rollbarConfig}>\n <ThemeProvider theme={theme}>\n <ErrorBoundaryRollbar>\n <ConfigProvider\n locale={ptBR}\n renderEmpty={() => \"Nenhum dado encontrado\"}\n >\n <Router>\n <ContextWrapper>\n <Routes />\n <GlobalStyles />\n {/* <ZendeskStyles /> */}\n {/* <ZendeskWidget /> */}\n <ContainerStyles />\n <DrawerModalStyles />\n <HistoricListStyles />\n <ChatGPT />\n <Support />\n </ContextWrapper>\n </Router>\n </ConfigProvider>\n </ErrorBoundaryRollbar>\n </ThemeProvider>\n </Provider>\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport \"antd/dist/antd.variable.min.css\";\nimport \"react-credit-cards/es/styles-compiled.css\";\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}