{"version":3,"sources":["assets/icons/icon-alert-alert.svg","assets/icons/icon-alert-error.svg","assets/icons/icon-alert-info.svg","assets/icons/icon-alert-success.svg","components/ToastContainer/Toast/styles.js","components/ToastContainer/Toast/index.jsx","components/ToastContainer/styles.js","components/ToastContainer/index.jsx","hooks/toast.jsx","hooks/index.jsx","styles/theme.js","assets/icons/icon-input-success.svg","assets/icons/icon-input-error.svg","components/Form/styles.js","components/TextField/styles.js","components/TextField/index.jsx","api/auth/auth.js","api/defaultoption.js","api/clientes.js","components/Loader/styles.js","components/Loader/index.jsx","components/Header/styles.js","components/Button/styles.js","components/PreRegisterForm/styles.js","styles/titles.js","components/FormPF/fieldValidator.js","components/PreRegisterForm/index.jsx","api/cadastro.js","components/Tooltip/styles.js","styles/radio.js","components/FormPF/Steps/styles.js","components/FormPF/Steps/Step1.jsx","components/FormPF/masks.js","components/FormPF/styles.js","components/FormPF/Steps/Step2.jsx","components/Tooltip/left.jsx","components/FormPJ/fieldValidator.js","components/FormPF/Steps/Step3.jsx","styles/accordion.js","components/AccordionItem/index.jsx","components/AccordionButton/styles.js","components/AccordionButton/index.jsx","components/FormPF/index.jsx","components/FormPJ/Steps/styles.js","components/FormPJ/Steps/Step1.jsx","contexts/UserContext.tsx","components/FormPJ/Steps/Step2.jsx","components/FormPJ/masks.js","assets/icons/icon-arrow-down.svg","components/Select/styles.js","components/Select/index.jsx","components/FormPJ/Steps/Step3.jsx","components/FormPJ/styles.js","api/cadastro.ts","components/FormPJ/index.jsx","templates/cadastro/index.jsx","components/Header/index.tsx","api/traceLog.js","utils/traceLogAcessos.js","hooks/useQuery.jsx","pages/Home/index.jsx","components/CadastroCard/styles.js","components/CadastroCard/index.jsx","pages/End/index.jsx","store/ducks/facebook.js","pages/Auth/index.jsx","assets/icons/icon-search.svg","assets/icons/icon-menu.svg","assets/icons/icon-profile.svg","assets/icons/icon-whishlist.svg","assets/icons/icon-assinatura.svg","assets/icons/icon-contratos.svg","assets/icons/icon-local.svg","assets/icons/icon-info.svg","assets/icons/icon-footer-facebook.svg","assets/icons/icon-footer-twitter.svg","assets/icons/icon-footer-instagram.svg","assets/icons/icon-footer-linkedin.svg","assets/icons/icon-footer-youtube.svg","assets/icons/icon-cart.svg","assets/icons/icon-check.svg","assets/icons/icon-close.svg","assets/icons/icon-eye.svg","assets/icons/invisible.svg","assets/icons/icon-arrow-button-right.svg","assets/icons/icon-arrow-button-left.svg","styles/scroll.js","styles/icons.js","styles/global.js","styles/checkbox.js","App.jsx","reportWebVitals.js","store/ducks/rootReducer.js","store/index.js","index.js"],"names":["toastTypeVariations","info","css","success","error","warning","Container","styled","animated","div","props","type","hasDescription","icons","src","IconAlertInfo","style","width","marginRight","height","alt","IconAlertError","IconAlertSuccess","IconAlert","Toast","message","removeToast","useToast","removeTime","timer","useEffect","setTimeout","id","clearTimeout","Number","description","title","onClick","size","ToastContainer","messages","messagesWithTransitions","useTransition","from","right","opacity","enter","leave","slice","map","item","key","msgArray","ToastContext","createContext","ToastProvider","children","useState","setMessages","addToast","useCallback","v4","Provider","value","context","useContext","Error","AppProvider","theme","grid","container","gutter","border","radius","font","family","thin","extraLight","light","normal","medium","semiBold","bold","extraBold","black","sizes","xsmall","small","large","xlarge","xxlarge","huge","colors","primary","cart","grey","mediumGrey","alert","white","backgroundSuccess","backgroundError","backgroundInfo","backgroundAlert","spacings","xxsmall","layers","base","menu","overlay","modal","alwaysOnTop","transition","default","fast","media","ipad","cel","FormGroup","FormGroupIcon","input","IconInputSuccess","IconInputError","InputWrapper","Input","Label","label","p","wrapperModifiers","Wrapper","disabled","required","TextField","name","labelFor","initialValue","maxlength","onInput","pattern","reference","setValue","htmlFor","ref","maxLength","onChange","e","newValue","currentTarget","TOKEN_KEY","defaultOptions","headers","window","localStorage","getItem","clientes","email","fetch","process","method","getLoggedUser","params","getLoggedCompany","getInscricaoEstadual","inscricaoEstadual","uf","post","cargos","departamentos","atividades","funcionarios","validarDocumento","documento","loader","keyframes","loaderDot","loaderDotBefore","Background","LoaderContainer","LoaderDot","Loader","header","onlyLogo","Logo","img","NavLinks","Button","ButtonPrimary","ButtonBlock","ButtonBack","ButtonIcon","section","HeaderStyles","RegisterWrapper","PageContent","WrapperSmall","RegisterCard","Title","h2","PageTitle","RegisterColumns","RegisterColumn","AdvanceButton","button","cpfRepetido","a","res","json","body","setItem","preCadastro","undefined","existe","cpfRepetidoVal","emailVal","test","String","toLowerCase","emailConfVal","confEmail","length","match","passVal","passConfVal","pass","passConf","password","validatePassword","fieldName","confirmPassword","passwordValidation","uppercase","lowercase","specialChar","number","matchConfirmation","validarCPF","cpf","replace","sum","i","parseInt","charAt","digit1","digit2","cpfVal","extraError","birthVal","dateRegex","split","day","month","year","now","Date","currentYear","getFullYear","currentMonth","getMonth","daysInMonth","getDate","validDDDs","cellVal","sanitizedValue","ddd","substring","includes","fixPhoneVal","nameVal","arr","preNameVal","fieldVal","val","fieldValComp","k","cepVal","invalid","ufVal","sizeVal","PreRegisterForm","setType","setEmail","setSelectedType","selectedType","load","setLoad","inputRef0","useRef","handleSelectType","handleConfirm","preventDefault","valid","status","current","focus","action","onSubmit","className","onKeyDown","keyCode","handleKeypress","placeholder","target","checked","location","href","cursor","cadastro","cadastroClientePF","JSON","stringify","preCadastroClientePF","cadastroClientePJ","preCadastroClientePJ","getCEP","CEP","LabelTooltip","TooltipBox","WrapperL","RadioStylesOrigem","TermsWrapper","ErrorList","ul","TitleErrorList","h3","li","isValid","isPasswordEmpty","CaptchaContainer","RadioGroup","RegisterStep1","formValues","handleKeyDown","handleChangeStep","emailConfirm","passwordConfirm","passView","setPassView","passConfView","setPassConfView","isBackButtonClicked","setBackbuttonPress","history","pushState","pathname","addEventListener","onBackButtonEvent","removeEventListener","isNewPasswordEmpty","setNewPasswordEmpty","isNewPasswordValid","setNewPasswordValid","setPasswordValidation","isPasswordValid","handleChange","padding","trimStart","onBlur","trimEnd","errorTrigger","noMask","cellMask","fixPhoneMask","dddString","substr","phoneString","dateString","date","cepMask","nameMask","WrapperMedium","NaoSei","ContainerEndereco","RegisterStep2","cep","logradouro","numero","complemento","bairro","cidade","invalidCEP","isCepUnico","setIsCepUnico","document","activeElement","setActiveElement","onFocus","event","listenersReady","useActiveElement","checkCEPUnico","lastDigits","endereco","tipoLogradouro","clearCEP","mask","open","Tooltip","icon","TooltipBody","cnpjRepetido","setReceitaFederalEnabled","validacaoExternaDadosClientePJ","cnpjRepetidoVal","validateReceitaError","field","validarCNPJ","cnpj","calcularDigito","tamanho","soma","pos","numeros","digitos","cnpjVal","contatoVal","razaoVal","comercialPhoneVal","inscEstVal","validateInscEstadual","cepUF","then","text","data","selectValOrigem","RegisterStep3","onCaptchaChange","likelyName","dateOfBirth","cellphone","phone","emails","acceptTerms","whatsApp","cpfCadastrado","idComoConheceu","cpfTrigger","setCpfTrigger","options","setOptions","getComoConheceu","response","filteredOptions","filter","fetchOptions","option","nome","sucess","transform","transformOrigin","sitekey","rel","AccordionMenu","AccordionItens","AccordionItemStyle","AccordionIcon","AccordionItemTitle","AccordionItem","isActive","step1Success","step2Success","titleRef","scrollIntoView","behavior","block","getIcon","BackButton","FormFooterContent","AccordionButton","trigger","handleSubmit","handleButtonClick","forwards","handleSubmitClick","FormPF","dados","useSelector","store","facebook","router","useHistory","setTrigger","setCurrent","genre","1","2","3","setFormvalues","expired","captcha","setCaptcha","titleRefs","prev","handleAccordionClick","newActiveAccordion","msg","console","log","formBody","dataNascimento","senha","token","guidJwt","apelido","receberNovidades","receberWhatsApp","rg","rgOrgaoEmissor","telefoneResidencialDDD","telefoneResidencialNumero","telefoneCelularNumero","telefoneCelularDDD","telefoneComercialDDD","telefoneComercialNumero","telefoneComercialRamal","padrao","tipoEndereco","pontoReferencia","clienteSocialMediaModel","userId","facebookId","providerKey","loginProvider","parse","push","errors","Messages","setStep1Success","setStep2Success","contato","blur","LabelInfo","confirmaEmailContato","confirmaSenha","pf","pj","sexo","idCargo","idDepartamento","razaoSocial","nomeFantasia","inscricaoMunicipal","dataAbertura","idAtividade","idSubAtividade","numeroFuncionariosAdministrativos","numeroFuncionariosTotal","UserContext","UserContextProvider","userType","setUserType","userName","setUserName","userEmail","setUserEmail","validacaoExternaPJ","setValidacaoExternaPJ","userPF","setUserPF","userPJ","setUserPJ","step","setStep","getUserData","createUser","receitaFederalError","setValidInscEst","cnpjCadastrado","cnpjTrigger","setCnpjTrigger","showToaster","isInscEstValid","setIsInscEstValid","isUfAutoFilled","setIsUfAutoFilled","setIsUfValid","validate","result","isento","setListenersReady","handleBlurInscEstadual","handleChangeUF","ufValue","display","justifyContent","readOnly","marginTop","SelectWrapper","Select","select","IconArrowDown","Option","multiple","setCargos","setDepartamentos","apiCall","handleSelectChange","selectedValue","cargoId","cargo","departamentoId","departamento","aceiteTermos","validarReceitaFederal","axios","catch","FormPJ","validInscEst","setReceitaFederalError","receberEmailMarketing","emailLogin","4","handleReceitaFederalErrorChange","validatePJData","filterMessage","idEtapa","cepFaturamento","numeroEndereco","salvar","values","RegisterTemplate","setName","Header","role","traceLog","logAcessos","logAcessosPosCadastro","postLogAcessos","ip","currentUrl","previousUrl","utmSource","utmMedium","utmCampaign","url","httpReferer","adWords","idLojaVirtual","EmailCliente","getLocalStorageLog","currentPath","origin","clientip","redirectUrl","useQuery","search","useLocation","useMemo","URLSearchParams","Cadastro","Page","Tittle","IconWrapper","Description","Footer","CadastroCard","End","state","saveNewUserLog","Types","INITIAL_STATE","facebookid","Auth","dispatch","useDispatch","useQueryParam","StringParam","waitGroup","setWaitGroup","query","payload","get","removeItem","getQueryParamsToTracelog","Scroll","IconArrowBtnRight","GlobalStyles","createGlobalStyle","removeBg","RadioStyles","IconSearch","IconMenu","IconProfile","IconWishlist","IconAssinatura","IconContratos","IconLocal","IconInfo","IconFooterFacebook","IconFooterTwitter","IconFooterInstagram","IconFooterLinkedin","IconFooterYoutube","IconCart","IconCheck","IconClose","IconEye","IconEyeCut","IconArrowBtnLeft","IconStyles","CheckBoxStyles","IconArrowButtonLeft","App","TagManager","initialize","gtmId","script","createElement","async","appendChild","exact","path","component","Home","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","combineReducers","createStore","rootreducer","ReactDOM","render","StrictMode","ReactRouterRoute","Route","getElementById"],"mappings":"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","file":"static/js/main.dd81f629.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/icon-alert-alert.d0728114.svg\";","export default __webpack_public_path__ + \"static/media/icon-alert-error.b20571c2.svg\";","export default __webpack_public_path__ + \"static/media/icon-alert-info.5a546e72.svg\";","export default __webpack_public_path__ + \"static/media/icon-alert-success.c9097775.svg\";","import styled, { css } from 'styled-components'\nimport { animated } from 'react-spring'\n\n\nconst toastTypeVariations = {\n info: css`\n background: #f1f8ff;\n color: #1877f2;\n `,\n success: css`\n background: #e5f7e7;\n color: #27ae60;\n `,\n error: css`\n background: #feeaea;\n color: #d22630;\n `,\n warning: css`\n background: #fff3e7;\n color: #ff9017;\n `\n}\nexport const Container = styled(animated.div)`\n position: relative;\n padding: 20px 30px 16px 20px;\n border-radius: 5px;\n display: flex;\n & + div {\n margin-top: 8px;\n }\n ${(props) => toastTypeVariations[props.type || 'info']}\n > svg {\n margin: 4px 30px 0 10px;\n }\n div {\n flex: 1;\n p {\n margin-top: 4px;\n font-size: 14px;\n opacity: 0.8;\n line-height: 20px;\n }\n }\n button {\n position: absolute;\n right: 30px;\n top: 24px;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n }\n ${(props) =>\n !props.hasDescription &&\n css`\n align-items: center;\n svg {\n margin-top: 0;\n }\n `}\n`\n","import React, { useEffect } from 'react'\r\nimport { HiX } from 'react-icons/hi'\r\n\r\nimport IconAlert from '../../../assets/icons/icon-alert-alert.svg'\r\nimport IconAlertError from '../../../assets/icons/icon-alert-error.svg'\r\nimport IconAlertInfo from '../../../assets/icons/icon-alert-info.svg'\r\nimport IconAlertSuccess from '../../../assets/icons/icon-alert-success.svg'\r\n\r\nimport { useToast } from '../../../hooks/toast'\r\n\r\nimport { Container } from './styles'\r\n\r\nconst icons = {\r\n info: (\r\n <img\r\n src={IconAlertInfo}\r\n style={{ width: 30, marginRight: 12, height: 30 }}\r\n alt=\"\"\r\n />\r\n ),\r\n error: (\r\n <img\r\n src={IconAlertError}\r\n style={{ width: 30, marginRight: 12, height: 30 }}\r\n alt=\"\"\r\n />\r\n ),\r\n success: (\r\n <img\r\n src={IconAlertSuccess}\r\n style={{ width: 30, marginRight: 12, height: 30 }}\r\n alt=\"\"\r\n />\r\n ),\r\n warning: (\r\n <img\r\n src={IconAlert}\r\n style={{ width: 30, marginRight: 12, height: 30 }}\r\n alt=\"\"\r\n />\r\n )\r\n}\r\n\r\nconst Toast = ({ message, style }) => {\r\n const { removeToast } = useToast()\r\n\r\n let removeTime = message.timer || 4000\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n removeToast(message.id)\r\n }, removeTime)\r\n\r\n return () => {\r\n clearTimeout(timer)\r\n }\r\n }, [removeToast, message.id, removeTime])\r\n\r\n return (\r\n <Container\r\n type={message.type}\r\n hasDescription={Number(!!message.description)}\r\n style={style}\r\n >\r\n {icons[message.type || 'info']}\r\n <div>\r\n <strong>{message.title}</strong>\r\n {message.description && <p>{message.description}</p>}\r\n </div>\r\n\r\n <button onClick={() => removeToast(message.id)} type=\"button\">\r\n <HiX size={24} />\r\n </button>\r\n </Container>\r\n )\r\n}\r\n\r\nexport default Toast\r\n","import styled from 'styled-components'\r\n\r\nexport const Container = styled.div`\r\n max-width: 100vw;\r\n width: 100%;\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n overflow: hidden;\r\n z-index: 1001;\r\n`\r\n","import React from 'react'\r\nimport { useTransition } from 'react-spring'\r\n\r\nimport Toast from './Toast'\r\nimport { Container } from './styles'\r\n\r\nconst ToastContainer = ({ messages }) => {\r\n const messagesWithTransitions = useTransition(\r\n messages,\r\n (message) => message.id,\r\n {\r\n from: { right: '-120%', opacity: 0 },\r\n enter: { right: '0%', opacity: 1 },\r\n leave: { right: '-120%', opacity: 0 }\r\n }\r\n )\r\n\r\n return (\r\n <Container>\r\n {messagesWithTransitions.slice(-1).map(({ item, key, props }) => (\r\n <Toast key={key} style={props} message={item} msgArray={messages} />\r\n ))}\r\n </Container>\r\n )\r\n}\r\n\r\nexport default ToastContainer\r\n","import React, { createContext, useContext, useCallback, useState } from 'react'\r\nimport { v4 } from 'uuid'\r\n\r\nimport ToastContainer from '../components/ToastContainer/index'\r\n\r\nconst ToastContext = createContext({})\r\n\r\nconst ToastProvider = ({ children }) => {\r\n const [messages, setMessages] = useState([])\r\n\r\n const addToast = useCallback(({ type, title, description, timer }) => {\r\n const id = v4()\r\n\r\n const toast = {\r\n id,\r\n type,\r\n title,\r\n description,\r\n timer\r\n }\r\n\r\n // setMessages((state) => [...state, toast])\r\n setMessages(toast)\r\n }, [])\r\n\r\n const removeToast = useCallback((id) => {\r\n // setMessages((state) => state.filter((message) => message.id !== id))\r\n setMessages(messages)\r\n }, [])\r\n\r\n return (\r\n <ToastContext.Provider value={{ addToast, removeToast }}>\r\n {children}\r\n <ToastContainer messages={messages} />\r\n </ToastContext.Provider>\r\n )\r\n}\r\n\r\nfunction useToast() {\r\n const context = useContext(ToastContext)\r\n\r\n if (!context) {\r\n throw new Error('useToast must be used within a ToastProvider')\r\n }\r\n\r\n return context\r\n}\r\n\r\nexport { ToastProvider, useToast }\r\n","import React from 'react'\r\n\r\nimport { ToastProvider } from './toast'\r\n\r\nconst AppProvider = ({ children }) => (\r\n <ToastProvider>{children}</ToastProvider>\r\n)\r\n\r\nexport default AppProvider\r\n","export const theme = {\r\n grid: {\r\n container: '130rem',\r\n gutter: '3.2rem'\r\n },\r\n border: {\r\n radius: '0.4rem'\r\n },\r\n font: {\r\n family:\r\n \"Montserrat, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif\",\r\n thin: 100,\r\n extraLight: 200,\r\n light: 300,\r\n normal: 400,\r\n medium: 500,\r\n semiBold: 600,\r\n bold: 700,\r\n extraBold: 800,\r\n black: 900,\r\n sizes: {\r\n xsmall: '1.2rem',\r\n small: '1.4rem',\r\n medium: '1.6rem',\r\n large: '1.8rem',\r\n xlarge: '2.0rem',\r\n xxlarge: '2.8rem',\r\n huge: '5.2rem'\r\n }\r\n },\r\n colors: {\r\n primary: '#D22630',\r\n cart: '#27AE60',\r\n grey: '#F2F2F2',\r\n mediumGrey: '#4A4A4A',\r\n success: ' #5CC187',\r\n error: '#D22630',\r\n info: '#1877F2',\r\n alert: '#FF9017',\r\n white: '#FFFFFF',\r\n black: '#222222',\r\n backgroundSuccess: '#E5F7E7',\r\n backgroundError: '#FEEAEA',\r\n backgroundInfo: '#F1F8FF',\r\n backgroundAlert: '#FFF3E7'\r\n },\r\n spacings: {\r\n xxsmall: '0.8rem',\r\n xsmall: '1.6rem',\r\n small: '2.4rem',\r\n medium: '3.2rem',\r\n large: '4.0rem',\r\n xlarge: '4.8rem',\r\n xxlarge: '5.6rem'\r\n },\r\n layers: {\r\n base: 10,\r\n menu: 20,\r\n overlay: 30,\r\n modal: 40,\r\n alwaysOnTop: 50\r\n },\r\n transition: {\r\n default: '0.3s ease-in-out',\r\n fast: '0.1s ease-in-out'\r\n },\r\n media: {\r\n ipad: '1170px',\r\n cel: '600px'\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/icon-input-success.ba718699.svg\";","export default __webpack_public_path__ + \"static/media/icon-input-error.580ee1b3.svg\";","import styled, { css } from 'styled-components'\nimport IconInputSuccess from '../../assets/icons/icon-input-success.svg'\nimport IconInputError from '../../assets/icons/icon-input-error.svg'\n\nexport const FormGroup = styled.div`\n ${({ theme }) => css`\n margin-bottom: 20px;\n position: relative;\n\n label {\n font-size: 16px;\n font-weight: 500;\n color: #626161;\n display: block;\n letter-spacing: -1px;\n margin-bottom: 5px;\n }\n\n small {\n display: block;\n margin-bottom: 5px;\n }\n\n @media (max-width: ${theme.media.ipad}) {\n &.last-element {\n margin-bottom: 132px;\n }\n }\n\n @media (max-width: ${theme.media.cel}) {\n &.last-element {\n margin-bottom: 180px;\n }\n }\n\n &.required {\n label {\n &:after {\n content: '*';\n color: ${theme.colors.primary};\n display: inline-block;\n margin-left: 1px;\n }\n }\n }\n `}\n`\n\nexport const FormGroupIcon = styled(FormGroup)`\n ${({ theme }) => css`\n position: relative;\n\n .icon {\n position: absolute;\n right: 35px;\n top: 15px;\n cursor: pointer;\n transition: all 400ms;\n\n &:hover {\n background-color: ${theme.colors.primary};\n }\n }\n\n .icon-eye {\n top: 18px;\n }\n `}\n`\n\nexport const FormGroupPlaceholder = css`\n position: relative;\n\n .form-input {\n padding-left: 60px;\n }\n`\n\nexport const FormInput = styled.input`\n ${({ theme }) => css`\n border: 2px solid #616161;\n border-radius: 6px;\n padding: 15px 15px;\n width: 100%;\n transition: all 400ms;\n\n &::placeholder {\n font-family: 'Montserrat', sans-serif;\n font-weight: 400;\n color: #afaeae;\n }\n\n &:focus {\n border-color: ${theme.colors.primary};\n }\n\n // Feedbacks.\n &.input-success {\n background: ${theme.colors.backgroundSuccess} url(${IconInputSuccess})\n right 10px center no-repeat !important;\n border-color: ${theme.colors.success};\n }\n\n &.input-error {\n background: ${theme.colors.backgroundError} url(${IconInputError}) right\n 10px center no-repeat !important;\n border-color: ${theme.colors.error};\n }\n `}\n`\n\nexport const FormTextPlaceholder = css`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 15px;\n`\n","import styled, { css } from 'styled-components'\nimport IconInputError from '../../assets/icons/icon-input-error.svg'\nimport IconInputSuccess from '../../assets/icons/icon-input-success.svg'\n\nexport const InputWrapper = styled.div``\n\nexport const Input = styled.input`\n ${({ theme }) => css`\n border: 1px solid #626161;\n border-radius: 6px;\n padding: 15px 15px;\n width: 100%;\n transition: all 400ms;\n\n @media (max-width: ${theme.media.ipad}) {\n padding-right: 32px;\n }\n\n &::-ms-reveal {\n display: none;\n }\n\n &::placeholder {\n font-family: 'Montserrat', sans-serif;\n font-weight: 400;\n color: #afaeae;\n }\n\n &:focus {\n border-color: ${theme.colors.primary};\n }\n `}\n`\n\nexport const Label = styled.label`\n cursor: pointer;\n font-size: 16px;\n font-weight: 500;\n color: #616161;\n display: block;\n letter-spacing: -1px;\n margin-bottom: 5px;\n`\n\nexport const Error = styled.p`\n ${({ theme }) => css`\n color: ${theme.colors.error};\n font-style: italic;\n margin-top: 5px;\n display: block;\n font-size: 12px;\n `}\n`\n\nconst wrapperModifiers = {\n disabled: (theme) => css`\n ${Label} {\n cursor: not-allowed;\n color: #4a4a4a;\n }\n\n ${Input} {\n cursor: not-allowed;\n background: ${theme.colors.grey};\n }\n `,\n\n error: (theme) => css`\n ${InputWrapper} {\n border-color: ${theme.colors.error};\n }\n\n ${Input} {\n background: ${theme.colors.backgroundError} url(${IconInputError}) right\n 10px center no-repeat !important;\n border-color: ${theme.colors.error};\n }\n `,\n\n success: (theme) => css`\n ${Input} {\n background: ${theme.colors.backgroundSuccess} url(${IconInputSuccess})\n right 10px center no-repeat !important;\n border-color: ${theme.colors.success};\n }\n `,\n required: (theme) => css`\n ${Label} {\n &:after {\n content: '*';\n color: ${theme.colors.primary};\n display: inline-block;\n margin-left: 4px;\n }\n }\n `\n}\n\nexport const Wrapper = styled.div`\n ${({ theme, disabled, error, success, required }) => css`\n ${disabled && wrapperModifiers.disabled(theme)};\n ${error && wrapperModifiers.error(theme)}\n ${success && wrapperModifiers.success(theme)}\n ${required && wrapperModifiers.required(theme)}\n\n margin-bottom: 20px;\n position: relative;\n height: 67px;\n\n small {\n display: block;\n margin-bottom: 5px;\n }\n `}\n`\n","import { useState } from 'react'\n\nimport * as S from './styles'\n\nconst TextField = ({\n name,\n label,\n labelFor = '',\n initialValue = '',\n maxlength = 50,\n onInput,\n required = false,\n disabled = false,\n success = false,\n error,\n type = 'text',\n pattern,\n reference,\n ...props\n}) => {\n const [value, setValue] = useState(initialValue)\n\n const onChange = (e) => {\n const newValue = e.currentTarget.value\n setValue(newValue)\n\n !!onInput && onInput(newValue)\n }\n\n return (\n <S.Wrapper\n disabled={disabled}\n error={!!error}\n success={success}\n required={required}\n >\n {!!label && <S.Label htmlFor={labelFor}>{label}</S.Label>}\n <S.InputWrapper>\n <S.Input\n ref={reference}\n maxLength={maxlength}\n type={type}\n disabled={disabled}\n onChange={onChange}\n value={value}\n name={name}\n pattern={pattern}\n {...props}\n />\n </S.InputWrapper>\n {!!error && <S.Error>{error}</S.Error>}\n </S.Wrapper>\n )\n}\n\nexport default TextField\n","export const TOKEN_KEY = 'authtoken'\r\nexport const isAuthenticated = () =>\r\n typeof window !== 'undefined'\r\n ? localStorage.getItem(TOKEN_KEY) !== null\r\n : false\r\nexport const getToken = () =>\r\n typeof window !== 'undefined' ? localStorage.getItem(TOKEN_KEY) : ''\r\nexport const login = (token) => {\r\n localStorage.setItem(TOKEN_KEY, token)\r\n}\r\nexport const logout = () => {\r\n localStorage.removeItem(TOKEN_KEY)\r\n}\r\n","import * as auth from './auth/auth'\r\n\r\nconst defaultOptions = {\r\n headers: {\r\n 'Authorization': 'Bearer ' + auth.getToken(),\r\n 'Content-Type': 'application/problem+json; charset=utf-8',\r\n 'Access-Control-Allow-Origin': '*'\r\n }\r\n}\r\n\r\nexport default defaultOptions\r\n","import defaultOptions from './defaultoption'\r\n\r\nconst clientes = {\r\n async email(email) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_ENDPOINT}clientes/clientes/validar-email?email=${email}`,\r\n { method: 'get', headers: { 'Content-Type': 'application/json' } }\r\n )\r\n },\r\n async getLoggedUser(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_ENDPOINT + 'clientes/clientes/pessoas-fisicas',\r\n params\r\n )\r\n },\r\n async getLoggedCompany(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_ENDPOINT +\r\n 'clientes/clientes-pessoas-juridicas',\r\n params\r\n )\r\n },\r\n async getInscricaoEstadual(inscricaoEstadual, uf) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-juridicas/inscricao-estadual/${inscricaoEstadual}/${uf}`,\r\n {\r\n method: 'GET',\r\n headers: defaultOptions.headers\r\n }\r\n )\r\n },\r\n async post(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_ENDPOINT + 'clientes/clientes/pessoas-fisicas',\r\n params\r\n )\r\n },\r\n async cargos(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_ENDPOINT + 'clientes/cargos',\r\n params\r\n )\r\n },\r\n async departamentos(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_ENDPOINT + 'clientes/departamentos',\r\n params\r\n )\r\n },\r\n async atividades(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_CLIENTES + 'atividades',\r\n params\r\n )\r\n },\r\n async funcionarios(params) {\r\n return await fetch(\r\n process.env.REACT_APP_API_CLIENTES + 'funcionarios',\r\n params\r\n )\r\n },\r\n\r\n async validarDocumento(documento) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/validar-documento?documento=${documento}`,\r\n {\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json' }\r\n }\r\n )\r\n }\r\n}\r\n\r\nexport default clientes\r\n","import styled, {keyframes} from 'styled-components'\r\n\r\nconst loader = keyframes`\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n`\r\n\r\nconst loaderDot = keyframes`\r\n 80%, 100% {\r\n transform: rotate(360deg);\r\n }\r\n`\r\n\r\nconst loaderDotBefore = keyframes`\r\n 50% {\r\n transform: scale(0.4);\r\n }\r\n 100%, 0% {\r\n transform: scale(1.0);\r\n }\r\n`\r\nexport const Background = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.1);\r\n transition: background 0.2s;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n z-index: 1000;\r\n`\r\n\r\nexport const LoaderContainer = styled.div`\r\n width: 60px;\r\n height: 60px;\r\n position: relative;\r\n margin: 0 auto;\r\n z-index: 1001;\r\n animation: ${loader} 2.5s infinite linear both;\r\n`\r\n\r\nexport const LoaderDot = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n animation: ${loaderDot} 2.0s infinite ease-in-out both;\r\n\r\n &:before {\r\n content: '';\r\n display: block;\r\n width: 25%;\r\n height: 25%;\r\n background-color: #d22630;\r\n border-radius: 100%;\r\n animation: ${loaderDotBefore} 2.0s infinite ease-in-out both;\r\n }\r\n\r\n &:nth-child(1) {\r\n animation-delay: -1.1s;\r\n }\r\n\r\n &:nth-child(2) {\r\n animation-delay: -1.0s;\r\n }\r\n\r\n &:nth-child(3) {\r\n animation-delay: -0.9s;\r\n }\r\n\r\n &:nth-child(4) {\r\n animation-delay: -0.8s;\r\n }\r\n\r\n &:nth-child(5) {\r\n animation-delay: -0.7s;\r\n }\r\n\r\n &:nth-child(6) {\r\n animation-delay: -0.6s;\r\n }\r\n\r\n &:nth-child(1):before {\r\n animation-delay: -1.1s;\r\n }\r\n\r\n &:nth-child(2):before {\r\n animation-delay: -1.0s;\r\n }\r\n\r\n &:nth-child(3):before {\r\n animation-delay: -0.9s;\r\n }\r\n\r\n &:nth-child(4):before {\r\n animation-delay: -0.8s;\r\n }\r\n\r\n &:nth-child(5):before {\r\n animation-delay: -0.7s;\r\n }\r\n\r\n &:nth-child(6):before {\r\n animation-delay: -0.6s;\r\n }\r\n`\r\n\r\n","import * as S from './styles'\r\n\r\nconst Loader = (props) => {\r\n return (\r\n <S.Background>\r\n <S.LoaderContainer {...props}>\r\n <S.LoaderDot></S.LoaderDot>\r\n <S.LoaderDot></S.LoaderDot>\r\n <S.LoaderDot></S.LoaderDot>\r\n <S.LoaderDot></S.LoaderDot>\r\n <S.LoaderDot></S.LoaderDot>\r\n <S.LoaderDot></S.LoaderDot>\r\n </S.LoaderContainer>\r\n </S.Background>\r\n )\r\n}\r\n\r\nexport default Loader\r\n","import styled, { css } from 'styled-components'\n\nexport const Wrapper = styled.header`\n ${({ theme, onlyLogo }) => css`\n background: #fff;\n padding: 20px 0;\n position: relative;\n\n ${onlyLogo &&\n css`\n border-bottom: 1px solid #eeeeee;\n `}\n\n @media (max-width: ${theme.media.ipad}) {\n padding: 13px;\n }\n `}\n`\n\nexport const Header = styled.div`\n background-color: white;\n border-bottom: 1px solid #ccc;\n`\n\nexport const Container = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 20px;\n margin: 0px 50px;\n @media (max-width: 600px) {\n flex-direction: column;\n align-items: center;\n margin: 0px 10px;\n padding: 0px;\n }\n`\n\nexport const Logo = styled.img`\n width: 125px;\n @media (max-width: 600px) {\n width: 95px;\n }\n`\n\nexport const NavLinks = styled.div`\n a {\n color: #4a4a4a;\n text-decoration: none;\n margin-left: 20px;\n font-size: 1.4rem;\n font-weight: 400;\n @media (max-width: 600px) {\n font-size: 1.1rem;\n font-weight: 500;\n }\n }\n a:hover {\n color: #d22630;\n cursor: pointer;\n font-weight: 600;\n }\n`\n","import { css } from 'styled-components'\r\n\r\nexport const Button = (theme) => css`\r\n border-radius: 5px;\r\n border: 2px solid transparent;\r\n font-family: 'Montserrat', sans-serif;\r\n font-weight: 500;\r\n font-size: 16px;\r\n padding: 15px 30px;\r\n text-align: center;\r\n transition: all 400ms;\r\n\r\n & + .button {\r\n margin-left: 15px;\r\n }\r\n\r\n @media (max-width: ${theme.media.ipad}) {\r\n font-size: 14px;\r\n }\r\n`\r\n\r\nexport const ButtonPrimary = (theme) => css`\r\n background: ${theme.colors.primary};\r\n color: #ffffff;\r\n\r\n &:hover {\r\n background: darken(${theme.colors.primary}, 10%);\r\n }\r\n`\r\n\r\nexport const ButtonBlock = css`\r\n display: block;\r\n width: 100%;\r\n`\r\n\r\nexport const ButtonOutline = (theme) => css`\r\n background: transparent;\r\n border: 2px solid ${theme.colors.primary};\r\n color: ${theme.colors.primary};\r\n\r\n &:hover {\r\n border-color: #4a4a4a;\r\n color: #4a4a4a;\r\n }\r\n`\r\n\r\nexport const ButtonBack = (theme) => css`\r\n background: #ffffff;\r\n border: 2px solid ${theme.colors.primary};\r\n color: ${theme.colors.primary};\r\n\r\n &:hover {\r\n border-color: #4a4a4a;\r\n color: #4a4a4a;\r\n }\r\n`\r\n\r\nexport const ButtonIcon = css`\r\n padding: 15px 40px;\r\n vertical-align: middle;\r\n\r\n i {\r\n display: inline-block;\r\n\r\n &.icon-arrow-button-right {\r\n margin-left: 10px;\r\n }\r\n\r\n &.icon-arrow-button-left {\r\n margin-right: 10px;\r\n }\r\n }\r\n`\r\n","import styled, { css } from 'styled-components'\n\nimport * as HeaderStyles from '../../components/Header/styles'\nimport { PageTitle } from '../../styles/titles'\nimport {\n Button,\n ButtonBlock,\n ButtonPrimary\n} from '../../components/Button/styles'\n\nexport const Wrapper = styled.section`\n ${({ theme }) => css`\n margin: 0px 0px 20px 0px;\n width: 100%;\n height: 100vh;\n\n ${HeaderStyles.Wrapper} {\n border-bottom: 1px solid #eeeeee;\n }\n\n .form-input,\n .form-select {\n background-color: #ffffff;\n }\n\n @media (max-width: ${theme.media.ipad}) {\n display: block;\n padding: 13px 0;\n margin: 0;\n padding-bottom: 130px;\n\n .header-logotipo {\n img {\n margin-left: 0;\n }\n }\n }\n `}\n`\n\nexport const RegisterWrapper = styled.div`\n ${({ theme }) => css`\n margin: 100px 0;\n\n @media (max-width: ${theme.media.ipad}) {\n margin: 0;\n padding-bottom: 130px;\n }\n `}\n`\n\nexport const PageContent = styled.div`\n margin: 60px 0;\n`\n\nexport const WrapperSmall = styled.div`\n ${({ theme }) => css`\n margin: auto;\n max-width: 600px;\n position: relative;\n width: 100%;\n\n @media (max-width: ${theme.media.ipad}) {\n max-width: 90%;\n }\n `}\n`\n\nexport const RegisterCard = styled.div`\n ${({ theme }) => css`\n background: #ffffff;\n padding: 40px 80px;\n border: 1px solid #eeeeee;\n border-radius: 10px;\n box-shadow: 4px 3px 7px 2px rgba(0, 0, 0, 0.05);\n\n @media (max-width: ${theme.media.ipad}) {\n background: transparent;\n box-shadow: none;\n border: 0;\n padding: 0;\n }\n `}\n`\n\nexport const Title = styled.h2`\n ${({ theme }) => css`\n ${PageTitle(theme)}\n `}\n`\n\nexport const RegisterColumns = styled.div`\n display: flex;\n justify-content: center;\n gap: 16px;\n margin-top: -16px;\n`\n\nexport const RegisterColumn = styled.div`\n /* width: 50%; */\n`\n\nexport const AdvanceButton = styled.button`\n ${({ theme, disabled }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonPrimary(theme)}\n ${ButtonBlock}\n\n ${disabled &&\n css`\n background: ${theme.colors.grey};\n `}\n `}\n`\n","import { css } from 'styled-components'\r\n\r\nexport const PageTitle = (theme) => css`\r\n font-size: 24px;\r\n font-weight: 500;\r\n color: ${theme.colors.primary};\r\n margin-bottom: 20px;\r\n text-align: center;\r\n\r\n @media (max-width: ${theme.media.ipad}) {\r\n font-size: 22px;\r\n text-align: left;\r\n }\r\n`\r\n","import clientes from '../../api/clientes'\n\nexport const cpfRepetido = async (documento) => {\n const res = await clientes.validarDocumento(documento)\n const body = await res.json()\n localStorage.setItem('preCadastro', 'false')\n if (!!body.preCadastro) {\n localStorage.setItem('preCadastro', 'true')\n return undefined\n }\n if (!!body.existe) {\n return 'CPF já cadastrado'\n }\n return undefined\n}\n\nexport const cpfRepetidoVal = (value) => {\n return value\n}\n\nexport const emailVal = (value) => {\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return re.test(String(value).toLowerCase())\n ? undefined\n : 'Digite um e-mail válido'\n}\n\nexport const emailConfVal = (email, confEmail = '') => {\n if (confEmail?.length < 1) return 'Preencher campo obrigatório'\n if (email?.match(/@/gi)?.length !== 1) return 'Os e-mails devem ser iguais'\n return email !== confEmail ? 'Os e-mails devem ser iguais' : undefined\n}\n\nexport const passVal = (value) => {\n return value?.length < 8 ? 'Senha deve ter mais de 8 digitos' : undefined\n}\n\nexport const passValid = (password, passwordConf) => {\n const uppercaseRegex = /[A-Z]/\n const lowercaseRegex = /[a-z]/\n const specialCharRegex = /[!@#$%^*&]/\n const numberRegex = /\\d/\n if (password !== passwordConf) {\n return false\n }\n if (password.length < 8) {\n return false\n }\n if (!uppercaseRegex.test(password)) {\n return false\n }\n if (!lowercaseRegex.test(password)) {\n return false\n }\n if (!specialCharRegex.test(password)) {\n return false\n }\n if (!numberRegex.test(password)) {\n return false\n }\n return true\n}\n\nexport const passConfVal = (pass, passConf) => {\n if (pass) {\n const valido = passValid(pass, passConf)\n return !valido ? 'Campos preenchidos incorretamente' : undefined\n }\n}\n\nexport const validatePassword = (password, fieldName, confirmPassword) => {\n const uppercaseRegex = /[A-Z]/\n const lowercaseRegex = /[a-z]/\n const specialCharRegex = /[(!@#$%^*&)]/\n const numberRegex = /\\d/\n\n const passwordValidation = {\n uppercase: false,\n lowercase: false,\n specialChar: false,\n number: false,\n length: false,\n matchConfirmation: false\n }\n\n if (fieldName === 'password' && password !== undefined) {\n passwordValidation.uppercase = uppercaseRegex.test(password)\n passwordValidation.lowercase = lowercaseRegex.test(password)\n passwordValidation.specialChar = specialCharRegex.test(password)\n passwordValidation.number = numberRegex.test(password)\n passwordValidation.length = password.length >= 8\n passwordValidation.matchConfirmation = password === confirmPassword\n }\n\n if (fieldName === 'confirmPassword') {\n passwordValidation.matchConfirmation = password === confirmPassword\n }\n\n return passwordValidation\n}\n\nexport const validarCPF = (cpf) => {\n cpf = cpf.replace(/[^\\d]/g, '')\n\n if (cpf.length !== 11 || /^(\\d)\\1{10}$/.test(cpf)) {\n return false\n }\n\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += parseInt(cpf.charAt(i)) * (10 - i)\n }\n let digit1 = 11 - (sum % 11)\n if (digit1 === 10 || digit1 === 11) {\n digit1 = 0\n }\n if (digit1 !== parseInt(cpf.charAt(9))) {\n return false\n }\n\n sum = 0\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cpf.charAt(i)) * (11 - i)\n }\n let digit2 = 11 - (sum % 11)\n if (digit2 === 10 || digit2 === 11) {\n digit2 = 0\n }\n if (digit2 !== parseInt(cpf.charAt(10))) {\n return false\n }\n\n return true\n}\n\nexport const cpfVal = (value = '', extraError = undefined) => {\n if (value?.length < 1) return 'Preencher campo obrigatório'\n if (value?.length < 14) return 'CPF deve ser composto de 11 dÃgitos'\n if (!validarCPF(value)) return 'CPF inválido'\n if (extraError !== undefined) return extraError\n return undefined\n}\n\nexport const birthVal = (value = '') => {\n if (!value) return 'Preencher campo obrigatório'\n\n const dateRegex = /^\\d{2}\\/\\d{2}\\/\\d{4}$/\n if (!dateRegex.test(value)) return 'Formato de data inválido'\n\n const [day, month, year] = value.split('/').map(Number)\n\n const now = new Date()\n const currentYear = now.getFullYear()\n const currentMonth = now.getMonth() + 1\n\n if (year > currentYear) return 'Favor preencher com ano válido'\n if (year === currentYear && month > currentMonth)\n return 'Favor preencher com data válida'\n\n if (year < 1900 || year > currentYear - 10)\n return 'Ano de nascimento inválido'\n if (month < 1 || month > 12) return 'O mês deve estar entre 01 e 12'\n if (day < 1 || day > 31) return 'O dia deve estar entre 01 e 31'\n\n const daysInMonth = new Date(year, month, 0).getDate()\n if (day > daysInMonth) return 'Número de dias inválido para o mês escolhido'\n\n return undefined\n}\n\nexport const validDDDs = [\n 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 27, 28, 31, 32, 33, 34, 35,\n 37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 53, 54, 55, 61, 62, 64, 65,\n 66, 67, 68, 69, 71, 73, 74, 75, 77, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89,\n 91, 92, 93, 94, 95, 96, 97, 98, 99\n]\n\nexport const cellVal = (value) => {\n if (!value || value.length < 1) return 'Preencher campo obrigatório'\n\n const sanitizedValue = value.replace(/[^\\d]/g, '')\n\n const repeatedDigitRegex = /^(.)\\1{10}$/\n if (repeatedDigitRegex.test(sanitizedValue)) {\n return 'Número de celular inválido'\n }\n\n if (sanitizedValue.length < 11) {\n return 'Número de celular incompleto'\n }\n\n const ddd = parseInt(sanitizedValue.substring(0, 2), 10)\n if (!validDDDs.includes(ddd)) {\n return 'DDD inválido'\n }\n\n return undefined\n}\n\nexport const fixPhoneVal = (value) => {\n if (!value) return undefined\n\n const sanitizedValue = value.replace(/[^\\d]/g, '')\n\n if (sanitizedValue.length < 10) {\n return 'Número de telefone incompleto'\n }\n\n const repeatedDigitRegex = /^(.)\\1{9}$/\n if (repeatedDigitRegex.test(sanitizedValue)) {\n return 'Número de telefone inválido'\n }\n\n const ddd = parseInt(sanitizedValue.substring(0, 2), 10)\n if (!validDDDs.includes(ddd)) {\n return 'DDD inválido'\n }\n\n return undefined\n}\n\nexport const nameVal = (value = '') => {\n if (value?.length < 3) return 'Preencher campo obrigatório'\n let arr = value?.split(/\\s/)\n if (arr.length < 2) return 'Preencher nome completo'\n if (arr[1].length < 2) return 'Preencher nome completo'\n return undefined\n}\n\nexport const preNameVal = (value = '') => (value?.length <= 0 ? '' : undefined)\n\nexport const fieldVal = (arr, val) => {\n let message = ''\n for (let i = 0; i < arr.length; i++) {\n if (val[i](arr[i])) message += val[i](arr[i]) + '. '\n }\n return message\n}\n\nexport const fieldValComp = (arr, val) => {\n let message = ''\n for (let i = 0, k = 0; i < val.length; i++, k += 2) {\n if (val[i](arr[k], arr[k + 1])) message += val[i](arr[k], arr[k + 1]) + '. '\n }\n return message\n}\n\nexport const cepVal = (val, invalid = false) => {\n if (invalid) return 'CEP inválido'\n return val?.length !== 9 ? 'Preencher com CEP válido' : undefined\n}\n\nexport const ufVal = (val) => {\n const res = val?.replace(/[^a-zA-Z]/g, '').toLowerCase()\n\n if (\n (res === 'ro' ||\n res === 'ac' ||\n res === 'am' ||\n res === 'rr' ||\n res === 'pa' ||\n res === 'ap' ||\n res === 'to' ||\n res === 'ma' ||\n res === 'pi' ||\n res === 'ce' ||\n res === 'rn' ||\n res === 'pb' ||\n res === 'pe' ||\n res === 'al' ||\n res === 'se' ||\n res === 'ba' ||\n res === 'mg' ||\n res === 'es' ||\n res === 'rj' ||\n res === 'sp' ||\n res === 'pr' ||\n res === 'sc' ||\n res === 'rs' ||\n res === 'ms' ||\n res === 'mt' ||\n res === 'go' ||\n res === 'df') &&\n res.length === 2\n )\n return undefined\n return 'UF inválida'\n}\nexport const sizeVal = (val = '', size = 1) =>\n val?.length < size ? 'Preencher campo obrigatório' : undefined\n\nexport const logradouroVal = (val) => {\n let arr = val?.split(/\\s/) || []\n if (arr?.length < 2) return 'Preencher logradouro'\n if (arr[1].length < 2 || arr[0].length < 2) return 'Preencher logradouro'\n return undefined\n}\n\nexport const sexVal = (val) => (val === '' ? 'Selecionar sexo' : undefined)\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { useEffect, useState, useRef } from 'react'\nimport { FormGroup } from '../../components/Form/styles'\nimport TextField from '../../components/TextField'\nimport { useToast } from '../../hooks/toast'\nimport clientes from '../../api/clientes'\nimport Loader from '../Loader'\n\nimport * as S from './styles'\nimport { emailVal } from '../FormPF/fieldValidator'\n\nconst PreRegisterForm = ({\n type,\n setType,\n email,\n setEmail,\n setSelectedType,\n selectedType\n}) => {\n // const [selectedType, setSelectedType] = useState('pf')\n const [load, setLoad] = useState(false)\n\n const { addToast } = useToast()\n const inputRef0 = useRef()\n\n const handleSelectType = (e) => {\n const newValue = e.currentTarget.value\n setSelectedType(newValue)\n }\n\n const handleChangeEmail = (e) => {\n const newValue = e.target.value\n setEmail(newValue.toLowerCase())\n }\n\n const handleConfirm = async (e) => {\n e.preventDefault()\n setLoad(true)\n\n let msg = emailVal(email)\n\n if (msg !== undefined) {\n setLoad(false)\n return addToast({\n type: 'error',\n title: 'E-mail inválido'\n })\n }\n\n let valid\n try {\n valid = await clientes.email(email)\n } catch (e) {}\n if (valid?.status === 400) {\n setLoad(false)\n return addToast({\n type: 'error',\n title: 'E-mail já cadastrado'\n })\n }\n\n setLoad(false)\n return setType(selectedType)\n }\n\n useEffect(() => {\n !!inputRef0.current && inputRef0.current.focus()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleKeypress = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault()\n handleConfirm(e)\n }\n }\n\n if (type) return null\n\n return (\n <>\n {load && <Loader />}\n <S.RegisterWrapper>\n <S.PageContent>\n <S.WrapperSmall>\n <S.RegisterCard>\n <S.Title>Cadastre-se</S.Title>\n <form\n action=\"\"\n id=\"form-cadastro\"\n onSubmit={(e) => {\n if (!!email) handleConfirm(e)\n }}\n >\n <FormGroup className=\"form-group\">\n <label htmlFor=\"email\">E-mail</label>\n <TextField\n onKeyDown={(e) => {\n handleKeypress(e)\n }}\n reference={inputRef0}\n maxlength={80}\n name=\"email\"\n value={email}\n type=\"email\"\n placeholder=\"Digite seu e-mail\"\n onChange={handleChangeEmail}\n />\n </FormGroup>\n <S.RegisterColumns className=\"cadastro-columns\">\n <S.RegisterColumn className=\"cadastro-column\">\n <FormGroup className=\"form-group\">\n <input\n type=\"radio\"\n name=\"tipopessoa\"\n id=\"cadastropf\"\n value=\"pf\"\n checked={selectedType === 'pf' && true}\n onChange={handleSelectType}\n />\n <label htmlFor=\"cadastropf\">Pessoa FÃsica</label>\n </FormGroup>\n </S.RegisterColumn>\n <S.RegisterColumn className=\"cadastro-column\">\n <FormGroup className=\"form-group\">\n <input\n type=\"radio\"\n name=\"tipopessoa\"\n id=\"cadastropj\"\n checked={selectedType === 'pj' && true}\n value=\"pj\"\n onChange={handleSelectType}\n />\n <label htmlFor=\"cadastropj\">Pessoa Juridica</label>\n </FormGroup>\n </S.RegisterColumn>\n </S.RegisterColumns>\n <FormGroup className=\"form-group\">\n <S.AdvanceButton\n disabled={!selectedType || !email}\n type=\"submit\"\n // onClick={() => {\n // if (!!email) handleConfirm()\n // }}\n >\n Avançar\n </S.AdvanceButton>\n </FormGroup>\n </form>\n <p className=\"text-center\">\n Já possui cadastro?{' '}\n <strong\n onClick={() =>\n (window.location.href = `${process.env.REACT_APP_URL_MAIN}/checkout/login`)\n }\n className=\"link text-color-primary\"\n style={{ cursor: 'pointer' }}\n >\n Acesse\n </strong>\n </p>\n </S.RegisterCard>\n </S.WrapperSmall>\n </S.PageContent>\n </S.RegisterWrapper>\n </>\n )\n}\n\nexport default PreRegisterForm\n","const cadastro = {\r\n async cadastroClientePF(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-fisicas`,\r\n {\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async preCadastroClientePF(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-fisicasV2`,\r\n {\r\n method: 'put',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async cadastroClientePJ(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-juridicas`,\r\n {\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async preCadastroClientePJ(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-juridicasV2`,\r\n {\r\n method: 'put',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async getCEP(CEP) {\r\n return await fetch(`${process.env.REACT_APP_API_CEPS}${CEP}`)\r\n }\r\n}\r\n\r\nexport default cadastro\r\n","import styled, { css } from 'styled-components'\r\n\r\nexport const LabelTooltip = styled.label`\r\n right: initial;\r\n margin-left: 10px;\r\n top: -10px;\r\n`\r\n\r\nexport const TooltipBox = styled.div`\r\n ${({ theme }) => css`\r\n display: none;\r\n position: absolute;\r\n background: #ffffff;\r\n border: 1px solid #afaeae;\r\n padding: 10px 15px;\r\n font-size: 13px;\r\n line-height: 15px;\r\n min-width: 250px;\r\n max-width: 300px;\r\n left: 30px;\r\n top: -15px;\r\n border-radius: 5px;\r\n\r\n @media (max-width: ${theme.media.ipad}) {\r\n right: 0;\r\n left: initial;\r\n }\r\n\r\n @media (max-width: ${theme.media.cel}) {\r\n right: 0;\r\n left: initial;\r\n }\r\n `}\r\n`\r\n\r\nexport const Wrapper = styled.div`\r\n display: inline-block;\r\n right: 20px;\r\n position: absolute;\r\n z-index: 99;\r\n top: 10px;\r\n transition: all 400ms;\r\n\r\n i {\r\n background: 1px solid red;\r\n cursor: pointer;\r\n width: 20px;\r\n height: 20px;\r\n bottom: -10px;\r\n position: absolute;\r\n }\r\n\r\n &:hover {\r\n ${TooltipBox} {\r\n display: block;\r\n }\r\n }\r\n\r\n // Label Tooltip\r\n ${LabelTooltip} & {\r\n right: initial;\r\n margin-left: 10px;\r\n top: 30px;\r\n }\r\n`\r\n\r\nexport const WrapperL = styled.div`\r\n display: inline-block;\r\n left: 280px;\r\n position: absolute;\r\n z-index: 99;\r\n top: 10px;\r\n transition: all 400ms;\r\n\r\n i {\r\n background: 1px solid red;\r\n cursor: pointer;\r\n width: 20px;\r\n height: 20px;\r\n bottom: -10px;\r\n position: absolute;\r\n }\r\n\r\n &:hover {\r\n ${TooltipBox} {\r\n display: block;\r\n }\r\n }\r\n\r\n // Label Tooltip\r\n ${LabelTooltip} & {\r\n right: initial;\r\n margin-left: 10px;\r\n top: 30px;\r\n }\r\n`","import { css } from 'styled-components'\n\nexport const RadioStyles = (theme) => css`\n [type='radio']:not(:checked),\n [type='radio']:checked {\n left: -9999px;\n position: absolute;\n }\n\n [type='radio']:not(:checked) + label,\n [type='radio']:checked + label {\n cursor: pointer;\n display: inline-block;\n font-size: 14px;\n padding-top: 5px;\n font-weight: 400 !important;\n padding-left: 27px;\n position: relative;\n }\n\n [type='radio']:not(:checked) + label:before,\n [type='radio']:checked + label:before {\n background: transparent;\n border: 1px solid #afaeae;\n border-radius: 50%;\n content: '';\n height: 18px;\n left: 0;\n position: absolute;\n top: 2px;\n transition: border-color 0.5s ease;\n vertical-align: middle;\n width: 18px;\n }\n\n [type='radio']:checked + label:before {\n border: 3px solid ${theme.colors.primary};\n }\n\n // checked\n [type='radio']:not(:checked) + label:after,\n [type='radio']:checked + label:after {\n border-color: #fff;\n border-style: solid;\n border-width: 0 2px 2px 0;\n content: '';\n height: 9px;\n left: 8px;\n opacity: 0;\n position: absolute;\n top: 10px;\n transform: translate(-50%, -65%) rotate(45deg);\n transition: opacity 0.5s ease, visibility 0.5s ease;\n width: 4px;\n }\n\n [type='radio']:not(:checked) + label:after {\n opacity: 0;\n }\n\n [type='radio']:checked + label:after {\n opacity: 1;\n }\n\n // disabled radio\n [type='radio']:disabled:not(:checked) + label:before,\n [type='radio']:disabled:checked + label:before {\n border-color: #cccccc;\n background: #f6f6f6;\n }\n\n [type='radio']:disabled:checked + label:after {\n color: #999;\n }\n`\nexport const RadioStylesOrigem = (theme) => css`\n /* Ocultar o botão de rádio real */\n [type='radio']:not(:checked),\n [type='radio']:checked {\n left: -9999px;\n position: absolute;\n }\n\n /* Estilizar o label que representa o botão de rádio */\n [type='radio']:not(:checked) + label,\n [type='radio']:checked + label {\n cursor: pointer;\n display: inline-block;\n font-size: 14px;\n padding-top: 5px;\n font-weight: 400 !important;\n padding-left: 27px;\n position: relative;\n }\n\n /* CÃrculo do botão de rádio */\n [type='radio']:not(:checked) + label::before,\n [type='radio']:checked + label::before {\n content: '';\n background: transparent;\n border: 1px solid ${theme.colors.error};\n border-radius: 50%;\n height: 18px;\n width: 18px;\n position: absolute;\n left: 0;\n top: 2px;\n transition: background 0.3s ease, border-color 0.3s ease;\n }\n\n /* Quando o botão de rádio está selecionado, cÃrculo preenchido */\n [type='radio']:checked + label::before {\n background: ${theme.colors.error}; /* Interior do cÃrculo */\n border-color: ${theme.colors.error}; /* Borda */\n }\n\n /* Estilo do \"tick\" */\n [type='radio']:not(:checked) + label::after,\n [type='radio']:checked + label::after {\n content: '';\n position: absolute;\n top: 50%; /* Posicionar ao centro verticalmente */\n left: 8px; /* Posicionar ao centro horizontalmente */\n width: 5px; /* Largura do tick */\n height: 10px; /* Altura do tick */\n border: solid white;\n border-width: 0 2px 2px 0;\n transform: translate(-50%, -50%) rotate(45deg); /* Centraliza o tick e aplica a rotação */\n opacity: 0; /* Oculta o tick inicialmente */\n transition: opacity 0.3s ease;\n }\n\n /* Mostrar o tick quando o rádio está selecionado */\n [type='radio']:checked + label::after {\n opacity: 1;\n }\n\n /* Estilo para rádio desabilitado */\n [type='radio']:disabled + label::before {\n border-color: #cccccc;\n background: #f6f6f6;\n }\n\n [type='radio']:disabled:checked + label::after {\n color: #999;\n }\n`\n","import styled, { css } from 'styled-components'\n\nimport { FormGroup } from '../../../components/Form/styles'\nimport { Wrapper } from '../../../components/Tooltip/styles'\nimport { RadioStyles, RadioStylesOrigem } from '../../../styles/radio'\n\nexport const TermsWrapper = styled.div`\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n &.last-element {\n margin-bottom: 180px;\n }\n }\n\n @media (max-width: ${theme.media.cel}) {\n &.last-element {\n margin-bottom: 180px;\n }\n }\n `}\n\n ${FormGroup} {\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n\n label {\n margin-bottom: 0;\n margin-left: 10px;\n }\n\n a {\n font-weight: 600;\n }\n\n ${Wrapper} {\n top: 10px;\n }\n }\n`\n\nexport const ErrorList = styled.ul`\n font-size: 14px;\n margin: 0px 0px 10px 10px;\n\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n margin-top: -120px;\n }\n\n @media (max-width: ${theme.media.cel}) {\n margin-top: -180px;\n font-size: 12px;\n }\n `};\n`\nexport const TitleErrorList = styled.h3`\n color: #3d3d3d;\n font-size: 15px;\n font-weight: 500;\n margin: 10px 0px;\n`\n\nexport const Error = styled.li`\n ${({ theme, isValid, isPasswordEmpty }) => css`\n color: ${isPasswordEmpty ? '#616161' : isValid ? '#5CC187' : '#D22630'};\n display: flex;\n font-weight: 400;\n align-items: center;\n margin: 10px 0;\n\n &::before {\n content: '${isPasswordEmpty ? '\\u25cf' : isValid ? '\\u2714' : '\\u25cf'}';\n font-size: 14px;\n padding-right: 10px;\n height: 16px;\n\n color: ${isPasswordEmpty ? '#D22630' : isValid ? '#5CC187' : '#D22630'};\n display: inline-block;\n }\n `}\n`\n\nexport const CaptchaContainer = styled.div`\n margin-bottom: 16px;\n margin-left: 10px;\n`\nexport const RadioGroup = styled.div`\n ${(props) => RadioStylesOrigem(props.theme)}\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 1px 30px;\n width: 100%;\n justify-content: stretch;\n\n .radio-option {\n display: flex;\n gap: 5px;\n }\n\n input[type='radio'] {\n margin: 0;\n cursor: pointer;\n }\n\n label {\n vertical-align: middle;\n line-height: 1;\n }\n\n @media (max-width: 1024px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 768px) {\n grid-template-columns: repeat(1, 1fr);\n }\n\n @media (max-width: 480px) {\n grid-template-columns: 1fr;\n }\n`\n\nexport const OtherInput = styled.input`\n border: none;\n border-bottom: 2px solid #d22630;\n outline: none;\n padding: 5px 0;\n width: 90%;\n\n &::placeholder {\n font-family: 'Montserrat';\n color: #aaaaaa;\n font-size: 14px;\n transform: translateY(3px);\n }\n\n &:focus {\n border-bottom-color: darkred;\n }\n`\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { FormGroup, FormGroupIcon } from '../../../components/Form/styles'\nimport { emailConfVal, emailVal, validatePassword } from '../fieldValidator'\nimport TextField from '../../../components/TextField'\nimport { useState, useEffect } from 'react'\nimport * as S from './styles'\n\nconst RegisterStep1 = ({\n formValues,\n onChange,\n handleKeyDown,\n handleChangeStep\n}) => {\n const { email, emailConfirm, password, passwordConfirm } = formValues\n const [passView, setPassView] = useState(true)\n const [passConfView, setPassConfView] = useState(true)\n const [isBackButtonClicked, setBackbuttonPress] = useState(false)\n\n useEffect(() => {\n window.history.pushState(null, null, window.location.pathname)\n window.addEventListener('popstate', onBackButtonEvent)\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent)\n }\n }, [])\n\n const [isNewPasswordEmpty, setNewPasswordEmpty] = useState(true)\n const [isNewPasswordValid, setNewPasswordValid] = useState(false)\n\n const [passwordValidation, setPasswordValidation] = useState({\n uppercase: false,\n lowercase: false,\n specialChar: false,\n number: false,\n length: false,\n matchConfirmation: false\n })\n\n useEffect(() => {\n const isPasswordValid =\n passwordValidation.uppercase &&\n passwordValidation.lowercase &&\n passwordValidation.specialChar &&\n passwordValidation.number &&\n passwordValidation.length &&\n !isNewPasswordEmpty\n setNewPasswordValid(isPasswordValid)\n\n if (password !== '' || passwordConfirm !== '') {\n setPasswordValidation(\n validatePassword(password, 'password', passwordConfirm)\n )\n }\n\n if (password === '') {\n setNewPasswordEmpty(true)\n }\n }, [password, passwordConfirm, passwordValidation.matchConfirmation])\n\n const handleChange = (e) => {\n const { name, value } = e.target\n\n if (name === 'password') {\n setNewPasswordEmpty(value === '')\n setPasswordValidation(\n validatePassword(value, 'password', passwordConfirm)\n )\n }\n }\n\n const onBackButtonEvent = (e) => {\n e.preventDefault()\n if (!isBackButtonClicked) {\n setBackbuttonPress(true)\n handleChangeStep(false)\n } else {\n window.history.pushState(null, null, window.location.pathname)\n setBackbuttonPress(false)\n }\n }\n\n return (\n <div className=\"col-group\">\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"required\">\n <label htmlFor=\"email\">E-mail</label>\n <TextField\n maxlength={80}\n name=\"email\"\n value={email}\n placeholder=\"Digite seu e-mail\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n error={emailVal(email)}\n success={!emailVal(email)}\n />\n </FormGroup>\n </div>\n <div className=\"col-6\">\n <FormGroup className=\"required\">\n <label htmlFor=\"email\">Confirme seu e-mail</label>\n <TextField\n maxlength={80}\n name=\"emailConfirm\"\n value={emailConfirm}\n placeholder=\"Confirme seu e-mail\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(\n e.target.value.trimStart().toLowerCase(),\n 'emailConfirm'\n )\n }\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'emailConfirm'\n )\n }}\n error={\n formValues.errorTrigger[1] && emailConfVal(email, emailConfirm)\n }\n success={!emailConfVal(email, emailConfirm)}\n />\n </FormGroup>\n </div>\n </div>\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"email\">Senha</label>\n <FormGroupIcon className=\"form-group-icon\">\n <TextField\n maxlength={80}\n name=\"password\"\n type={passView ? 'password' : 'text'}\n value={password}\n placeholder=\"Digite sua senha\"\n success={isNewPasswordValid}\n error={!isNewPasswordValid && formValues.errorTrigger[1]}\n onChange={(e) => {\n handleChange(e)\n onChange(e.target.value.trimStart(), 'password')\n }}\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n />\n <span\n className={!passView ? 'icon icon-eye' : 'icon icon-eye-cut'}\n onClick={() => setPassView(!passView)}\n ></span>\n </FormGroupIcon>\n </FormGroup>\n </div>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required last-element\">\n <label htmlFor=\"email\">Confirme sua senha</label>\n <FormGroupIcon className=\"form-group-icon\">\n <TextField\n maxlength={80}\n name=\"passwordConfirm\"\n type={passConfView ? 'password' : 'text'}\n value={passwordConfirm}\n placeholder=\"Confirme sua senha\"\n success={passwordValidation.matchConfirmation}\n error={\n !passwordValidation.matchConfirmation &&\n formValues.errorTrigger[1]\n }\n onChange={(e) => {\n handleChange(e)\n onChange(e.target.value.trimStart(), 'passwordConfirm')\n }}\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n />\n <span\n className={\n !passConfView ? 'icon icon-eye' : 'icon icon-eye-cut'\n }\n onClick={() => setPassConfView(!passConfView)}\n ></span>\n </FormGroupIcon>\n </FormGroup>\n </div>\n </div>\n <div className=\"col-12\">\n <S.ErrorList>\n <S.TitleErrorList>\n Senha deve conter os seguintes parâmetros\n </S.TitleErrorList>\n <S.Error\n isValid={passwordValidation.length}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Ter no mÃnimo 8 caracteres\n </S.Error>\n <S.Error\n isValid={passwordValidation.uppercase}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Uma letra maiúscula\n </S.Error>\n <S.Error\n isValid={passwordValidation.lowercase}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Uma letra minúscula\n </S.Error>\n <S.Error\n isValid={passwordValidation.number}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Um número\n </S.Error>\n <S.Error\n isValid={passwordValidation.specialChar}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Um caractere especial {'(!@#$%^*&)'}\n </S.Error>\n <S.Error\n isValid={passwordValidation.matchConfirmation}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n A senha e a confirmação devem ser iguais\n </S.Error>\n </S.ErrorList>\n </div>\n </div>\n )\n}\n\nexport default RegisterStep1\n","export const noMask = (value) => value.replace(/\\D/g, '')\n\nexport const cpfMask = (value) =>\n value\n .replace(/\\D/g, '')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d{1,2})/, '$1-$2')\n .replace(/(-\\d{2})\\d+?$/, '$1')\n\nexport const dateMask = (value) => {\n return value\n .replace(/\\D/g, '')\n .replace(/(\\d{2})(\\d)/, '$1/$2')\n .replace(/(\\d{2})(\\d)/, '$1/$2')\n .replace(/(\\d{2}\\/\\d{2}\\/\\d{4})\\d+?$/, '$1')\n}\n\nexport const cellMask = (value) => {\n if (typeof value === 'string')\n return value\n .replace(/\\D/g, '')\n .replace(/(\\d{2})(\\d)/, '($1) $2')\n .replace(/(\\d{5})(\\d)/, '$1-$2')\n .replace(/(\\(\\d{2}\\)\\s\\d{5}-\\d{4})\\d+?$/, '$1')\n return ''\n}\n\nexport const fixPhoneMask = (value) => {\n if (typeof value === 'string')\n return value\n .replace(/\\D/g, '')\n .replace(/(\\d{2})(\\d)/, '($1) $2')\n .replace(/(\\d{4})(\\d)/, '$1-$2')\n .replace(/(\\(\\d{2}\\)\\s\\d{4}-\\d{4})\\d+?$/, '$1')\n return ''\n}\n\nexport const dddString = (value) => noMask(value || '').substr(0, 2)\n\nexport const phoneString = (value) => noMask(value || '').substr(2)\n\nexport const dateString = (value) => {\n const date = value?.split('/') || ['01', '01', '2000']\n return `${date[2]}-${date[1]}-${date[0]}T20:29:13.070Z`\n}\n\nexport const dateFromString = (value) => {\n const date = value?.slice(0, 10).split('-') || ['01', '01', '2000']\n return `${date[2]}/${date[1]}/${date[0]}`\n}\n\nexport const cepMask = (value) =>\n value\n .replace(/\\D/g, '')\n .replace(/(\\d{5})(\\d)/, '$1-$2')\n .replace(/^([\\d]{5}-[\\d]{3})\\d+?$/, '$1')\n\nexport const addressNumber = (value) => {\n return value.replace(/\\D/g, '')\n}\n\nexport const preNameMask = (value) => {\n return value.replace(/[^A-Za-z0-9áà âãéèêÃïóôõöúçñÃÀÂÃÉÈÃÃÓÔÕÖÚÇÑ\\s]+/g, '')\n}\n\nexport const nameMask = (value) => {\n return value.replace(/[^A-Za-záà âãéèêÃïóôõöúçñÃÀÂÃÉÈÃÃÓÔÕÖÚÇÑ\\s]+/g, '')\n}\n\n","import styled, { css } from 'styled-components'\n\nimport {\n Button,\n ButtonBack,\n ButtonIcon,\n ButtonPrimary\n} from '../../components/Button/styles'\n\nexport const WrapperMedium = styled.div`\n ${({ theme }) => css`\n margin: auto;\n max-width: 1000px;\n position: relative;\n width: 100%;\n\n @media (max-width: ${theme.media.ipad}) {\n max-width: 90%;\n }\n `}\n`\n\nexport const FormFooter = styled.div`\n min-height: 100px;\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n position: fixed;\n bottom: 0;\n width: 100%;\n background: #fbfbfb;\n padding: 20px 0;\n z-index: 999;\n }\n `}\n`\n\nexport const AdvanceButton = styled.button`\n ${({ theme }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonPrimary(theme)}\n ${ButtonIcon}\n margin-left: 15px;\n `}\n`\n\nexport const BackButton = styled.button`\n ${({ theme }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonBack(theme)}\n ${ButtonIcon}\n `}\n`\n\nexport const FormFooterContent = styled.div`\n ${({ theme }) => css`\n display: flex;\n justify-content: flex-end;\n margin-top: 30px;\n margin-bottom: 30px;\n\n @media (max-width: ${theme.media.cel}) {\n flex-direction: column-reverse;\n margin-top: 0;\n\n ${AdvanceButton} {\n display: block;\n margin: 0 0 10px 0 !important;\n width: 100%;\n }\n }\n `}\n`\nexport const NaoSei = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n font-size: 12px;\n text-decoration: underline;\n cursor: pointer;\n &:hover {\n outline: none;\n }\n`\nexport const ContainerEndereco = styled.div``\nexport const CaptchaContainer = styled.div`\n margin-bottom: 2px;\n margin-left: 10px;\n`\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { FormGroup } from '../../Form/styles'\nimport TextField from '../../TextField'\nimport { useEffect, useState } from 'react'\nimport * as mask from '../masks'\nimport * as val from '../fieldValidator'\nimport * as S from '../styles'\nimport cadastro from '../../../api/cadastro'\nimport Loader from '../../Loader'\n\nconst RegisterStep2 = ({\n formValues,\n onChange,\n handleChangeStep,\n handleKeyDown\n}) => {\n const {\n cep,\n logradouro,\n numero,\n complemento,\n bairro,\n cidade,\n uf,\n invalidCEP\n } = formValues\n\n const [load, setLoad] = useState(false)\n const [isCepUnico, setIsCepUnico] = useState(false)\n const [isBackButtonClicked, setBackbuttonPress] = useState(false)\n\n const useActiveElement = () => {\n useState(false) /** Useful when working with autoFocus */\n const [activeElement, setActiveElement] = useState(document.activeElement)\n\n useEffect(() => {\n const onFocus = (event) => setActiveElement(event.target)\n const onBlur = (event) => setActiveElement(null)\n\n window.addEventListener('focus', onFocus, true)\n window.addEventListener('blur', onBlur, true)\n\n return () => {\n window.removeEventListener('focus', onFocus)\n window.removeEventListener('blur', onBlur)\n }\n }, [])\n\n return {\n activeElement,\n listenersReady\n }\n }\n\n const { activeElement, listenersReady } = useActiveElement()\n\n const checkCEPUnico = (cep) => {\n const lastDigits = cep.substr(-3)\n\n if (lastDigits === '000') {\n setIsCepUnico(true)\n } else {\n setIsCepUnico(false)\n }\n }\n\n const getCEP = async (CEP, onChange) => {\n setLoad(true)\n let endereco = await cadastro.getCEP(CEP)\n if (endereco.status === 200) {\n onChange(false, 'invalidCEP')\n endereco = await endereco.json()\n\n onChange(endereco.bairro, 'bairro')\n onChange(endereco.cidade, 'cidade')\n onChange(endereco.endereco === '' ? '' : endereco.endereco, 'logradouro')\n onChange(endereco.tipoLogradouro, 'tipoLogradouro')\n onChange(endereco.uf, 'uf')\n } else if (endereco.status === 204) {\n onChange(true, 'invalidCEP')\n }\n setLoad(false)\n }\n\n const clearCEP = async (onChange) => {\n onChange('', 'bairro')\n onChange('', 'cidade')\n onChange('', 'logradouro')\n onChange('', 'tipoLogradouro')\n onChange('', 'uf')\n }\n\n useEffect(() => {\n if (!!cep) {\n // console.log('verificar', cep)\n checkCEPUnico(cep)\n }\n }, [])\n\n useEffect(() => {\n if (activeElement.name === 'CEP') {\n if (cep?.length === 9 && cep?.substr(-3) === '000') {\n checkCEPUnico(cep)\n getCEP(mask.noMask(cep), onChange)\n } else if (cep?.length === 9) {\n getCEP(mask.noMask(cep), onChange)\n } else {\n clearCEP(onChange)\n }\n }\n }, [cep])\n\n useEffect(() => {\n window.history.pushState(null, null, window.location.pathname)\n window.addEventListener('popstate', onBackButtonEvent)\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent)\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const onBackButtonEvent = (e) => {\n e.preventDefault()\n if (!isBackButtonClicked) {\n setBackbuttonPress(true)\n handleChangeStep(false)\n } else {\n window.history.pushState(null, null, window.location.pathname)\n setBackbuttonPress(false)\n }\n }\n\n return (\n <>\n {load && <Loader />}\n <S.ContainerEndereco>\n <div className=\"col-group\">\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-4\">\n <FormGroup\n className=\"required\"\n onBlur={() => {\n if (cep?.length === 9) {\n getCEP(mask.noMask(cep), onChange)\n checkCEPUnico(cep)\n } else {\n clearCEP(onChange)\n }\n }}\n >\n <label htmlFor=\"CEP\">CEP</label>\n <TextField\n error={\n formValues.errorTrigger[2] && val.cepVal(cep, invalidCEP)\n }\n maxlength={9}\n name=\"CEP\"\n value={cep}\n placeholder=\"Digite seu CEP\"\n // id=\"cep\"\n onChange={(e) =>\n onChange(mask.cepMask(e.target.value), 'cep')\n }\n success={!val.cepVal(cep, invalidCEP)}\n />\n <S.NaoSei\n onClick={() =>\n window.open(\n 'https://buscacepinter.correios.com.br/app/localidade_logradouro/index.php'\n )\n }\n >\n Não sei meu CEP\n </S.NaoSei>\n </FormGroup>\n </div>\n <div className=\"col-8\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Logradouro\">Logradouro</label>\n <TextField\n maxlength={40}\n name=\"logradouro\"\n value={logradouro}\n placeholder=\"Digite seu Logradouro\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => {\n if (isCepUnico) {\n onChange(e.target.value.trimStart(), 'logradouro')\n }\n }}\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'logradouro'\n )\n }}\n error={formValues.errorTrigger[2] && val.sizeVal(logradouro)}\n success={logradouro?.length > 0 && !val.sizeVal(logradouro)}\n />\n </FormGroup>\n </div>\n </div>\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-3\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Numero\">Número</label>\n <TextField\n maxlength={8}\n name=\"numero\"\n value={numero}\n placeholder=\"Numero\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(mask.noMask(e.target.value), 'numero')\n }\n error={formValues.errorTrigger[2] && val.sizeVal(numero)}\n success={numero?.length > 0 && !val.sizeVal(numero)}\n />\n </FormGroup>\n </div>\n <div className=\"col-5\">\n <FormGroup>\n <label htmlFor=\"Numero\">Complemento</label>\n <TextField\n maxlength={40}\n name=\"complemento\"\n value={complemento}\n placeholder=\"Complemento\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(e.target.value.trimStart(), 'complemento')\n }\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'complemento'\n )\n }}\n success={complemento?.length > 0 && !val.sizeVal(complemento)}\n />\n </FormGroup>\n </div>\n <div className=\"col-4\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Bairro\">Bairro</label>\n <TextField\n maxlength={40}\n name=\"bairro\"\n value={bairro}\n placeholder=\"Bairro\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => {\n if (isCepUnico) {\n onChange(e.target.value.trimStart(), 'bairro')\n }\n }}\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'bairro'\n )\n }}\n // onChange={(e) => onChange(e.target.value, 'bairro')}\n error={formValues.errorTrigger[2] && val.sizeVal(bairro)}\n success={bairro?.length > 0 && !val.sizeVal(bairro)}\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-9\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Cidade\">Cidade</label>\n <TextField\n maxlength={40}\n name=\"cidade\"\n value={cidade}\n placeholder=\"Cidade\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n // onChange={(e) => onChange(e.target.value, 'cidade')}\n success={cidade?.length > 0 && !val.sizeVal(cidade)}\n error={formValues.errorTrigger[2] && val.sizeVal(cidade)}\n />\n </FormGroup>\n </div>\n <div className=\"col-3\">\n <FormGroup className=\"required\">\n <label htmlFor=\"UF\">UF</label>\n <TextField\n maxlength={2}\n name=\"UF\"\n value={uf}\n placeholder=\"UF\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n // onChange={(e) => onChange(e.target.value, 'uf')}\n success={!val.ufVal(uf)}\n error={formValues.errorTrigger[2] && val.ufVal(uf)}\n />\n </FormGroup>\n </div>\n </div>\n </div>\n </S.ContainerEndereco>\n </>\n )\n}\n\nexport default RegisterStep2\n","import * as S from './styles'\r\n\r\n\r\nconst Tooltip = ({ icon, label, message }) => {\r\n const TooltipBody = () => (\r\n <S.WrapperL>\r\n {!!icon && icon}\r\n <S.TooltipBox>{message}</S.TooltipBox>\r\n </S.WrapperL>\r\n )\r\n\r\n if (label) {\r\n return (\r\n <S.LabelTooltip htmlFor=\"whatsapp\">\r\n {label}\r\n <TooltipBody />\r\n </S.LabelTooltip>\r\n )\r\n }\r\n\r\n return <TooltipBody />\r\n}\r\n\r\nexport default Tooltip\r\n","import clientes from '../../api/clientes'\nimport { validDDDs } from '../FormPF/fieldValidator'\n\nexport const cnpjRepetido = async (documento, setReceitaFederalEnabled) => {\n const res = await clientes.validarDocumento(documento)\n const body = await res.json()\n\n setReceitaFederalEnabled(body.validacaoExternaDadosClientePJ)\n localStorage.setItem('preCadastro', 'false')\n\n if (!!body.preCadastro) {\n localStorage.setItem('preCadastro', 'true')\n return undefined\n }\n if (!!body.existe) {\n return 'CNPJ já cadastrado'\n }\n\n return undefined\n}\n\nexport const cnpjRepetidoVal = (value) => {\n return value\n}\n\nexport const validatePassword = (password, fieldName, confirmPassword) => {\n const uppercaseRegex = /[A-Z]/\n const lowercaseRegex = /[a-z]/\n const specialCharRegex = /[(!@#$%^*&)]/\n const numberRegex = /\\d/\n\n const passwordValidation = {\n uppercase: false,\n lowercase: false,\n specialChar: false,\n number: false,\n length: false,\n matchConfirmation: false\n }\n\n if (fieldName === 'senha' && password !== undefined) {\n passwordValidation.uppercase = uppercaseRegex.test(password)\n passwordValidation.lowercase = lowercaseRegex.test(password)\n passwordValidation.specialChar = specialCharRegex.test(password)\n passwordValidation.number = numberRegex.test(password)\n passwordValidation.length = password.length >= 8\n passwordValidation.matchConfirmation = password === confirmPassword\n }\n\n if (fieldName === 'confirmaSenha') {\n passwordValidation.matchConfirmation = password === confirmPassword\n }\n return passwordValidation\n}\n\nexport function validateReceitaError(error, field, message) {\n // console.log({ field, message })\n // if (field === 'Inscrição Estadual' && error) return `${message}`\n\n // if (error) return `${field} não condiz com Receita Federal`\n if (error) return `${message}`\n}\nfunction validarCNPJ(cnpj) {\n // Remove caracteres não numéricos\n cnpj = cnpj.replace(/[^\\d]+/g, '')\n\n // Verifica se o CNPJ tem 14 dÃgitos\n if (!cnpj || cnpj.length !== 14) return false\n\n // Verifica se todos os dÃgitos são iguais\n if (/^(\\d)\\1{13}$/.test(cnpj)) return false\n\n // Função auxiliar para cálculo dos dÃgitos verificadores\n const calcularDigito = (cnpj, tamanho) => {\n let soma = 0\n let pos = tamanho - 7\n for (let i = tamanho; i >= 1; i--) {\n soma += cnpj.charAt(tamanho - i) * pos--\n if (pos < 2) pos = 9\n }\n return soma % 11 < 2 ? 0 : 11 - (soma % 11)\n }\n\n // Valida o primeiro dÃgito verificador\n const tamanho = 12\n const numeros = cnpj.substring(0, tamanho)\n const digitos = cnpj.substring(tamanho)\n const digito1 = calcularDigito(numeros, tamanho)\n if (digito1 !== parseInt(digitos.charAt(0), 10)) return false\n\n // Valida o segundo dÃgito verificador\n const digito2 = calcularDigito(cnpj.substring(0, tamanho + 1), tamanho + 1)\n if (digito2 !== parseInt(digitos.charAt(1), 10)) return false\n\n return true\n}\n\nexport const cnpjVal = (value = '', extraError = undefined) => {\n if (value?.length < 1) return 'Preencher campo obrigatório'\n if (value?.length < 18) return 'CNPJ deve ser composto de 14 dÃgitos'\n if (!validarCNPJ(value)) return 'CNPJ inválido'\n if (extraError !== undefined) return extraError\n return undefined\n}\n\nexport const contatoVal = (value = '') =>\n value?.length < 1 ? 'Preencher campo obrigatório' : undefined\n\nexport const razaoVal = (value = '') => {\n if (value?.length < 1) return 'Preencher campo obrigatório'\n\n return value?.length < 3 ? 'MÃnimo de 3 caracteres' : undefined\n}\n\nexport const nomeFanVal = (value = '') => {\n if (value?.length < 1) return 'Preencher campo obrigatório'\n\n return value?.length < 3 ? 'MÃnimo de 3 caracteres' : undefined\n}\nexport const cellVal = (value) => {\n if (!value || value?.length < 1) return 'Preencher campo obrigatório'\n\n const sanitizedValue = value.replace(/[^\\d]/g, '')\n\n // Regex para verificar se o número é composto por todos os dÃgitos iguais\n const repeatedDigitRegex = /^(.)\\1{10}$/\n if (repeatedDigitRegex.test(sanitizedValue)) {\n return 'Número de celular inválido'\n }\n\n // Verifica se o comprimento do número é válido\n if (sanitizedValue.length < 11) {\n return 'Número de celular incompleto'\n }\n\n // Verificação do DDD válido\n\n const ddd = parseInt(sanitizedValue.substring(0, 2), 10)\n if (!validDDDs.includes(ddd)) {\n return 'DDD inválido'\n }\n\n return undefined\n}\n\nexport const comercialPhoneVal = (value) => {\n if (!value || value?.length < 1) return 'Preencher campo obrigatório'\n const sanitizedValue = value.replace(/[^\\d]/g, '')\n\n // Verifica se o comprimento do número é válido (deve ser 10 dÃgitos)\n if (sanitizedValue.length < 10) {\n return 'Número de telefone incompleto'\n }\n\n // Regex para verificar se o número é composto por todos os dÃgitos iguais\n const repeatedDigitRegex = /^(.)\\1{9}$/\n if (repeatedDigitRegex.test(sanitizedValue)) {\n return 'Número de telefone inválido'\n }\n\n const ddd = parseInt(sanitizedValue.substring(0, 2), 10)\n if (!validDDDs.includes(ddd)) {\n return 'DDD inválido'\n }\n\n return undefined\n}\n\nexport const inscEstVal = (value = '', valid, uf) => {\n if (value?.length < 1) return 'Preencher campo obrigatório'\n if (value === 'ISENTO') return undefined\n\n if (valid === false) return `Inválida para estado de ${uf}`\n\n return value?.length < 8\n ? 'Inscrição estadual possui no mÃnimo 8 digitos'\n : undefined\n}\nexport const validateInscEstadual = async (inscricaoEstadual, cepUF) => {\n const data = await clientes\n .getInscricaoEstadual(inscricaoEstadual, cepUF)\n .then((res) => res.text())\n\n if (data.length === 0 && inscricaoEstadual?.length >= 8) {\n return { valid: true, message: '' }\n } else {\n return { valid: false, message: data }\n }\n}\n\nexport const inscMunVal = (value = '') =>\n value?.length < 1 ? 'Preencher Inscrição Municipal' : undefined\n\nexport const openVal = (value = '') => {\n if (value?.length < 1) return 'Preencher campo obrigatório'\n const now = new Date()\n const nowYear = now.getFullYear()\n const nowMonth = now.getMonth() + 1\n const nowDay = now.getDate()\n const dates = value?.split('/') || []\n const day = +dates[0]\n const month = +dates[1]\n const year = +dates[2]\n\n if (\n year > nowYear ||\n (year === nowYear && nowMonth < month) ||\n (year === nowYear && month === nowMonth && day > nowDay)\n )\n return 'Favor preencher com data válida'\n\n if ((value?.length || 0) < 10) return 'Data de abertura obrigatória'\n if (day < 1 || day > 31) return 'O dia de abertura deve ser entre 01 e 31'\n if (month < 1 || month > 12) return 'O mês de abertura deve ser entre 01 e 12'\n if (year < 1700) return 'Favor preencher com ano válido'\n\n if (\n month === 2 &&\n ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0)\n ) {\n if (day > 29) return 'Favor preencher data válida'\n } else if (month === 2) {\n if (day > 28) return 'Favor preencher data válida'\n } else if ([4, 6, 9, 11].includes(month) && day > 30) {\n return 'Favor preencher data válida'\n } else if (day > 31) {\n return 'Favor preencher data válida'\n }\n\n return undefined\n}\n\nexport const selectVal = (value = -1) => {\n if (value === -1 || value === '-1') return 'Selecionar campo obrigatório'\n return undefined\n}\n\nexport const selectValOrigem = (value) => {\n if (value < 1) return 'Escolha uma opção'\n\n return undefined\n}\n\nexport const admVal = (value = -1, value2 = -1) => {\n if (+value === -1) return 'Selecionar campo obrigatório'\n // if (+value > +value2)\n // return 'Numero de funcionarios ADM maior que o número total de funcionários'\n return undefined\n}\n\nexport const strAdmVal = (value = -1, value2 = -1) => {\n if (+value === -1) return 'Selecionar campo obrigatório'\n // if (value > value2)\n // return 'Numero de funcionarios ADM maior que o número total de funcionários'\n return ''\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { FormGroup } from '../../Form/styles'\nimport { useEffect, useState } from 'react'\nimport ReCAPTCHA from 'react-google-recaptcha'\nimport TextField from '../../TextField'\nimport Tooltip from '../../../components/Tooltip/left'\nimport * as val from '../fieldValidator'\nimport {\n cpfMask,\n dateMask,\n cellMask,\n fixPhoneMask,\n nameMask,\n preNameMask\n} from '../masks'\nimport {\n birthVal,\n cellVal,\n cpfVal,\n cpfRepetido,\n fixPhoneVal,\n nameVal\n} from '../fieldValidator'\nimport * as S from './styles'\nimport { selectValOrigem } from '../../FormPJ/fieldValidator'\n\nconst RegisterStep3 = ({\n formValues,\n onChange,\n handleChangeStep,\n handleKeyDown,\n onCaptchaChange\n}) => {\n const {\n name,\n likelyName,\n cpf,\n dateOfBirth,\n cellphone,\n phone,\n emails,\n whatsApp,\n acceptTerms,\n cpfCadastrado,\n idComoConheceu\n } = formValues\n\n const [cpfTrigger, setCpfTrigger] = useState(true)\n const [isBackButtonClicked, setBackbuttonPress] = useState(false)\n const [options, setOptions] = useState([])\n\n const getComoConheceu = async () => {\n return await fetch(\n `${process.env.REACT_APP_API_CLIENTES}clientes/como-conheceu`,\n {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' }\n }\n ).then((response) => {\n return response.json()\n })\n }\n\n useEffect(() => {\n if (cpf.length === 14 && cpfTrigger) {\n cpfRepetido(cpf).then((res) => onChange(res, 'cpfCadastrado'))\n setCpfTrigger(false)\n } else if (cpf.length < 14 && !cpfTrigger) {\n setCpfTrigger(true)\n }\n }, [cpf])\n\n useEffect(() => {\n const fetchOptions = async () => {\n const data = await getComoConheceu()\n const filteredOptions = data.filter((item) => item.status)\n setOptions(filteredOptions)\n }\n\n fetchOptions()\n }, [])\n\n useEffect(() => {\n window.history.pushState(null, null, window.location.pathname)\n window.addEventListener('popstate', onBackButtonEvent)\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent)\n }\n }, [])\n\n const onBackButtonEvent = (e) => {\n e.preventDefault()\n if (!isBackButtonClicked) {\n setBackbuttonPress(true)\n handleChangeStep(false)\n } else {\n window.history.pushState(null, null, window.location.pathname)\n setBackbuttonPress(false)\n }\n }\n\n return (\n <div className=\"col-group\">\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-8\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Nome Completo</label>\n <TextField\n maxlength={50}\n name=\"name\"\n value={name}\n placeholder=\"Digite seu nome\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(nameMask(e.target.value.trimStart()), 'name')\n }\n onBlur={(e) => {\n onChange(e.target.value.trimEnd().replace(/ +/g, ' '), 'name')\n }}\n error={nameVal(name)}\n success={name?.length > 0 && !nameVal(name)}\n />\n </FormGroup>\n </div>\n <div className=\"col-4\">\n <FormGroup>\n <label htmlFor=\"\">Como deseja ser chamado(a)?</label>\n <TextField\n maxlength={20}\n name=\"likelyName\"\n value={likelyName}\n placeholder=\"\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(preNameMask(e.target.value.trimStart()), 'likelyName')\n }\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'likelyName'\n )\n }}\n success={likelyName?.length > 0 && !val.sizeVal(likelyName)}\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-3\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">CPF</label>\n <TextField\n maxlength={15}\n name=\"cpf\"\n value={cpf}\n placeholder=\"xxx.xxx.xxx-xx\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => onChange(cpfMask(e.target.value), 'cpf')}\n error={cpfVal(cpf, cpfCadastrado)}\n success={!!!cpfVal(cpf, cpfCadastrado)}\n />\n </FormGroup>\n </div>\n <div className=\"col-3\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Data de nascimento</label>\n <TextField\n maxlength={10}\n name=\"dateOfBirth\"\n value={dateOfBirth}\n placeholder=\"dd/mm/aaaa\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(dateMask(e.target.value), 'dateOfBirth')\n }\n error={birthVal(dateOfBirth)}\n success={!birthVal(dateOfBirth)}\n />\n </FormGroup>\n </div>\n\n <div className=\"col-3\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Tel. Celular</label>\n <TextField\n maxlength={20}\n name=\"cellphone\"\n value={cellphone}\n placeholder=\"(xx) xxxxx-xxxx\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => onChange(cellMask(e.target.value), 'cellphone')}\n error={cellVal(cellphone)}\n success={!cellVal(cellphone)}\n />\n </FormGroup>\n </div>\n <div className=\"col-3\">\n <FormGroup className=\"form-group\">\n <label htmlFor=\"\">Tel. Residencial</label>\n <TextField\n maxlength={20}\n name=\"phone\"\n value={phone}\n placeholder=\"(xx) xxxx-xxxx\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => onChange(fixPhoneMask(e.target.value), 'phone')}\n error={phone.length > 0 && fixPhoneVal(phone)}\n success={phone.length > 0 && !fixPhoneVal(phone)}\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0 0 0 10px' }}>\n <FormGroup className=\"form-group required\">\n <label>Como conheceu o Gimba?</label>\n <S.RadioGroup>\n {options.map((option) => (\n <div key={option.id} className=\"radio-option\">\n <input\n type=\"radio\"\n id={option.nome}\n name=\"idComoConheceu\"\n value={option.id}\n checked={formValues.idComoConheceu === option.id}\n onChange={(e) =>\n onChange(parseInt(e.target.value, 10), 'idComoConheceu')\n }\n error={!selectValOrigem(idComoConheceu)}\n sucess={selectValOrigem(idComoConheceu)}\n />\n <label htmlFor={option.nome}>{option.nome}</label>\n </div>\n ))}\n </S.RadioGroup>\n </FormGroup>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <S.CaptchaContainer\n style={{ transform: 'scale(0.95)', transformOrigin: '0 0' }}\n >\n <ReCAPTCHA\n sitekey={process.env.REACT_APP_CAPTCHA_SITEKEY}\n onChange={onCaptchaChange}\n />\n </S.CaptchaContainer>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0 10px 0 0' }}>\n <S.TermsWrapper className=\"cadastro-aceite-termos\">\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.whatsApp}\n type=\"checkbox\"\n id=\"whatsApp\"\n onChange={(e) => onChange(!formValues.whatsApp, 'whatsApp')}\n />\n <label htmlFor=\"whatsApp\">\n <div style={{ width: '255px' }}>\n <p>Receber comunicação via Whatsapp </p>\n </div>\n </label>\n <Tooltip\n icon={<i className=\"icon icon-info\"></i>}\n message=\"Você receberá uma mensagem a cada atualização de pedido, ofertas promocionais do Gimba e parceiros.\"\n />\n </FormGroup>\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.emails}\n type=\"checkbox\"\n id=\"email\"\n name=\"emails\"\n onClick={() => onChange(!emails, 'emails')}\n />\n <label htmlFor=\"email\">\n Receber e-mails promocionais e de parceiros\n </label>\n </FormGroup>\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.acceptTerms}\n type=\"checkbox\"\n id=\"termo\"\n name=\"acceptTerms\"\n onClick={() => onChange(!acceptTerms, 'acceptTerms')}\n />\n <label htmlFor=\"termo\">\n Aceito os Termos e condições e autorizo o uso de meus dados de\n acordo com a{' '}\n <a\n href={`${process.env.REACT_APP_URL_MAIN}/institucional/seguranca-privacidade`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Declaração de Privacidade\n </a>\n </label>\n </FormGroup>\n </S.TermsWrapper>\n </div>\n </div>\n )\n}\n\nexport default RegisterStep3\n","import styled from 'styled-components'\nimport { theme } from './theme'\n\nexport const AccordionMenu = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 50px 30px;\n border-radius: 15px;\n`\n\nexport const AccordionItens = styled.div`\n display: flex;\n flex-direction: column;\n padding-top: 20px;\n gap: 15px;\n`\nexport const AccordionItemStyle = styled.div`\n display: flex;\n flex-direction: column;\n padding: 25px;\n border-radius: 15px;\n background-color: ${theme.colors.white};\n transition: 0.25s background-color;\n cursor: pointer;\n\n box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\n\n .accordion-content {\n max-height: 0;\n overflow: hidden;\n margin: 0;\n transition: 0.5s max-height, 0.5s margin;\n }\n\n .accordion-content.active {\n max-height: fit-content;\n margin: 30px 0 0 0;\n }\n`\nexport const AccordionIcon = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n\n .icon {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 10px;\n width: 38px;\n height: 38px;\n background-color: ${theme.colors.primary};\n border-radius: 50%;\n }\n\n svg {\n color: ${theme.colors.white};\n height: 25px;\n width: 25px;\n }\n\n p {\n font-size: 20px;\n }\n`\n\nexport const AccordionItemTitle = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center; /* Centraliza verticalmente os itens */\n color: ${theme.colors.primary};\n font-size: 20.74px;\n font-weight: 400;\n\n .success-indicator {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${theme.colors.success};\n color: ${theme.colors.white};\n border-radius: 50%;\n width: 40px;\n height: 40px;\n font-size: 30px;\n }\n\n .success-indicator::before {\n content: '✔';\n font-size: 30px;\n line-height: 1;\n }\n`\n","import React, { useEffect, useRef } from 'react'\nimport {\n AccordionIcon,\n AccordionItemStyle,\n AccordionItemTitle\n} from '../../styles/accordion'\nimport { FaUser } from 'react-icons/fa'\nimport { FaBuilding } from 'react-icons/fa'\nimport { GiHouse } from 'react-icons/gi'\nimport { FaPhoneAlt } from 'react-icons/fa'\n\nconst AccordionItem = ({\n title,\n children,\n current,\n isActive,\n step1Success,\n step2Success,\n onClick,\n type\n}) => {\n const titleRef = useRef(null)\n\n useEffect(() => {\n if (isActive && titleRef.current) {\n titleRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' })\n }\n }, [isActive])\n\n const getIcon = (current, type) => {\n if (current === 1) return <FaUser />\n if (current === 2 && type === 'pf') return <GiHouse />\n if (current === 2 && type === 'pj') return <FaBuilding />\n if (current === 3) return <FaPhoneAlt />\n\n return null\n }\n\n return (\n <AccordionItemStyle onClick={onClick} ref={titleRef}>\n <AccordionItemTitle>\n <AccordionIcon>\n <div className=\"icon\">{getIcon(current, type)}</div>\n <p>{title}</p>\n </AccordionIcon>\n {step1Success && !isActive ? <p className=\"success-indicator\"></p> : ''}\n {step2Success && !isActive ? <p className=\"success-indicator\"></p> : ''}\n </AccordionItemTitle>\n <div className={`accordion-content ${isActive ? 'active' : ''}`}>\n {children}\n </div>\n </AccordionItemStyle>\n )\n}\n\nexport default AccordionItem\n","import styled, { css } from 'styled-components'\n\nimport {\n Button,\n ButtonBack,\n ButtonIcon,\n ButtonPrimary\n} from '../../components/Button/styles'\n\nexport const WrapperMedium = styled.div`\n ${({ theme }) => css`\n margin: auto;\n max-width: 1000px;\n position: relative;\n width: 100%;\n\n @media (max-width: ${theme.media.ipad}) {\n max-width: 90%;\n }\n `}\n`\n\nexport const FormFooter = styled.div`\n min-height: 100px;\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n position: fixed;\n bottom: 0;\n width: 100%;\n background: #fbfbfb;\n padding: 20px 0;\n z-index: 999;\n }\n `}\n`\n\nexport const AdvanceButton = styled.button`\n ${({ theme }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonPrimary(theme)}\n ${ButtonIcon}\n margin-left: 15px;\n `}\n`\n\nexport const BackButton = styled.button`\n ${({ theme }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonBack(theme)}\n ${ButtonIcon}\n `}\n`\n\nexport const FormFooterContent = styled.div`\n ${({ theme }) => css`\n display: flex;\n justify-content: flex-end;\n margin-top: 30px;\n margin-bottom: 30px;\n\n @media (max-width: ${theme.media.cel}) {\n flex-direction: column-reverse;\n margin-top: 0;\n\n ${AdvanceButton} {\n display: block;\n margin: 0 0 10px 0 !important;\n width: 100%;\n }\n }\n `}\n`\n","import * as S from './styles'\n\nconst AccordionButton = ({\n current,\n handleChangeStep,\n trigger,\n handleSubmit\n}) => {\n const handleButtonClick = async (forwards) => {\n const success = await handleChangeStep(forwards)\n if (!success) return\n }\n\n const handleSubmitClick = async () => {\n await handleSubmit()\n }\n\n return (\n <S.FormFooterContent>\n {current !== 1 && (\n <S.BackButton onClick={() => handleButtonClick(false)}>\n <i className=\"icon icon-arrow-button-left\"></i> Voltar\n </S.BackButton>\n )}\n\n {current === 3 ? (\n <S.AdvanceButton onClick={handleSubmitClick}>\n {trigger ? <div>Finalizar Cadastro</div> : <div>...Cadastrando</div>}\n </S.AdvanceButton>\n ) : (\n <S.AdvanceButton onClick={() => handleButtonClick(true)}>\n <div>\n Continuar <i className=\"icon icon-arrow-button-right\"></i>\n </div>\n </S.AdvanceButton>\n )}\n </S.FormFooterContent>\n )\n}\n\nexport default AccordionButton\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useEffect, useState, useRef } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport cadastro from '../../api/cadastro'\nimport { RegisterStep1, RegisterStep2, RegisterStep3 } from './Steps'\nimport { useSelector } from 'react-redux'\nimport clientes from '../../api/clientes'\nimport Loader from '../Loader'\nimport { useToast } from '../../hooks/toast'\nimport { Wrapper } from '../PreRegisterForm/styles'\nimport * as S from './styles'\nimport {\n cellVal,\n cpfVal,\n emailConfVal,\n emailVal,\n fixPhoneVal,\n nameVal,\n preNameVal,\n fieldVal,\n passVal,\n passConfVal,\n fieldValComp,\n cepVal,\n sizeVal,\n ufVal,\n cpfRepetidoVal,\n birthVal\n} from './fieldValidator'\nimport {\n dateString,\n dddString,\n phoneString,\n noMask\n} from '../../components/FormPF/masks'\nimport { selectValOrigem } from '../../components/FormPJ/fieldValidator'\nimport AccordionItem from '../AccordionItem'\nimport AccordionButton from '../AccordionButton'\nimport { AccordionItens, AccordionMenu } from '../../styles/accordion'\n\nconst FormPF = ({ type, email, setType, name, setSelectedType }) => {\n const dados = useSelector((store) => store.facebook.dados)\n let { addToast } = useToast()\n let router = useHistory()\n const [trigger, setTrigger] = useState(true)\n const [current, setCurrent] = useState(1)\n const [load, setLoad] = useState(false)\n const [formValues, setFormvalues] = useState({\n email: '',\n emailConfirm: '',\n password: '',\n passwordConfirm: '',\n name: '',\n likelyName: '',\n cpf: '',\n dateOfBirth: '',\n genre: '',\n cellphone: '',\n phone: '',\n whatsApp: false,\n emails: false,\n acceptTerms: false,\n errorTrigger: { 1: false, 2: false, 3: false },\n cpfCadastrado: undefined,\n idComoConheceu: 0\n })\n const [captcha, setCaptcha] = useState({\n value: '',\n expired: false\n })\n\n const titleRefs = useRef([useRef(null), useRef(null), useRef(null)])\n\n const handleChange = (value, field) => {\n setFormvalues((prev) => ({\n ...prev,\n [field]: value\n }))\n }\n\n const handleAccordionClick = async (newActiveAccordion) => {\n if (newActiveAccordion !== current) {\n // Lógica para verificar se os passos anteriores foram completados com sucesso\n if (newActiveAccordion === 2 && !step1Success) {\n addToast({\n type: 'error',\n title: 'Erro',\n description: 'Preencher passo anterior corretamente'\n })\n return\n }\n if (newActiveAccordion === 3 && (!step1Success || !step2Success)) {\n addToast({\n type: 'error',\n title: 'Erro',\n description: 'Preencher passos anteriores corretamente'\n })\n return\n }\n const success = await handleChangeStep(true)\n if (success) {\n setCurrent(newActiveAccordion)\n }\n }\n }\n const onCaptchaChange = (value) => {\n if (value === null) {\n setCaptcha({\n value: value,\n expired: true\n })\n } else {\n setCaptcha({ value: value, expired: false })\n }\n }\n\n useEffect(() => {\n const { nome } = dados\n if (nome.length > 0) handleChange(nome, 'name')\n setSelectedType('pf')\n }, [])\n\n useEffect(() => {\n if (email)\n setFormvalues((prev) => ({\n ...prev,\n email\n }))\n if (name)\n setFormvalues((prev) => ({\n ...prev,\n name\n }))\n }, [email, name])\n\n const handleSubmit = async () => {\n setLoad(true) // Ativa o loader\n const {\n emailConfirm,\n likelyName,\n cpf,\n dateOfBirth,\n cellphone,\n phone,\n password,\n passwordConfirm,\n emails,\n whatsApp,\n acceptTerms,\n cpfCadastrado,\n idComoConheceu\n } = formValues\n const msg =\n fieldVal(\n [\n formValues.email,\n likelyName,\n cpf,\n dateOfBirth,\n cellphone,\n password,\n phone,\n formValues.name,\n cpfCadastrado,\n idComoConheceu\n ],\n [\n emailVal,\n preNameVal,\n cpfVal,\n birthVal,\n cellVal,\n passVal,\n fixPhoneVal,\n nameVal,\n cpfRepetidoVal,\n selectValOrigem\n ]\n ) +\n fieldValComp(\n [formValues.email, emailConfirm, password, passwordConfirm],\n [emailConfVal, passConfVal]\n )\n if (msg.length > 1 && !msg.includes('Escolha uma opção')) {\n setLoad(false)\n return addToast({\n type: 'error',\n title: 'Preencher campos obrigatórios',\n description: ''\n })\n } else if (msg.includes('Escolha uma opção')) {\n setLoad(false) // Desativa o loader\n console.log(msg)\n return addToast({\n type: 'error',\n title: 'Escolha uma opção',\n description: 'Como conheceu o gimba?'\n })\n } else if (!acceptTerms) {\n setLoad(false) // Desativa o loader\n return addToast({\n type: 'error',\n title: 'Termos e condições não aceito',\n description: 'Aceitar os Termos e condições'\n })\n } else if (captcha.value === '') {\n setLoad(false) // Desativa o loader\n addToast({\n type: 'error',\n title: 'Por favor, complete a verificação \"Não sou um Robô\"'\n })\n } else if (captcha.expired === true) {\n setLoad(false) // Desativa o loader\n addToast({\n type: 'error',\n title:\n 'Verificação expirada. Por favor, marque novamente a caixa de seleção'\n })\n } else {\n try {\n const formBody = {\n cpf: cpf,\n nome: formValues.name,\n dataNascimento: dateString(dateOfBirth),\n senha: password,\n token: '4a0c45d784324c03acf4f8236180e849',\n guidJwt: captcha.value,\n apelido: likelyName,\n receberNovidades: emails,\n receberWhatsApp: whatsApp,\n email: formValues.email,\n rg: '',\n rgOrgaoEmissor: '',\n telefoneResidencialDDD: dddString(phone),\n telefoneResidencialNumero: phoneString(phone),\n telefoneCelularNumero: phoneString(cellphone),\n telefoneCelularDDD: dddString(cellphone),\n telefoneComercialDDD: '',\n telefoneComercialNumero: '',\n telefoneComercialRamal: '',\n idComoConheceu: formValues.idComoConheceu,\n endereco: {\n id: 0,\n padrao: true,\n tipoEndereco: 'C',\n tipoLogradouro: formValues.tipoLogradouro,\n apelido: 'Cobrança',\n logradouro: formValues.logradouro,\n pontoReferencia: formValues.pontoReferencia,\n numero: formValues.numero,\n complemento: formValues.complemento,\n bairro: formValues.bairro,\n cidade: formValues.cidade,\n uf: formValues.uf,\n cep: noMask(formValues.cep)\n },\n clienteSocialMediaModel: {\n userId: dados.facebookId,\n providerKey: '',\n loginProvider: '',\n email: formValues.email,\n nome: formValues.name\n }\n }\n\n setTrigger(false)\n\n let res\n\n if (JSON.parse(localStorage.getItem('preCadastro'))) {\n res = await cadastro.preCadastroClientePF(formBody)\n } else {\n res = await cadastro.cadastroClientePF(formBody)\n }\n const { status } = res\n\n if (status >= 200 && status < 300) {\n setLoad(false) // Desativa o loader\n return router.push('/cadastro-sucesso', {\n email: formBody.email\n })\n } else {\n setTrigger(true)\n setLoad(false) // Desativa o loader\n return addToast({\n type: 'Erro',\n title: 'error',\n description:\n res.errors.Messages[0] ||\n 'Ocorreu um problema, tente mais tarde novamente'\n })\n }\n } catch (e) {\n setLoad(false) // Desativa o loader em caso de erro\n addToast({\n type: 'error',\n title: 'Erro no cadastro',\n description:\n 'Ocorreu um problema durante o cadastro. Tente novamente mais tarde.'\n })\n }\n }\n }\n const [step1Success, setStep1Success] = useState(false)\n const [step2Success, setStep2Success] = useState(false)\n\n const handleChangeStep = async (forwards) => {\n if (current === 3 && forwards) {\n handleChange({ 1: true, 2: true, 3: true }, 'errorTrigger')\n const msg = fieldVal(\n [\n formValues.name,\n formValues.cpf,\n formValues.dateOfBirth,\n formValues.contato,\n formValues.idComoConheceu\n ],\n [nameVal, cpfVal, birthVal, cellVal, selectValOrigem]\n )\n\n if (msg.length > 1) {\n addToast({\n type: 'error',\n title: 'Preencha os campos corretamente',\n description: ''\n })\n return false\n }\n\n return true\n } else if (current === 1 && !forwards) {\n setType(undefined)\n return true\n } else if (current === 1 && !forwards) {\n setType(undefined)\n return true\n } else if (current === 1 && forwards) {\n handleChange({ 1: true, 2: false, 3: false }, 'errorTrigger')\n const msg =\n fieldVal([formValues.email, formValues.password], [emailVal, passVal]) +\n fieldValComp(\n [\n formValues.email,\n formValues.emailConfirm,\n formValues.password,\n formValues.passwordConfirm\n ],\n [emailConfVal, passConfVal]\n )\n if (msg.length > 1) {\n addToast({\n type: 'error',\n title: 'Preencher campos corretamente'\n })\n return false\n }\n if (JSON.parse(localStorage.getItem('preCadastro'))) {\n setLoad(true)\n let valid\n try {\n valid = await clientes.email(formValues.email)\n } catch (e) {}\n if (valid?.status === 200) {\n setLoad(false)\n addToast({\n type: 'error',\n title: 'E-mail já cadastrado'\n })\n return false\n }\n setLoad(false)\n }\n setStep1Success(true)\n setCurrent(current + 1)\n return true\n } else if (current === 2 && forwards) {\n handleChange({ 1: true, 2: true, 3: false }, 'errorTrigger')\n const msg = fieldVal(\n [\n formValues.logradouro,\n formValues.numero || '',\n formValues.bairro || '',\n formValues.cidade || '',\n formValues.uf,\n formValues.cep || ''\n ],\n [sizeVal, sizeVal, sizeVal, sizeVal, ufVal, cepVal]\n )\n if (msg.length > 1) {\n addToast({\n type: 'error',\n title: 'Preencher campos obrigatórios'\n })\n return false\n }\n setCurrent(current + 1)\n setStep2Success(true)\n return true\n } else if (forwards) {\n setCurrent(current + 1)\n return true\n } else if (!forwards) {\n setCurrent(current - 1)\n return true\n }\n }\n\n const handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault()\n e.target.blur()\n handleChangeStep(true)\n }\n }\n\n if (type !== 'pf') return null\n\n return (\n <>\n {load && <Loader />}\n <Wrapper>\n <S.WrapperMedium>\n <AccordionMenu>\n <AccordionItens>\n <AccordionItem\n title=\"Dados de Acesso\"\n current={1}\n isActive={current === 1}\n step1Success={step1Success}\n onClick={() => handleAccordionClick(1)}\n type={type}\n ref={titleRefs.current[0]}\n >\n <RegisterStep1\n formValues={formValues}\n onChange={handleChange}\n handleKeyDown={handleKeyDown}\n handleChangeStep={handleChangeStep}\n />\n <AccordionButton\n current={current}\n handleChangeStep={handleChangeStep}\n trigger={trigger}\n handleSubmit={handleSubmit}\n />\n </AccordionItem>\n <AccordionItem\n title=\"Endereço\"\n current={2}\n isActive={current === 2}\n step2Success={step2Success}\n onClick={() => handleAccordionClick(2)}\n type={type}\n ref={titleRefs.current[1]}\n >\n <RegisterStep2\n formValues={formValues}\n current={current}\n onChange={handleChange}\n handleKeyDown={handleKeyDown}\n handleChangeStep={handleChangeStep}\n />\n <AccordionButton\n current={current}\n handleChangeStep={handleChangeStep}\n trigger={trigger}\n handleSubmit={handleSubmit}\n />\n </AccordionItem>\n <AccordionItem\n title=\"Dados de Contato\"\n current={3}\n isActive={current === 3}\n onClick={() => handleAccordionClick(3)}\n type={type}\n ref={titleRefs.current[2]}\n >\n <RegisterStep3\n formValues={formValues}\n onChange={handleChange}\n handleKeyDown={handleKeyDown}\n handleChangeStep={handleChangeStep}\n onCaptchaChange={onCaptchaChange}\n />\n <AccordionButton\n current={current}\n handleChangeStep={handleChangeStep}\n trigger={trigger}\n handleSubmit={handleSubmit}\n />\n </AccordionItem>\n </AccordionItens>\n </AccordionMenu>\n </S.WrapperMedium>\n </Wrapper>\n </>\n )\n}\n\nexport default FormPF\n","import styled, { css } from 'styled-components'\n\nimport { FormGroup } from '../../../components/Form/styles'\nimport { Wrapper } from '../../../components/Tooltip/styles'\nimport { RadioStyles, RadioStylesOrigem } from '../../../styles/radio'\n\nexport const TermsWrapper = styled.div`\n margin-top: 10px;\n\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n &.last-element {\n margin-bottom: 180px;\n }\n }\n\n @media (max-width: ${theme.media.cel}) {\n &.last-element {\n margin-bottom: 180px;\n }\n }\n `}\n\n ${FormGroup} {\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n\n label {\n margin-bottom: 0;\n margin-left: 10px;\n }\n\n a {\n font-weight: 600;\n }\n\n ${Wrapper} {\n top: 10px;\n }\n }\n`\nexport const LabelInfo = styled.div`\n font-weight: 500;\n font-size: 16px;\n margin-left: 10px;\n @media (max-width: 720px) {\n text-align: center;\n font-size: 14px;\n margin-left: 0px;\n }\n`\nexport const ErrorList = styled.ul`\n font-size: 14px;\n margin: 0px 0px 10px 10px;\n\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n margin-top: -120px;\n }\n\n @media (max-width: ${theme.media.cel}) {\n margin-top: -180px;\n font-size: 12px;\n }\n `};\n`\nexport const TitleErrorList = styled.h3`\n color: #3d3d3d;\n font-size: 15px;\n font-weight: 500;\n margin: 10px 0px;\n`\n\nexport const Error = styled.li`\n ${({ theme, isValid, isPasswordEmpty }) => css`\n color: ${isPasswordEmpty ? '#616161' : isValid ? '#5CC187' : '#D22630'};\n display: flex;\n font-weight: 400;\n align-items: center;\n margin: 10px 0;\n\n &::before {\n content: '${isPasswordEmpty ? '\\u25cf' : isValid ? '\\u2714' : '\\u25cf'}';\n font-size: 14px;\n padding-right: 10px;\n height: 16px;\n width: 20px;\n color: ${isPasswordEmpty ? '#D22630' : isValid ? '#5CC187' : '#D22630'};\n display: inline-block;\n }\n `}\n`\n\nexport const CaptchaContainer = styled.div`\n margin-bottom: 16px;\n`\nexport const RadioGroup = styled.div`\n ${(props) => RadioStylesOrigem(props.theme)}\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 1px 30px;\n width: 100%;\n justify-content: stretch;\n\n .radio-option {\n display: flex;\n gap: 5px;\n }\n\n input[type='radio'] {\n margin: 0;\n cursor: pointer;\n }\n\n label {\n vertical-align: middle;\n line-height: 1;\n }\n\n @media (max-width: 1024px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 768px) {\n grid-template-columns: repeat(1, 1fr);\n }\n\n @media (max-width: 480px) {\n grid-template-columns: 1fr;\n }\n`\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { FormGroup, FormGroupIcon } from '../../../components/Form/styles'\nimport {\n emailConfVal,\n emailVal\n} from '../../../components/FormPF/fieldValidator'\nimport TextField from '../../../components/TextField'\nimport { useState, useEffect } from 'react'\nimport * as S from './styles'\nimport { validatePassword } from '../fieldValidator'\n\nconst RegisterStep1 = ({\n formValues,\n onChange,\n handleKeyDown,\n handleChangeStep\n}) => {\n const { email, confirmaEmailContato, senha, confirmaSenha } = formValues\n const [passView, setPassView] = useState(true)\n const [passConfView, setPassConfView] = useState(true)\n const [isBackButtonClicked, setBackbuttonPress] = useState(false)\n\n useEffect(() => {\n window.history.pushState(null, null, window.location.pathname)\n window.addEventListener('popstate', onBackButtonEvent)\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const [isNewPasswordEmpty, setNewPasswordEmpty] = useState(true)\n const [isNewPasswordValid, setNewPasswordValid] = useState(false)\n\n const [passwordValidation, setPasswordValidation] = useState({\n uppercase: false,\n lowercase: false,\n specialChar: false,\n number: false,\n length: false,\n matchConfirmation: false\n })\n\n useEffect(() => {\n const isPasswordValid =\n passwordValidation.uppercase &&\n passwordValidation.lowercase &&\n passwordValidation.specialChar &&\n passwordValidation.number &&\n passwordValidation.length &&\n !isNewPasswordEmpty\n setNewPasswordValid(isPasswordValid)\n\n if (senha !== '' || confirmaSenha !== '') {\n setPasswordValidation(validatePassword(senha, 'senha', confirmaSenha))\n }\n\n if (senha === '') {\n setNewPasswordEmpty(true)\n }\n }, [senha, confirmaSenha, passwordValidation.matchConfirmation])\n\n const handleChange = (e) => {\n const { name, value } = e.target\n\n if (name === 'senha') {\n setNewPasswordEmpty(value === '')\n setPasswordValidation(validatePassword(value, 'senha', confirmaSenha))\n }\n }\n\n const onBackButtonEvent = (e) => {\n e.preventDefault()\n if (!isBackButtonClicked) {\n setBackbuttonPress(true)\n handleChangeStep(false)\n } else {\n window.history.pushState(null, null, window.location.pathname)\n setBackbuttonPress(false)\n }\n }\n\n return (\n <div className=\"col-group\">\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"required\">\n <label htmlFor=\"emailContato\">E-mail</label>\n <TextField\n maxlength={80}\n name=\"emailContato\"\n value={email}\n placeholder=\"Digite seu e-mail\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n // onChange={(e) =>\n // !!JSON.parse(localStorage.getItem('preCadastro')) &&\n // onChange(e.target.value.trimStart().toLowerCase(), 'email')\n // }\n error={email.length > 2 && emailVal(email)}\n success={!emailVal(email)}\n />\n </FormGroup>\n </div>\n <div className=\"col-6\">\n <FormGroup className=\"required\">\n <label htmlFor=\"confirmaEmailContato\">Confirme seu e-mail</label>\n <TextField\n maxlength={80}\n name=\"confirmaEmailContato\"\n value={confirmaEmailContato}\n type=\"email\"\n placeholder=\"Confirme seu e-mail\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(\n e.target.value.trimStart().toLowerCase(),\n 'confirmaEmailContato'\n )\n }\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'confirmaEmailContato'\n )\n }}\n error={\n formValues.errorTrigger[1] &&\n emailConfVal(email, confirmaEmailContato)\n }\n success={!emailConfVal(email, confirmaEmailContato)}\n />\n </FormGroup>\n </div>\n </div>\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"email\">Senha</label>\n <FormGroupIcon className=\"form-group-icon\">\n <TextField\n maxlength={80}\n name=\"senha\"\n type={passView ? 'password' : 'text'}\n value={senha}\n placeholder=\"Digite sua senha\"\n success={isNewPasswordValid}\n error={formValues.errorTrigger[1] && !isNewPasswordValid}\n onChange={(e) => {\n handleChange(e)\n onChange(e.target.value.trimStart(), 'senha')\n }}\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n />\n <span\n className={!passView ? 'icon icon-eye' : 'icon icon-eye-cut'}\n onClick={() => setPassView(!passView)}\n ></span>\n </FormGroupIcon>\n </FormGroup>\n </div>\n\n <div className=\"col-6\">\n <FormGroup className=\"form-group required last-element\">\n <label htmlFor=\"email\">Confirme sua senha</label>\n <FormGroupIcon className=\"form-group-icon\">\n <TextField\n maxlength={80}\n name=\"confirmaSenha\"\n type={passConfView ? 'password' : 'text'}\n value={confirmaSenha}\n placeholder=\"Confirme sua senha\"\n success={passwordValidation.matchConfirmation}\n error={\n formValues.errorTrigger[1] &&\n !passwordValidation.matchConfirmation\n }\n onChange={(e) => {\n handleChange(e)\n onChange(e.target.value.trimStart(), 'confirmaSenha')\n }}\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n />\n <span\n className={\n !passConfView ? 'icon icon-eye' : 'icon icon-eye-cut'\n }\n onClick={() => setPassConfView(!passConfView)}\n ></span>\n <div></div>\n </FormGroupIcon>\n </FormGroup>\n </div>\n </div>\n <div className=\"col-12\">\n <S.ErrorList>\n <S.TitleErrorList>\n Senha deve conter os seguintes parâmetros\n </S.TitleErrorList>\n <S.Error\n isValid={passwordValidation.length}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Ter no mÃnimo 8 caracteres\n </S.Error>\n <S.Error\n isValid={passwordValidation.uppercase}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Uma letra maiúscula\n </S.Error>\n <S.Error\n isValid={passwordValidation.lowercase}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Uma letra minúscula\n </S.Error>\n <S.Error\n isValid={passwordValidation.number}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Um número\n </S.Error>\n <S.Error\n isValid={passwordValidation.specialChar}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n Um caractere especial {'(!@#$%^*&)'}\n </S.Error>\n <S.Error\n isValid={passwordValidation.matchConfirmation}\n isPasswordEmpty={isNewPasswordEmpty}\n >\n A senha e a confirmação devem ser iguais\n </S.Error>\n </S.ErrorList>\n </div>\n </div>\n )\n}\n\nexport default RegisterStep1\n","import { createContext, useState, ReactNode } from 'react'\r\nimport { UserPFProps, UserPJProps } from '../types/user'\r\n\r\ntype UserContextProps = {\r\n children: ReactNode\r\n}\r\n\r\ntype StepProps = {\r\n pf: number\r\n pj: number\r\n}\r\n\r\ntype UserContextType = {\r\n userType: string\r\n setUserType: (newState: string) => void\r\n userPF: UserPFProps\r\n setUserPF: (newState: UserPFProps) => void\r\n userPJ: UserPJProps\r\n setUserPJ: (newState: UserPJProps) => void\r\n getUserData: (type: string) => void\r\n createUser: (data: string) => void\r\n userName: string\r\n setUserName: (name: string) => void\r\n userEmail: string\r\n setUserEmail: (email: string) => void\r\n step: StepProps\r\n setStep: (step: StepProps | Object) => void\r\n validacaoExternaPJ: boolean\r\n setValidacaoExternaPJ: (validacaoExternaDadosClientePJ: boolean) => void\r\n}\r\n\r\nconst initialValue = {\r\n type: '',\r\n step: {\r\n pf: 0,\r\n pj: 0\r\n },\r\n userPF: {\r\n cpf: '',\r\n nome: '',\r\n dataNascimento: '',\r\n sexo: '',\r\n senha: '',\r\n token: '4a0c45d784324c03acf4f8236180e849',\r\n guidJwt: '',\r\n apelido: '',\r\n receberNovidades: '',\r\n receberWhatsApp: '',\r\n email: '',\r\n rg: '',\r\n rgOrgaoEmissor: '',\r\n telefoneResidencialDDD: '',\r\n telefoneResidencialNumero: '',\r\n telefoneCelularNumero: '',\r\n telefoneCelularDDD: '',\r\n telefoneComercialDDD: '',\r\n telefoneComercialNumero: '',\r\n telefoneComercialRamal: '',\r\n endereco: {\r\n id: 0,\r\n padrao: true,\r\n tipoEndereco: 'C',\r\n apelido: '',\r\n tipoLogradouro: '',\r\n logradouro: '',\r\n pontoReferencia: '',\r\n numero: '',\r\n complemento: '',\r\n bairro: '',\r\n cidade: '',\r\n uf: '',\r\n cep: ''\r\n },\r\n clienteSocialMediaModel: {\r\n userId: '',\r\n providerKey: '',\r\n loginProvider: '',\r\n email: '',\r\n nome: ''\r\n }\r\n },\r\n userPJ: {\r\n idCargo: '',\r\n idDepartamento: '',\r\n senha: '',\r\n token: '',\r\n guidJwt: '',\r\n receberNovidades: '',\r\n receberWhatsApp: '',\r\n email: '',\r\n razaoSocial: '',\r\n nomeFantasia: '',\r\n cnpj: '',\r\n inscricaoEstadual: '',\r\n inscricaoMunicipal: '',\r\n dataAbertura: '',\r\n idAtividade: '',\r\n idSubAtividade: '',\r\n telefoneComercialDDD: '',\r\n telefoneComercialNumero: '',\r\n telefoneComercialRamal: '',\r\n contato: '',\r\n numeroFuncionariosAdministrativos: '',\r\n numeroFuncionariosTotal: '',\r\n telefoneCelularDDD: '',\r\n telefoneCelularNumero: '',\r\n endereco: {\r\n id: 0,\r\n padrao: true,\r\n tipoEndereco: 'C',\r\n apelido: '',\r\n tipoLogradouro: '',\r\n logradouro: '',\r\n pontoReferencia: '',\r\n numero: '',\r\n complemento: '',\r\n bairro: '',\r\n cidade: '',\r\n uf: '',\r\n cep: ''\r\n },\r\n clienteSocialMediaModel: {\r\n userId: '',\r\n providerKey: '',\r\n loginProvider: '',\r\n email: '',\r\n nome: ''\r\n }\r\n }\r\n}\r\n\r\nexport const UserContext = createContext<UserContextType>({} as UserContextType)\r\n\r\nexport const UserContextProvider = ({ children }: UserContextProps) => {\r\n const [userType, setUserType] = useState('')\r\n const [userName, setUserName] = useState('')\r\n const [userEmail, setUserEmail] = useState('')\r\n const [validacaoExternaPJ, setValidacaoExternaPJ] = useState(false)\r\n const [userPF, setUserPF] = useState<UserPFProps>(initialValue.userPF)\r\n const [userPJ, setUserPJ] = useState<UserPJProps>(initialValue.userPJ)\r\n const [step, setStep] = useState<StepProps>(initialValue.step)\r\n\r\n const getUserData = async (type: string) => {\r\n // const response = await fetch()\r\n\r\n // console.log('New', type)\r\n console.log(userPF, userPJ)\r\n }\r\n\r\n const createUser = async (data: string) => {\r\n // const response = await fetch()\r\n\r\n // console.log('New', type)\r\n console.log(userPF, userPJ)\r\n }\r\n\r\n return (\r\n <UserContext.Provider\r\n value={{\r\n userType,\r\n setUserType,\r\n userPF,\r\n setUserPF,\r\n userPJ,\r\n setUserPJ,\r\n getUserData,\r\n createUser,\r\n userName,\r\n setUserName,\r\n userEmail,\r\n setUserEmail,\r\n step,\r\n setStep,\r\n validacaoExternaPJ,\r\n setValidacaoExternaPJ\r\n }}\r\n >\r\n {children}\r\n </UserContext.Provider>\r\n )\r\n}\r\n","import { useState, useEffect, useContext } from 'react'\nimport { FormGroup } from '../../Form/styles'\nimport TextField from '../../TextField'\nimport clientes from '../../../api/clientes'\nimport defaultOptions from '../../../api/defaultoption'\nimport {\n cnpjVal,\n inscEstVal,\n razaoVal,\n cnpjRepetido,\n validateReceitaError,\n validateInscEstadual\n} from '../fieldValidator'\nimport { cnpjMask, inscrEstMask } from '../masks'\nimport { UserContext } from '../../../contexts/UserContext'\nimport * as mask from '../../FormPF/masks'\nimport { cepVal, sizeVal, ufVal } from '../../FormPF/fieldValidator'\nimport * as S from '../../FormPF/styles'\nimport cadastro from '../../../api/cadastro'\nimport Loader from '../../Loader'\nimport { LabelInfo } from './styles'\n\nconst RegisterStep2 = ({\n formValues,\n receitaFederalError,\n onChange,\n handleKeyDown,\n handleChangeStep,\n setValidInscEst\n}) => {\n const {\n razaoSocial,\n cnpj,\n inscricaoEstadual,\n cnpjCadastrado,\n cep,\n logradouro,\n numero,\n complemento,\n bairro,\n cidade,\n uf,\n\n invalidCEP\n } = formValues\n\n const [cnpjTrigger, setCnpjTrigger] = useState(true)\n const [isBackButtonClicked, setBackbuttonPress] = useState(false)\n const { setValidacaoExternaPJ } = useContext(UserContext)\n\n const [isInscEstValid, setIsInscEstValid] = useState({\n valid: false,\n message: '',\n showToaster: false\n })\n\n const [load, setLoad] = useState(false)\n const [isCepUnico, setIsCepUnico] = useState(false)\n\n const [isUfAutoFilled, setIsUfAutoFilled] = useState(false)\n const [isUfValid, setIsUfValid] = useState(true) // Estado para controlar a validade da UF\n\n useEffect(() => {\n if (cnpj.length === 18 && cnpjTrigger) {\n cnpjRepetido(cnpj, setValidacaoExternaPJ).then((res) => {\n onChange(res, 'cnpjCadastrado')\n })\n setCnpjTrigger(false)\n } else if (cnpj.length < 18 && !cnpjTrigger) {\n setCnpjTrigger(true)\n }\n }, [cnpj])\n\n useEffect(() => {\n const validate = async () => {\n const result = await validateInscEstadual(inscricaoEstadual, uf)\n setIsInscEstValid({\n valid: result.valid,\n message: result.message,\n showToaster: true\n })\n setValidInscEst(result.valid)\n }\n\n if (\n inscricaoEstadual !== 'ISENTO' &&\n inscricaoEstadual?.length >= 8 &&\n uf\n ) {\n validate()\n }\n }, [inscricaoEstadual, uf])\n\n useEffect(() => {\n if (!!formValues.isento) onChange('ISENTO', 'inscricaoEstadual')\n }, [formValues.isento])\n\n const useActiveElement = () => {\n const [listenersReady, setListenersReady] = useState(false)\n const [activeElement, setActiveElement] = useState(document.activeElement)\n\n useEffect(() => {\n const onFocus = (event) => setActiveElement(event.target)\n const onBlur = (event) => setActiveElement(null)\n\n window.addEventListener('focus', onFocus, true)\n window.addEventListener('blur', onBlur, true)\n\n setListenersReady(true)\n\n return () => {\n window.removeEventListener('focus', onFocus)\n window.removeEventListener('blur', onBlur)\n }\n }, [])\n\n return {\n activeElement,\n listenersReady\n }\n }\n const { activeElement, listenersReady } = useActiveElement()\n\n const checkCEPUnico = (cep) => {\n const lastDigits = cep.substr(-3)\n\n if (lastDigits === '000') {\n setIsCepUnico(true)\n } else {\n setIsCepUnico(false)\n }\n }\n\n const getCEP = async (CEP, onChange) => {\n setLoad(true)\n let endereco = await cadastro.getCEP(CEP)\n if (endereco.status === 200) {\n onChange(false, 'invalidCEP')\n endereco = await endereco.json()\n onChange(endereco.bairro, 'bairro')\n onChange(endereco.cidade, 'cidade')\n onChange(endereco.endereco === '' ? '' : endereco.endereco, 'logradouro')\n onChange(endereco.tipoLogradouro, 'tipoLogradouro')\n onChange(endereco.uf, 'uf')\n setIsUfAutoFilled(true)\n } else if (endereco.status === 204) {\n onChange(true, 'invalidCEP')\n }\n setLoad(false)\n }\n\n const clearCEP = async (onChange) => {\n onChange('', 'bairro')\n onChange('', 'cidade')\n onChange('', 'logradouro')\n onChange('', 'tipoLogradouro')\n onChange('', 'uf')\n setIsUfAutoFilled(false)\n }\n\n useEffect(() => {\n if (!!cep) {\n checkCEPUnico(cep)\n }\n }, [])\n\n useEffect(() => {\n if (activeElement.name === 'CEP') {\n if (cep?.length === 9 && cep?.substr(-3) === '000') {\n checkCEPUnico(cep)\n getCEP(mask.noMask(cep), onChange)\n } else if (cep?.length === 9) {\n getCEP(mask.noMask(cep), onChange)\n } else {\n clearCEP(onChange)\n }\n }\n }, [cep])\n\n useEffect(() => {\n window.history.pushState(null, null, window.location.pathname)\n window.addEventListener('popstate', onBackButtonEvent)\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent)\n }\n }, [])\n\n const handleBlurInscEstadual = async (e) => {\n if (uf) {\n onChange(e.target.value.trimEnd(), 'inscricaoEstadual')\n const result = await validateInscEstadual(e.target.value, uf)\n setIsInscEstValid({\n valid: result.valid,\n message: result.message,\n showToaster: true\n })\n setValidInscEst(result.valid)\n }\n }\n\n const handleChangeUF = async (e) => {\n const ufValue = e.target.value\n onChange(ufValue, 'uf')\n\n const isValid = ufVal(ufValue)\n if (isValid !== undefined) {\n setIsUfValid(isValid)\n }\n if (inscricaoEstadual !== 'ISENTO' && inscricaoEstadual?.length >= 8) {\n const result = await validateInscEstadual(inscricaoEstadual, ufValue)\n setIsInscEstValid({\n valid: result.valid,\n message: result.message,\n showToaster: true\n })\n setValidInscEst(result.valid)\n }\n }\n\n const onBackButtonEvent = (e) => {\n e.preventDefault()\n if (!isBackButtonClicked) {\n setBackbuttonPress(true)\n handleChangeStep(false)\n } else {\n window.history.pushState(null, null, window.location.pathname)\n setBackbuttonPress(false)\n }\n }\n\n return (\n <>\n {load && <Loader />}\n <div className=\"col-group\">\n <div className=\"col-12\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Razão Social</label>\n <TextField\n maxlength={45}\n name=\"razaoSocial\"\n value={razaoSocial}\n placeholder=\"Digite a razão social\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(e.target.value.trimStart(), 'razaoSocial')\n }\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'razaoSocial'\n )\n }}\n error={\n (formValues.errorTrigger[2] && razaoVal(razaoSocial)) ||\n validateReceitaError(\n receitaFederalError.razaoSocial.status,\n 'Razão Social',\n receitaFederalError.razaoSocial.message\n )\n }\n success={\n !razaoVal(razaoSocial) &&\n !receitaFederalError.razaoSocial.status\n }\n />\n </FormGroup>\n </div>\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">CNPJ</label>\n <TextField\n maxlength={30}\n name=\"cnpj\"\n value={cnpj}\n placeholder=\"Digite o cnpj\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => {\n onChange(cnpjMask(e.target.value), 'cnpj')\n }}\n error={\n (formValues.errorTrigger[2] &&\n cnpjVal(cnpj, cnpjCadastrado)) ||\n validateReceitaError(\n receitaFederalError.cnpj.status,\n 'CNPJ',\n receitaFederalError.cnpj.message\n )\n }\n success={\n !cnpjVal(cnpj, cnpjCadastrado) &&\n !receitaFederalError.cnpj.status\n }\n />\n </FormGroup>\n </div>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n height: '24px'\n }}\n >\n <label htmlFor=\"\">Inscrição Estadual</label>\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.isento}\n type=\"checkbox\"\n id=\"isento\"\n onChange={(e) => {\n onChange('', 'inscricaoEstadual')\n return onChange(!formValues.isento, 'isento')\n }}\n />\n <label htmlFor=\"isento\" style={{ marginRight: '1px' }}>\n <p>Isento </p>\n </label>\n </FormGroup>\n </div>\n <TextField\n maxlength={15}\n name=\"inscricaoEstadual\"\n value={inscricaoEstadual}\n placeholder=\"Digite a Inscrição Estadual\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n !formValues.isento &&\n onChange(inscrEstMask(e.target.value), 'inscricaoEstadual')\n }\n onBlur={handleBlurInscEstadual}\n error={\n (activeElement?.name !== 'inscricaoEstadual' &&\n formValues.errorTrigger[2] &&\n formValues.uf !== '' &&\n inscEstVal(\n inscricaoEstadual,\n isInscEstValid.valid,\n formValues.uf\n )) ||\n validateReceitaError(\n receitaFederalError.inscricaoEstadual.status,\n 'Inscrição Estadual',\n receitaFederalError.inscricaoEstadual.message\n )\n }\n success={\n activeElement?.name !== 'inscricaoEstadual' &&\n (formValues.isento ||\n (!inscEstVal(\n inscricaoEstadual,\n isInscEstValid.valid,\n formValues.uf\n ) &&\n !receitaFederalError.inscricaoEstadual.status))\n }\n />\n </FormGroup>\n </div>\n </div>{' '}\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-4\">\n <FormGroup\n className=\"required\"\n onBlur={() => {\n if (cep?.length === 9) {\n getCEP(mask.noMask(cep), onChange)\n checkCEPUnico(cep)\n } else {\n clearCEP(onChange)\n }\n }}\n >\n <label htmlFor=\"CEP\">CEP</label>\n <TextField\n maxlength={9}\n name=\"CEP\"\n value={cep}\n placeholder=\"Digite seu CEP\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => onChange(mask.cepMask(e.target.value), 'cep')}\n error={\n (formValues.errorTrigger[2] && cepVal(cep, invalidCEP)) ||\n validateReceitaError(\n receitaFederalError.cep.status,\n 'CEP',\n receitaFederalError.cep.message\n )\n }\n success={\n !cepVal(cep, invalidCEP) && !receitaFederalError.cep.status\n }\n />\n <S.NaoSei\n onClick={() =>\n window.open(\n 'https://buscacepinter.correios.com.br/app/localidade_logradouro/index.php'\n )\n }\n >\n Não sei meu CEP\n </S.NaoSei>\n </FormGroup>\n </div>\n\n <div className=\"col-8\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Logradouro\">Logradouro</label>\n <TextField\n maxlength={40}\n name=\"logradouro\"\n value={logradouro}\n placeholder=\"Digite seu Logradouro\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => {\n if (isCepUnico) {\n onChange(e.target.value.trimStart(), 'logradouro')\n }\n }}\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'logradouro'\n )\n }}\n error={formValues.errorTrigger[2] && sizeVal(logradouro)}\n success={logradouro?.length > 0 && !sizeVal(logradouro)}\n />\n </FormGroup>\n </div>\n </div>{' '}\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-4\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Numero\">Número</label>\n <TextField\n maxlength={8}\n name=\"numero\"\n value={numero}\n placeholder=\"Numero\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => onChange(e.target.value, 'numero')}\n error={\n (formValues.errorTrigger[2] && sizeVal(numero)) ||\n validateReceitaError(\n receitaFederalError.numero.status,\n 'Número',\n receitaFederalError.numero.message\n )\n }\n success={\n numero?.length > 0 &&\n !sizeVal(numero) &&\n !receitaFederalError.numero.status\n }\n />\n </FormGroup>\n </div>\n <div className=\"col-4\">\n <FormGroup>\n <label htmlFor=\"Numero\">Complemento</label>\n <TextField\n maxlength={40}\n name=\"complemento\"\n value={complemento}\n placeholder=\"Complemento\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(e.target.value.trimStart(), 'complemento')\n }\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'complemento'\n )\n }}\n success={complemento?.length > 0 && !sizeVal(complemento)}\n />\n </FormGroup>\n </div>\n <div className=\"col-4\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Bairro\">Bairro</label>\n <TextField\n maxlength={40}\n name=\"bairro\"\n value={bairro}\n placeholder=\"Bairro\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) => {\n if (isCepUnico) {\n onChange(e.target.value.trimStart(), 'bairro')\n }\n }}\n onBlur={(e) => {\n onChange(\n e.target.value.trimEnd().replace(/ +/g, ' '),\n 'bairro'\n )\n }}\n error={formValues.errorTrigger[2] && sizeVal(bairro)}\n success={bairro?.length > 0 && !sizeVal(bairro)}\n />\n </FormGroup>\n </div>\n </div>{' '}\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-9\">\n <FormGroup className=\"required\">\n <label htmlFor=\"Cidade\">Cidade</label>\n <TextField\n maxlength={40}\n name=\"cidade\"\n value={cidade}\n placeholder=\"Cidade\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n success={cidade?.length > 0 && !sizeVal(cidade)}\n error={formValues.errorTrigger[2] && sizeVal(cidade)}\n />\n </FormGroup>\n </div>\n <div className=\"col-3\">\n <FormGroup className=\"required\">\n <label htmlFor=\"UF\">UF</label>\n <TextField\n maxlength={2}\n name=\"UF\"\n value={uf}\n placeholder=\"UF\"\n readOnly={isUfAutoFilled} // Defina o campo como readonly se for preenchido automaticamente\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={handleChangeUF}\n success={!ufVal(uf)} // Verifica se a UF é válida e tem 2 caracteres\n error={formValues.errorTrigger[2] && ufVal(uf)}\n />\n </FormGroup>\n </div>\n </div>\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <FormGroup className=\"form-group\" style={{ marginTop: '-12px' }}>\n <LabelInfo>\n * O endereço de faturamento deve ser o mesmo cadastrado na Receita\n Federal.\n </LabelInfo>\n </FormGroup>\n </div>\n </div>\n </>\n )\n}\n\nexport default RegisterStep2\n","export const noMask = (value) => value.replace(/\\D/g, '')\n\nexport const cnpjMask = (value) =>\n value\n .replace(/\\D/g, '')\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1/$2')\n .replace(/(\\d{4})(\\d)/, '$1-$2')\n .replace(/(-\\d{2})\\d+?$/, '$1')\n\nexport const inscrEstMask = (value) => value.replace(/\\D/g, '')\n//\n","export default __webpack_public_path__ + \"static/media/icon-arrow-down.987febc0.svg\";","import styled, { css } from 'styled-components'\r\nimport IconArrowDown from '../../assets/icons/icon-arrow-down.svg'\r\nimport IconInputError from '../../assets/icons/icon-input-error.svg'\r\nimport IconInputSuccess from '../../assets/icons/icon-input-success.svg'\r\n\r\n\r\nexport const SelectWrapper = styled.div``\r\n\r\n\r\n\r\nexport const Select = styled.select`\r\n background: url(${IconArrowDown}) no-repeat;\r\n background-position: right 10px center;\r\n border: 1px solid #afaeae;\r\n border-radius: 6px;\r\n font-family: 'Montserrat', sans-serif;\r\n padding: 15px 15px;\r\n color: #afaeae;\r\n width: 100%;\r\n transition: all 400ms;\r\n appearance: none;\r\n`\r\n\r\nexport const Option = styled.option`\r\n font-family: 'Montserrat', sans-serif;\r\n color: #000000;\r\n`\r\n\r\nexport const Label = styled.label`\r\n cursor: pointer;\r\n font-size: 15px;\r\n font-weight: 600;\r\n color: #4a4a4a;\r\n display: block;\r\n letter-spacing: -1px;\r\n margin-bottom: 5px;\r\n`\r\n\r\nexport const Error = styled.p`\r\n ${({ theme }) => css`\r\n color: ${theme.colors.error};\r\n font-style: italic;\r\n margin-top: 5px;\r\n display: block;\r\n font-size: 13px;\r\n `}\r\n`\r\n\r\nconst wrapperModifiers = {\r\n disabled: (theme) => css`\r\n ${Label} {\r\n cursor: not-allowed;\r\n color: #4a4a4a;\r\n }\r\n\r\n ${Select} {\r\n cursor: not-allowed;\r\n background: ${theme.colors.grey};\r\n }\r\n `,\r\n\r\n error: (theme) => css`\r\n ${SelectWrapper} {\r\n border-color: ${theme.colors.error};\r\n }\r\n\r\n ${Select} {\r\n background: ${theme.colors.backgroundError}\r\n url(${IconInputError}) right 10px center no-repeat !important;\r\n border-color: ${theme.colors.error};\r\n }\r\n `,\r\n\r\n success: (theme) => css`\r\n ${Select} {\r\n background: ${theme.colors.backgroundSuccess}\r\n url(${IconInputSuccess}) right 10px center no-repeat !important;\r\n border-color: ${theme.colors.success};\r\n }\r\n `,\r\n required: (theme) => css`\r\n ${Label} {\r\n &:after {\r\n content: '*';\r\n color: ${theme.colors.primary};\r\n display: inline-block;\r\n margin-left: 4px;\r\n }\r\n }\r\n `\r\n}\r\n\r\nexport const Wrapper = styled.div`\r\n ${({ theme, disabled, error, success, required }) => css`\r\n ${disabled && wrapperModifiers.disabled(theme)};\r\n ${error && wrapperModifiers.error(theme)}\r\n ${success && wrapperModifiers.success(theme)}\r\n ${required && wrapperModifiers.required(theme)}\r\n\r\n margin-bottom: 20px;\r\n position: relative;\r\n height: 83px;\r\n\r\n small {\r\n display: block;\r\n margin-bottom: 5px;\r\n }\r\n `}\r\n`\r\n","import { useState } from 'react'\r\n\r\nimport * as S from './styles'\r\n\r\n\r\n\r\nconst Option = ({ value, label }) => (\r\n <S.Option value={value}>{label}</S.Option>\r\n)\r\n\r\nconst Select = ({\r\n label,\r\n labelFor = '',\r\n initialValue = '',\r\n onInput,\r\n required = false,\r\n disabled = false,\r\n success = false,\r\n error,\r\n multiple = false,\r\n options = [],\r\n ...props\r\n}) => {\r\n const [value, setValue] = useState(initialValue)\r\n\r\n const onChange = (e) => {\r\n const newValue = e.currentTarget.value\r\n setValue(newValue)\r\n\r\n !!onInput && onInput(newValue)\r\n }\r\n\r\n return (\r\n <S.Wrapper\r\n disabled={disabled}\r\n error={!!error}\r\n success={success}\r\n required={required}\r\n >\r\n {!!label && <S.Label htmlFor={labelFor}>{label}</S.Label>}\r\n <S.SelectWrapper>\r\n <S.Select\r\n disabled={disabled}\r\n onChange={onChange}\r\n multiple={multiple}\r\n value={value}\r\n name={labelFor}\r\n id={labelFor}\r\n {...props}\r\n >\r\n {options.map(({ label, value }) => (\r\n <Option key={value} label={label} value={value} />\r\n ))}\r\n </S.Select>\r\n </S.SelectWrapper>\r\n {!!error && <S.Error>{error}</S.Error>}\r\n </S.Wrapper>\r\n )\r\n}\r\n\r\nexport default Select\r\n","/* eslint-disable react-hooks/exhaustive-deps */\n\nimport { useEffect, useState } from 'react'\nimport { FormGroup } from '../../Form/styles'\nimport Select from '../../Select'\nimport TextField from '../../TextField'\nimport {\n contatoVal,\n cellVal,\n comercialPhoneVal,\n selectValOrigem\n} from '../fieldValidator'\nimport { nameMask, cellMask, fixPhoneMask } from '../../FormPF/masks'\nimport clientes from '../../../api/clientes'\nimport defaultOptions from '../../../api/defaultoption'\nimport Tooltip from '../../Tooltip/left'\nimport ReCAPTCHA from 'react-google-recaptcha'\nimport { CaptchaContainer } from '../../FormPF/styles'\nimport * as S from './styles'\n\nconst RegisterStep3 = ({\n formValues,\n onChange,\n handleKeyDown,\n handleChangeStep,\n onCaptchaChange\n}) => {\n const {\n idCargo,\n idDepartamento,\n contato,\n telefoneCelularNumero,\n telefoneComercialNumero,\n idComoConheceu\n } = formValues\n\n const [cargos, setCargos] = useState([])\n const [departamentos, setDepartamentos] = useState([])\n const [isBackButtonClicked, setBackbuttonPress] = useState(false)\n const [options, setOptions] = useState([])\n\n const getComoConheceu = async () => {\n return await fetch(\n `${process.env.REACT_APP_API_CLIENTES}clientes/como-conheceu`,\n {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' }\n }\n ).then((response) => {\n return response.json()\n })\n }\n\n const apiCall = async () => {\n let cargos = await clientes.cargos({\n method: 'GET',\n headers: defaultOptions.headers\n })\n\n cargos = await cargos.json()\n setCargos(cargos)\n\n let departamentos = await clientes.departamentos({\n method: 'GET',\n headers: defaultOptions.headers\n })\n departamentos = await departamentos.json()\n setDepartamentos(departamentos)\n }\n useEffect(() => {\n apiCall()\n }, [])\n\n useEffect(() => {\n const fetchOptions = async () => {\n const data = await getComoConheceu()\n const filteredOptions = data.filter((item) => item.status)\n setOptions(filteredOptions)\n }\n\n fetchOptions()\n }, [])\n\n useEffect(() => {\n window.history.pushState(null, null, window.location.pathname)\n window.addEventListener('popstate', onBackButtonEvent)\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent)\n }\n }, [])\n\n const onBackButtonEvent = (e) => {\n e.preventDefault()\n if (!isBackButtonClicked) {\n setBackbuttonPress(true)\n handleChangeStep(false)\n } else {\n window.history.pushState(null, null, window.location.pathname)\n setBackbuttonPress(false)\n }\n }\n\n const handleSelectChange = (e, field) => {\n const selectedValue = parseInt(e.currentTarget.value, 10)\n onChange(selectedValue, field)\n }\n\n return (\n <div className=\"col-group\">\n <div className=\"col-12\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Nome</label>\n <TextField\n name=\"contato\"\n maxlength={30}\n value={contato}\n placeholder=\"Digite seu nome\"\n onKeyDown={handleKeyDown}\n onChange={(e) =>\n onChange(nameMask(e.target.value.trimStart()), 'contato')\n }\n error={contatoVal(contato)}\n success={!contatoVal(contato)}\n />\n </FormGroup>\n </div>\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"form-group\">\n <Select\n success={idCargo !== -1 && idCargo !== null}\n options={[\n { value: -1, label: '-- Selecione --' },\n ...cargos.map((item) => ({\n value: item.cargoId,\n label: item.cargo\n }))\n ]}\n label=\"Cargo\"\n labelFor=\"Cargo\"\n value={idCargo}\n onChange={(e) => handleSelectChange(e, 'idCargo')}\n />\n </FormGroup>\n </div>\n\n <div className=\"col-6\">\n <FormGroup className=\"form-group\">\n <Select\n success={idDepartamento !== -1 && idDepartamento !== null}\n options={[\n { value: -1, label: '-- Selecione --' },\n ...departamentos.map((item) => ({\n value: item.departamentoId,\n label: item.departamento\n }))\n ]}\n label=\"Departamento\"\n labelFor=\"Departamento\"\n value={idDepartamento}\n onChange={(e) => handleSelectChange(e, 'idDepartamento')}\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Tel. Celular</label>\n <TextField\n name=\"telefoneCelularNumero\"\n value={telefoneCelularNumero}\n placeholder=\"(xx) xxxxx-xxxx\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(cellMask(e.target.value), 'telefoneCelularNumero')\n }\n error={cellVal(telefoneCelularNumero)}\n success={!cellVal(telefoneCelularNumero)}\n />\n </FormGroup>\n </div>\n <div className=\"col-6\">\n <FormGroup className=\"form-group required\">\n <label htmlFor=\"\">Tel. Comercial</label>\n <TextField\n name=\"telefoneComercialNumero\"\n value={telefoneComercialNumero}\n placeholder=\"(xx) xxxxx-xxxx\"\n onKeyDown={(e) => {\n handleKeyDown(e)\n }}\n onChange={(e) =>\n onChange(\n fixPhoneMask(e.target.value),\n 'telefoneComercialNumero'\n )\n }\n error={comercialPhoneVal(telefoneComercialNumero)}\n success={\n telefoneCelularNumero.length > 0 &&\n !comercialPhoneVal(telefoneComercialNumero)\n }\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0 0 0 10px' }}>\n <FormGroup className=\"form-group required\">\n <label>Como conheceu o Gimba?</label>\n <S.RadioGroup>\n {options.map((option) => (\n <div key={option.id} className=\"radio-option\">\n <input\n type=\"radio\"\n id={option.nome}\n name=\"idComoConheceu\"\n value={option.id}\n checked={formValues.idComoConheceu === option.id}\n onChange={(e) =>\n onChange(parseInt(e.target.value, 10), 'idComoConheceu')\n }\n error={!selectValOrigem(idComoConheceu)}\n sucess={selectValOrigem(idComoConheceu)}\n />\n <label htmlFor={option.nome}>{option.nome}</label>\n </div>\n ))}\n </S.RadioGroup>\n </FormGroup>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <CaptchaContainer\n style={{ transform: 'scale(0.95)', transformOrigin: '0 0' }}\n >\n <ReCAPTCHA\n sitekey={process.env.REACT_APP_CAPTCHA_SITEKEY}\n onChange={onCaptchaChange}\n ></ReCAPTCHA>\n </CaptchaContainer>\n </div>\n\n <div className=\"col-12\" style={{ padding: '0px' }}>\n <S.TermsWrapper className=\"cadastro-aceite-termos\">\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.receberWhatsApp}\n type=\"checkbox\"\n id=\"receberWhatsApp\"\n onChange={(e) =>\n onChange(!formValues.receberWhatsApp, 'receberWhatsApp')\n }\n />\n <label htmlFor=\"receberWhatsApp\">\n <div style={{ width: '255px' }}>\n <p>Receber comunicação via Whatsapp </p>\n </div>\n </label>\n <Tooltip\n icon={<i className=\"icon icon-info\"></i>}\n message=\"Você receberá uma mensagem a cada atualização de pedido, ofertas promocionais do Gimba e parceiros.\"\n />\n </FormGroup>\n\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.receberNovidades}\n type=\"checkbox\"\n id=\"receberNovidades\"\n onChange={(e) =>\n onChange(!formValues.receberNovidades, 'receberNovidades')\n }\n />\n <label htmlFor=\"receberNovidades\">\n Receber e-mails promocionais e de parceiros\n </label>\n </FormGroup>\n <FormGroup className=\"form-group\">\n <input\n checked={formValues.aceiteTermos}\n type=\"checkbox\"\n onChange={(e) =>\n onChange(!formValues.aceiteTermos, 'aceiteTermos')\n }\n id=\"aceiteTermos\"\n />\n <label htmlFor=\"aceiteTermos\">\n Aceito os Termos e condições e autorizo o uso de meus dados de\n acordo com a{' '}\n <a\n href={`${process.env.REACT_APP_URL_MAIN}/institucional/seguranca-privacidade`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Declaração de Privacidade\n </a>\n </label>\n </FormGroup>\n </S.TermsWrapper>\n </div>\n </div>\n )\n}\n\nexport default RegisterStep3\n","import styled, { css } from 'styled-components'\n\nimport {\n Button,\n ButtonBack,\n ButtonIcon,\n ButtonPrimary\n} from '../../components/Button/styles'\n\nexport const WrapperMedium = styled.div`\n ${({ theme }) => css`\n margin: auto;\n max-width: 1000px;\n position: relative;\n width: 100%;\n\n @media (max-width: ${theme.media.ipad}) {\n max-width: 90%;\n }\n `}\n`\n\nexport const FormFooter = styled.div`\n min-height: 100px;\n ${({ theme }) => css`\n @media (max-width: ${theme.media.ipad}) {\n position: fixed;\n bottom: 0;\n width: 100%;\n background: #fbfbfb;\n /* padding: 20px 0; */\n z-index: 999;\n }\n `}\n`\n\nexport const AdvanceButton = styled.button`\n ${({ theme, disabled }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonPrimary(theme)}\n ${ButtonIcon}\n margin-left: 15px;\n ${disabled &&\n css`\n background: ${theme.colors.grey};\n `}\n `}\n`\n\nexport const BackButton = styled.button`\n ${({ theme }) => css`\n cursor: pointer;\n ${Button(theme)}\n ${ButtonBack(theme)}\n ${ButtonIcon}\n `}\n`\n\nexport const FormFooterContent = styled.div`\n ${({ theme }) => css`\n display: flex;\n justify-content: flex-end;\n margin-top: 30px;\n margin-bottom: 30px;\n\n @media (max-width: ${theme.media.cel}) {\n flex-direction: column-reverse;\n margin-top: 0;\n\n ${AdvanceButton} {\n display: block;\n margin: 0 0 10px 0 !important;\n width: 100%;\n }\n }\n `}\n`\n","import axios from 'axios'\r\n\r\ninterface ReceitaFederalProps {\r\n idEtapa: 0\r\n razaoSocial: string\r\n nomeFantasia: string\r\n inscricaoMunicipal: string\r\n inscricaoEstadual: string\r\n cepFaturamento: string\r\n numeroEndereco: string\r\n cnpj: string\r\n uf: string\r\n}\r\n\r\nconst cadastro = {\r\n async cadastroClientePF(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-fisicas`,\r\n {\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async preCadastroClientePF(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-fisicasV2`,\r\n {\r\n method: 'put',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async cadastroClientePJ(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-juridicas`,\r\n {\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async preCadastroClientePJ(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/pessoas-juridicasV2`,\r\n {\r\n method: 'put',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async getCEP(CEP) {\r\n return await fetch(`${process.env.REACT_APP_API_CEPS}${CEP}`)\r\n },\r\n\r\n async validarReceitaFederal(body: ReceitaFederalProps) {\r\n // return await fetch(\r\n // `${process.env.REACT_APP_API_CLIENTES}clientes/cnpj-receita-federal`,\r\n // {\r\n // method: 'post',\r\n // headers: { 'Content-Type': 'application/json' },\r\n // body: JSON.stringify(body)\r\n // }\r\n // )\r\n\r\n return axios\r\n .post(\r\n `${process.env.REACT_APP_API_CLIENTES}clientes/cnpj-receita-federal`,\r\n body\r\n )\r\n .catch((error) => {\r\n return error.response\r\n })\r\n }\r\n}\r\n\r\nexport default cadastro\r\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useContext, useEffect, useState } from 'react'\nimport { useToast } from '../../hooks/toast'\nimport { useHistory } from 'react-router-dom'\nimport { useSelector } from 'react-redux'\nimport clientes from '../../api/clientes'\nimport Loader from '../Loader'\n\nimport { RegisterStep1, RegisterStep2, RegisterStep3 } from './Steps'\nimport { Wrapper } from '../PreRegisterForm/styles'\nimport * as S from './styles'\nimport { dddString, phoneString, noMask } from '../../components/FormPF/masks'\nimport {\n emailConfVal,\n emailVal,\n fieldVal,\n fieldValComp,\n passConfVal,\n passVal,\n sizeVal,\n ufVal,\n cepVal\n} from '../../components/FormPF/fieldValidator'\nimport {\n cnpjVal,\n comercialPhoneVal,\n contatoVal,\n cellVal,\n razaoVal,\n inscEstVal,\n cnpjRepetidoVal,\n validateInscEstadual,\n selectValOrigem\n} from './fieldValidator'\nimport cadastro from '../../api/cadastro.ts'\nimport { UserContext } from '../../contexts/UserContext'\nimport AccordionItem from '../AccordionItem'\nimport AccordionButton from '../AccordionButton'\nimport { AccordionItens, AccordionMenu } from '../../styles/accordion'\n\nconst FormPJ = ({ props, type, email, setType, name, setSelectedType }) => {\n const dados = useSelector((store) => store.facebook.dados)\n let { addToast } = useToast()\n let router = useHistory()\n const [trigger, setTrigger] = useState(true)\n const [current, setCurrent] = useState(1)\n const [load, setLoad] = useState(false)\n const { validacaoExternaPJ } = useContext(UserContext)\n const [validInscEst, setValidInscEst] = useState(false)\n const [receitaFederalError, setReceitaFederalError] = useState({\n cep: { status: false, message: '' },\n numero: { status: false, message: '' },\n uf: { status: false, message: '' },\n cnpj: { status: false, message: '' },\n inscricaoEstadual: { status: false, message: '' },\n razaoSocial: { status: false, message: '' }\n })\n\n const [formValues, setFormvalues] = useState({\n idCargo: -1,\n idDepartamento: -1,\n email: '',\n confirmaEmailContato: '',\n senha: '',\n confirmaSenha: '',\n receberNovidades: false,\n receberEmailMarketing: false,\n receberWhatsApp: false,\n emailLogin: '',\n razaoSocial: '',\n cnpj: '',\n inscricaoEstadual: '',\n telefoneComercialDDD: '',\n telefoneComercialNumero: '',\n contato: '',\n telefoneCelularDDD: '',\n telefoneCelularNumero: '',\n tipoEndereco: '',\n tipoLogradouro: '',\n logradouro: '',\n numero: '',\n complemento: '',\n bairro: '',\n cidade: '',\n uf: '',\n cep: '',\n pontoReferencia: '',\n invalidCEP: false,\n errorTrigger: { 1: false, 2: false, 3: false, 4: false },\n cnpjCadastrado: undefined,\n idComoConheceu: 0\n })\n\n const [captcha, setCaptcha] = useState({\n value: '',\n expired: false\n })\n\n const handleChange = (value, field) => {\n setFormvalues((prev) => ({\n ...prev,\n [field]: value\n }))\n\n if (typeof value === 'string') {\n setReceitaFederalError({\n cep: { status: false, message: '' },\n numero: { status: false, message: '' },\n uf: { status: false, message: '' },\n cnpj: { status: false, message: '' },\n inscricaoEstadual: { status: false, message: '' },\n inscricaoMunicipal: { status: false, message: '' },\n nomeFantasia: { status: false, message: '' },\n razaoSocial: { status: false, message: '' }\n })\n }\n }\n\n const handleReceitaFederalErrorChange = (value, field, message) => {\n setReceitaFederalError((prev) => ({\n ...prev,\n [field]: { status: value, message: message }\n }))\n }\n\n const handleAccordionClick = async (newActiveAccordion) => {\n if (newActiveAccordion !== current) {\n // Lógica para verificar se os passos anteriores foram completados com sucesso\n if (newActiveAccordion === 2 && !step1Success) {\n addToast({\n type: 'error',\n title: 'Erro',\n description: 'Preencher passo anterior corretamente'\n })\n return\n }\n if (newActiveAccordion === 3 && (!step1Success || !step2Success)) {\n addToast({\n type: 'error',\n title: 'Erro',\n description: 'Preencher passos anteriores corretamente'\n })\n return\n }\n const success = await handleChangeStep(true)\n if (success) {\n setCurrent(newActiveAccordion)\n }\n }\n }\n\n const onCaptchaChange = (value) => {\n if (value === null) {\n setCaptcha({\n value: value,\n expired: true\n })\n } else {\n setCaptcha({ value: value, expired: false })\n }\n }\n //\n useEffect(() => {\n const { nome } = dados\n if (nome.length > 0) handleChange(nome, 'contato')\n }, [])\n\n useEffect(() => {\n setSelectedType('pj')\n }, [])\n\n useEffect(() => {\n if (email)\n setFormvalues((prev) => ({\n ...prev,\n email\n }))\n }, [email])\n\n async function validatePJData(body) {\n try {\n const response = await cadastro.validarReceitaFederal({\n idEtapa: 1,\n cepFaturamento: body.endereco.cep,\n cnpj: body.cnpj,\n inscricaoEstadual: body.inscricaoEstadual,\n numeroEndereco: body.endereco.numero,\n razaoSocial: body.razaoSocial,\n uf: body.endereco.uf\n })\n\n if (response.status === 200) {\n return 'valid'\n }\n\n function filterMessage(message) {\n if (message.includes('Razão Social')) {\n return 'razao_social'\n } else if (message.includes('Inscrição Estadual')) {\n return 'inscricao_estadual'\n } else if (message.includes('CNPJ nao encontrado na Receita Federal')) {\n return 'cnpj'\n } else if (message.includes('CEP de Faturamento')) {\n return 'cep'\n } else if (message.includes('Número do Endereco')) {\n return 'numero'\n } else if (\n message.includes(\n 'CNPJ da consulta não cadastrado como contribuinte na UF'\n )\n ) {\n return 'inscricao_estadual'\n }\n }\n\n if (response.status === 400) {\n addToast({\n type: 'error',\n title: response.data,\n description: '',\n timer: 8000\n })\n\n switch (filterMessage(response.data)) {\n case 'razao_social':\n handleReceitaFederalErrorChange(true, 'razaoSocial', response.data)\n break\n\n case 'cnpj':\n handleReceitaFederalErrorChange(true, 'cnpj', response.data)\n break\n\n case 'inscricao_estadual':\n handleReceitaFederalErrorChange(\n true,\n 'inscricaoEstadual',\n response.data\n )\n break\n\n case 'cep':\n handleReceitaFederalErrorChange(true, 'cep', response.data)\n handleChangeStep()\n break\n\n case 'numero':\n handleReceitaFederalErrorChange(true, 'numero', response.data)\n handleChangeStep()\n break\n\n case 'uf':\n handleReceitaFederalErrorChange(true, 'uf', response.data)\n break\n\n default:\n break\n }\n }\n } catch (error) {\n addToast({\n type: 'error',\n title: 'Ocorreu um erro ao realizar cadastro',\n description: 'API da Receita Federal sem resposta'\n })\n }\n }\n async function createUser(body) {\n let res\n if (JSON.parse(localStorage.getItem('preCadastro'))) {\n res = await cadastro.preCadastroClientePJ(body)\n } else {\n res = await cadastro.cadastroClientePJ(body)\n }\n\n if (res.status >= 200 && res.status < 300) {\n setLoad(false)\n return router.push('/cadastro-sucesso', {\n email: body.email\n })\n } else {\n setTrigger(true)\n setLoad(false)\n return addToast({\n type: 'error',\n title:\n res?.errors?.Messages[0] ||\n 'Ocorreu um problema, tente mais tarde novamente'\n })\n }\n }\n\n const salvar = async (values) => {\n setLoad(true) // Ativa o loader\n const msg =\n fieldVal(\n [\n values.cnpjCadastrado,\n values.email,\n values.contato,\n values.razaoSocial,\n values.cnpj,\n values.telefoneCelularNumero,\n values.telefoneComercialNumero,\n values.inscricaoEstadual,\n values.idComoConheceu\n ],\n [\n cnpjRepetidoVal,\n emailVal,\n contatoVal,\n razaoVal,\n cnpjVal,\n cellVal,\n comercialPhoneVal,\n inscEstVal,\n selectValOrigem\n ]\n ) +\n fieldValComp(\n [\n values.email,\n values.confirmaEmailContato,\n values.senha,\n values.confirmaSenha\n ],\n [emailConfVal, passConfVal]\n )\n if (msg.length > 1 && !msg.includes('Escolha uma opção')) {\n setLoad(false)\n return addToast({\n type: 'error',\n title: 'Preencher campos obrigatórios',\n description: ''\n })\n } else if (msg.includes('Escolha uma opção')) {\n setLoad(false) // Desativa o loader\n console.log(msg)\n return addToast({\n type: 'error',\n title: 'Escolha uma opção',\n description: 'Como conheceu o gimba?'\n })\n } else if (!values.aceiteTermos) {\n setLoad(false)\n return addToast({\n type: 'error',\n title: 'Termos e condições não aceito',\n description: 'Aceitar os Termos e condições'\n })\n } else if (values.inscricaoEstadual !== 'ISENTO' && !validInscEst) {\n setLoad(false)\n return addToast({\n type: 'error',\n title: `Inscrição Estadual Inválida para o estado de ${formValues.uf}`\n })\n } else if (captcha.value === '') {\n setLoad(false)\n addToast({\n type: 'error',\n title: 'Por favor, complete a verificação \"Não sou um Robô\"'\n })\n } else if (captcha.expired === true) {\n setLoad(false)\n addToast({\n type: 'error',\n title:\n 'Verificação expirada. Por favor, marque novamente a caixa de seleção'\n })\n } else {\n const body = {\n idCargo: values.idCargo === -1 ? 0 : Number(values.idCargo),\n idDepartamento:\n values.idDepartamento === -1 ? 0 : Number(values.idDepartamento),\n senha: values.senha,\n token: '4a0c45d784324c03acf4f8236180e849',\n guidJwt: captcha.value,\n receberNovidades: values.receberNovidades,\n receberWhatsApp: values.receberWhatsApp,\n email: values.email,\n razaoSocial: values.razaoSocial,\n cnpj: values.cnpj.replace(/[^0-9\\s]/gi, ''),\n inscricaoEstadual: values.inscricaoEstadual,\n telefoneComercialDDD: dddString(values.telefoneComercialNumero),\n telefoneComercialNumero: phoneString(values.telefoneComercialNumero),\n contato: values.contato,\n telefoneCelularDDD: dddString(values.telefoneCelularNumero),\n telefoneCelularNumero: phoneString(values.telefoneCelularNumero),\n idComoConheceu: values.idComoConheceu,\n endereco: {\n id: 0,\n padrao: true,\n tipoEndereco: 'C',\n tipoLogradouro: formValues.tipoLogradouro,\n apelido: 'Cobrança',\n logradouro: formValues.logradouro,\n pontoReferencia: formValues.pontoReferencia,\n numero: formValues.numero,\n complemento: formValues.complemento,\n bairro: formValues.bairro,\n cidade: formValues.cidade,\n uf: formValues.uf,\n cep: noMask(formValues.cep)\n },\n clienteSocialMediaModel: {\n userId: dados.facebookId,\n providerKey: '',\n loginProvider: '',\n email: values.email,\n nome: values.email\n }\n }\n\n try {\n setTrigger(false)\n\n if (validacaoExternaPJ === true) {\n const receitaFederalInfo = await validatePJData(body)\n if (receitaFederalInfo === 'valid') {\n await createUser(body)\n setLoad(false)\n } else {\n setLoad(false)\n }\n } else {\n await createUser(body)\n }\n\n setTrigger(true)\n } catch (e) {\n setLoad(false)\n addToast({\n type: 'error',\n title: 'Erro no cadastro',\n description:\n 'Ocorreu um problema durante o cadastro. Tente novamente mais tarde.'\n })\n }\n }\n }\n\n const [step1Success, setStep1Success] = useState(false)\n const [step2Success, setStep2Success] = useState(false)\n\n const handleChangeStep = async (forwards) => {\n if (current === 3 && forwards) {\n handleChange({ 1: true, 2: true, 3: true }, 'errorTrigger')\n const msg = fieldVal(\n [\n formValues.telefoneCelularNumero,\n formValues.telefoneComercialNumero,\n formValues.contato,\n formValues.idComoConheceu\n ],\n [cellVal, comercialPhoneVal, contatoVal, selectValOrigem]\n )\n\n if (msg.length > 1) {\n addToast({\n type: 'error',\n title: 'Preencha os campos corretamente',\n description: ''\n })\n return false\n }\n\n return true\n } else if (current === 1 && !forwards) {\n setType(undefined)\n return true\n } else if (current === 1 && forwards) {\n handleChange({ 1: true, 2: false, 3: false }, 'errorTrigger')\n const msg =\n fieldVal([formValues.email, formValues.senha], [emailVal, passVal]) +\n fieldValComp(\n [\n formValues.email,\n formValues.confirmaEmailContato,\n formValues.senha,\n formValues.confirmaSenha\n ],\n [emailConfVal, passConfVal]\n )\n if (msg.length > 1) {\n addToast({\n type: 'error',\n title: 'Preencha os campos corretamente',\n description: ''\n })\n return false\n }\n if (JSON.parse(localStorage.getItem('preCadastro'))) {\n setLoad(true)\n let valid\n try {\n valid = await clientes.email(formValues.email)\n } catch (e) {}\n if (valid?.status === 200) {\n setLoad(false)\n addToast({\n type: 'error',\n title: 'E-mail já cadastrado'\n })\n return false\n }\n setLoad(false)\n }\n setStep1Success(true)\n setCurrent(current + 1)\n return true\n } else if (current === 2 && forwards) {\n handleChange({ 1: true, 2: true, 3: false }, 'errorTrigger')\n const msg = fieldVal(\n [\n formValues.razaoSocial,\n formValues.cnpj,\n formValues.inscricaoEstadual,\n formValues.logradouro,\n formValues.numero || '',\n formValues.bairro || '',\n formValues.cidade || '',\n formValues.uf,\n formValues.cep || ''\n ],\n [\n razaoVal,\n cnpjVal,\n inscEstVal,\n sizeVal,\n sizeVal,\n sizeVal,\n sizeVal,\n ufVal,\n cepVal\n ]\n )\n if (\n formValues.inscricaoEstadual !== 'ISENTO' &&\n formValues.inscricaoEstadual?.length >= 8 &&\n formValues.uf\n ) {\n const result = await validateInscEstadual(\n formValues.inscricaoEstadual,\n formValues.uf\n )\n if (!result.valid) {\n addToast({\n type: 'error',\n title: 'Inscrição Estadual inválida para o estado selecionado'\n })\n return false\n }\n }\n console.log(msg)\n if (msg.length > 1) {\n addToast({\n type: 'error',\n title: 'Preencher campos obrigatórios'\n })\n return false\n }\n\n setStep2Success(true)\n setCurrent(current + 1)\n return true\n } else if (forwards) {\n setCurrent(current + 1)\n return true\n } else if (!forwards) {\n setCurrent(current - 1)\n return true\n }\n }\n\n const handleKeyDown = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault()\n e.target.blur()\n handleChangeStep(true)\n }\n }\n\n if (type !== 'pj') return null\n\n return (\n <>\n {load && <Loader />}\n <Wrapper>\n <S.WrapperMedium>\n <AccordionMenu>\n <AccordionItens>\n <AccordionItem\n title=\"Dados de Acesso\"\n current={1}\n isActive={current === 1}\n step1Success={step1Success}\n onClick={() => handleAccordionClick(1)}\n type={type}\n >\n <RegisterStep1\n formValues={formValues}\n onChange={handleChange}\n handleKeyDown={handleKeyDown}\n handleChangeStep={handleChangeStep}\n />\n <AccordionButton\n current={current}\n handleChangeStep={handleChangeStep}\n trigger={trigger}\n />\n </AccordionItem>\n <AccordionItem\n title=\"Dados de Faturamento\"\n current={2}\n isActive={current === 2}\n step2Success={step2Success}\n onClick={() => handleAccordionClick(2)}\n type={type}\n >\n <RegisterStep2\n props={props}\n formValues={formValues}\n receitaFederalError={receitaFederalError}\n onChange={handleChange}\n handleKeyDown={handleKeyDown}\n handleChangeStep={handleChangeStep}\n setValidInscEst={setValidInscEst}\n />\n <AccordionButton\n current={current}\n handleChangeStep={handleChangeStep}\n trigger={trigger}\n />\n </AccordionItem>\n <AccordionItem\n title=\"Dados de Contato\"\n current={3}\n isActive={current === 3}\n onClick={() => handleAccordionClick(3)}\n type={type}\n >\n <RegisterStep3\n formValues={formValues}\n onChange={handleChange}\n handleKeyDown={handleKeyDown}\n handleChangeStep={handleChangeStep}\n onCaptchaChange={onCaptchaChange}\n />\n <AccordionButton\n current={current}\n handleChangeStep={handleChangeStep}\n trigger={trigger}\n handleSubmit={() => salvar(formValues)}\n />\n </AccordionItem>\n </AccordionItens>\n </AccordionMenu>\n </S.WrapperMedium>\n </Wrapper>\n </>\n )\n}\n\nexport default FormPJ\n","import { useEffect, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport PreRegisterForm from '../../components/PreRegisterForm'\r\nimport FormPF from '../../components/FormPF'\r\nimport FormPJ from '../../components/FormPJ'\r\n// import { useToast } from '../../hooks/toast'\r\n// import clientes from '../../api/clientes'\r\n\r\n// import * as S from './styles'\r\n\r\nconst RegisterTemplate = () => {\r\n const dados = useSelector((store) => store.facebook.dados)\r\n\r\n const [type, setType] = useState(undefined)\r\n const [selectedType, setSelectedType] = useState('pf')\r\n const [email, setEmail] = useState('')\r\n const [name, setName] = useState('')\r\n\r\n useEffect(() => {\r\n const { email } = dados\r\n if (email.length > 0) setEmail(email)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n <>\r\n {type === undefined && (\r\n <PreRegisterForm\r\n type={type}\r\n setType={setType}\r\n email={email}\r\n setEmail={setEmail}\r\n name={name}\r\n setName={setName}\r\n setSelectedType={setSelectedType}\r\n selectedType={selectedType}\r\n />\r\n )}\r\n {type && type === 'pf' && (\r\n <FormPF\r\n setType={setType}\r\n setSelectedType={setSelectedType}\r\n type={type}\r\n email={email}\r\n name={name}\r\n />\r\n )}\r\n {type && type === 'pj' && (\r\n <FormPJ\r\n setType={setType}\r\n setSelectedType={setSelectedType}\r\n type={type}\r\n email={email}\r\n name={name}\r\n />\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport default RegisterTemplate\r\n","import * as S from './styles'\n\nconst Header = () => {\n return (\n <S.Wrapper>\n <S.Container>\n <a href={process.env.REACT_APP_URL_MAIN}>\n <S.Logo\n src={process.env.REACT_APP_URL_LOGO}\n alt=\"Gimba\"\n role=\"image\"\n />\n </a>{' '}\n <S.NavLinks>\n <a href=\"https://www.gimba.com.br/Boleto/Lista\">2ª Via do Boleto</a>\n <a href=\"https://www.gimba.com.br/\">Voltar para o Site</a>\n </S.NavLinks>\n </S.Container>\n </S.Wrapper>\n )\n}\n\nexport default Header\n","const traceLog = {\r\n async logAcessos(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_ENDPOINT}trace-log/LogAcessos`,\r\n {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n },\r\n async logAcessosPosCadastro(body) {\r\n return await fetch(\r\n `${process.env.REACT_APP_API_CHECKOUT}api/Pedido/SalvarDadosRastreamento`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n // Authorization: `Bearer ${token()}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(body)\r\n }\r\n )\r\n }\r\n}\r\n\r\nexport default traceLog\r\n","import axios from 'axios'\r\nimport traceLog from '../api/traceLog'\r\n\r\nexport const traceLogAcessos = async (path) => {\r\n // const { data } = await axios.get('https://www.myexternalip.com/json')\r\n // postLogAcessos(data.ip, window.location.href, path)\r\n}\r\n\r\nexport const getQueryParamsToTracelog = (query) => {\r\n const currentUrl = window.location.origin + window.location.pathname\r\n const clientip = query.get('clientip')\r\n const utmSource = query.get('u_src')\r\n const utmMedium = query.get('u_med')\r\n const utmCampaign = query.get('u_camp')\r\n const redirectUrl = query.get('redirectUrl')\r\n\r\n localStorage.removeItem('u_src')\r\n // localStorage.removeItem('clientip')\r\n localStorage.removeItem('u_med')\r\n localStorage.removeItem('u_camp')\r\n\r\n if (clientip !== null) {\r\n localStorage.setItem('clientip', clientip)\r\n\r\n // localStorage.getItem('clientip')\r\n } else {\r\n if (localStorage.getItem('clientip') === '') {\r\n localStorage.setItem('clientip', '')\r\n }\r\n }\r\n\r\n utmSource !== null && localStorage.setItem('u_src', utmSource)\r\n utmMedium !== null && localStorage.setItem('u_med', utmMedium)\r\n utmCampaign !== null && localStorage.setItem('u_camp', utmCampaign)\r\n\r\n // console.log({ utmSource, utmCampaign, utmMedium })\r\n localStorage.setItem('redirectUrl', redirectUrl)\r\n\r\n // postLogAcessos(clientip, currentUrl, redirectUrl, utmSource, utmMedium, utmCampaign)\r\n}\r\n\r\nexport const postLogAcessos = async (\r\n ip,\r\n currentUrl,\r\n previousUrl,\r\n utmSource,\r\n utmMedium,\r\n utmCampaign,\r\n email\r\n) => {\r\n const body = {\r\n ip: ip === null ? '' : ip,\r\n utmSource: utmSource,\r\n utmMedium: utmMedium,\r\n utmCampaign: utmCampaign,\r\n url: currentUrl,\r\n httpReferer: previousUrl,\r\n // idLojaEspecial: 0,\r\n adWords: 0,\r\n idLojaVirtual: 1,\r\n EmailCliente: email\r\n }\r\n\r\n // console.log('POST', body)\r\n\r\n let res = await traceLog.logAcessos(body)\r\n res = await res.json()\r\n return res\r\n}\r\n\r\nexport const postLogAcessosPosCadastro = async (\r\n currentUrl,\r\n previousUrl,\r\n email\r\n) => {\r\n const body = {\r\n Url: currentUrl,\r\n HttpReferer: previousUrl,\r\n EmailCliente: email\r\n }\r\n\r\n // console.log('POST', body)\r\n\r\n let res = await traceLog.logAcessosPosCadastro(body)\r\n res = await res.json()\r\n return res\r\n}\r\n\r\nexport const getLocalStorageLog = async (currentPath, email) => {\r\n const previousUrl = window.location.origin\r\n const clientip = localStorage.getItem('clientip')\r\n const utmSource = localStorage.getItem('u_src')\r\n const utmMedium = localStorage.getItem('u_med')\r\n const utmCampaign = localStorage.getItem('u_camp')\r\n let redirectUrl = localStorage.getItem('redirectUrl')\r\n\r\n if (redirectUrl !== undefined && redirectUrl !== null) {\r\n redirectUrl = window.location.origin + window.location.pathname\r\n }\r\n try {\r\n await postLogAcessos(\r\n clientip,\r\n redirectUrl,\r\n previousUrl,\r\n utmSource,\r\n utmMedium,\r\n utmCampaign,\r\n email\r\n )\r\n } catch (e) {}\r\n}\r\n","import React, { useMemo } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nconst useQuery = () => {\r\n const { search } = useLocation()\r\n\r\n return useMemo(() => new URLSearchParams(search), [search])\r\n}\r\n\r\nexport { useQuery }","import RegisterTemplate from '../../templates/cadastro'\r\nimport Header from '../../components/Header'\r\nimport { useLocation } from 'react-router-dom'\r\nimport { useEffect } from 'react'\r\nimport {\r\n getLocalStorageLog,\r\n getQueryParamsToTracelog\r\n} from '../../utils/traceLogAcessos'\r\nimport { useQuery } from '../../hooks/useQuery'\r\n\r\nfunction Cadastro() {\r\n const location = useLocation()\r\n const query = useQuery()\r\n\r\n useEffect(() => {\r\n getLocalStorageLog(location.pathname)\r\n // getQueryParamsToTracelog(query)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n <>\r\n <Header onlyLogo></Header>\r\n <RegisterTemplate />\r\n </>\r\n )\r\n}\r\n\r\nexport default Cadastro\r\n","import styled from 'styled-components'\n\nexport const Page = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin: 60px;\n`\n\nexport const Wrapper = styled.div`\n background: #ffffff;\n padding: 40px 80px;\n border: 1px solid #eeeeee;\n border-radius: 10px;\n -webkit-box-shadow: 4px 3px 7px 2px rgb(0 0 0 / 5%);\n box-shadow: 4px 3px 7px 2px rgb(0 0 0 / 5%);\n width: 500px;\n\n @media screen and (max-width: 1170px) {\n background: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n border: 0;\n padding: 0;\n width: 90%;\n }\n`\n\nexport const Tittle = styled.h2`\n font-size: 28px;\n font-weight: 600;\n color: #d22630;\n margin-top: 10px;\n margin-bottom: 30px;\n text-align: center;\n @media screen and (max-width: 1170px) {\n font-size: 20px;\n text-align: center;\n }\n`\n\nexport const IconWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column; /* Adiciona flex-direction para garantir que os Ãcones fiquem centralizados verticalmente */\n\n .icon {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 5px;\n width: 120px;\n height: 120px;\n color: #5cc187;\n }\n\n svg {\n animation: bounce-in 2s ease forwards;\n }\n\n @keyframes bounce-in {\n 0% {\n opacity: 0;\n transform: scale(0.3);\n }\n 50% {\n opacity: 1;\n transform: scale(1.05);\n }\n 70% {\n transform: scale(0.9);\n }\n 100% {\n transform: scale(1);\n }\n }\n\n @media screen and (max-width: 720px) {\n .icon {\n width: 80px;\n height: 80px;\n }\n }\n`\n\nexport const Description = styled.p`\n text-align: center;\n font-size: 15px;\n line-height: 20px;\n`\n\nexport const Footer = styled.div`\n margin-top: 20px;\n display: flex;\n justify-content: center;\n`\n\nexport const Button = styled.div`\n background: #d22630;\n color: #ffffff;\n display: block;\n width: 183px;\n border-radius: 5px;\n border: 2px solid transparent;\n font-family: 'Montserrat', sans-serif;\n font-weight: 500;\n font-size: 16px;\n padding: 15px 30px;\n text-align: center;\n transition: all 400ms;\n cursor: pointer;\n &:hover {\n background: #a71e26;\n }\n`\n","import * as S from './styles'\nimport { FiCheckSquare } from 'react-icons/fi'\n\nconst CadastroCard = () => {\n return (\n <S.Page>\n <S.Wrapper>\n <S.IconWrapper>\n <FiCheckSquare className=\"icon\" />\n </S.IconWrapper>\n <S.Tittle>Seu cadastro foi concluÃdo com sucesso</S.Tittle>\n <S.Description></S.Description>\n <S.Footer>\n <S.Button\n onClick={() =>\n (window.location.href = `${process.env.REACT_APP_URL_MAIN}`)\n }\n >\n Ok\n </S.Button>\n </S.Footer>\n </S.Wrapper>\n </S.Page>\n )\n}\n\nexport default CadastroCard\n","import { useEffect } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\nimport CadastroCard from '../../components/CadastroCard'\r\nimport Header from '../../components/Header'\r\nimport { getLocalStorageLog } from '../../utils/traceLogAcessos'\r\n\r\nfunction End() {\r\n const { state, pathname } = useLocation()\r\n\r\n async function saveNewUserLog() {\r\n await getLocalStorageLog(pathname, state?.email)\r\n setTimeout(\r\n () =>\r\n (window.location.href = `${process.env.REACT_APP_URL_MAIN}/Checkout/Login/`),\r\n 2000\r\n )\r\n }\r\n\r\n useEffect(() => {\r\n saveNewUserLog()\r\n }, [])\r\n\r\n return (\r\n <>\r\n <Header onlyLogo></Header>\r\n <CadastroCard />\r\n </>\r\n )\r\n}\r\n\r\nexport default End\r\n","//Keys\r\nexport const Types = {\r\n SETDADOS: '@setDados'\r\n}\r\n\r\n//Reducer\r\nconst INITIAL_STATE = {\r\n dados: {\r\n email: '',\r\n nome: '',\r\n facebookid: ''\r\n }\r\n}\r\n\r\nexport default function reducer(state = INITIAL_STATE, { type, payload }) {\r\n switch (type) {\r\n case Types.SETDADOS:\r\n return { ...state, dados: payload }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\n//Actions\r\nexport const setDados = (payload) => {\r\n return { type: Types.SETDADOS, payload: payload }\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { useQueryParam, StringParam } from 'use-query-params'\r\nimport Loader from '../../components/Loader'\r\nimport { useHistory } from 'react-router'\r\nimport { useEffect, useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { setDados } from '../../store/ducks/facebook'\r\nimport { getQueryParamsToTracelog } from '../../utils/traceLogAcessos'\r\nimport { useQuery } from '../../hooks/useQuery'\r\n\r\nfunction Auth() {\r\n const dispatch = useDispatch()\r\n\r\n const router = useHistory()\r\n\r\n const [email] = useQueryParam('email', StringParam)\r\n const [nome] = useQueryParam('nome', StringParam)\r\n const [facebookid] = useQueryParam('facebookid', StringParam)\r\n\r\n const [waitGroup, setWaitGroup] = useState(0)\r\n\r\n const query = useQuery()\r\n\r\n useEffect(() => {\r\n if (waitGroup === 0) {\r\n dispatch(\r\n setDados({\r\n email: email || '',\r\n nome: nome || '',\r\n facebookid: facebookid || ''\r\n })\r\n )\r\n getQueryParamsToTracelog(query)\r\n setWaitGroup(1)\r\n }\r\n if (waitGroup === 1) {\r\n router.push('/cadastro')\r\n }\r\n }, [waitGroup])\r\n\r\n return (\r\n <>\r\n <Loader />\r\n </>\r\n )\r\n}\r\n\r\nexport default Auth\r\n","export default __webpack_public_path__ + \"static/media/icon-search.3acf1ded.svg\";","export default __webpack_public_path__ + \"static/media/icon-menu.2969e51f.svg\";","export default __webpack_public_path__ + \"static/media/icon-profile.3a7ec974.svg\";","export default __webpack_public_path__ + \"static/media/icon-whishlist.445e802b.svg\";","export default __webpack_public_path__ + \"static/media/icon-assinatura.2ac21fea.svg\";","export default __webpack_public_path__ + \"static/media/icon-contratos.8dda5d23.svg\";","export default __webpack_public_path__ + \"static/media/icon-local.43030f86.svg\";","export default __webpack_public_path__ + \"static/media/icon-info.b0b89a5d.svg\";","export default __webpack_public_path__ + \"static/media/icon-footer-facebook.e6b6bd42.svg\";","export default __webpack_public_path__ + \"static/media/icon-footer-twitter.8e7b3ef7.svg\";","export default __webpack_public_path__ + \"static/media/icon-footer-instagram.766ec0d1.svg\";","export default __webpack_public_path__ + \"static/media/icon-footer-linkedin.b5db2fbc.svg\";","export default __webpack_public_path__ + \"static/media/icon-footer-youtube.cd97da45.svg\";","export default __webpack_public_path__ + \"static/media/icon-cart.a13c134f.svg\";","export default __webpack_public_path__ + \"static/media/icon-check.bab3acea.svg\";","export default __webpack_public_path__ + \"static/media/icon-close.0e1b64f3.svg\";","export default __webpack_public_path__ + \"static/media/icon-eye.52999197.svg\";","export default __webpack_public_path__ + \"static/media/invisible.e402b65a.svg\";","export default __webpack_public_path__ + \"static/media/icon-arrow-button-right.551943ad.svg\";","export default __webpack_public_path__ + \"static/media/icon-arrow-button-left.e842f2b2.svg\";","import { css } from 'styled-components'\r\n\r\nexport const Scroll = css`\r\n * {\r\n &::-webkit-scrollbar {\r\n border-radius: 5px;\r\n background: #eeeeee;\r\n height: 10px;\r\n width: 10px;\r\n }\r\n\r\n &::-webkit-scrollbar-track {\r\n border-radius: 5px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n border-radius: 5px;\r\n background: #afaeae;\r\n }\r\n }\r\n`\r\n","import { css } from 'styled-components'\r\n\r\nimport IconSearch from '../assets/icons/icon-search.svg'\r\nimport IconMenu from '../assets/icons/icon-menu.svg'\r\nimport IconProfile from '../assets/icons/icon-profile.svg'\r\nimport IconWishlist from '../assets/icons/icon-whishlist.svg'\r\nimport IconArrowDown from '../assets/icons/icon-arrow-down.svg'\r\nimport IconAssinatura from '../assets/icons/icon-assinatura.svg'\r\nimport IconContratos from '../assets/icons/icon-contratos.svg'\r\nimport IconLocal from '../assets/icons/icon-local.svg'\r\nimport IconInfo from '../assets/icons/icon-info.svg'\r\nimport IconFooterFacebook from '../assets/icons/icon-footer-facebook.svg'\r\nimport IconFooterTwitter from '../assets/icons/icon-footer-twitter.svg'\r\nimport IconFooterInstagram from '../assets/icons/icon-footer-instagram.svg'\r\nimport IconFooterLinkedin from '../assets/icons/icon-footer-linkedin.svg'\r\nimport IconFooterYoutube from '../assets/icons/icon-footer-youtube.svg'\r\nimport IconCart from '../assets/icons/icon-cart.svg'\r\nimport IconCheck from '../assets/icons/icon-check.svg'\r\nimport IconClose from '../assets/icons/icon-close.svg'\r\nimport IconEye from '../assets/icons/icon-eye.svg'\r\nimport IconEyeCut from '../assets/icons/invisible.svg'\r\nimport IconArrowBtnRight from '../assets/icons/icon-arrow-button-right.svg'\r\nimport IconArrowBtnLeft from '../assets/icons/icon-arrow-button-left.svg'\r\n\r\nexport const IconStyles = (theme) => css`\r\n // Icons.\r\n .icon {\r\n background-size: contain;\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n display: inline-block;\r\n width: 30px;\r\n height: 30px;\r\n }\r\n\r\n // Search.\r\n .icon-search {\r\n background-image: url(${IconSearch});\r\n }\r\n\r\n // Search.\r\n .icon-menu {\r\n background-image: url(${IconMenu});\r\n }\r\n\r\n // Profile.\r\n .icon-profile {\r\n background-image: url(${IconProfile});\r\n }\r\n\r\n // Whishlist.\r\n .icon-whishlist {\r\n background-image: url(${IconWishlist});\r\n }\r\n\r\n // Arrow Down.\r\n .icon-arrow-down {\r\n background-image: url(${IconArrowDown});\r\n width: 12px;\r\n height: 8px;\r\n margin-left: 3px;\r\n }\r\n\r\n // Assinatura.\r\n .icon-assinatura {\r\n background-image: url(${IconAssinatura});\r\n }\r\n\r\n // Contratos.\r\n .icon-contratos {\r\n background-image: url(${IconContratos});\r\n }\r\n\r\n // Local.\r\n .icon-local {\r\n background-image: url(${IconLocal});\r\n }\r\n\r\n // Footer Youtube.\r\n .icon-info {\r\n background-image: url(${IconInfo});\r\n }\r\n\r\n // Footer Facebook.\r\n .icon-footer-facebook {\r\n background-image: url(${IconFooterFacebook});\r\n }\r\n\r\n // Footer Twitter.\r\n .icon-footer-twitter {\r\n background-image: url(${IconFooterTwitter});\r\n }\r\n\r\n // Footer Instagram.\r\n .icon-footer-instagram {\r\n background-image: url(${IconFooterInstagram});\r\n }\r\n\r\n // Footer Linkedin.\r\n .icon-footer-linkedin {\r\n background-image: url(${IconFooterLinkedin});\r\n }\r\n\r\n // Footer Youtube.\r\n .icon-footer-youtube {\r\n background-image: url(${IconFooterYoutube});\r\n }\r\n\r\n // *** Mask.\r\n\r\n // Cart.\r\n .icon-cart {\r\n mask-image: url(${IconCart});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n }\r\n\r\n // Check.\r\n .icon-check {\r\n mask-image: url(${IconCheck});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n }\r\n\r\n // Close.\r\n .icon-close {\r\n mask-image: url(${IconClose});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 20px;\r\n background-color: #707070;\r\n }\r\n\r\n // Eye.\r\n .icon-eye {\r\n mask-image: url(${IconEye});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 20px;\r\n background-color: #707070;\r\n }\r\n\r\n .icon-eye-cut {\r\n mask-image: url(${IconEyeCut});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 20px;\r\n background-color: #707070;\r\n }\r\n\r\n // Arrow Button Right.\r\n .icon-arrow-button-right {\r\n mask-image: url(${IconArrowBtnRight});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 10px;\r\n background-color: #ffffff;\r\n }\r\n\r\n // Arrow Button Left.\r\n .icon-arrow-button-left {\r\n mask-image: url(${IconArrowBtnLeft});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 10px;\r\n background-color: ${theme.colors.primary};\r\n }\r\n`\r\n// Arrow Button Right.\r\nexport const IconArrowButtonRight = css`\r\n mask-image: url(${IconArrowBtnRight});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 10px;\r\n background-color: #ffffff;\r\n`\r\n\r\n// Arrow Button Left.\r\nexport const IconArrowButtonLeft = (theme) => css`\r\n mask-image: url(${IconArrowBtnLeft});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 10px;\r\n background-color: ${theme.colors.primary};\r\n`\r\n","import { createGlobalStyle, css } from 'styled-components'\r\nimport { CheckBoxStyles } from './checkbox'\r\nimport { IconStyles } from './icons'\r\nimport { RadioStyles } from './radio'\r\n\r\nimport { Scroll } from './scroll'\r\n\r\nimport IconArrowButtonLeft from '../assets/icons/icon-arrow-button-left.svg'\r\n\r\nconst GlobalStyles = createGlobalStyle`\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 100;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 200;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-200.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 300;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 500;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 600;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-600.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 700;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 800;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-800.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n @font-face {\r\n font-family: 'Montserrat';\r\n font-style: normal;\r\n font-weight: 900;\r\n font-display: swap;\r\n src: local(''),\r\n url('/fonts/montserrat-v15-latin-900.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */\r\n }\r\n\r\n * {\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n\r\n &::before,\r\n &::after {\r\n box-sizing: inherit;\r\n }\r\n }\r\n\r\n *, *:focus, *:hover {\r\n outline: none;\r\n }\r\n\r\n html,\r\n body,\r\n div,\r\n span,\r\n object,\r\n iframe,\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6,\r\n p,\r\n blockquote,\r\n pre,\r\n abbr,\r\n address,\r\n cite,\r\n code,\r\n del,\r\n dfn,\r\n em,\r\n img,\r\n ins,\r\n kbd,\r\n q,\r\n samp,\r\n small,\r\n strong,\r\n sub,\r\n sup,\r\n var,\r\n b,\r\n i,\r\n dl,\r\n dt,\r\n dd,\r\n ol,\r\n ul,\r\n li,\r\n fieldset,\r\n form,\r\n label,\r\n legend,\r\n table,\r\n caption,\r\n tbody,\r\n tfoot,\r\n thead,\r\n tr,\r\n th,\r\n td,\r\n article,\r\n aside,\r\n canvas,\r\n details,\r\n figcaption,\r\n figure,\r\n footer,\r\n header,\r\n hgroup,\r\n menu,\r\n nav,\r\n section,\r\n summary,\r\n time,\r\n mark,\r\n audio,\r\n video {\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n outline: 0;\r\n font-size: 100%;\r\n vertical-align: baseline;\r\n background: transparent;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n color: currentColor;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n }\r\n\r\n .text-center{\r\n text-align: center;\r\n }\r\n\r\n .text-right{\r\n text-align: right;\r\n }\r\n\r\n ${({ theme, removeBg }) => css`\r\n ${Scroll}\r\n ${RadioStyles(theme)}\r\n ${IconStyles(theme)}\r\n ${CheckBoxStyles(theme)}\r\n\r\n .text-color-primary {\r\n color: ${theme.colors.primary};\r\n }\r\n\r\n html {\r\n font-size: 62.5%;\r\n }\r\n\r\n body {\r\n font-family: 'Montserrat', sans-serif;\r\n font-size: ${theme.font.sizes.medium};\r\n color: ${theme.colors.mediumGrey};\r\n\r\n ${!removeBg &&\r\n css`\r\n background-color: #fbfbfb;\r\n `}\r\n\r\n .text-center {\r\n text-align: center;\r\n }\r\n\r\n .link {\r\n text-decoration: underline;\r\n font-size: 14px;\r\n transition: all 400ms;\r\n\r\n &:hover {\r\n opacity: 0.6;\r\n }\r\n }\r\n }\r\n\r\n .col-group {\r\n margin-left: -10px;\r\n margin-right: -10px;\r\n }\r\n\r\n .col-group:before,\r\n .col-group:after {\r\n content: ' ';\r\n display: table;\r\n }\r\n\r\n .col-group:after {\r\n clear: both;\r\n }\r\n\r\n .IconArrowButtonLeft {\r\n mask-image: url(${IconArrowButtonLeft});\r\n mask-size: contain;\r\n mask-repeat: no-repeat;\r\n width: 20px;\r\n height: 10px;\r\n background-color: ${theme.colors.primary};\r\n }\r\n\r\n .col-1,\r\n .col-2,\r\n .col-3,\r\n .col-4,\r\n .col-5,\r\n .col-6,\r\n .col-7,\r\n .col-8,\r\n .col-9,\r\n .col-10,\r\n .col-11,\r\n .col-12 {\r\n min-height: 1px;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n position: relative;\r\n }\r\n\r\n @media (min-width: ${theme.media.ipad}) {\r\n .col-1,\r\n .col-2,\r\n .col-3,\r\n .col-4,\r\n .col-5,\r\n .col-6,\r\n .col-7,\r\n .col-8,\r\n .col-9,\r\n .col-10,\r\n .col-11,\r\n .col-12 {\r\n float: left;\r\n }\r\n .col-12 {\r\n width: 100%;\r\n }\r\n .col-11 {\r\n width: 91.66666667%;\r\n }\r\n .col-10 {\r\n width: 83.33333333%;\r\n }\r\n .col-9 {\r\n width: 75%;\r\n }\r\n .col-8 {\r\n width: 66.66666667%;\r\n }\r\n .col-7 {\r\n width: 58.33333333%;\r\n }\r\n .col-6 {\r\n width: 50%;\r\n }\r\n .col-5 {\r\n width: 41.66666667%;\r\n }\r\n .col-4 {\r\n width: 33.33333333%;\r\n }\r\n .col-3 {\r\n width: 25%;\r\n }\r\n .col-2 {\r\n width: 16.66666667%;\r\n }\r\n .col-1 {\r\n width: 8.33333333%;\r\n }\r\n }\r\n `}\r\n`\r\n\r\nexport default GlobalStyles\r\n","import { css} from 'styled-components'\r\n\r\nexport const CheckBoxStyles = (theme) => css`\r\n [type='checkbox']:not(:checked),\r\n [type='checkbox']:checked {\r\n left: -9999px;\r\n position: absolute;\r\n }\r\n\r\n [type='checkbox']:not(:checked) + label,\r\n [type='checkbox']:checked + label {\r\n cursor: pointer;\r\n display: inline-block;\r\n font-size: 14px;\r\n font-weight: 400;\r\n line-height: 20px;\r\n padding-left: 23px;\r\n position: relative;\r\n }\r\n\r\n [type='checkbox']:not(:checked) + label:before,\r\n [type='checkbox']:checked + label:before {\r\n background: transparent;\r\n border: 1px solid ${theme.colors.primary};\r\n border-radius: 4px;\r\n content: '';\r\n height: 15px;\r\n left: 0;\r\n position: absolute;\r\n top: 2px;\r\n transition: border-color 0.5s ease;\r\n vertical-align: middle;\r\n width: 15px;\r\n }\r\n\r\n [type='checkbox']:checked + label:before {\r\n background: ${theme.colors.primary};\r\n }\r\n\r\n // checked\r\n [type='checkbox']:not(:checked) + label:after,\r\n [type='checkbox']:checked + label:after {\r\n border-color: #fff;\r\n border-style: solid;\r\n border-width: 0 2px 2px 0;\r\n content: '';\r\n height: 9px;\r\n left: 8px;\r\n opacity: 0;\r\n position: absolute;\r\n top: 10px;\r\n transform: translate(-50%, -65%) rotate(45deg);\r\n transition: opacity 0.5s ease, visibility 0.5s ease;\r\n width: 4px;\r\n }\r\n\r\n [type='checkbox']:not(:checked) + label:after {\r\n opacity: 0;\r\n }\r\n\r\n [type='checkbox']:checked + label:after {\r\n opacity: 1;\r\n }\r\n\r\n // disabled checkbox\r\n [type='checkbox']:disabled:not(:checked) + label:before,\r\n [type='checkbox']:disabled:checked + label:before {\r\n border-color: #cccccc;\r\n background: #f6f6f6;\r\n }\r\n\r\n [type='checkbox']:disabled:checked + label:after,\r\n [type='checkbox']:disabled + label:after {\r\n border-color: #c1c1c1;\r\n }\r\n`\r\n","import { Route, Switch } from 'react-router-dom'\r\nimport './Global.css'\r\nimport AppProvider from './hooks'\r\nimport { ThemeProvider } from 'styled-components'\r\nimport { theme } from './styles/theme'\r\nimport Home from './pages/Home'\r\nimport End from './pages/End'\r\nimport Auth from './pages/Auth'\r\nimport GlobalStyles from './styles/global'\r\nimport TagManager from 'react-gtm-module'\r\nimport { useEffect } from 'react'\r\n// import HomeNew from './pages/HomeNew'\r\n\r\nfunction App() {\r\n useEffect(() => {\r\n TagManager.initialize({\r\n gtmId: 'GTM-5QKH8R'\r\n })\r\n }, []);\r\n\r\n useEffect(()=>{\r\n const script= document.createElement('script');\r\n script.type = 'text/javascript';\r\n //script.src = 'https://d335luupugsy2.cloudfront.net/js/loader-scripts/235689785-loader.js' \r\n script.src = 'https://d335luupugsy2.cloudfront.net/js/loader-scripts/894f245f-4ddd-4381-9b88-dd81cbb560bd-loader.js'\r\n script.async = true;\r\n document.body.appendChild(script);\r\n },[])\r\n\r\n return (\r\n <AppProvider>\r\n <ThemeProvider theme={theme}>\r\n <Switch>\r\n <Route exact path=\"/\" component={Auth} />\r\n <Route exact path=\"/cadastro\" component={Home} />\r\n {/* <Route exact path=\"/cadastroNovo\" component={HomeNew} /> */}\r\n <Route exact path=\"/cadastro-sucesso\" component={End} />\r\n </Switch>\r\n <GlobalStyles></GlobalStyles>\r\n </ThemeProvider>\r\n </AppProvider>\r\n )\r\n}\r\n\r\nexport default App\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { combineReducers } from 'redux'\r\nimport facebook from './facebook'\r\n\r\nexport default combineReducers({ facebook })\r\n","import { createStore } from 'redux'\r\nimport rootreducer from './ducks/rootReducer'\r\n\r\nconst store = createStore(rootreducer)\r\n\r\nexport default store","import 'react-app-polyfill/ie11'\r\nimport 'react-app-polyfill/stable'\r\n\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { BrowserRouter, Route } from 'react-router-dom'\r\nimport { QueryParamProvider } from 'use-query-params'\r\nimport App from './App'\r\nimport reportWebVitals from './reportWebVitals'\r\nimport { Provider } from 'react-redux'\r\nimport store from './store'\r\nimport { UserContextProvider } from './contexts/UserContext'\r\n\r\nReactDOM.render(\r\n <React.StrictMode>\r\n <Provider store={store}>\r\n <UserContextProvider>\r\n <BrowserRouter>\r\n <QueryParamProvider ReactRouterRoute={Route}>\r\n <App />\r\n </QueryParamProvider>\r\n </BrowserRouter>\r\n </UserContextProvider>\r\n </Provider>\r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n)\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals()\r\n"],"sourceRoot":""}