{"version":3,"sources":["assets/images/signin_bg.png","assets/images/smiling_face_with_sunglasses.png","assets/images/shocked_face.png","assets/images/signup_bg.png","assets/images/close.svg","assets/images/questionPlan.svg","assets/images/Remove.svg","assets/images/facebook.svg","assets/images/instagram.svg","assets/images/email.svg","assets/images/hero-klubi.png","assets/images/title-plus.png","assets/images/title-academic.png","assets/images/verify-green.svg","assets/images/verify-purple.svg","assets/images/verify-orange.svg","assets/images/elo-v2.svg","assets/images/visa-v2.svg","assets/images/boleto.png","assets/images/amex-v2.svg","assets/images/mastercard-v2.svg","assets/images/icon-kultivi-plus.svg","assets/images/icon-Kultivi-academia.svg","core/themes/theme1/colors/purple.js","core/themes/theme1/colors/green.js","core/themes/theme1/colors/grey.js","assets/images/title-pos.png","assets/images/icon-Kultivi-pos.svg","core/themes/theme1/Light.jsx","app/pages/Maintenance/styles.js","app/components/cards/Statistics/styles.jsx","app/components/cards/Statistics/index.jsx","app/services/api.js","app/services/system-api.js","app/services/core-api.js","app/services/student-api.js","app/services/account-api.js","app/contexts/AuthContext.js","app/services/auth.js","app/components/navs/dropdowns/profile/styles.js","app/contexts/SubscriptionContext.js","app/components/navs/dropdowns/profile/index.js","app/components/navs/topbar/styles.js","app/components/navs/topbar/options-menu.jsx","app/components/navs/topbar/desktop.jsx","app/components/navs/topbar/mobile.jsx","app/components/navs/topbar/app-bar.jsx","app/components/layouts/500/styles.js","app/components/layouts/500/index.js","app/components/layouts/404/styles.js","app/components/layouts/404/index.js","app/components/layouts/Copyright/styles.js","app/components/layouts/Copyright/index.js","app/pages/Account/styles.js","app/components/forms/Account/styles.js","app/components/forms/Account/index.js","app/components/forms/Password/styles.js","app/components/forms/Password/index.js","app/contexts/SnackbarContext.js","app/components/Modals/Auth/DeleteAccount/styles.js","app/components/Modals/Auth/DeleteAccount/index.js","app/components/Modals/Subscription/SuspendSubscription/styles.js","app/utils/index.js","app/components/Modals/Subscription/SuspendSubscription/index.js","app/components/Modals/Subscription/Invoices/styles.js","app/components/Modals/Subscription/Invoices/index.js","app/pages/Account/index.js","app/components/utils/thumbnail/MediaColor.jsx","app/contexts/ScopesContext.js","app/components/ads/freestar/AdsIncontent.jsx","app/components/ads/freestar/AdsTop.jsx","app/components/ads/freestar/AdsBottom.jsx","app/components/ads/freestar/AdsBillboardLesson.jsx","app/components/ads/freestar/AdsSideBar.jsx","app/pages/Certificates/styles.js","app/pages/Certificates/index.js","app/components/cards/Course/model-3/styles.js","app/components/cards/Course/thumbnail/Image.jsx","app/components/cards/Course/thumbnail/MediaColor.jsx","app/components/cards/Course/model-3/index.js","app/components/cards/Course/model-3/skeleton.js","app/pages/Discover/styles.js","app/pages/Discover/index.jsx","app/components/cards/Ebook/model-1/styles.js","app/components/cards/Ebook/model-1/index.js","app/components/cards/Ebook/model-1/skeleton.js","app/pages/DigitalCollections/styles.js","app/pages/DigitalCollections/index.js","app/pages/DigitalCollectionsPlus/styles.js","app/pages/DigitalCollectionsPlus/index.js","app/components/layouts/RelatedEbooks/styles.js","app/components/layouts/RelatedEbooks/index.js","app/components/notificationBar/KultiviPlus/styles.js","app/components/notificationBar/KultiviPlus/index.js","app/pages/EbookDetails/styles.js","app/pages/EbookDetails/index.js","app/components/layouts/RelatedEbooksPlus/styles.js","app/components/layouts/RelatedEbooksPlus/index.js","app/pages/EbookPlusDetails/styles.js","app/pages/EbookPlusDetails/index.js","app/components/forms/Profile/index.js","app/components/Modals/Profile/PersonalInformations/styles.js","app/components/Modals/Profile/PersonalInformations/index.js","app/pages/Profile/styles.js","app/pages/Profile/index.js","helpers/signature-pydd.js","hooks/useOnScreen.js","app/components/carousels/Courses/styles.js","app/components/carousels/Courses/index.jsx","app/components/carousels/Ebooks/styles.js","app/components/carousels/Ebooks/index.jsx","app/components/carousels/Campaigns/styles.js","app/components/carousels/Campaigns/index.jsx","app/validators/cpf.js","app/validators/auth.js","app/components/forms/RedeemVoucher/index.js","app/components/Modals/RedeemVoucher/styles.js","app/components/Modals/RedeemVoucher/index.js","app/pages/Wellcome/styles.js","app/pages/Wellcome/index.jsx","app/pages/MyCourses/styles.js","app/components/banners/billboard/apoie/styles.js","app/components/banners/billboard/apoie/index.jsx","app/pages/MyCourses/index.jsx","app/pages/Pills/styles.js","app/components/cards/Pill/styles.js","app/components/cards/Pill/index.js","app/components/cards/Pill/skeleton.js","app/components/Modals/Pill/styles.js","app/components/Modals/Pill/index.jsx","app/pages/Pills/index.jsx","app/components/accordions/Module/model-2/styles.js","app/components/accordions/Module/model-2/index.js","app/components/carousels/RelatedCourses/styles.js","app/components/carousels/RelatedCourses/index.js","app/components/Modals/PresentationVideo/styles.js","app/components/Modals/PresentationVideo/index.jsx","app/components/carousels/Campaigns/ads.jsx","app/components/layouts/Course/v1/styles.js","app/components/layouts/Course/v1/index.jsx","app/pages/Course/index.js","app/pages/Quizzes/styles.js","app/components/cards/Quiz/styles.jsx","app/components/cards/Quiz/index.jsx","app/components/cards/Quiz/skeleton.js","app/components/layouts/UserQuizzes/styles.js","app/components/layouts/UserQuizzes/index.js","app/components/forms/Quiz/styles.js","app/components/forms/Quiz/index.jsx","app/pages/Quizzes/index.jsx","app/components/Modals/Quiz/FinishingUpConfirmation/index.js","app/components/Modals/Quiz/FinishingUp/index.js","app/components/Modals/Quiz/RetakingTest/index.js","app/components/cards/QuizResults/styles.jsx","app/components/cards/QuizResults/index.jsx","app/pages/QuizQuestions/styles.js","app/pages/QuizQuestions/index.js","app/pages/Referral/styles.js","app/pages/Referral/index.js","app/components/layouts/Dashboard/styles.js","app/components/layouts/Dashboard/index.js","app/components/Modals/Report/styles.js","app/components/Modals/Report/index.js","app/components/accordions/Module/model-1/styles.js","app/components/accordions/Module/model-1/index.js","app/components/navs/drawers/lesson/styles.js","app/components/navs/drawers/lesson/index.js","app/components/navs/bottom/styles.js","app/components/navs/bottom/BottomMobileNavigation.jsx","app/components/layouts/Quizz/styles.js","app/components/layouts/Quizz/index.js","app/components/layouts/LessonText/styles.js","app/components/layouts/LessonText/index.js","app/components/Modals/Lesson/NoteEditor/styles.js","app/components/Modals/Lesson/NoteEditor/index.js","app/components/Modals/Lesson/DeleteNote/styles.js","app/components/Modals/Lesson/DeleteNote/index.js","app/components/Notes/styles.js","app/components/Notes/index.js","app/components/Rating/index.jsx","app/components/layouts/Player/YT/styles.js","app/components/layouts/Player/YT/index.js","app/components/layouts/Player/Connatix/index.js","app/components/layouts/Player/styles.js","app/components/layouts/Player/Player.jsx","app/components/layouts/Lesson/lesson-type.js","app/components/layouts/Lesson/styles.js","app/components/layouts/Lesson/index.js","app/components/forms/Forgot/index.js","app/components/Modals/Auth/ForgotPassword/styles.js","app/components/Modals/Auth/ForgotPassword/index.js","app/components/forms/Login/styles.js","app/components/forms/Login/index.js","app/pages/SignIn/styles.js","app/pages/SignIn/index.js","app/components/forms/Signup/styles.js","app/components/forms/Signup/index.js","app/pages/SignUp/styles.js","app/pages/SignUp/index.js","app/pages/RecoveryPassword/styles.js","app/components/forms/ResetPassword/index.js","app/pages/RecoveryPassword/index.js","app/components/Footer/styles.js","app/components/Footer/data.js","app/components/Footer/index.jsx","app/components/navs/klubi/NavigationMobile/styles.js","app/components/navs/klubi/NavigationMobile/index.jsx","app/components/navs/klubi/styles.js","app/components/navs/klubi/index.jsx","app/components/sections/HeroKlubi/styles.js","app/components/sections/HeroKlubi/index.jsx","app/components/sections/InfoKlubi/styles.js","app/components/sections/InfoKlubi/index.jsx","app/components/sections/PlansKlubi/CardPlan/styles.js","app/components/sections/PlansKlubi/CardPlan/index.jsx","app/components/sections/PlansKlubi/data.js","app/components/sections/PlansKlubi/styles.js","app/components/sections/PlansKlubi/index.jsx","app/components/sections/AccordionKlubi/data.js","app/components/sections/AccordionKlubi/styles.js","app/components/sections/AccordionKlubi/index.jsx","app/components/sections/FirstPlansKlubi/Plan/styles.js","app/components/sections/FirstPlansKlubi/data.js","app/components/sections/FirstPlansKlubi/Plan/index.jsx","app/components/sections/FirstPlansKlubi/Mobile/styles.js","app/components/sections/FirstPlansKlubi/Mobile/index.jsx","app/components/sections/FirstPlansKlubi/styles.js","app/components/sections/FirstPlansKlubi/Mobile/data.js","app/components/sections/FirstPlansKlubi/index.jsx","app/components/layouts/KultiviPlus/v2/index.jsx","app/pages/KultiviPlus/index.js","app/pages/AccountCodeConfirmation/styles.js","app/components/forms/ConfirmAccount/styles.js","app/components/forms/ConfirmAccount/index.js","app/components/forms/ChangeUsername/index.js","app/components/Modals/Auth/ChangeUsername/styles.js","app/components/Modals/Auth/ChangeUsername/index.js","helpers/date.js","app/pages/AccountCodeConfirmation/index.js","app/pages/Loader/index.jsx","app/routes/guards/PrivateRoute.js","app/routes/guards/CheckoutRoute.js","app/routes/guards/WaitingConfirmationRoute.js","app/routes/guards/PublicRoute.js","app/routes/index.js","hooks/useLocationChange.jsx","hooks/useQuery.js","scripts/send-pulse.js","app/providers/AppProvider.js","hooks/ScrollToTop.js","App.js","index.js","assets/images/kultivi.png","core/themes/theme1/colors/index.js"],"names":["module","exports","Object","defineProperty","value","default","_default","light","main","dark","100","200","300","400","500","600","700","800","900","defaultTheme","createTheme","palette","type","background","primary","green","contrastText","secondary","purple","grey","typography","fontFamily","overrides","MuiButton","contained","boxShadow","textTransform","containedSizeLarge","padding","containedSizeSmall","root","fontWeight","borderRadius","disableElevation","MuiTab","MuiDrawer","paper","width","color","border","paperAnchorDockedLeft","borderRight","MuiCard","transition","MuiAccordion","margin","MuiSnackbar","anchorOriginBottomCenter","breakpoints","up","bottom","makeStyles","theme","leftContent","backgroundColor","down","spacing","content","maxWidth","minHeight","paddingTop","rightContent","BackgroundImg","backgroundRepeat","backgroundSize","backgroundPosition","display","mainTitle","fontSize","pxToRem","marginBottom","logoContainer","textAlign","logo","only","card","cardContent","cardLabel","cardNumber","cardBorder","height","borderBottom","borderLeft","marginRight","marginLeft","welcomeText","thanks","apearFromLeft","keyframes","styled","div","useStyles","props","classes","React","createElement","Box","component","flexDirection","justifyContent","alignItems","Card","className","CardContent","px","pt","py","Divider","join","api","axios","create","baseURL","process","interceptors","response","use","error","_error$response","_error$response2","_error$response2$data","_error$response3","_error$response3$data","_error$response3$data2","status","window","location","href","data","code","includes","name","Promise","reject","postMessage","localStorage","removeItem","body","_error$response4","_error$response4$data","statusText","AuthContext","createContext","AuthProvider","_ref","children","user","setUser","useState","isLoadingStorage","setIsLoadingStorage","useEffect","storagedUser","getItem","storagedToken","defaults","headers","authorization","systemApi","coreApi","studentApi","accountApi","JSON","parse","refreshUserInfo","useCallback","_len","arguments","length","payload","Array","_key","obj","assign","map","object","setItem","stringify","prev","Provider","isSigned","signIn","async","_ref2","username","password","normalize","trim","toLowerCase","post","auth","token","refreshToken","signUp","_ref4","fullname","email","document","isForeign","indicatedBy","captcha","parts","split","firstname","at","surname","slice","_document","_ref3","signOut","socialSignIn","_token","provider","socialSignUp","_ref5","useAuth","context","useContext","Error","menuItem","zIndex","hi","configIcon","giftIcon","avatar","iconButton","iconButtonWhite","SubscriptionContext","SubscriptionProvider","suspendCheckoutGuardVerification","setSuspendCheckoutGuardVerification","subscription","setSubscription","memo","_user$firstname","useSubscription","history","useHistory","anchorEl","setAnchorEl","handleClick","event","currentTarget","handleClose","handleSignout","Fragment","IconButton","aria-label","aria-controls","aria-haspopup","onClick","title","Avatar","charAt","Menu","id","keepMounted","open","Boolean","onClose","label","path","item","MenuItem","key","handleMenuItemClick","push","appBar","brand","cursor","menu","top","menuList","paddingBottom","optionMenu","subMenuItem","subMenuItemFeatured","subItemTitle","letterSpacing","subItemDescription","lineHeight","marginTop","drawerMenu","flexShrink","sectionEstudar","url","target","disabled","icon","SchoolIcon","description","ExploreIcon","RssFeedIcon","divider","featured","sectionAprofundar","FlashOnIcon","MenuBookIcon","NewReleasesIcon","AmpStoriesIcon","EcoIcon","sectionPlus","CreditCardIcon","GroupAddIcon","ToolBarDesktop","Logo","gotToPage","menuPosition","setMenuPosition","left","anchorElArray","setAnchorElArray","handleMenuClose","index","newAnchorElArray","RenderMenu","options","offsetTop","offsetLeft","ExpandMoreIcon","style","list","option","_option$disabled","_option$divider","goTo","whiteSpace","ListItemIcon","Typography","Hidden","mdDown","Toolbar","ml","Tooltip","arrow","ProfileMenu","ToolBarMobile","openDrawer","setOpenDrawer","toggleDrawer","List","aria-labelledby","ListItem","button","anchor","ListItemText","ExpandLessIcon","Collapse","in","timeout","unmountOnExit","disablePadding","nested","mdUp","edge","MenuIcon","SwipeableDrawer","variant","onOpen","ModalProps","AppBarMenu","src","alt","AppBar","position","BadRequest","handleNavBack","defaultOptions","loop","autoplay","animationData","rendererSettings","preserveAspectRatio","Container","Lottie","Button","NotFound","links","Copyright","flexWrap","flexGrow","mx","Link","cardTitle","cardSubtitle","tabPanel","tabs","minWidth","tabLabel","formControl","ctaKlubiTitle","klubiTitleStatus","emptyLottie","googleAlert","validationSchema","yup","required","email_confirmation","oneOf","_user$email","canChangeEmail","setCanChangeEmail","snackValues","setSnackValues","message","handleCloseSnack","reason","formik","useFormik","initialValues","enableReinitialize","validateOnMount","onSubmit","values","actions","setSubmitting","put","then","catch","err","errors","setErr","field","setErrors","finally","handleSubmit","Grid","container","xs","lg","TextField","onChange","handleChange","touched","helperText","fullWidth","autoComplete","onBlur","handleBlur","isSubmitting","isValid","CircularProgress","size","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","action","CloseIcon","min","newPassword","password_confirmation","canChangePassword","setCanChangePassword","showPassword","setShowPassword","patch","resetForm","handleClickShowPassword","handleMouseDownPassword","preventDefault","FormControl","InputLabel","htmlFor","OutlinedInput","aria-describedby","endAdornment","InputAdornment","onMouseDown","Visibility","VisibilityOff","FormHelperText","notched","mb","shieldLottie","SnackbarContext","SnarckbarProvider","useSnackbar","buttonDelete","toggleDialog","loading","setLoading","deleteAccount","delete","Dialog","DialogTitle","disableTypography","role","DialogContent","DialogContentText","DialogActions","suspendingText","suspendedError","formatDate","_date","date","Date","getUTCDate","toString","padStart","getUTCMonth","getUTCFullYear","getUTCHours","getUTCMinutes","_formatDate","_formatDate$split","reloadSubscriptions","subscriptions","suspending","setSuspending","suspended","setSuspended","checkLottie","closeButton","dense","ErrorOutlineIcon","dueDate","suspendSubscription","subscriptionId","_subscriptions$filter","hasActiveSubscriptions","filter","subs","find","has_active_subscriptions","_error$response$data$","_error$response$data","rows","setRows","page","setPage","setDense","rowsPerPage","setRowsPerPage","getInvoices","Math","get","invoices","TransitionProps","onEntering","onEntered","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","row","hover","scope","created_at","due_date","total","openInvoice","secure_url","VisibilityIcon","TablePagination","rowsPerPageOptions","count","onPageChange","handleChangePage","newPage","onRowsPerPageChange","parseInt","labelRowsPerPage","labelDisplayedRows","from","to","TabPanel","other","hidden","a11yProps","setValue","newValue","setSubscriptions","setReloadSubscriptions","loadingSubscription","setLoadingSubscription","openDialogDeleteAccount","setOpenDialogDeleteAccount","state","toggleDialogDeleteAccount","openDialogSuspendSubscription","setOpenDialogSuspendSubscription","toggleDialogSuspendSubscription","openDialogInvoices","setOpenDialogInvoices","console","warn","subscriptionStatus","Tabs","orientation","indicatorColor","scrollButtons","Tab","smDown","gutterBottom","FormAccount","FormPassword","ListItemAvatar","AutorenewIcon","AccessTimeIcon","subscriptionIcon","product","mt","gateway","managementLink","GhostLottie","DialogDeleteAccount","DialogSuspendSubscription","DialogInvoices","overflow","lightOverlay","borderStyle","borderBottomRightRadius","borderTopRightRadius","borderColor","transform","darkOverlay","borderWidth","borderBottomColor","borderLeftColor","right","ColorBox","rgb","useMemo","replace","m","r","g","b","substring","match","x","calculateDarkColor","brightness","floor","ScopesContext","ScopesProvider","scopes","setScopes","useScopes","_slot","slotId","FreestarAdSlot","publisher","placementName","AdsBottom","AdsSideBar","titleNoCertificates","sectionTitle","coursesAvailable","filterCategory","drawer","paddingLeft","paddingRight","buttonFilter","lockedInfo","incompleteBox","certificate","certificates","setCertificates","isLoading","setIsLoading","AdsTop","Skeleton","mr","ArrowRightAltIcon","underline","course","category","finishedAt","download","actionArea","media","summary","infoIcon","infoContent","infoIconLink","skeleton","CardMedia","image","LinearProgressWithLabel","LinearProgress","round","CardActionArea","goToCourse","slug","imageUploadedAt","Thumbnail","uuid","MediaColor","showSummary","info","showProgress","progress","percentage","VideocamIcon","total_classes","totalClasses","SupervisorAccountIcon","total_enrollments","totalEnrollments","TrendingFlatIcon","SkeletonCourse","animation","exploringTitle","showAll","adsenseHorizontal","searchPaper","inputSearch","flex","emptyText","_props$match$params","_configRestCourses$fi3","_categories$find","categories","setCategories","courses","setCourses","loadingCategories","setLoadingCategories","drawerOpen","setDrawerOpen","isLastPage","setIsLastPage","configRestCourses","setConfigRestCourses","append","sort","filters","params","prop","el","query","items","lastPage","handleCategory","link","searchForm","search","handleSearch","FiltersForm","subheader","ListSubheader","disableSticky","disableGutters","_configRestCourses$fi","labelId","ShowAll","_configRestCourses$fi2","showingCategory","sm","md","startIcon","FilterListIcon","Paper","elevation","onSubmitCapture","InputBase","placeholder","inputProps","SearchIcon","direction","AdsIncontent","CourseCard","showEnrollments","my","handleMore","Drawer","cover","isEbookPlus","goToEbook","thumbnail","_configRestEbooks$fil3","ebooks","setEbooks","configRestEbooks","setConfigRestEbooks","_configRestEbooks$fil","_configRestEbooks$fil2","ebook","EbookCard","SkeletonEbook","ArrowForwardIcon","carouselItem","Carousel","itemClass","responsive","large","breakpoint","max","desktop","tablet","mobile","arrows","partialVisible","warning","getContrastText","apearFromTop","AnimationContainer","PaymentPending","ProcessingPayment","SubscriptionRequiredBar","chip","ebookTitle","cardEbook","ebookMedia","ebookContent","ebookSectionTitle","ebookSectionTitleRelatedCourses","relatedEbooksAction","_ebook$category","_ebook$category3","setEbook","downloading","setDownloading","NotificationKlubi","justify","Chip","CardActions","method","setAttribute","appendChild","click","removeChild","dangerouslySetInnerHTML","__html","_ebook$category2","seeMore","ChevronRightIcon","RelatedEbooks","RelatedEbooksPlus","firstName","educationLevelId","states","setStates","cities","setCities","schooling","setSchooling","loadingData","setLoadingData","loadingCities","setLoadingCities","setIsForeign","formValues","setFormValues","stateId","cityId","_String","_String2","String","_profile$data","_profile$data$isForei","_profile$data2","_cities$data","_profile$data3","_profile$data4","_profile$data$stateId","_profile$data5","_profile$data$cityId","_profile$data6","_profile$data$educati","_profile$data7","levels","profile","all","getData","Select","native","e","setFieldValue","displayEmpty","city","level","FormProfile","isDialog","userAvatar","userName","userSince","noCoursesTitle","noCoursesSubtitle","noInvitesTitle","noInvitesText","CircularProgressWithLabel","CardPersonalInfo","setOpen","cardUser","toUpperCase","EditIcon","p","signup_at","PersonalInformations","enrollments","setEnrollments","courseId","setCourseId","loadingEnrollments","setLoadingEnrollments","invites","setInvites","loadingInvites","setLoadingInvites","getInvites","fetchData","generatePdf","enroll","doc","jsPDF","formattedDate","toLocaleDateString","day","month","year","img","Image","kultiviLogo","onload","addImage","setFontSize","setFont","text","mainText","mainTextYPosition","forEach","line","yPosition","save","CardEnrollments","dialogUnsubscribeCourseOpen","setDialogUnsubscribeCourseOpen","toggleDialogUnsubscribeCourseOpen","course_id","undefined","deleteCourse","_goToDiscover","cardAbout","CardHeader","ListItemSecondaryAction","DeleteIcon","invite","isConfirmed","DoneAllIcon","useOnScreen","ref","isIntersecting","setIntersecting","observer","IntersectionObserver","entry","observe","current","disconnect","feature","useRef","isVisible","loadingCourses","setLoadingCourses","hasCourses","sessionStorage","load","partialVisibilityGutter","infinite","loadingEbooks","setLoadingEbooks","hasEbooks","carouselImg","courseSlug","campaigns","setCampaigns","showArrows","setShowArrows","infiniteLoop","setInfiniteLoop","autoPlay","setAutoplay","autoPlaySpeed","focusOnSelect","campaign","xsDown","photo","smUp","photoMobile","CPF","constructor","CPF_LENGTH","this","validate","clean","hasMinimumLength","isBlocked","calculatedDigit","calculateDigit","cpf","factor","digit","rest","firstDigit","every","signInValidator","signUpValidator","matches","when","is","recoveryPasswordValidator","redeemVoucherValidator","resetPasswordValidator","confirmAccountByCodeValidator","is_foreign","education_level_id","state_id","city_id","typeError","integer","changeUsernameValidator","emailConfirmation","handleSuccess","ms","resolve","setTimeout","feedback","copy","sent","setSent","FormRedeemVoucher","discoveryTitle","discoverySubtitle","openRedeemVoucherDialog","setOpenRedeemVoucherDialog","handleRedeemVoucherDialog","Campaigns","pl","pr","CoursesCarousel","EbooksCarousel","DialogRedeemVoucher","noCoursesFallback","noCoursesCard","subtitle","hero","BillboardBannerApoie","fallbackBanner","Hero","alignSelf","HeroMobile","HeroDesktop","Cta","coursesInProgress","setCoursesInProgress","completedCourses","setCompletedCourses","tabId","setTabId","Loader","TabContent","courseCards","FallbackNoCourses","textColor","topicParentTitle","topicTitle","handlePillDialog","pill","isPublic","LockIcon","videoWrapperContainer","pillId","setPill","disableScrollLock","PaperProps","YouTube","onEnd","videoId","embed","containerClassName","opts","playerVars","controls","modestbranding","rel","showinfo","paritialVisibilityGutter","slidesToSlide","useParams","topics","setTopics","parentTopic","setParentTopic","openPillDialog","setOpenPillDialog","showPill","setShowPill","ParentTopicTitle","TopicTitle","loadTopic","pathname","TopicPills","pills","PillCard","_paths$split","_paths$split$filter","paths","scrollTo","topic","PillDialogVideo","heading","secondaryHeading","accordionSummary","moduleDetails","lessonsList","lessonItemIcon","lessonTitle","lessonSubtitle","_props$progress$compl","_props$progress","ariaControls","classesSeen","completedLessonIds","enableLink","ClassTypeIcon","seen","DoneIcon","PlayCircleFilledIcon","NotesIcon","HelpIcon","Accordion","square","AccordionSummary","expandIcon","time","AccordionDetails","lessons","lesson","_classesSeen$includes","lessonItem","goToClass","videoWrapper","presentationVideo","courseTitle","courseMedia","ctaCourse","courseContent","courseSectionTitle","courseSectionTitleRelatedCourses","relatedCoursesAction","alert","instructorCard","instructorCardHeader","instructorCardContent","instructorAvatar","instructorName","common","white","instructorJobTitle","instructorDescription","instructorSocialButton","_content$category","_content$targets","_content$category2","isLoadingContent","isLoadingCurriculum","isLoadingInstructors","isLoadingProgress","isLoadingAds","curriculum","instructors","ads","curriculumSection","isEnrolling","setIsEnrolling","firstEnroll","setFirstEnroll","courseUrl","setCourseUrl","openPresentationVideoDialog","setOpenPresentationVideoDialog","ProducerSocialLink","FacebookIcon","InstagramIcon","YouTubeIcon","TwitterIcon","LinkedInIcon","LanguageIcon","Producer","producer","displayName","jobTitle","isMobile","_handlePresentationVideo","PlayArrowIcon","courseMediaPreviewIcon","isValidStudent","trunc","scrollDown","behavior","_curriculum$at","_curriculum$at$lesson","_curriculum$at$lesson2","enrollMe","sellerUrl","_progress$isValidStud","Module","ArrowForwardIosIcon","targets","GroupIcon","VideoLibraryIcon","EventAvailableIcon","AllInclusiveIcon","RelatedCourses","PresentationVideo","setContent","setProgress","setCurriculum","setInstructors","setAds","setIsLoadingContent","setIsLoadingCurriculum","setIsLoadingInstructors","setIsLoadingProgress","setIsLoadingAds","_course$value","_course$value2","_course$value3","_ads$value","allSettled","fetchResult","CourseLayout","boxKlubi","boxKlubiTitle","boxKlubiCopy","cardActionArea","cardFooter","checkedProfile","creatorName","_props$category$color","_props$category","_props$title","_props$totals","demo","getQuiz","isFinished","totals","quizzes","setQuizzes","quiz","QuizCard","maxSubjects","category_id","is_public","QuizForm","setQuestions","setPagination","subjects","setSubjects","sections","setSections","limits","setLimits","subjectsSelected","setSubjectsSelected","sectionsSelected","setSectionsSelected","subject_id","section_id","limit","categoryId","subjectsIds","s","modulesIds","Number","section","subject","Autocomplete","limitTags","multiple","disableCloseOnSelect","getOptionLabel","renderOption","selected","Checkbox","checked","renderInput","groupBy","subject_title","multiline","about","FormControlLabel","control","Switch","labelPlacement","onDelete","handleDeleteSubject","handleDeleteSection","Quizzes","lottieOptions","UserQuizzes","answers","complete","confirmFinishQuiz","cardEvaluation","evaluationEmoji","evaluationTitle","evaluationResult","evaluationCorrect","evaluationWrong","resultsTitle","corrects","wrongs","SmileEmoji","ShockedEmoji","cardAnswer","unChecked","correctAnswer","wrongAnswer","setQuiz","questions","setAnswers","pagination","loadingQuiz","setLoadingQuiz","finishingUpQuiz","setFinishingUpQuiz","answering","setAnswering","retakingTest","setRetaking","openDialog","setOpenDialog","fetchQuestions","user_responses","_error$response$data$2","finishLater","finishQuiz","retakeQuiz","reload","_error$response$data$4","HeaderQuiz","_quiz$category","_quiz$subjects","_quiz$sections","ActionsBar","is_finished","SettingsBackupRestoreIcon","SaveIcon","finished","QuizResults","q","perPage","question","fontStyle","a","question_id","answer_id","isCorrect","handleAnswers","questionId","answerId","_error$response$data$5","_error$response5","_error$response5$data","answer","Pagination","handleChangePagination","FinishingUpConfirmation","_error$response$data$3","FinishingUpDialog","RetakingTestDialog","faq","howItWorks","referralBox","referralBoxTitle","referralInfo","inviteText","refLink","setRefLink","copyLink","navigator","clipboard","writeText","ChevronLeftIcon","textDecoration","InputProps","readOnly","ContentCopyIcon","encodeURIComponent","wrap","Dashboard","Route","exact","Wellcome","Pills","MyCourses","ReferralPage","Course","DigitalCollections","DigitalCollectionsPlus","EbookPlusDetails","EbookDetails","Profile","Account","Certificates","Discover","QuizQuestions","report","disableBackdropClick","rowsMax","currentClass","overflowX","drawerGroup","drawerGroupLabel","drawerIcon","upperMenu","BtnNavClasses","boxSizing","BtnNavClassesNeutral","BtnNavClassesFeatured","premiumCard","premiumCardTitle","premiumCardAction","lessonSlug","UpperMenu","_lesson$attachments","_lesson$attachments2","openAttachmentMenu","setOpenAttachmentMenu","ReplyIcon","attachments","Badge","badgeContent","AttachFileIcon","handleAttachmentMenuClose","getAttachment","GetAppIcon","SummaryAndMindMapNav","summaryLink","mindMapLink","NavClasses","_props$previous","_props$next","previous","next","PremiumSeller","premiumCardCopy","ModuleAccordion","openReportDialog","setOpenReportDialog","implementation","ReportProblemDialog","closeReportDialog","maxHeight","listIcon","BottomMobileNavigation","_lesson$next","setOption","BottomNavigation","showLabels","handleChangeOption","BottomNavigationAction","ExitToAppIcon","DynamicFeedIcon","NavigateNextIcon","header","adsenseContainer","_lesson$module","_lesson$evaluation","_lesson$evaluation2","pb","evaluation","index2","_lesson$evaluation3","_lesson$evaluation4","_lesson$evaluation4$u","_lesson$evaluation5","_lesson$evaluation6","_lesson$evaluation7","_lesson$evaluation8","_lesson$evaluation9","_lesson$evaluation9$f","is_correct","feedbacks","correct_answer","user_response","_finishQuizz","AdsBillboardLesson","_finishLesson","wrapper","toggleNote","note","lesson_id","editorContent","setEditorContent","update","endpoint","store","onExited","CKEditor","ckEditor","editor","ClassicEditor","config","toolbar","model","class","view","highlight","language","onReady","editing","change","writer","setStyle","getRoot","onFocus","submitNote","deleteNote","notesMainTitle","noteCreatedAt","noteTitle","noteBody","noteKlubi","noteKlubiTitle","noteKlubiCopy","extraContent","videoApi","notes","setNotes","setNote","loadingNotes","setLoadingNotes","openNotesDialog","setOpenNotesDialog","toggleNotesDialog","openDeleteNoteDialog","setOpenDeleteNoteDialog","toggleDeleteNotesDialog","i","unshift","Header","AddCircleIcon","FirstNote","NoteAddIcon","createdAt","setPosition","play","NoteEditorDialog","getCurrentTime","DeleteNoteDialog","savingRating","setSavingRating","rating","setRating","_JSON$parse","Rating","precision","emptyIcon","StarBorderIcon","RatingCourse","videoDone","lessonHeader","backgroundImage","lessonModule","nextClassCopy","videoAreaSize","finishVideo","setLoadingVideo","setVideoDone","setVideoApi","videoCode","playVideo","seekTo","onStateChange","Player","mediaId","playerId","renderId","cnx","cmd","settings","playbackMode","defaultSoundMode","nextVideoMode","advertising","timeBetweenAds","customization","ratioWidth","ratioHeight","render","renderError","playerApi","setVideoPosition","getVideoCurrentPosition","on","loadingVideo","initCnxelHeadScript","n","t","contentWindow","c","head","log","AdBlockDetectedWrapper","Alert","severity","connatixCode","borderTopLeftRadius","setIsSubmitting","lessonId","CNXPlayer","YTPlayer","attach","endIcon","NotesComponent","lessonType","filterBox","fab","Lesson","setLesson","setCourse","isLoadingLesson","setIsLoadingLesson","setisLoadingAds","computedMatch","_progress$value","_lesson$value","matchLesson","_lesson","PlayerLayout","LessonTextLayout","finishText","QuizzLayout","DrawerLesson","setEmail","FormForgotPassword","forgotPasswordButton","socialContainer","socialButton","socialButtonFacebook","socialButtonGoogle","socialButtonApple","loginFieldset","socialLoading","setSocialLoading","signInGoogle","setSignInGoogle","signInFacebook","setSignInFacebook","openForgotPasswordDialog","setOpenForgotPasswordDialog","handleForgotPasswordDialog","is_confirmed","feedbackField","_loginAttempts","loginAttempts","attempts","loginGoogle","tokenId","FacebookLogin","textButton","appId","fields","callback","accessToken","renderProps","isDisabled","GoogleLogin","clientId","buttonText","tag","onSuccess","onFailure","isSignedIn","DialogForgotPassword","formArea","copySignUp","ctaSignUp","policy","SignIn","CssBaseline","loginFormContainer","LoginForm","Statistics","documentError","setDocumentError","recaptchaToken","setRecaptchaToken","handleBlurDocument","InputMask","mask","ReCAPTCHA","sitekey","ctaSignIn","SignupForm","ResetPassword","reponse","isValidToken","setIsValidToken","Loading","Form","socialIcons","facebook","instagram","Footer","social","redirectForSocial","NavigationMobile","faqRef","bestRef","partnersRef","allPlansRef","handleBackClick","handleChangeDrawer","navigation","listLinks","iconMobile","titleIcon","NavigationKlubi","elementRef","scrollIntoView","contentLeft","contentInfo","infoTitle","cta","contentRight","heroThumbnail","HeroSectionKlubi","HeroImage","InfoSectionKlubi","yellow","orange","contentImage","greenText","yellowText","orangeText","prices","previousPrice","buttonGreen","buttonYellow","buttonOrange","contentNext","close","heigth","CardPlan","plan","plus","pos","academic","posButton","freeButton","academicButton","setToken","handleRedirectToCheckout","responseStorage","yearly","priceOne","priceTwo","priceThree","plans","plusTitle","academicTitle","contentPlans","PlansSectionKlubi","dataAccordion","panel","contentSecondary","accordion","active","accordionDetails","step","contentStep","contentTitle","listPaths","listItem","titleItem","withStyles","expanded","MuiAccordionSummary","MuiAccordionDetails","AccordionSectionKlubi","setExpanded","_accordion$steps","isActive","isExpanded","contentTertiary","steps","itemList","headTitles","recommendedTitle","headingPlan","recommended","borderBottomLeftRadius","iconGreen","iconYellow","iconOrange","containerRecommended","iconsContainer","footerPlan","remove","greenRemove","yellowRemove","footerRecommended","dataPlans","listOptionsPlans","paymentsImages","mastercard","visa","elo","america","boleto","Plan","free","newOptionWithPlan","uniqPlan","titleKultivi","listStyleType","headerRecommended","titleHeading","contentOption","titleOption","descriptionOption","MobileFirstPlansSection","linkPos","handleOpenQuestion","titleBankNext","listOption","icons","titleFooterPlans","titleNext","subTitleNext","ButtonNext","footerPlans","listPayments","mobileDataPlans","KultiviPlus","KultiviAcademy","FirstPlansSectionKlubi","payment","KlubiLayout","contentStyles","headerStyles","formStyles","bottomStyles","formBlock","resendMail","bottomContent","input","ConfirmAccount","setCode","sending","setSending","setAccountConfirmed","setAttemps","autoFocus","onInput","number","result","_response$data","_response$data$errors","maxLength","FormChangeUsername","setChanged","handleCopy","handlePaste","onCopy","onPaste","changed","getUtcTimestamp","dateTime","now","localOffset","getTimezoneOffset","utcTimestamp","getTime","countdown","setCountdown","canResendMail","setCanResendMail","mailSent","setMailSent","accountConfirmed","attemps","openChangeUsernameDialog","setOpenChangeUsernameDialog","handleChangeUsernameDialog","email_confirmation_sent_at","sentAt","diff","interval","setInterval","prevCountdown","clearInterval","handleResendMail","toUTCString","Bottom","DialogChangeUsername","PrivateRoute","Component","isAuthenticated","ReactDOMRoute","redirectTo","Redirect","CheckoutRoute","hasSubscribed","WaitingConfirmationRoute","PublicRoute","LoaderPage","SignUp","RecoveryPassword","AccountCodeConfirmation","InternalServerError","UseLocationChange","useLocation","URLSearchParams","useQuery","has","mtc","lastname","res","popUp","sendPulsePopUp","script","getElementsByTagName","AppProvider","ScrollToTop","App","Router","Routes","TagManager","initialize","gtmId","ReactPixel","init","pageView","getElementById","ReactDOM","StrictMode","ThemeProvider","kultiviThemeLight","_interopRequireDefault","require","enumerable","_purple","_green","_grey"],"mappings":"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","file":"static/js/main.c1ab47e6.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/signin_bg.23a0f41c.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABYWSURBVHgBvVt7kJ5VeX/OeS/fdS/fbjZ7TbIQEpAEknBTIiJoYIBaYLT0Ti92LHWcMtPpVIu0unRUmNa2Y2ttoY7/OdJaLLYdbatyKQaDhAAaKDEkJpvd7GYv2f12v+t7Ocffc877XXZzgWD0zJx9r9855/fcn+e8K+jn1LQm0X4tBGn6OTRBP4Omx25wF+lIvujUB0nJAc/Ra0OSfUJIh59LrWIZq1kl5HQo1LSIKydGaXtJjD0V0Xlu5w3g3t8fzA4PeaOhG18vHfl2zxeXCymGyBG9gOXhnLlmmgY7tcJRqVhFNB9HNCFi/VIUqefiSO0tUfSjrWOzJToP7acGePRP1xcoG9/kevLXnZS4zkuLgpOS0vEFSQegwDMhJdi2ajoDUpEGz1SkKQ41RTUVx3U9HYb6OaqrfxFKPTE0NjWPX71lcX7LAI+NjfRoR93h+M7v+ml5hZcVOScjyfElCd8nkekjke3HEd3vJnJzAOrbKTUDA4PCJdK1OdKVaVLVGRyXSYWKoqqmoKoqYVXtiwN6tFxRj77twcl5egvtnAGClGLyk8NvdzLiUwB0XSrvpNwMuJUGqI4Rkmt2kChcDmADJNws3nbJsNHM1pTR1oCQUa1qRLV50ksHSc3tJbWIYwWCWlUUVFQtWI6fDWrh/aMPnHjuXLl5TgBnxvryNfLv9fPOH2a6ZL+blULmsjAfV5Hs30kiv4HIASgpW6OL9klEi0yNv7rtFgNXITh5gvT8Xoqnv0uqOEtBOdb1JXUiKMWfT+vgc2vPQT/fFEA28cc/NbRZO/Iz4NidqU5Heh1pALuMnKGbiDo2WO4YQKIJbMUMQpwyaBvWBGAbUD4GRdIndlM8+QyFi/NUK8aqthx/s7Is7734ofHDdL4AHhkbvMJPOX+f7nKuBTjhdBbIGf1FEr3boVcQQdkGSraBaQd62ql0CxS1AVPJPWWvdWWK4sOPUTT7OtWLIVUX4x/qSN898onJl+mnBTgxNrzdSYt/TnW5VwEcub3DJDfcCX1bb4E4CSCZ4JLiNKDOAG71eVNM2Q7ZowWJ39cWKT7+HfR9VF+sgZvRXlWN7xmiqZfEmHnztM2hs7RD9w1vdtP0WKbgXg6AADdCzgV3wTr2Yc0YU8b2KHCUqnXOXZvV2Xsa15S8S41r1daT31Dcum7v/D4kRWZHQKo6yXCaSTYUheKKUr3wzF//X3HunAG+ONbd3ZFKfSnX616T6oJYFgbIWX8LiXQPJovagEUWqGxfoGqda9UCRqve0ckYjWcGeJS803bk+zo0ImKsc1wGSMakh4I4Gr37Xc43H36qVjsdDnm6m3qMZA9lP5bulDfBqAgnl4OVvIYo1Q1pqaMHmKyOHthO6Dqwi+Cu2s4pObJHX9Ebz5JzFbb9JrDPGuMnc2lwD4aOxOBOcrr6KdXhCKzvF9Zgrbzm02FxT3dzUg3f6Ofkh9IYQKYdEt0bIZaDCRBhuomdRWJFzL2mEtJK3VthaVaTsnXU7WZUJdeqda/9OdyQ6NtOsnqS0pEWUU1/aLyy9jtwZN9ePcMpMx/86PBItlM/nu31rkx3A1wWEcjIe4kyiEYc0eouJhHSTmbAOsDJIJPrptVZBVK04WqC4fMYB23EVmjV1GHNUY+CiMY6kVhtzkUUk5p6hvTCUaotxFQ9Ge4NysHto5+Zm6IzcNDtB9dn6tHvdITOttlFRbUlTVWEXdXjU1QJJoFBWECuPXZ1pCib9SmfQ8+nqDOfplTKJ8/z8K6TRDEywdngdgObNou3UTcWi7g0CgKq10NaWq6h16lcqVO1GtBSqWbVMMa7eE9FinK+SxmdonRJUQpg3breXq+7d4+O0t8dOWJkXDU56Lru9ei/KqVcN1Jwr8ymvcG6cqgWSQqU5RSem+5g4dyRMQCjJA/n2YxLnbkUdXenaXhtjjaM5Gl0pIM2DOdoeLCDMhkf77srQjXmSrUS0PRMiQ4eWaIjE8t07HiZJmbKVFyqUakcAGBIIXMKrgKJB0VxTDGuY6QfER8BNuVwjykFIxcF0fyR+XAP3hvHLP9er9e/zTM6oPg/dHZ23rNz505aWFigAwcOmLWk0xnq7Oygjq485XJ5cCtDWRicTJo5lTLc4YXWa3UqlSpUWi6BA3VDgFTKA0c9Gu5z6cJ1WQDPUKErhXEFLRRrNHGiQoePVXEMabkSUa0WYtER+fhdB8+Zz1M6k8FYNjMO6jWqwlCWy2WqlDEXjjzfcrFElUrFSMD69etN37NnD83Pz38xDMM/cA09tZ7r6+ujW265hV599VU6ePAgre1fQ+tH11MumyXHdYzYcU8DXCaTxX0AxQJ8iDADCrG4Kiaem5+j45NTtHBykUrwXQePKdrz4hHq7MiCw11GZpawqGJxiXp6e40fr9cD6urupJF1I7RmzRpDSJ6LF41FAnyVSpUyxLUKAmcBNgAxQvOsUqnSsfEJmpqcpquvvpq2bdtGR48eZYBLjM34QSxwS7FYvHX37t20f/9+ynfk6aLNG81ETVvAZgMcc5C9Om3iKhMjYzQMUQwvLJNNQ4xiA8IFcSqlsrG6fiqD+9pQPoC+MbFq4Ervmh5at2GEuru6jA7zuDxizGIJwvG7ASQjxJE7g4tjZRJnno+ZUFws0osvvkRPP/00TU1N8fyPgUDfMwB9X80U0vLacj0e4R8NjwxZamttqGgy8CT0ZxFjoA1gOnknxKRM2RpEKQjqJpldXlpqLoSPAj4uDGpUDyPze+O4QRkG6LkexrWGiI1Pg3sMqAZwTAgWf+5BGBngTERlrK3AeyHNzc7heY063XhvXYWfwuOTxoqOf7Bv7vlaqfzhrytaDEFpUCXGAEpZo8CgmKosT0KLZszI7zAFebFMAKYsU7uxGKs7dV4yXTswS3dtrRlO/9sradozvca85/me+U0ZesSEYFCu5xuwbFhY9HkMAxIiGoSBeYfBmYqA1TEwyTqEvqyiv73NW96c7zqx9Quz1k1UeoK+i0Lvko09dXp+2nKEKSTasgJDrdhSljtf12BcPA8xIsTWcinC5JGhOhuEILCAh/NV+s23R9TfmzMLuhtZ5eH/LdH4UtpwsFqt2d8nBGPxZ8vNnLQiGlpgQQucAZikXLbGo81xtEC0ud/b7DnBWjwqGYBx4F6Yz+q1lw+H9Nwkm2OIQBglyaqNWCRixhgmmc00g2BxZF1knZQyEdVkkQ1xbYjXZZtD6h+BGHZ1Gu73pou0dbBCB+ekyY2rbAWxYDNm4oaYuCoRfzMmgPG64ihuEtkqjQXJa2LQWwYlXJazFpowituHXesHxUbHk+72dRj8+6zQ1mSLZjpudYWjh5gBgaKhKw3nRCOSIUtB5jIbB6sviB/DKu3YmCIfFtPt6rbi4Pq07cJJ+to+iByIwxzkxTX9q5DNkKddYhrnOskbNbWOPJdEYL59nQ9xlZ6O5Ea89qQ7hiDVicU6HviydR4V0jXzMouF01Z6EM2oLrSGhoFJ0SJCMlFDXFh8Wccu6Anp4gt6yensJqej24zAjnvrRUu0oTBFhxdcI+bMweaYzYAgET+yYxqD0kwddfOcwbMvLKQVXTriGiIJodY/8ABiqUtfgd14m+znMGy416WL+yW9ulQGwDws28pYXIj26opoWsFGs4ZWW/0EkerVMu26LEN9fR0oSmVRXcsYYjiZgHrWdNCt2+bos98oUQq+lDnvtFnW1WPq9kKVbokmN2ZGGT54S5+gdT2eKVc6WvYzNjdZucN6lPIkvWOjR3t3l40+iDPUr4Q4eyGAQygWuw29Id185Vpy8ihMwb9hFgNQwnJK+K5dV3XSV5+dpClYxzSeKynpjdoKoEljdWAOXn0FoqAsjFMoSTnKuMAmi1g0JPTq5q0efREAy4gQmHJSnjnpX1GZ0C1wzILy8kn6jdu6aWC4k2QG1pKzD2lfEh50HcFAz9pO+u0bTtKffWWOnJ61JsWV4tSs42x1QnYVzL2cU6P3besw4qmiFgMswCTuZtZeMuTTbVtq9PXXipRFpMGW8I041t4kxLq4uEB3bJN067U9lntpLymNxnbtOJeIOR2EbzddU6AXDizR4z8oUk+hB3Ft7U3Px9yUiJSWSyW6fatDbxvxDEAr1lb+3Lu2kJ6IBErKVrk936GPvDdDLxxbpoVy3gS9Oo5N9G7Sm1OaMG7C5RQJIjY/N0u7Lgnpjz8wSOlCnlxwSnpOwj27tyIwt8A8/Cxd6KB771xLc0sT9MzhGGFil1lHBLegV+teg4gcMro2ZFxEtDTaUaJ7b8qatbMkGuevaOlVYHPGnoQ3fCK/FfsJN3sovXMy25kVtGNY0Pj0Eh1fhHXzMogvsyaDcGEQXNcG3nzt+ymTCpU5GC5O0weuiOmjdw1QzzD8Xk8XmcIwrKQw1bZGgpvUaSRHqIp8B5HOKECVi3RwAhmJ9imN+XhsD1GN63vmyNcpSBXSHwpREV86OUNbehbo0+/P0KYRrI2DDnYW0K6wGn/t9r8oPevyPt34feJ1HRtSCdZDx/Hoso2C/rLXof3jZdqH/uoJQVPLHlUiBw5XmOqgi0pa3o9h7mO6+BJB112ao80XdFKqr4vcAuo4yBGlB8mQjaJSQ784plUQL1zjHVI5KiBO/cidgnZdvkQvHZqnHxybpYlFhxbrLtX5p/ith3HSXkwD+Zg2DcV0zY2Crrgwh0wF0Y/v2vgWqa4ClliJ1xmb0UERxodheYrImrvN5olrSxK9KYeu6/Fp51aOCRVVasgEahGye34sKJOSiORBWehYmsFwagW9cpHPOchEhBGZRPcs/RraYzsb1RSiIZ0xHM1hR2p7J4i7qQYucOxpc8VqHSEb/CCmoizokQJH00aaElHl6IcTABCesxUV6qIr4sNGB/lPMa5N9Gr3xyDiDpGx5QiXDQGnRhAhDpk8LCiNdws6kTRjKSB6eFFwcAwzz9bSgQjJdMpYSqy8rUYqaeXmi+WiEdOUsTpwH/ChGcxZS6MEUacU4s/OMGrWUdlutIrnwogjx1ES3DXVR2zB6YijHf1jperHmgBr5aXlKJffG4dqhxtbDrLPYvHSbsJnh7NHYbplSwKQwzXopOlsaBCGmbpNw6gYfUtCrxX2wlbKDEgQwoRn+K0EF3XkAhNIinBRx40yo63dCGWLT4JDZS4+hdoWokJlXokCDu/0nvXpHctET1mAVz1C4dH71e6oJn7PD7UUrra1WrL+UUNcsUeLjqPPoYhjOZhwcQnFKQ/Ac75MRE8l4KRld5KzrTLyRG0bEUZPhc03NYyFvY1zTtmUtGIeY75AGU7xAk31jYdVdseY9xZVXQcose4Wn7bb4U1HHwTqu74vxuNAjUrolqEK66JKRJKSGFHIpGxo1xyELj3+9XGaQbHoV35tMzJzWE0WQeP4lAXZrKG242sH2FYHlbzwRA/MMAnnY15LUo9N9i9soVw3ewzuhXU1jkLZ841pmrFRsTgzDvb+V1hDSAsqmRId9yihGADrxmCqwRUN0+zAhXTS4R+dpC89vJ/2fn8WqUt7yT1Kzlf1FfdsSX9ujusr5RboZsm/BcICa7s2eodut8B1VFf/fWFq0+EGrmYc9sgLpP7onfk5hEp3ur7IsbswhJf2aHeNBDUzqGQXiUWrp6+f/v8Hs7Qwt0yv7Z+niWMlPHZQkfPguwStqFCv3B8zjvzkfJ2++/Q0Pfrlg/TjQ2W68uo10IKgqXesX0xoHVhdMwQPLDhzjfO4gjruspoKg/gThU+/crSBa0W6sOfQ9L5rLx78T7+qPig9JTjsIUfZHVtp5d6UChs6Y0Q3pKGBCt14y6X0P489byKe116eoR/tn0XGkKULNxXogo3dOE9TrsNNShEalbWAZmdq9PqBBTqIvrhYh41x6Mabt8KpawtMJVKUgLDg1ApwzD3WPeznwx7F33IC/8V2TKcEfcfuH7jG8+V/ZLucfq8DDE7DIrJxMQYmMTK+PRcNwwNu19Va+sbj0/TS7v0GgE4k2Uxiqm2OiXWN7TL1Gw39ja3fSt57564tdMf7BzHkfEs9IgtIG2BtQFmN+Bo+Env4VF6IZsJ6/P4ND87sbsdzSqrwN8+Ujp/cmcey9bsdU08S1L7P0mpJZpDEiq6s0qYtw7jdQYtTcxCNmHwYKa4FeUYAVIsj6HzN9oPdZQdK/jfcuoNuux1Zv55P9N72lWLZOjYAx1VF9aU4QjHtwfUPnvjKA6vwnLK7xDbqtSj8vFPz3+OW1C6TRiUbSAZfo6rG9onLByqxtOCE607Se24ZoKGRG2jfEy9Sce4kwjrV2pm2rq9pBB3EsL1Da+kdN19Kmy8G6HA2IUBi1IzutelaUywtJ+ESKCiDg3X9ZBVrFqfJrM6Yl0z++dAOuLjHsx1yvZeTNtrguJLF003E1IR0DTEV1qQbtnRRqVqgoweKNHlompZPFhFMVGxtlMUVVfGewT4a3riGNlyUoXxmgUyEnICzRrZhxclyLrHmOgGqatC7EkoVy3oCddg7sKu073Q4zpp4Hb1v4JdSGflwJi97vBwilpR1+Eb33FMBtm+v8e6S8PJwX93I8XzoG/swaVKlFGonKb8Km7WIxVYSR60Tv9bioO0NztkwzByhd2GFwalyvaLvGX1o6stnwuCeDeBsSnxjqKo/XhPqs9DBvGsMKUcXWKjZypJW7kzgkoCVFqCG9dX1RXCsSBlY3ozXVo5gPxnoZlGpOUbTvyVAG2EYi3kDJIOrouZTUmVsfN7//UNTj54Nw1k/QnjkqVL4vl2ll7uDfBU577sMrxoGx7i0tkp3y7W1Fts8JiKGQaCUbRxqA9E4thuVqCWSRucglhH8XbWkFoKa+vghf/of3/eFpExwhvamagP6LnKObRq42085n0llxaDPn26lGiIqE91jcsnkKFrfyzS/oRGrsiVN7Z+NWC5qq3NsvBq7uZE1NIrdQRX1z7I6XgviP/Hm5OPDj0xV3mjtb77YgnbkvuFrPV895KfFO6GbDueOnHG0trUtMJO9S7HyA6FTYtHVIHWSFbWJKac+4F7M4Goqrlb0s3DmHxt9cOZ79CbbOQHkdvTDXQXZk/2ol5L3+Gkq+OAkpzjCbQPFXJQtLibF8ZWz6Ua8nXBQJ6ASgCa25C8PkWTXa3ohDPU/6cj7qw0PjS/QObRzBsjtXyGy79g0uMtxxYc9T1zvpajgepab9uPCNhFd/e1aG8BTxJRFMU6+HTWZgV4OQ/Uknn/u2QMnnv7lr55d384bwEY79LFClyf9d6Pm+Vu+J97l+NTnoZbBtRbpWFEVTaC0Uge5qaQ0z+Ea254oARbQSWQzTyCM+9KIP/0dMWY+KnhL7acC2GiTY4NZ6MpWxOTXA8wN2FffgbhzwGwAN776bZ8tAcjGVVlwCkWyaQQCL+Pe7iDQ31pW+pVtnz1RobPXfd+wnReAjWa+rH9gMHOsHA+iDH+JcPTljhCbIbKDENk8ws8um/OLIjzlEopfU9hkPYidoB9KFb62LudM0Senqufzi/zzCnB1s4DHxAvHH05v2Bg6tenA4/vpAT+MZx01sTQSXPnwC9HP8l8MfgLe61cv4tFtXwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/signup_bg.0a75ee40.png\";","module.exports = __webpack_public_path__ + \"static/media/close.0632a2c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/questionPlan.4275d346.svg\";","module.exports = __webpack_public_path__ + \"static/media/Remove.d9aadeb7.svg\";","module.exports = __webpack_public_path__ + \"static/media/facebook.f18a7ec7.svg\";","module.exports = __webpack_public_path__ + \"static/media/instagram.e0dc8865.svg\";","module.exports = __webpack_public_path__ + \"static/media/email.c254f92b.svg\";","module.exports = __webpack_public_path__ + \"static/media/hero-klubi.eabeeca4.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/verify-green.7021c303.svg\";","module.exports = __webpack_public_path__ + \"static/media/verify-purple.bf6125ef.svg\";","module.exports = __webpack_public_path__ + \"static/media/verify-orange.a14571ad.svg\";","module.exports = __webpack_public_path__ + \"static/media/elo-v2.923e9573.svg\";","module.exports = __webpack_public_path__ + \"static/media/visa-v2.b8b7c08a.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/amex-v2.37a670a8.svg\";","module.exports = __webpack_public_path__ + \"static/media/mastercard-v2.ed41f525.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-kultivi-plus.b0aca3a8.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-Kultivi-academia.e8d58a15.svg\";","Object.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = void 0;\n\nvar purple = {\n  light: '#dfd4f7',\n  main: '#7b42f0',\n  dark: '#2e0d73',\n};\n\nvar _default = purple;\nexports.default = _default;","Object.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = void 0;\n\nvar green = {\n  light: '#b2ebe5',\n  main: '#1dbfb0',\n  dark: '#0F5B7A',\n};\n\nvar _default = green;\nexports.default = _default;","Object.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = void 0;\n\nvar grey = {\n\t100: \"#f0f5f7\",\n\t200: \"#d6dde0\",\n\t300: \"#b4bbbf\",\n\t400: \"#8a9094\",\n\t500: \"#71777a\",\n\t600: \"#4f5b61\",\n\t700: \"#343c40\",\n\t800: \"#14181a\",\n\t900: \"#0d0f10\",\n};\nvar _default = grey;\nexports.default = _default;","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/icon-Kultivi-pos.e59dca77.svg\";","import { createTheme } from \"@material-ui/core/styles\"\nimport { green, purple, grey } from 'core/themes/theme1/colors'\n\nconst defaultTheme = createTheme();\n\nexport default createTheme({\n    palette: {\n        type: 'light',\n        background: {\n            default: '#F8F9FA'\n        },\n        primary: {\n            main: green['main'],\n            light: green['light'],\n            dark: green['dark'],\n            contrastText: \"#FFF\"\n        },\n        secondary: {\n            main: purple['main'],\n            light: purple['light'],\n            dark: purple['dark'],\n            contrastText: \"#FFF\"\n        },\n        grey: grey,\n    },\n    typography: {\n        fontFamily: 'Nunito Sans, sans-serif',\n    },\n    overrides: {\n        MuiButton: {\n            contained: {\n                boxShadow: 'none',\n                '&:hover': {\n                    boxShadow: 'none',\n                },\n                '&$focusVisible': {\n                    boxShadow: 'none'\n                },\n                '&:active': {\n                    boxShadow: 'none'\n                },\n                textTransform: 'none',\n            },\n            containedSizeLarge: {\n                padding: '14px 60px'\n            },\n            containedSizeSmall: {\n                padding: '7px 32.5px'\n            },\n            root: {\n                fontWeight: 700,\n                padding: '12px 52px',\n                boxShadow: 0,\n                borderRadius: '10px',\n            },\n            disableElevation: true,\n        },\n        MuiTab: {\n            root: {\n                fontWeight: 600\n            }\n        },\n        MuiDrawer: {\n            paper: {\n                width: 240,\n                background: '#FFF',\n                color: grey[400],\n                border: 0,\n            },\n            paperAnchorDockedLeft: {\n                borderRight: 0,\n                boxShadow: `6px 0 8px -5px ${grey[200]}`\n            }\n        },\n        MuiCard: {\n            root: {\n                borderRadius: '10px',\n                boxShadow: '0px 2px 6px rgba(92,84,122,0.2)',\n                '&:hover': {\n                    boxShadow: '0px 1px 4px rgba(92,84,122,0.2)',\n                    transition: 'opacity 0.3s ease-in-out'\n                },\n            }\n        },\n        MuiAccordion: {\n            root: {\n                \"&$expanded\": {\n                    margin:0\n                }\n            }\n        },\n        MuiSnackbar: {\n          anchorOriginBottomCenter: {\n            [defaultTheme.breakpoints.up('xs')]: {\n              bottom: 100,\n            },\n          }\n        }\n    },\n});\n","import styled, { keyframes } from 'styled-components'\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nimport BackgroundImg from 'assets/images/signin_bg.png';\n\nconst useStyles = makeStyles((theme) => ({\n  leftContent: {\n    backgroundColor: \"#FFF\",\n    [theme.breakpoints.down('md')]: {\n      padding: theme.spacing(4)\n    }\n  },\n  content: {\n    maxWidth: \"70%\",\n    minHeight: \"100vh\",\n    paddingTop: theme.spacing(10),\n    [theme.breakpoints.down('md')]: {\n      maxWidth: \"80%\",\n      paddingTop: theme.spacing(6),\n    },\n    [theme.breakpoints.down('sm')]: {\n      maxWidth: \"100%\",\n    },\n  },\n  rightContent: {\n    background: `url(${BackgroundImg})`,\n    backgroundRepeat: \"no-repeat\",\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center\",\n    backgroundColor: theme.palette.primary['main'],\n    [theme.breakpoints.down('sm')]: {\n      display: 'none',\n    },\n  },\n  mainTitle: {\n    fontSize: theme.typography.pxToRem(24),\n    fontWeight: 700,\n    marginBottom: theme.spacing(2),\n  },\n  logoContainer: {\n    [theme.breakpoints.down('xs')]: {\n      textAlign: \"center\",\n      marginBottom: theme.spacing(2)\n    },\n  },\n  logo: {\n    width: 130,\n    maxWidth: 130,\n    [theme.breakpoints.only('xs')]: {\n        width: \"100%\",\n        maxWidth: 154\n    },\n  },\n  card: {\n    width:\"100%\",\n    maxWidth: 400,\n    padding: 0,\n  },\n  cardContent: {\n    padding: 0,\n    \"&:last-child\": {\n      padding: 0,\n    }\n  },\n  cardLabel: {\n    width: 110,\n    fontSize: theme.typography.pxToRem(14),\n    color: theme.palette.grey[600],\n    fontWeight: 700,\n    fontFamily: 'Raleway, sans-serif',\n  },\n  cardNumber: {\n    fontSize: theme.typography.pxToRem(40),\n    color: theme.palette.grey[800],\n    fontWeight: 900,\n  },\n  cardBorder: {\n    height: 10,\n    width: \"50%\",\n    borderBottom: `15px solid ${theme.palette.secondary['main']}`\n  },\n  borderLeft: {\n    marginRight: theme.spacing(1),\n    borderRadius: \"0 16px 0 0\"\n  },\n  borderRight: {\n    marginLeft: theme.spacing(1),\n    borderRadius: \"16px 0 0\"\n  },\n  welcomeText: {\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(2),\n  },\n  thanks: {\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(3),\n  },\n}))\n\nexport { useStyles }\n\n// Use Styled Components\nconst apearFromLeft = keyframes`\n  from {\n    opacity: 0;\n    transform: translateX(-50px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n`;\nexport const AnimationContainer = styled.div `\n  animation: ${apearFromLeft} 1s\n`;\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  card: {\n    width:\"100%\",\n    maxWidth: 400,\n    padding: 0,\n  },\n  cardContent: {\n    padding: 0,\n    \"&:last-child\": {\n      padding: 0,\n    }\n  },\n  cardLabel: {\n    width: 110,\n    fontSize: theme.typography.pxToRem(14),\n    color: theme.palette.grey[600],\n    fontWeight: 700,\n    fontFamily: 'Raleway, sans-serif',\n  },\n  cardNumber: {\n    fontSize: theme.typography.pxToRem(40),\n    color: theme.palette.grey[800],\n    fontWeight: 900,\n  },\n  cardBorder: {\n    height: 10,\n    width: \"50%\",\n    borderBottom: `15px solid ${theme.palette.secondary['main']}`\n  },\n  borderLeft: {\n    marginRight: theme.spacing(1),\n    borderRadius: \"0 16px 0 0\"\n  },\n  borderRight: {\n    marginLeft: theme.spacing(1),\n    borderRadius: \"16px 0 0\"\n  },\n}))\n\nexport { useStyles }\n","import React from \"react\";\nimport {\n  Box,\n  Card,\n  CardContent,\n  Divider,\n} from \"@material-ui/core\";\n\n\n// Styles files\nimport { useStyles } from \"./styles\";\n\nexport default (props) => {\n  const classes = useStyles();\n\n  return (\n    <Box\n      component=\"div\"\n      display=\"flex\"\n      height=\"100%\"\n      flexDirection=\"column\"\n      justifyContent=\"center\"\n      alignItems=\"center\"\n    >\n      <Card className={classes.card}>\n        <CardContent className={classes.cardContent}>\n          <Box px={5} pt={3}>\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"row\"\n              alignItems=\"center\"\n              py={3}\n            >\n              <Box component=\"div\" className={classes.cardLabel}>\n                ALUNOS\n              </Box>\n              <Box component=\"div\" className={classes.cardNumber}>\n                +4M\n              </Box>\n            </Box>\n            <Divider />\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"row\"\n              alignItems=\"center\"\n              py={3}\n            >\n              <Box component=\"div\" className={classes.cardLabel}>\n                CURSOS\n              </Box>\n              <Box component=\"div\" className={classes.cardNumber}>\n                +100\n              </Box>\n            </Box>\n            <Divider />\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"row\"\n              alignItems=\"center\"\n              py={3}\n            >\n              <Box component=\"div\" className={classes.cardLabel}>\n                AULAS\n              </Box>\n              <Box component=\"div\" className={classes.cardNumber}>\n                +5mil\n              </Box>\n            </Box>\n            <Divider />\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"row\"\n              alignItems=\"center\"\n              py={3}\n            >\n              <Box component=\"div\" className={classes.cardLabel}>\n                EXERCÍCIOS\n              </Box>\n              <Box component=\"div\" className={classes.cardNumber}>\n                +2mil\n              </Box>\n            </Box>\n          </Box>\n          <Box\n            component=\"div\"\n            display=\"flex\"\n            flexDirection=\"row\"\n            alignItems=\"center\"\n          >\n            <Box\n              component=\"div\"\n              className={[classes.cardBorder, classes.borderLeft].join(\" \")}\n            ></Box>\n            <Box\n              component=\"div\"\n              className={[classes.cardBorder, classes.borderRight].join(\" \")}\n            ></Box>\n          </Box>\n        </CardContent>\n      </Card>\n    </Box>\n  );\n}\n","import axios from \"axios\";\n\nconst api = axios.create({\n  baseURL: process.env.REACT_APP_API_URL,\n});\n\n// Intercepta response para tratar retorno do erro, caso ocorra.\napi.interceptors.response.use( (response) => {\n  return response\n}, (error) => {\n\n  const status = error?.response?.status\n\n  // Página não encontrada\n  if(status === 404) {\n    window.location.href = \"/dashboard/404\"\n  }\n\n  // Erro de execução\n  else if(status === 500) {\n    window.location.href = \"/dashboard/error\"\n  }\n\n  // JWT expires => force logout\n  else if(status === 401 &&\n    (error.response?.data?.code === \"E_JWT_TOKEN_EXPIRED\" ||\n    [\"ExpiredJwtToken\",\"InvalidJwtToken\"].includes(error.response?.data?.error?.name) ) ) {\n    window.postMessage({data:true, type:'KICK_OUT'});\n    localStorage.removeItem('@Kultivi:token')\n    localStorage.removeItem('@Kultivi:user')\n    window.location.href = \"/\"\n\n  } else {\n    return Promise.reject(error);\n  }\n\n});\n\nexport default api;\n","import axios from \"axios\";\n\nconst api = axios.create({\n  baseURL: process.env.REACT_APP_SYSTEM_API,\n});\n\n// Intercepta response para tratar retorno do erro, caso ocorra.\napi.interceptors.response.use(\n  (response) => {\n    return response.data.body;\n  },\n  (error) => {\n    const status = error?.response?.status;\n\n    // Página não encontrada\n    if (status === 404) {\n      window.location.href = \"/dashboard/404\";\n    }\n\n    // Erro de execução\n    else if (status === 500) {\n      window.location.href = \"/dashboard/error\";\n    }\n\n    // JWT expires => force logout\n    else if (\n      status === 401 &&\n      (\n        error.response?.data?.code === \"E_JWT_TOKEN_EXPIRED\" ||\n        [\"ExpiredJwtToken\", \"InvalidJwtToken\"].includes(\n          error.response?.data?.error?.name\n        ) ||\n        [\"TokenExpiredException\", \"TokenInvalidException\"].includes(\n          error.response?.data?.statusText\n        )\n      )\n    ) {\n      window.postMessage({data:true, type:'KICK_OUT'});\n      localStorage.removeItem(\"@Kultivi:token\");\n      localStorage.removeItem(\"@Kultivi:user\");\n      window.location.href = \"/\";\n    } else {\n      return Promise.reject(error);\n    }\n  }\n);\n\nexport default api;\n","import axios from \"axios\";\n\nconst api = axios.create({\n  baseURL: process.env.REACT_APP_CORE_API,\n});\n\n// Intercepta response para tratar retorno do erro, caso ocorra.\napi.interceptors.response.use(\n  (response) => {\n    return response.data.body;\n  },\n  (error) => {\n    const status = error?.response?.status;\n\n    // Página não encontrada\n    if (status === 404) {\n      window.location.href = \"/dashboard/404\";\n    }\n\n    // Erro de execução\n    else if (status === 500) {\n      window.location.href = \"/dashboard/error\";\n    }\n\n    // JWT expires => force logout\n    else if (\n      status === 401 &&\n      (\n        error.response?.data?.code === \"E_JWT_TOKEN_EXPIRED\" ||\n        [\"ExpiredJwtToken\", \"InvalidJwtToken\"].includes(\n          error.response?.data?.error?.name\n        ) ||\n        [\"TokenExpiredException\", \"TokenInvalidException\"].includes(\n          error.response?.data?.statusText\n        )\n      )\n    ) {\n      window.postMessage({data:true, type:'KICK_OUT'});\n      localStorage.removeItem(\"@Kultivi:token\");\n      localStorage.removeItem(\"@Kultivi:user\");\n      window.location.href = \"/\";\n    } else {\n      return Promise.reject(error);\n    }\n  }\n);\n\nexport default api;\n","import axios from \"axios\";\n\nconst api = axios.create({\n  baseURL: process.env.REACT_APP_STUDENT_API,\n});\n\n// Intercepta response para tratar retorno do erro, caso ocorra.\napi.interceptors.response.use(\n  (response) => {\n    return response.data.body;\n  },\n  (error) => {\n    const status = error?.response?.status;\n\n    // Página não encontrada\n    if (status === 404) {\n      window.location.href = \"/dashboard/404\";\n    }\n\n    // Erro de execução\n    else if (status === 500) {\n      window.location.href = \"/dashboard/error\";\n    }\n\n    // JWT expires => force logout\n    else if (\n      status === 401 &&\n      (\n        error.response?.data?.code === \"E_JWT_TOKEN_EXPIRED\" ||\n        [\"ExpiredJwtToken\", \"InvalidJwtToken\"].includes(\n          error.response?.data?.error?.name\n        ) ||\n        [\"TokenExpiredException\", \"TokenInvalidException\"].includes(\n          error.response?.data?.statusText\n        )\n      )\n    ) {\n      window.postMessage({data:true, type:'KICK_OUT'});\n      localStorage.removeItem(\"@Kultivi:token\");\n      localStorage.removeItem(\"@Kultivi:user\");\n      window.location.href = \"/\";\n    } else {\n      return Promise.reject(error);\n    }\n  }\n);\n\nexport default api;\n","import axios from \"axios\";\n\nconst api = axios.create({\n  baseURL: process.env.REACT_APP_ACCOUNT_API,\n});\n\n// Intercepta response para tratar retorno do erro, caso ocorra.\napi.interceptors.response.use(\n  (response) => {\n    return response.data.body;\n  },\n  (error) => {\n    const status = error?.response?.status;\n\n    if (status === 500) {\n      window.location.href = \"/dashboard/error\";\n    }\n\n    // JWT expires => force logout\n    else if (\n      status === 401 &&\n      (\n        error.response?.data?.code === \"E_JWT_TOKEN_EXPIRED\" ||\n        [\"ExpiredJwtToken\", \"InvalidJwtToken\"].includes(\n          error.response?.data?.error?.name\n        ) ||\n        [\"TokenExpiredException\", \"TokenInvalidException\"].includes(\n          error.response?.data?.statusText\n        )\n      )\n    ) {\n      localStorage.removeItem(\"@Kultivi:token\");\n      localStorage.removeItem(\"@Kultivi:user\");\n      window.location.href = \"/\";\n    } else {\n      return Promise.reject(error);\n    }\n  }\n);\n\nexport default api;\n","import React, {\n  createContext,\n  useEffect,\n  useState,\n  useContext,\n  useCallback,\n} from \"react\";\nimport api from \"app/services/api\";\nimport systemApi from \"app/services/system-api\";\nimport coreApi from \"app/services/core-api\";\nimport studentApi from \"app/services/student-api\";\nimport accountApi from \"app/services/account-api\";\nimport * as auth from \"app/services/auth\";\n\nconst AuthContext = createContext({});\n\nexport const AuthProvider = ({ children }) => {\n  const [user, setUser] = useState(null);\n\n  // Manter enquanto todos hrefs não forem transformados para history.push\n  const [isLoadingStorage, setIsLoadingStorage] = useState(true);\n\n  useEffect(() => {\n    const storagedUser = localStorage.getItem(\"@Kultivi:user\");\n    const storagedToken = localStorage.getItem(\"@Kultivi:token\");\n    if (storagedUser && storagedToken) {\n      api.defaults.headers.authorization = `Bearer ${storagedToken}`;\n      systemApi.defaults.headers.authorization = `Bearer ${storagedToken}`;\n      coreApi.defaults.headers.authorization = `Bearer ${storagedToken}`;\n      studentApi.defaults.headers.authorization = `Bearer ${storagedToken}`;\n      accountApi.defaults.headers.authorization = `Bearer ${storagedToken}`;\n      setUser(JSON.parse(storagedUser));\n    }\n    setIsLoadingStorage(false);\n  }, []);\n\n  async function signIn({ username, password }) {\n    const response = await auth.signIn({ username, password });\n    const { token, user } = response;\n\n    api.defaults.headers.authorization = `Bearer ${token.token}`;\n    systemApi.defaults.headers.authorization = `Bearer ${token.token}`;\n    coreApi.defaults.headers.authorization = `Bearer ${token.token}`;\n    studentApi.defaults.headers.authorization = `Bearer ${token.token}`;\n    accountApi.defaults.headers.authorization = `Bearer ${token.token}`;\n\n    localStorage.setItem(\"@Kultivi:token\", token.token);\n    localStorage.setItem(\"@Kultivi:refresh-token\", token.refreshToken);\n    localStorage.setItem(\"@Kultivi:user\", JSON.stringify(user));\n\n    return user;\n  }\n\n  async function socialSignIn({ _token, provider }) {\n    const response = await auth.socialSignIn({ _token, provider });\n    const { token, user } = response;\n\n    api.defaults.headers.authorization = `Bearer ${token.token}`;\n    systemApi.defaults.headers.authorization = `Bearer ${token.token}`;\n    coreApi.defaults.headers.authorization = `Bearer ${token.token}`;\n    studentApi.defaults.headers.authorization = `Bearer ${token.token}`;\n    accountApi.defaults.headers.authorization = `Bearer ${token.token}`;\n\n    localStorage.setItem(\"@Kultivi:token\", token.token);\n    localStorage.setItem(\"@Kultivi:refresh-token\", token.refreshToken);\n    localStorage.setItem(\"@Kultivi:user\", JSON.stringify(user));\n\n    return user;\n  }\n\n  async function signUp({ fullname, email, document, password, isForeign, indicatedBy, captcha }) {\n    const parts = fullname.trim().split(/\\s+/);\n    const firstname = parts.at(0);\n    const surname = parts.slice(1).join(' ');\n    const _document = isForeign ? null : document;\n\n    const response = await auth.signUp({\n      firstname,\n      surname,\n      email,\n      document: _document,\n      password,\n      isForeign,\n      indicatedBy,\n      captcha,\n    });\n    return response;\n  }\n\n  async function socialSignUp({ _token, provider, email }) {\n    const response = await auth.socialSignUp({_token, provider, email});\n    api.defaults.headers.authorization = `Bearer ${response.token.token}`;\n    systemApi.defaults.headers.authorization = `Bearer ${response.token.token}`;\n    coreApi.defaults.headers.authorization = `Bearer ${response.token.token}`;\n    studentApi.defaults.headers.authorization = `Bearer ${response.token.token}`;\n    accountApi.defaults.headers.authorization = `Bearer ${response.token.token}`;\n\n    localStorage.setItem(\"@Kultivi:token\", response.token.token);\n    localStorage.setItem(\"@Kultivi:user\", JSON.stringify(response.user));\n    // setUser(response.user);\n\n    return;\n  }\n\n  async function signOut() {\n    localStorage.removeItem(\"@Kultivi:token\");\n    localStorage.removeItem(\"@Kultivi:refresh-token\");\n    localStorage.removeItem(\"@Kultivi:user\");\n    api.defaults.headers.authorization = null;\n    systemApi.defaults.headers.authorization = null;\n    coreApi.defaults.headers.authorization = null;\n    studentApi.defaults.headers.authorization = null;\n    accountApi.defaults.headers.authorization = null;\n    setUser(null);\n\n    return;\n  }\n\n  const refreshUserInfo = useCallback(\n    (...payload) => {\n      const obj = Object.assign({}, ...payload.map((object) => object));\n      localStorage.setItem(\n        \"@Kultivi:user\",\n        JSON.stringify({ ...user, ...obj })\n      );\n      setUser((prev) => ({ ...prev, ...obj }));\n    },\n    [user]\n  );\n\n  return (\n    <AuthContext.Provider\n      value={{\n        isSigned: !!user,\n        user,\n        signIn,\n        signUp,\n        signOut,\n        socialSignIn,\n        socialSignUp,\n        refreshUserInfo,\n        isLoadingStorage,\n      }}\n    >\n      {children}\n    </AuthContext.Provider>\n  );\n};\n\nexport function useAuth() {\n  const context = useContext(AuthContext);\n\n  if (!context) {\n    throw new Error(\"useAuth must be used within an AuthProvier\");\n  }\n\n  return context;\n}\n","import accountApi from \"app/services/account-api\";\n\nexport async function signIn({ username, password }) {\n  const normalize = username.trim().toLowerCase();\n  const response = await accountApi.post(\"/sign-in\", { username: normalize, password });\n  return response.data;\n}\n\nexport async function socialSignIn({ _token, provider }) {\n  const response = await accountApi.post(`/sign-in/${provider}`, {\n    token: _token,\n  });\n\n  return response.data;\n}\n\nexport async function signUp({\n  firstname,\n  surname,\n  email,\n  document,\n  password,\n  isForeign,\n  indicatedBy,\n  captcha,\n}) {\n  const response = await accountApi.post(\"sign-up\", {\n    firstname,\n    surname,\n    email,\n    document,\n    password,\n    isForeign,\n    indicatedBy,\n    captcha,\n  });\n  return response.data;\n}\n\nexport async function socialSignUp({ _token, provider, email }) {\n  const response = await accountApi.post(`sign-up/${provider}`, {\n    token: _token,\n    provider,\n    email\n  });\n  return response.data;\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n        padding: 0,\n        marginBottom: theme.spacing(2)\n    },\n    menuItem: {\n      zIndex: 10\n    },\n    hi: {\n        fontWeight: 800,\n        fontSize: theme.typography.pxToRem(16),\n        color: theme.palette.primary['dark']\n    },\n    configIcon: {\n        color: theme.palette.primary['dark']\n    },\n    giftIcon: {\n        color: theme.palette.secondary['dark']\n    },\n    avatar: {\n        width: theme.spacing(4),\n        height: theme.spacing(4),\n        fontSize: theme.typography.pxToRem(15),\n        fontWeight: 600,\n        backgroundColor: theme.palette.primary['dark']\n    },\n    iconButton: {\n      '&:hover': {\n        color: theme.palette.primary['main']\n      }\n    },\n    iconButtonWhite: {\n      color: \"#FFF\",\n    }\n}));\n\nexport { useStyles }\n","import React, { createContext, useEffect, useState, useContext } from 'react';\n\nimport { useAuth } from 'app/contexts/AuthContext'\n\nconst SubscriptionContext = createContext({})\n\nexport const SubscriptionProvider = ({ children }) => {\n\n  const {user} = useAuth();\n  /**\n   * Quando TRUE, não deixa redirecionar o usuário pra página de conversão após o checkout completo.\n   * Utilizado em routes/guards/CheckoutRoute */\n  const [suspendCheckoutGuardVerification, setSuspendCheckoutGuardVerification] = useState(false)\n  const [subscription, setSubscription] = useState(null)\n\n  useEffect( () => {\n\n    if(user) {\n      setSubscription(user.subscription);\n    }\n\n  }, [user]);\n\n  return (\n    <SubscriptionContext.Provider value={{\n      subscription,\n      suspendCheckoutGuardVerification,\n      setSuspendCheckoutGuardVerification,\n    }}>\n      {children}\n    </SubscriptionContext.Provider>\n  )\n}\n\nexport function useSubscription() {\n  const context = useContext(SubscriptionContext)\n\n  if (!context) {\n    throw new Error('useSubscription must be used within an SubscriptionProvier')\n  }\n\n  return context;\n}\n","import React, { useCallback } from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport {\n  Menu,\n  MenuItem,\n  Divider,\n  Avatar,\n} from '@material-ui/core';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport { useAuth } from 'app/contexts/AuthContext'\n\n// Styles files\nimport { useStyles } from './styles'\nimport { useSubscription } from 'app/contexts/SubscriptionContext';\n\nconst AccountMenu = (props) => {\n  const classes = useStyles();\n  const { subscription } = useSubscription()\n\n  const history = useHistory()\n  const { signOut, user } = useAuth()\n\n  const [anchorEl, setAnchorEl] = React.useState(null);\n\n  const handleClick = useCallback((event) => {\n    setAnchorEl(event.currentTarget);\n  }, []);\n\n  const handleClose = useCallback(() => {\n    setAnchorEl(null);\n  }, []);\n\n  const handleMenuItemClick = (path) => {\n    history.push(path);\n    handleClose();\n  };\n\n  const handleSignout = useCallback(async () => {\n    await signOut()\n  },[signOut])\n\n  const menuItems = [\n    { label: 'Meu perfil', path: '/dashboard/user/profile' },\n    { label: 'Minha conta', path: '/dashboard/user/account' },\n    { label: 'Meus certificados', path: '/dashboard/user/certificates' }\n  ];\n\n  return (\n    <>\n      <IconButton\n        aria-label=\"account\"\n        aria-controls=\"menu-account\"\n        aria-haspopup=\"true\"\n        onClick={handleClick}\n        color=\"primary\"\n        title=\"Dados pessoais\"\n      >\n        <Avatar className={classes.avatar}>{(user?.firstname)?.charAt(0) || '?'}</Avatar>\n      </IconButton>\n      <Menu\n        id=\"menu-account\"\n        anchorEl={anchorEl}\n        keepMounted\n        open={Boolean(anchorEl)}\n        onClose={handleClose}\n      >\n        {menuItems.map((item) => (\n          <MenuItem key={item.path} onClick={() => handleMenuItemClick(item.path)}>\n            {item.label}\n          </MenuItem>\n        ))}\n        <Divider />\n        <MenuItem onClick={handleSignout}>Sair</MenuItem>\n      </Menu>\n    </>\n  )\n}\n\nexport default React.memo(AccountMenu);\n","import { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: theme.palette.background.paper,\n    color: theme.palette.grey[800],\n  },\n  brand: {\n    maxWidth: 25,\n    marginRight: theme.spacing(3),\n    cursor: 'pointer'\n  },\n  menu: {\n    width: '100%',\n    maxWidth: 400,\n    top: 0,\n  },\n  menuList: {\n    paddingTop: 0,\n    paddingBottom: 0,\n    '& > li:first-child': {\n      paddingTop: theme.spacing(1),\n    },\n    '& > li:last-child': {\n      paddingBottom: theme.spacing(1),\n    }\n  },\n  optionMenu: {\n    fontWeight: 600,\n    cursor: 'pointer',\n    '&:hover': {\n      backgroundColor: 'inherit',\n      color: theme.palette.primary.main,\n    },\n  },\n  subMenuItem: {\n    //\n  },\n  subMenuItemFeatured: {\n    // backgroundColor: theme.palette.secondary.main,\n  },\n  subItemTitle: {\n    fontSize: theme.typography.pxToRem(14),\n    textTransform: 'uppercase',\n    letterSpacing: '.2px',\n    fontWeight: 600,\n  },\n  subItemDescription: {\n    fontSize: theme.typography.pxToRem(12),\n    lineHeight: '20px',\n    marginTop: '4px',\n    width: 'inherit'\n  },\n  drawerMenu: {\n    flexShrink: 1\n  }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport ExploreIcon from '@material-ui/icons/Explore';\nimport FlashOnIcon from '@material-ui/icons/FlashOn';\nimport NewReleasesIcon from '@material-ui/icons/NewReleases';\nimport MenuBookIcon from '@material-ui/icons/MenuBook';\nimport EcoIcon from '@material-ui/icons/Eco';\nimport GroupAddIcon from '@material-ui/icons/GroupAdd';\nimport SchoolIcon from '@material-ui/icons/School';\nimport RssFeedIcon from '@material-ui/icons/RssFeed';\nimport AmpStoriesIcon from '@material-ui/icons/AmpStories';\nimport CreditCardIcon from '@material-ui/icons/CreditCard';\n\nconst sectionEstudar = [\n  {\n    title: 'MEUS CURSOS',\n    url: '/dashboard/enrollments',\n    target: '_self',\n    disabled: false,\n    icon: <SchoolIcon />,\n    description: 'Sua lista de cursos em andamento e concluídos'\n  },\n  {\n    title: 'TODOS OS CURSOS',\n    url: '/dashboard/discover',\n    target: '_self',\n    disabled: false,\n    icon: <ExploreIcon />,\n    description: 'Explore todos os cursos disponíveis'\n  },\n  {\n    title: 'BLOG',\n    url: 'https://kultivi.com/blog',\n    target: '_blank',\n    disabled: false,\n    icon: <RssFeedIcon />,\n    description: 'Novidades e muito conteúdo exclusivo no blog',\n    divider: true,\n    featured: false,\n  },\n]\n\nconst sectionAprofundar = [\n  {\n    title: 'EXERCÍCIOS E SIMULADOS',\n    url: '/dashboard/quizzes',\n    target: '_self',\n    disabled: false,\n    icon: <FlashOnIcon />,\n    description: 'Desafios ilimitados para praticar sempre que quiser'\n  },\n  {\n    title: 'E-BOOKS',\n    url: '/dashboard/ebooks',\n    target: '_self',\n    disabled: false,\n    icon: <MenuBookIcon />,\n    description: 'Materiais exclusivos para auxiliar seus estudos'\n  },\n  {\n    title: 'APOSTILAS DIGITAIS',\n    url: '/dashboard/aprovare',\n    target: '_self',\n    disabled: false,\n    icon: <NewReleasesIcon />,\n    description: 'Materiais completos para concurseiros',\n    divider: false,\n    featured: false,\n  },\n  {\n    title: 'PÍLULAS DE CONHECIMENTO',\n    url: '/dashboard/pills',\n    target: '_self',\n    disabled: false,\n    icon: <AmpStoriesIcon />,\n    description: 'Pequenos conteúdos para capacitar e reafirmar informações',\n    divider: false,\n    featured: false,\n  },\n  {\n    title: 'KULTIVI+',\n    url: 'https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=nav-aprofundar',\n    target: '_blank',\n    disabled: false,\n    icon: <EcoIcon />,\n    description: 'Apoie a nossa missão e acelere o seu aprendizado com ferramentas exclusivas',\n    divider: false,\n    featured: true\n  }\n]\n\nconst sectionPlus = [\n  {\n    title: 'PLANOS DE ASSINATURAS',\n    url: 'https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=nav-apoie',\n    target: '_blank',\n    disabled: false,\n    icon: <EcoIcon />,\n    description: 'Apoie a nossa missão e acelere o seu aprendizado com ferramentas exclusivas'\n  },\n  // {\n  //   title: 'CLUBINHO DE DESCONTO',\n  //   url: '/dashboard/klubi',\n  //   target: '_self',\n  //   disabled: false,\n  //   icon: <LocalOfferIcon />,\n  //   description: 'Convênios exclusivos para os alunos Kultivi em diversos estabelecimentos'\n  // },\n  {\n    title: 'CARTEIRINHA DE ESTUDANTE',\n    url: 'https://lp.fesn.org.br/aluno-kultivi',\n    target: '_blank',\n    disabled: false,\n    icon: <CreditCardIcon />,\n    description: 'Aluno Kultivi paga meia entrada em cinemas, teatros e shows!'\n  },\n  {\n    title: 'INDIQUE',\n    url: '/dashboard/referrals',\n    target: '_self',\n    disabled: false,\n    icon: <GroupAddIcon />,\n    description: 'Indique a Kultivi e ganhe benefícios'\n  }\n]\n\nexport {\n  sectionEstudar,\n  sectionAprofundar,\n  sectionPlus,\n}\n","import React from 'react';\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n  Toolbar,\n  Typography,\n  Box,\n  ListItemIcon,\n  Menu,\n  MenuItem,\n  Hidden,\n  Tooltip,\n  IconButton,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\nimport ProfileMenu from \"app/components/navs/dropdowns/profile\";\nimport useStyles from './styles';\nimport {\n  sectionEstudar,\n  sectionAprofundar,\n  sectionPlus\n} from './options-menu'\n\nimport SchoolIcon from '@material-ui/icons/SchoolOutlined';\nimport GroupAddIcon from '@material-ui/icons/GroupAddOutlined';\nimport NewReleasesIcon from '@material-ui/icons/NewReleasesOutlined';\n\nconst ToolBarDesktop = (props) => {\n  const classes = useStyles();\n  const history = useHistory();\n  const { Logo, gotToPage } = props\n  const [menuPosition, setMenuPosition] = React.useState({ top: 0, left: 0 });\n  const [anchorElArray, setAnchorElArray] = React.useState([]);\n\n\n  const handleClick = (index, event) => {\n    setMenuPosition({\n      top: event.currentTarget.offsetTop + 20,\n      left: event.currentTarget.offsetLeft,\n    });\n    const newAnchorElArray = [...anchorElArray];\n    newAnchorElArray[index] = event.currentTarget;\n    setAnchorElArray(newAnchorElArray);\n  };\n\n  const handleMenuClose = (index) => {\n    const newAnchorElArray = [...anchorElArray];\n    newAnchorElArray[index] = null;\n    setAnchorElArray(newAnchorElArray);\n  };\n\n  const goTo = (index, url, target) => {\n    handleMenuClose(index);\n    gotToPage(url, target)\n  }\n\n\n  function RenderMenu({title, options, index}) {\n    const anchorEl = anchorElArray[index];\n    return (\n      <div>\n          <MenuItem\n            onClick={(event) => handleClick(index, event)}\n            className={classes.optionMenu}\n          >\n            {title} <ExpandMoreIcon style={{marginLeft: 'auto' }} />\n          </MenuItem>\n          <Menu\n            id={`menu_${title}`}\n            keepMounted\n            anchorEl={anchorEl}\n            open={Boolean(anchorEl)}\n            onClose={() => handleMenuClose(index)}\n            style={{ top: menuPosition.top, left: menuPosition.left }}\n            classes={{\n              paper: classes.menu,\n              list: classes.menuList,\n            }}\n          >\n\n            {options.map((option) => {\n              return (\n                <MenuItem\n                  onClick={() => goTo(index, option.url, option.target)}\n                  className={[classes.subMenuItem, option.featured && classes.subMenuItemFeatured].join(' ')}\n                  style={{whiteSpace: 'normal'}}\n                  disabled={option.disabled ?? false}\n                  divider={option.divider ?? false}\n                >\n                  <ListItemIcon>\n                    {option.icon}\n                  </ListItemIcon>\n                    <Box>\n                      <Typography className={classes.subItemTitle}>{option.title}</Typography>\n                      <Box\n                        className={classes.subItemDescription}\n                      >{option.description}</Box>\n                    </Box>\n                </MenuItem>\n              )\n            })}\n          </Menu>\n      </div>\n    )\n  }\n\n  return (\n    <Hidden mdDown>\n      <Toolbar>\n        <Logo />\n        {/* <MenuItem\n          onClick={() => history.push('/dashboard')}\n          className={classes.optionMenu}\n        >Início</MenuItem> */}\n        {/* <MenuItem\n          onClick={() => history.push('/dashboard/enrollments')}\n          className={classes.optionMenu}\n        >Meus Cursos</MenuItem> */}\n        <MenuItem\n          onClick={() => history.push('/dashboard/ebooks')}\n          className={classes.optionMenu}\n        >\n          Ebooks\n        </MenuItem>\n        <RenderMenu options={sectionEstudar} title=\"Estudar\" index={0} />\n        <RenderMenu options={sectionAprofundar} title=\"Aprofundar\" index={1} />\n        <RenderMenu options={sectionPlus} title=\"Apoie\" index={2} />\n        <Box\n          ml=\"auto\"\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          className={classes.menuItem}\n        >\n          <Tooltip title=\"Meus cursos\" arrow>\n            <IconButton onClick={() => history.push('/dashboard/enrollments')} className={classes.iconButton} >\n              <SchoolIcon />\n            </IconButton>\n          </Tooltip>\n          <Tooltip title=\"Indique a Kultivi\" arrow>\n            <IconButton onClick={() => history.push('/dashboard/referrals')} className={classes.iconButton}>\n              <GroupAddIcon />\n            </IconButton>\n          </Tooltip>\n          <Tooltip title=\"Conheça Kultivi+\" arrow>\n            <IconButton href='https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=nav-profile' target='_blank' className={classes.iconButton}>\n              <NewReleasesIcon />\n            </IconButton>\n          </Tooltip>\n          <ProfileMenu />\n        </Box>\n      </Toolbar>\n    </Hidden>\n  );\n};\n\nexport default ToolBarDesktop;\n","import React from 'react';\nimport { useHistory } from \"react-router-dom\";\nimport {\n  Toolbar,\n  Box,\n  ListItemIcon,\n  Hidden,\n  SwipeableDrawer,\n  IconButton,\n  List,\n  ListItem,\n  ListItemText,\n  Collapse,\n  Tooltip,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport ProfileMenu from \"app/components/navs/dropdowns/profile\";\nimport useStyles from './styles';\nimport {\n  sectionEstudar,\n  sectionAprofundar,\n  sectionPlus\n} from './options-menu'\n\nimport SchoolIcon from '@material-ui/icons/SchoolOutlined';\nimport GroupAddIcon from '@material-ui/icons/GroupAddOutlined';\nimport NewReleasesIcon from '@material-ui/icons/NewReleasesOutlined';\n\nconst ToolBarMobile = (props) => {\n  const classes = useStyles();\n  const history = useHistory();\n  const { Logo, gotToPage } = props\n  const [openDrawer, setOpenDrawer] = React.useState(false);\n  const [anchorElArray, setAnchorElArray] = React.useState([]);\n\n  const handleClick = (index, event) => {\n    const newAnchorElArray = [...anchorElArray.map((anchor) => false)];\n    if(anchorElArray[index] !== true)\n      newAnchorElArray[index] = !!event.currentTarget;\n    setAnchorElArray(newAnchorElArray);\n  };\n\n  const toggleDrawer = (open) => (event) => {\n    if (\n      event.type === \"keydown\" &&\n      (event.key === \"Tab\" || event.key === \"Shift\")\n    ) {\n      return;\n    }\n    setOpenDrawer(open);\n  };\n\n  const goTo = (index, url, target) => {\n    setAnchorElArray([]);\n    gotToPage(url, target)\n    setOpenDrawer(false);\n  }\n\n\n  function RenderMenu({title, options, index}) {\n    const anchorEl = anchorElArray[index];\n    return (\n      <div>\n        <List\n          component=\"nav\"\n          aria-labelledby=\"nested-list-subheader\"\n          // className={classes.root}\n        >\n          <ListItem button onClick={(event) => handleClick(index, event)}>\n            <ListItemText primary={title} />\n            {Boolean(anchorEl) ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n          </ListItem>\n          <Collapse\n            in={Boolean(anchorEl)}\n            timeout=\"auto\"\n            unmountOnExit\n          >\n            <List component=\"div\" disablePadding>\n              {options.map((option) => {\n                return (\n                  <ListItem\n                    button\n                    className={classes.nested}\n                    disabled={option.disabled ?? false}\n                    onClick={() => goTo(index, option.url, option.target)}\n                  >\n                    <ListItemIcon>{option.icon}</ListItemIcon>\n                    <ListItemText primary={option.title} />\n                  </ListItem>\n              )})}\n            </List>\n          </Collapse>\n        </List>\n      </div>\n    )\n  }\n\n  return (\n    <Hidden mdUp>\n        <Toolbar>\n          <IconButton\n            color=\"inherit\"\n            aria-label=\"open drawer\"\n            onClick={toggleDrawer(true)}\n            edge=\"start\"\n          >\n            <MenuIcon />\n          </IconButton>\n          <Logo />\n          <Box\n            ml=\"auto\"\n            component=\"div\"\n            display=\"flex\"\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            className={classes.menuItem}\n          >\n            <Tooltip title=\"Meus cursos\">\n              <IconButton onClick={() => history.push('/dashboard/enrollments')} className={classes.iconButton} >\n                <SchoolIcon />\n              </IconButton>\n            </Tooltip>\n            <Tooltip title=\"Indique a Kultivi\">\n              <IconButton onClick={() => history.push('/dashboard/referrals')} className={classes.iconButton}>\n                <GroupAddIcon />\n              </IconButton>\n            </Tooltip>\n            <Tooltip title=\"Conheça Kultivi+\">\n              <IconButton href='https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=nav-profile' target='_blank' className={classes.iconButton}>\n                <NewReleasesIcon />\n              </IconButton>\n            </Tooltip>\n            <ProfileMenu />\n          </Box>\n        </Toolbar>\n      <SwipeableDrawer\n        variant=\"temporary\"\n        anchor=\"left\"\n        open={openDrawer}\n        onClose={toggleDrawer(false)}\n        onOpen={toggleDrawer(true)}\n        className={classes.drawerMenu}\n        ModalProps={{\n          keepMounted: true\n        }}\n      >\n        <ListItem\n          button\n          onClick={() => history.push('/dashboard')}\n        >\n          <ListItemText primary=\"Início\" />\n        </ListItem>\n        <ListItem\n          button\n          onClick={() => history.push('/dashboard/enrollments')}\n        >\n          <ListItemText primary=\"Meus Cursos\" />\n        </ListItem>\n        <ListItem\n          button\n          onClick={() => history.push('/dashboard/ebooks')}\n        >\n          <ListItemText primary=\"Ebooks\" />\n        </ListItem>\n        <RenderMenu options={sectionEstudar} title=\"Estudar\" index={0} />\n        <RenderMenu options={sectionAprofundar} title=\"Aprofundar\" index={1} />\n        <RenderMenu options={sectionPlus} title=\"Apoie\" index={2} />\n      </SwipeableDrawer>\n    </Hidden>\n  );\n};\n\nexport default ToolBarMobile;\n","import React from 'react';\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n  AppBar,\n  Box\n} from '@material-ui/core';\n\nimport {\n  ToolBarDesktop,\n  ToolBarMobile\n} from \"app/components/navs/topbar\"\nimport useStyles from './styles';\n\nconst AppBarMenu = () => {\n  const classes = useStyles();\n  const history = useHistory();\n\n  const Logo = () => {\n    return (\n      <Box\n        onClick={() => history.push('/dashboard')}\n      >\n        <img\n          src=\"https://cdn-kultivi.s3.amazonaws.com/static/platform/logo-k.jpg\"\n          className={classes.brand}\n          alt=\"Logo Kultivi\"\n        />\n      </Box>\n    )\n  }\n\n  const gotToPage = (url, target) => {\n    if (!url) return;\n    if (target === \"_blank\") {\n      window.open(`${url}`, \"_blank\");\n    } else {\n      history.push(`${url}`);\n    }\n  }\n\n  return (\n      <AppBar\n        position=\"sticky\"\n        className={classes.appBar}\n      >\n        <ToolBarDesktop Logo={Logo} gotToPage={gotToPage} />\n        <ToolBarMobile Logo={Logo} gotToPage={gotToPage} />\n      </AppBar>\n  );\n};\n\nexport default AppBarMenu;\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'center',\n  }\n}))\n\nexport { useStyles }\n","import React, { useCallback } from 'react'\nimport { useHistory } from 'react-router-dom'\n\n// Material UI Imports\nimport {\n  Container,\n  Box,\n  Button,\n} from '@material-ui/core'\n\n// Lotties animations\nimport Lottie from 'react-lottie'\nimport animationData from 'lotties/500.json'\n\n// Styles files\nimport { useStyles } from './styles'\n\nexport default function BadRequest() {\n\n  const history = useHistory()\n\n\n  const classes = useStyles()\n\n  const handleNavBack = useCallback(() => {\n    history.push('/')\n  }, [history])\n\n  const defaultOptions = {\n    loop: true,\n    autoplay: true,\n    animationData: animationData,\n    rendererSettings: {\n      preserveAspectRatio: \"xMidYMid slice\"\n    }\n  }\n\n  return (\n    <React.Fragment>\n      <Container component=\"main\" maxWidth=\"lg\">\n        <Box component=\"div\" className={classes.root}>\n          <h1>Erro interno :(</h1>\n          <Lottie\n            options={defaultOptions}\n            style={{\n              maxWidth: 400,\n              padding: 0,\n              margin: 0,\n            }}\n          />\n          <h2>Ops! Parece que houve um erro inesperado! Tente novamente</h2>\n          <Button onClick={handleNavBack} variant=\"contained\" color=\"primary\">\n            Voltar para início\n          </Button>\n        </Box>\n      </Container>\n    </React.Fragment>\n  );\n}\n","\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'center',\n    [theme.breakpoints.down('md')]: {\n      textAlign: 'center',\n    }\n  }\n}))\n\nexport { useStyles }\n","import React, { useCallback } from 'react'\nimport { useHistory } from 'react-router-dom'\n\n// Material UI Imports\nimport {\n  Container,\n  Box,\n  Button,\n} from '@material-ui/core';\n\n// Lotties animations\nimport Lottie from 'react-lottie';\nimport animationData from 'lotties/error-404-animation'\n\n// Styles files\nimport { useStyles } from './styles'\n\nexport default function NotFound() {\n\n  const history = useHistory()\n\n\n  const classes = useStyles()\n\n  const handleNavBack = useCallback(() => {\n    history.push('/')\n  }, [history])\n\n  const defaultOptions = {\n    loop: true,\n    autoplay: true,\n    animationData: animationData,\n    rendererSettings: {\n      preserveAspectRatio: \"xMidYMid slice\"\n    }\n  }\n\n  return (\n    <React.Fragment>\n      <Container component=\"main\" maxWidth=\"lg\">\n\n          <Box component=\"div\" className={classes.root} marginBottom={4}>\n            <h1>Página não encontrada :(</h1>\n            <Lottie\n              style={{\n                maxWidth: 400,\n                padding: 0,\n                margin: 0,\n              }}\n              options={defaultOptions}\n            />\n            <h2>Ops! Parece que a página que você está procurando não existe!</h2>\n            <Button onClick={handleNavBack} variant=\"contained\" color=\"primary\">\n              Voltar para início\n            </Button>\n          </Box>\n\n      </Container>\n    </React.Fragment>\n  );\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n        width: '100%',\n        marginTop:\"auto\",\n        backgroundColor: \"#FFF\",\n        boxShadow: `0 0 10px -3px ${theme.palette.grey[200]}`,\n        color: theme.palette.grey[400],\n        \"& *\": {\n            fontWeight: 600,\n            fontSize: theme.typography.pxToRem(12),\n        },\n        \"& a\": {\n            marginLeft: theme.spacing(2),\n        },\n        [theme.breakpoints.only('xs')]: {\n            textAlign: 'center',\n        }\n    },\n    links: {\n        [theme.breakpoints.only('xs')]: {\n            marginTop: theme.spacing(2)\n        }\n    }\n}))\n\nexport { useStyles }","import React from 'react'\n\nimport {\n    Box,\n    Link,\n} from '@material-ui/core';\n\n// Styles files\nimport { useStyles } from './styles'\n\nconst Copyright = () => {\n\n    const classes = useStyles();\n\n    return (\n      <>\n        <Box component=\"div\" px={3} className={classes.root} display=\"flex\" flexWrap=\"wrap\" justifyContent=\"space-between\" py={2}>\n          <Box component=\"span\" flexGrow={1}>\n              Copyright © 2017 Kultivi Produção e Edição de Conteúdo Ltda\n          </Box>\n          <Box component=\"nav\" mx=\"auto\" className={classes.links}>\n              <Link href=\"https://kultivi.com/privacidade\" color=\"inherit\">Termos de Uso e Política de Privacidade</Link>\n          </Box>\n        </Box>\n      </>\n    )\n}\n\nexport default React.memo(Copyright);\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    card: {\n        width: \"100%\",\n    },\n    cardTitle: {\n        fontWeight: 700,\n        color: theme.palette.grey[600],\n        fontSize: theme.typography.pxToRem(18),\n        marginBottom: theme.spacing(3)\n    },\n    cardSubtitle: {\n        marginBottom: theme.spacing(2)\n    },\n    tabPanel: {\n        flexGrow: 1\n    },\n    tabs: {\n        minWidth: 250,\n    },\n    tabLabel: {\n    },\n    formControl: {\n        padding: theme.spacing(1),\n    },\n    ctaKlubiTitle: {\n        fontWeight: 600,\n        fontSize: theme.typography.pxToRem(18),\n        marginBottom: theme.spacing(2),\n    },\n    klubiTitleStatus: {\n        fontWeight: 600,\n        fontSize: theme.typography.pxToRem(18),\n        marginBottom: theme.spacing(2),\n    },\n    emptyLottie: {\n        maxWidth: 100,\n        padding: 0,\n        margin: 0,\n    }\n    \n}))\n\nexport { useStyles }","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    googleAlert: {\n        marginBottom: theme.spacing(3)\n    }\n}))\n\nexport { useStyles }","/**\n * Form responsável por realizar a troca de e-mail (dado de acesso) do usuário */\nimport React, { useEffect, useState } from \"react\";\nimport {\n  Box,\n  Grid,\n  Button,\n  TextField,\n  CircularProgress,\n  Snackbar,\n  IconButton,\n  Typography,\n} from \"@material-ui/core\";\n\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { useFormik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport { useStyles } from \"./styles\";\n\n// API file\nimport api from \"app/services/api\";\n\nimport { useAuth } from \"app/contexts/AuthContext\";\n\nconst validationSchema = yup.object({\n  email: yup.string().email(\"E-mail inválido\").required(\"Campo obrigatório\"),\n  email_confirmation: yup\n    .string()\n    .email(\"E-mail inválido\")\n    .required(\"Campo obrigatório\")\n    .oneOf(\n      [yup.ref(\"email\"), null],\n      \"E-mail e confirmação de e-mail não coincidem\"\n    ),\n});\n\nexport default (props) => {\n  const classes = useStyles();\n\n  const { user, refreshUserInfo } = useAuth();\n  const [canChangeEmail, setCanChangeEmail] = React.useState(false);\n\n  useEffect(() => {\n    setCanChangeEmail(user.provider !== 3);\n  }, [user]);\n\n  const [snackValues, setSnackValues] = React.useState({\n    message: \"\",\n    open: false,\n  });\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setSnackValues({ open: false });\n  };\n\n  const formik = useFormik({\n    initialValues: {\n      email: user.email ?? \"\",\n      email_confirmation: \"\",\n    },\n    validationSchema: validationSchema,\n    enableReinitialize: true,\n    validateOnMount: true,\n    onSubmit: (values, actions) => {\n      actions.setSubmitting(true);\n\n      api\n        .put(`/users/me/account`, values)\n        .then((response) => {\n          setSnackValues({\n            message: \"Seus dados foram atualizados com sucesso.\",\n            open: true,\n          });\n          refreshUserInfo({ email: values.email });\n        })\n        .catch((err) => {\n          setSnackValues({\n            message: \"Ops! Falha ao atualizar seus dados. Tente novamente.\",\n            open: true,\n          });\n          const errors = err.response.data;\n          for (let index = 0; index < errors.length; index++) {\n            const error = errors[index];\n            var setErr = {};\n            setErr[`${error.field}`] = error.message;\n            actions.setErrors(setErr);\n          }\n        })\n        .finally(() => {\n          actions.setSubmitting(false);\n        });\n    },\n  });\n\n  return (\n    <React.Fragment>\n      {!canChangeEmail && (\n        <Typography\n          component=\"p\"\n          variant=\"body2\"\n          className={classes.googleAlert}\n        >\n          Você se inscreveu na Kultivi usando uma conta do Google. Quando você\n          faz o login usando essa opção, seu e-mail é fixo e não pode ser\n          alterado.\n        </Typography>\n      )}\n      <form name=\"form-account\" onSubmit={formik.handleSubmit}>\n        <Grid container spacing={2}>\n          <Grid item xs={12} lg={!canChangeEmail ? 12 : 6}>\n            <TextField\n              label=\"Seu melhor e-mail\"\n              id=\"email\"\n              name=\"email\"\n              variant=\"outlined\"\n              type=\"email\"\n              value={formik.values.email}\n              onChange={formik.handleChange}\n              error={formik.touched.email && Boolean(formik.errors.email)}\n              helperText={formik.touched.email && formik.errors.email}\n              fullWidth={true}\n              disabled={!canChangeEmail}\n              required={true}\n              autoComplete=\"off\"\n            />\n          </Grid>\n          {canChangeEmail ? (\n            <React.Fragment>\n              <Grid item xs={12} lg={6}>\n                <TextField\n                  label=\"Confirmar e-mail\"\n                  id=\"email_confirmation\"\n                  name=\"email_confirmation\"\n                  variant=\"outlined\"\n                  type=\"email\"\n                  fullWidth={true}\n                  required={true}\n                  autoComplete=\"off\"\n                  value={formik.values.email_confirmation}\n                  onChange={formik.handleChange}\n                  onBlur={formik.handleBlur}\n                  error={\n                    formik.touched.email_confirmation &&\n                    Boolean(formik.errors.email_confirmation)\n                  }\n                  helperText={\n                    formik.touched.email_confirmation &&\n                    formik.errors.email_confirmation\n                  }\n                />\n              </Grid>\n              <Grid item xs={12}>\n                <Box component=\"div\" textAlign=\"right\">\n                  <Button\n                    color=\"primary\"\n                    variant=\"contained\"\n                    type=\"submit\"\n                    disabled={formik.isSubmitting || !formik.isValid}\n                  >\n                    {formik.isSubmitting ? (\n                      <CircularProgress size={30} color=\"inherit\" />\n                    ) : (\n                      \"Alterar e-mail\"\n                    )}\n                  </Button>\n                </Box>\n              </Grid>\n            </React.Fragment>\n          ) : (\n            \"\"\n          )}\n        </Grid>\n      </form>\n      <Snackbar\n        anchorOrigin={{\n          vertical: \"bottom\",\n          horizontal: \"center\",\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton\n              size=\"small\"\n              aria-label=\"close\"\n              color=\"inherit\"\n              onClick={handleCloseSnack}\n            >\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    \n}))\n\nexport { useStyles }","/**\n * Form responsável por realizar a troca de senha do usuário */\n\nimport React, {useState, useEffect} from 'react'\nimport {\n    Box,\n    Grid,\n    IconButton,\n    Button,\n    InputLabel,\n    InputAdornment,\n    FormControl,\n    FormHelperText,\n    CircularProgress,\n    Snackbar,\n    OutlinedInput,\n    Typography,\n} from '@material-ui/core';\n\nimport CloseIcon from '@material-ui/icons/Close';\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\n\nimport { useFormik } from 'formik';\nimport * as yup from 'yup';\n\nimport { useStyles } from './styles'\n\n// API file\nimport accountApi from 'app/services/account-api';\n\n// Lotties animations\nimport Lottie from 'react-lottie';\nimport shieldLottie from 'lotties/shield'\n\nimport { useAuth } from 'app/contexts/AuthContext'\n\nconst validationSchema = yup.object({\n    password: yup\n      .string('Digite a senha atual')\n      .required('Campo obrigatório')\n      .min(6,\"O campo deve conter no mínimo 6 caracteres\"),\n    newPassword: yup\n      .string('Digite a nova senha')\n      .required('Campo obrigatório')\n      .min(6,\"O campo deve conter no mínimo 6 caracteres\"),\n    password_confirmation: yup\n      .string('Confirme a nova senha')\n      .required('Campo obrigatório')\n      .oneOf([yup.ref('newPassword'), null], 'Nova senha e confirmação de senha não coincidem')\n      .min(6,\"O campo deve conter no mínimo 6 caracteres\")\n});\n\nexport default (props) => {\n\n    const classes = useStyles();\n\n    const { user } = useAuth()\n    const [canChangePassword, setCanChangePassword] = React.useState(false)\n\n    useEffect(()=>{\n\n        setCanChangePassword( user.provider === 1 )\n\n    },[user])\n\n    const [showPassword, setShowPassword] = useState(false)\n\n    const [snackValues, setSnackValues] = React.useState({\n        message: '',\n        open: false,\n    });\n\n    const handleCloseSnack = (event, reason) => {\n        if (reason === 'clickaway') {\n          return;\n        }\n        setSnackValues({open:false});\n    };\n\n    const formik = useFormik({\n        initialValues: {\n            password: '',\n            newPassword: '',\n            password_confirmation: '',\n        },\n        validationSchema: validationSchema,\n        enableReinitialize: true,\n        validateOnMount: true,\n        onSubmit: (values,actions) => {\n\n            actions.setSubmitting(true);\n\n            accountApi.patch(`/me/change-password`, values)\n            .then((response) => {\n                setSnackValues({message:\"Seus dados foram atualizados com sucesso.\",open:true});\n                actions.resetForm()\n            })\n            .catch((error) => {\n                const { response } = error;\n                if (response && response.data) {\n                  const {\n                    data: { errors },\n                  } = response;\n                  setSnackValues({\n                    message: errors,\n                    open: true,\n                  });\n                } else {\n                  setSnackValues({message:\"Ops! Falha ao atualizar seus dados. Tente novamente.\",open:true});\n                }\n            })\n            .finally( () => {\n                actions.setSubmitting(false);\n            })\n        },\n    });\n\n    const handleClickShowPassword = () => {\n        setShowPassword(!showPassword)\n    };\n\n    const handleMouseDownPassword = (event) => {\n        event.preventDefault();\n    };\n\n    return (\n        <React.Fragment>\n            {!canChangePassword ? (\n                <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\">\n                    <Box component=\"div\" mb={5}>\n                        <Lottie\n                            style={{\n                            maxWidth: 130,\n                            padding: 0,\n                            margin: 0,\n                            }}\n                            options={{\n                            loop: true,\n                            autoplay: true,\n                            animationData: shieldLottie,\n                            rendererSettings: {\n                                preserveAspectRatio: \"xMidYMid slice\"\n                            }\n                            }}\n                        />\n                    </Box>\n                    <Box component=\"div\">\n                        <Typography component=\"p\" variant=\"body2\" className={classes.cardSubtitle}>\n                            Você se inscreveu na Kultivi usando passaporte Google, Facebook ou Apple. Quando você faz uso de uma dessas opções não é possível alterar a senha.\n                        </Typography>\n                    </Box>\n                </Box>\n            ) : (\n                <form name=\"form-password\" onSubmit={formik.handleSubmit}>\n                    <Grid container spacing={2}>\n                        <Grid item xs={12}>\n                            <FormControl\n                                variant=\"outlined\"\n                                fullWidth\n                                error={formik.touched.password && Boolean(formik.errors.password)}\n                                disabled={!canChangePassword}\n                            >\n                                <InputLabel htmlFor=\"password\">Senha atual</InputLabel>\n                                <OutlinedInput\n                                    disabled={!canChangePassword}\n                                    id=\"password\"\n                                    name=\"password\"\n                                    type={showPassword ? 'text' : 'password'}\n                                    value={formik.values.password}\n                                    onChange={formik.handleChange}\n                                    onBlur={formik.handleBlur}\n                                    aria-describedby=\"error-password\"\n                                    endAdornment={\n                                        <InputAdornment position=\"end\">\n                                            <IconButton\n                                                aria-label=\"toggle password visibility\"\n                                                onClick={handleClickShowPassword}\n                                                onMouseDown={handleMouseDownPassword}\n                                            >\n                                            {showPassword ? <Visibility /> : <VisibilityOff />}\n                                            </IconButton>\n                                        </InputAdornment>\n                                    }\n                                />\n                                <FormHelperText id=\"error-password\">{formik.touched.password && formik.errors.password}</FormHelperText>\n                            </FormControl>\n                        </Grid>\n                        <Grid item xs={12} lg={6}>\n                            <FormControl\n                                variant=\"outlined\"\n                                fullWidth\n                                error={formik.touched.newPassword && Boolean(formik.errors.newPassword)}\n                                disabled={!canChangePassword}\n                            >\n                                <InputLabel htmlFor=\"newPassword\">Nova senha</InputLabel>\n                                <OutlinedInput\n                                    disabled={!canChangePassword}\n                                    id=\"newPassword\"\n                                    name=\"newPassword\"\n                                    type={showPassword ? 'text' : 'password'}\n                                    value={formik.values.newPassword}\n                                    onChange={formik.handleChange}\n                                    onBlur={formik.handleBlur}\n                                    aria-describedby=\"error-newPassword\"\n                                    endAdornment={\n                                        <InputAdornment position=\"end\">\n                                            <IconButton\n                                                aria-label=\"toggle password visibility\"\n                                                onClick={handleClickShowPassword}\n                                                onMouseDown={handleMouseDownPassword}\n                                            >\n                                            {showPassword ? <Visibility /> : <VisibilityOff />}\n                                            </IconButton>\n                                        </InputAdornment>\n                                    }\n                                />\n                                <FormHelperText id=\"error-password\">{formik.touched.newPassword && formik.errors.newPassword}</FormHelperText>\n                            </FormControl>\n                        </Grid>\n                        <Grid item xs={12} lg={6}>\n                            <FormControl\n                                variant=\"outlined\"\n                                fullWidth\n                                error={formik.touched.password_confirmation && Boolean(formik.errors.password_confirmation)}\n                                disabled={!canChangePassword}\n                            >\n                                <InputLabel htmlFor=\"password_confirmation\">Confirmar nova senha</InputLabel>\n                                <OutlinedInput\n                                    notched={true}\n                                    disabled={!canChangePassword}\n                                    id=\"password_confirmation\"\n                                    name=\"password_confirmation\"\n                                    type={showPassword ? 'text' : 'password'}\n                                    value={formik.values.password_confirmation}\n                                    onChange={formik.handleChange}\n                                    onBlur={formik.handleBlur}\n                                    aria-describedby=\"error-password_confirmation\"\n                                    endAdornment={\n                                        <InputAdornment position=\"end\">\n                                            <IconButton\n                                                aria-label=\"toggle password visibility\"\n                                                onClick={handleClickShowPassword}\n                                                onMouseDown={handleMouseDownPassword}\n                                            >\n                                            {showPassword ? <Visibility /> : <VisibilityOff />}\n                                            </IconButton>\n                                        </InputAdornment>\n                                    }\n                                />\n                                <FormHelperText id=\"error-password_confirmation\">{formik.touched.password_confirmation && formik.errors.password_confirmation}</FormHelperText>\n                            </FormControl>\n                        </Grid>\n                        <Grid item xs={12}>\n                            <Box component=\"div\" textAlign=\"right\">\n                                <Button\n                                    color=\"primary\"\n                                    variant=\"contained\"\n                                    type=\"submit\"\n                                    disabled={formik.isSubmitting || !formik.isValid}\n                                >\n                                    { formik.isSubmitting ? (\n                                        <CircularProgress size={30} color=\"inherit\" />\n                                    ) : 'Alterar senha' }</Button>\n                            </Box>\n                        </Grid>\n                    </Grid>\n                </form>\n            )}\n            <Snackbar\n                anchorOrigin={{\n                    vertical: 'bottom',\n                    horizontal: 'center'\n                }}\n                open={snackValues.open}\n                autoHideDuration={6000}\n                onClose={handleCloseSnack}\n                message={snackValues.message}\n                action={\n                    <React.Fragment>\n                        <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n                            <CloseIcon fontSize=\"small\" />\n                        </IconButton>\n                    </React.Fragment>\n                }\n            />\n        </React.Fragment>\n    );\n}\n","import React, { createContext, useState, useContext } from 'react';\n\nimport {\n  Snackbar,\n  IconButton,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst SnackbarContext = createContext({})\n\nexport const SnarckbarProvider = ({ children }) => {\n\n  const [snackValues, setSnackValues] = useState({\n    message: '',\n    open: false,\n  })\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return\n    }\n    setSnackValues({ open: false })\n  }\n\n  return (\n    <SnackbarContext.Provider value={{\n      setSnackValues,\n    }}>\n      {children}\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </>\n        }\n      />\n    </SnackbarContext.Provider>\n  )\n}\n\nexport function useSnackbar() {\n  const context = useContext(SnackbarContext)\n\n  if (!context) {\n    throw new Error('useSnackbar must be used within an SnackbarProvider')\n  }\n\n  return context;\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  buttonDelete: {\n    color: theme.palette.error['main']\n  }\n}))\n\nexport { useStyles }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useCallback } from 'react'\nimport {\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  DialogActions,\n  DialogContentText,\n  Button,\n} from '@material-ui/core'\n\nimport accountApi from 'app/services/account-api';\nimport { useAuth } from 'app/contexts/AuthContext'\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const { open, toggleDialog } = props;\n  const { signOut, user } = useAuth()\n  const [loading, setLoading] = useState(false)\n  const { setSnackValues } = useSnackbar();\n\n  const deleteAccount = useCallback(() => {\n\n    setLoading(true)\n    accountApi.delete(`me/delete`)\n      .then(async (response) => {\n        signOut()\n      })\n      .catch((error) => {\n        let message = error.response.data.message || 'Falha ao deletar sua conta';\n        if(message === 'EXCEPTION:ACCOUNT_NOT_FOUND') {\n          message = 'Falha ao deletar sua conta. Conta não encontrada';\n        }\n\n        if(message === 'EXCEPTION:CANT_DELETE_ACCOUNT_WITH_ACTIVE_SUBSCRIPTION') {\n          message = 'Por favor, para deletar sua conta, primeiro você deve cancelar sua(s) assinatura(s)';\n        }\n\n        setSnackValues({\n          message,\n          open: true,\n        })\n      })\n      .finally(() => {\n        setLoading(false)\n      })\n  }, [signOut])\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n      onClose={() => toggleDialog(false)}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>Isso é um adeus? <span aria-label='' role=\"img\">😢</span></DialogTitle>\n      <DialogContent>\n        <DialogContentText>\n          {user.firstname}, lamentamos em vê-lo ir! Tem certeza que deseja excluir sua conta? Uma vez que seus dados foram excluídos não poderemos recuperá-los novamente, ok?\n        </DialogContentText>\n        <DialogActions>\n          <Button onClick={() => toggleDialog(false)} disabled={loading}>\n            Manter minha conta\n          </Button>\n          <Button onClick={deleteAccount} className={classes.buttonDelete} disabled={loading}>\n            Sim, excluir\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  buttonDelete: {\n    color: theme.palette.error['main']\n  },\n  suspendingText: {\n    fontWeight: 600,\n    fontSize: theme.typography.pxToRem(21),\n    textAlign: \"center\",\n  },\n  suspendedError: {\n    backgroundColor: theme.palette.error['main'],\n    color: \"#FFF\",\n    padding: theme.spacing(2),\n    marginBottom: theme.spacing(2),\n  }\n}))\n\nexport { useStyles }\n","/* eslint-disable no-throw-literal */\nexport async function validateCpf(number) {\n\n    const cpf = (number).replace(/[^\\d]+/g, '');\n\n    const knowNumbers = [\n        \"00000000000\",\n        \"11111111111\",\n        \"22222222222\",\n        \"33333333333\",\n        \"44444444444\",\n        \"55555555555\",\n        \"66666666666\",\n        \"77777777777\",\n        \"88888888888\",\n        \"99999999999\",\n    ]\n\n    if (cpf.length !== 11 || knowNumbers.includes(cpf)) {\n        throw (\"Insira um documento válido\")\n    }\n\n    var soma = 0;\n    var resto = 0;\n    var i = 0;\n\n    for (i = 1; i <= 9; i++) {\n        soma += parseInt(cpf.substring(i - 1, i)) * (11 - i);\n    }\n\n    resto = (soma * 10) % 11;\n\n    if ((resto === 10) || (resto === 11)) {\n        resto = 0;\n    }\n\n    if (resto !== parseInt(cpf.substring(9, 10))) {\n        throw (\"Documento inválido\")\n    }\n\n    soma = 0;\n\n    for (i = 1; i <= 10; i++) {\n        soma += parseInt(cpf.substring(i - 1, i)) * (12 - i);\n    }\n\n    resto = (soma * 10) % 11;\n\n    if ((resto === 10) || (resto === 11)) {\n        resto = 0;\n    }\n\n    if (resto !== parseInt(cpf.substring(10, 11))) {\n        throw (\"Documento inválido\")\n    }\n}\n\nexport const formatDate = (_date) => {\n  if(!_date) {\n    return;\n  }\n  const date = new Date(_date);\n  const day = date.getUTCDate().toString().padStart(2, '0');\n  const month = (date.getUTCMonth() + 1).toString().padStart(2, '0');\n  const year = date.getUTCFullYear();\n  const hours = date.getUTCHours().toString().padStart(2, '0');\n  const minutes = date.getUTCMinutes().toString().padStart(2, '0');\n\n  return `${day}/${month}/${year} ${hours}:${minutes}`;\n}\n","import React, { useState } from \"react\";\n\nimport {\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  DialogActions,\n  Button,\n  List,\n  ListItem,\n  ListItemIcon,\n  ListItemText,\n  DialogContentText,\n  Box,\n  IconButton,\n  CircularProgress,\n  Typography,\n} from \"@material-ui/core\";\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nimport accountApi from 'app/services/account-api';\n\nimport Lottie from \"react-lottie\";\nimport checkLottie from \"lotties/check\";\n\nimport { useAuth } from \"app/contexts/AuthContext\";\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\nimport { useStyles } from \"./styles\";\nimport { formatDate } from \"app/utils\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const { user, refreshUserInfo } = useAuth();\n  const { setSnackValues } = useSnackbar();\n\n  const { open, toggleDialog, subscription, reloadSubscriptions, subscriptions } = props;\n\n  // estados de processamento\n  const [suspending, setSuspending] = useState(false);\n  const [suspended, setSuspended] = useState(false);\n\n  const suspendSubscription = () => {\n    setSuspending(true);\n    accountApi\n      .post(`subscriptions/${subscription?.subscriptionId}/suspend`)\n      .then(async (response) => {\n        setSuspended(true);\n        const hasActiveSubscriptions = !!subscriptions\n          ?.filter(subs => subs.id !== subscription.id)\n          ?.find((subs) => subs.status === 'ACTIVE')\n\n        refreshUserInfo({ has_active_subscriptions: hasActiveSubscriptions });\n        reloadSubscriptions(true);\n      })\n      .catch((error) => {\n        setSnackValues({\n          message:\n            error.response.data?.message ?? \"Falha ao suspender assinatura\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setSuspending(false);\n      });\n  };\n\n  return (\n    <>\n      <Dialog\n        aria-labelledby=\"form-dialog-title\"\n        open={open}\n        fullWidth={true}\n        onClose={() => (!suspending ? toggleDialog(false) : null)}\n      >\n        {!suspending ? (\n          !suspended ? (\n            <>\n              <DialogTitle\n                id=\"form-dialog-title\"\n                className={classes.title}\n                disableTypography\n              >\n                <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n                  <IconButton\n                    aria-label=\"close\"\n                    className={classes.closeButton}\n                    onClick={() => toggleDialog(false)}\n                    disabled={suspending}\n                  >\n                    <CloseIcon />\n                  </IconButton>\n                </Box>\n                {!suspended && \"Suspender assinatura?\"}\n              </DialogTitle>\n              <DialogContent>\n                <DialogContentText>\n                  {user.firstname}, com a sua assinatura você ajuda a gente a\n                  levar a educação gratuita pra milhões de estudantes no país\n                  todo.\n                </DialogContentText>\n                <DialogContentText>\n                  Caso realmente precise cancelar, atente-se às informações a\n                  seguir:\n                </DialogContentText>\n                <List dense={true}>\n                  <ListItem>\n                    <ListItemIcon>\n                      <ErrorOutlineIcon />\n                    </ListItemIcon>\n                    <ListItemText primary=\"Após confirmação, mais nenhuma nova cobrança será emitida.\" />\n                  </ListItem>\n                  <ListItem>\n                    <ListItemIcon>\n                      <ErrorOutlineIcon />\n                    </ListItemIcon>\n                    <ListItemText\n                      primary={`Você ainda poderá usufruir dos benefícios do plano até ${\n                        subscription\n                          ? formatDate(subscription.dueDate)?.split(' ')?.at(0)\n                          : \"a data final do período contratado\"\n                      }.`}\n                    />\n                  </ListItem>\n                  <ListItem>\n                    <ListItemIcon>\n                      <ErrorOutlineIcon />\n                    </ListItemIcon>\n                    <ListItemText\n                      primary={`Para confirmar, basta clicar em \"Sim, suspender\".`}\n                    />\n                  </ListItem>\n                </List>\n                <DialogActions>\n                  <Button\n                    onClick={() => toggleDialog(false)}\n                    disabled={suspending}\n                  >\n                    Voltar\n                  </Button>\n                  <Button\n                    onClick={suspendSubscription}\n                    className={classes.buttonDelete}\n                    disabled={suspending || !subscription?.subscriptionId}\n                  >\n                    Sim, suspender\n                  </Button>\n                </DialogActions>\n              </DialogContent>\n            </>\n          ) : (\n            <>\n              <DialogContent>\n                <Box\n                  component=\"div\"\n                  display=\"flex\"\n                  alignItems=\"center\"\n                  flexDirection=\"column\"\n                  mb={2}\n                >\n                  <Lottie\n                    style={{\n                      maxWidth: 300,\n                      padding: 0,\n                      margin: 0,\n                    }}\n                    options={{\n                      loop: true,\n                      autoplay: true,\n                      animationData: checkLottie,\n                      rendererSettings: {\n                        preserveAspectRatio: \"xMidYMid slice\",\n                      },\n                    }}\n                  />\n                  <DialogContentText>\n                    Atendendo ao seu pedido, suspendemos sua assinatura.\n                    Esperamos que você tenha gostado do serviço, e para nós será\n                    um prazer ter você como parte do Kultivi+ novamente no\n                    futuro.\n                  </DialogContentText>\n                  <DialogContentText>\n                    Não esqueça que você ainda pode continuar realizando os\n                    cursos da Kultivi de forma 100% gratuita.\n                  </DialogContentText>\n                </Box>\n              </DialogContent>\n              <DialogActions>\n                <Button onClick={() => toggleDialog(false)}>Fechar</Button>\n              </DialogActions>\n            </>\n          )\n        ) : (\n          <DialogContent>\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              alignItems=\"center\"\n              justifyContent=\"center\"\n              flexDirection=\"column\"\n              height={300}\n            >\n              <Box mb={4}>\n                <CircularProgress size={70} />\n              </Box>\n              <Typography className={classes.suspendingText}>\n                Aguarde enquanto suspendemos sua assinatura\n              </Typography>\n            </Box>\n          </DialogContent>\n        )}\n      </Dialog>\n    </>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n}))\n\nexport { useStyles }\n","import React, {useState, useCallback} from 'react'\nimport {\n  Dialog,\n  DialogContent,\n  Box,\n  CircularProgress,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  DialogTitle,\n  IconButton,\n  TablePagination,\n  Typography,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\n\nimport { useSnackbar } from 'app/contexts/SnackbarContext'\n\nimport api from 'app/services/api';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const {\n    open,\n    toggleDialog,\n  } = props;\n\n  const { setSnackValues } = useSnackbar();\n  const classes  = useStyles();\n\n  const [loading, setLoading] = useState(true);\n  const [rows, setRows] = useState([]);\n  const [page, setPage] = React.useState(0);\n  const [dense, setDense] = React.useState(false);\n  const [rowsPerPage, setRowsPerPage] = React.useState(5);\n\n  const handleChangePage = (event, newPage) => {\n    setPage(newPage);\n  };\n\n  const handleChangeRowsPerPage = (event) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(0);\n  };\n\n  const emptyRows = rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage);\n\n\n  const getInvoices = useCallback(() => {\n    api.get(`users/me/invoices`)\n    .then( async (response) => {\n      const {invoices} = response.data;\n      setRows(invoices);\n    })\n    .catch((error) => {\n      setSnackValues({message:error.response.data?.message ?? \"Falha ao consultar faturas. Tente novamente.\",open:true})\n    })\n    .finally(() => {\n      setLoading(false)\n    })\n  })\n\n  const openInvoice = (url) => {\n    window.open(`${url}`, '_blank');\n  }\n\n  return (\n    <>\n      <Dialog\n        aria-labelledby=\"form-dialog-title\"\n        open={open}\n        maxWidth='md'\n        fullWidth={true}\n        TransitionProps={{\n          onEntering: () => {\n            setLoading(true);\n          },\n          onEntered: () => {\n            getInvoices()\n          }\n        }}\n      >\n        <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>\n          <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n            <IconButton aria-label=\"close\" className={classes.closeButton} onClick={()=>toggleDialog(false)}>\n              <CloseIcon />\n            </IconButton>\n          </Box>\n          Faturas\n        </DialogTitle>\n        <DialogContent>\n          {loading ? (\n            <Box component=\"div\" display=\"flex\" alignItems=\"center\" flexDirection=\"column\" mb={2}>\n              <Box pt={4} mb={5}><CircularProgress size={80} color=\"primary\" /></Box>\n            </Box>\n          ) : (\n            rows.length > 0 ? (\n              <>\n                <TableContainer>\n                  <Table>\n                    <TableHead>\n                      <TableRow>\n                        <TableCell>Criada em</TableCell>\n                        <TableCell align=\"right\">Vencimento</TableCell>\n                        <TableCell align=\"right\">Total</TableCell>\n                        <TableCell align=\"right\">Status</TableCell>\n                        <TableCell align=\"right\"></TableCell>\n                      </TableRow>\n                    </TableHead>\n                    <TableBody>\n                      {(rowsPerPage > 0\n                          ? rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n                          : rows\n                        ).map((row) => (\n                          <TableRow hover key={row.id}>\n                            <TableCell component=\"th\" scope=\"row\">{row.created_at}</TableCell>\n                            <TableCell align=\"right\">{row.due_date}</TableCell>\n                            <TableCell align=\"right\">{row.total}</TableCell>\n                            <TableCell align=\"right\">{row.status}</TableCell>\n                            <TableCell align=\"right\">\n                              <IconButton aria-label=\"close\" className={classes.closeButton} onClick={()=> openInvoice(row.secure_url)}>\n                                <VisibilityIcon fontSize=\"small\" />\n                              </IconButton>\n                            </TableCell>\n                          </TableRow>\n                      ))}\n                    </TableBody>\n                  </Table>\n                </TableContainer>\n                <TablePagination\n                  rowsPerPageOptions={[1, 5, 10, 25]}\n                  component=\"div\"\n                  count={rows.length}\n                  rowsPerPage={rowsPerPage}\n                  page={page}\n                  onPageChange={handleChangePage}\n                  onRowsPerPageChange={handleChangeRowsPerPage}\n                  labelRowsPerPage=\"Faturas por página\"\n                  labelDisplayedRows={({ from, to, count }) => `${from}-${to} de ${count !== -1 ? count : `mais do que ${to}`}` }\n                />\n              </>\n            ) : (\n              <Box mb={3}><Typography>Nenhuma fatura disponível</Typography></Box>\n            )\n          )}\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport accountApi from 'app/services/account-api';\nimport { useStyles } from \"./styles\";\n\nimport {\n  Box,\n  Card,\n  CardContent,\n  Typography,\n  Container,\n  Button,\n  Tabs,\n  Tab,\n  Divider,\n  List,\n  ListItem,\n  ListItemIcon,\n  ListItemText,\n  Hidden,\n  ListItemAvatar,\n  Avatar,\n} from \"@material-ui/core\";\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nimport AutorenewIcon from \"@material-ui/icons/Autorenew\";\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport CloseIcon from '@material-ui/icons/Close';\n\n// Lotties animations\nimport Lottie from \"react-lottie\";\nimport GhostLottie from \"lotties/ghost\";\n\n// Forms\nimport FormAccount from \"app/components/forms/Account\";\nimport FormPassword from \"app/components/forms/Password\";\n\nimport DialogDeleteAccount from \"app/components/Modals/Auth/DeleteAccount\";\nimport DialogSuspendSubscription from \"app/components/Modals/Subscription/SuspendSubscription\";\nimport DialogInvoices from \"app/components/Modals/Subscription/Invoices\";\nimport { formatDate } from \"app/utils\";\n\nfunction TabPanel(props) {\n  const { children, value, index, ...other } = props;\n\n  return (\n    <div\n      role=\"tabpanel\"\n      hidden={value !== index}\n      id={`vertical-tabpanel-${index}`}\n      aria-labelledby={`vertical-tab-${index}`}\n      {...other}\n    >\n      {value === index && (\n        <Box display=\"flex\" flexGrow={1}>\n          {children}\n        </Box>\n      )}\n    </div>\n  );\n}\n\nTabPanel.propTypes = {\n  children: PropTypes.node,\n  index: PropTypes.any.isRequired,\n  value: PropTypes.any.isRequired,\n};\n\nfunction a11yProps(index) {\n  return {\n    id: `vertical-tab-${index}`,\n    \"aria-controls\": `vertical-tabpanel-${index}`,\n  };\n}\n\nexport default (props) => {\n  const classes = useStyles();\n\n  const [value, setValue] = useState(0);\n\n  const handleChange = (event, newValue) => {\n    setValue(newValue);\n  };\n\n  const [subscriptions, setSubscriptions] = useState([]);\n  const [subscription, setSubscription] = useState(null);\n  const [reloadSubscriptions, setReloadSubscriptions] = useState(false);\n\n  const [loadingSubscription, setLoadingSubscription] = useState(true);\n  const handleSubscription = useCallback((subscription) => {\n    setSubscription((state) => subscription);\n  }, []);\n\n  const [openDialogDeleteAccount, setOpenDialogDeleteAccount] = useState(false);\n  const toggleDialogDeleteAccount = (open) => {\n    setOpenDialogDeleteAccount((state) => open);\n  };\n\n  const [openDialogSuspendSubscription, setOpenDialogSuspendSubscription] = useState(false);\n  const toggleDialogSuspendSubscription = (open, subscription) => {\n    setSubscription(subscription);\n    setOpenDialogSuspendSubscription((state) => open);\n  };\n\n  const [openDialogInvoices, setOpenDialogInvoices] = useState(false);\n  const toggleDialogInvoices = (open) => {\n    setOpenDialogInvoices((state) => open);\n  };\n\n  useEffect(() => {\n    setLoadingSubscription(true);\n    accountApi\n      .get(`/subscriptions`)\n      .then((response) => {\n        setSubscriptions(response.data);\n      })\n      .catch((error) => {\n        console.warn(error);\n      })\n      .finally(() => {\n        setLoadingSubscription(false);\n      });\n  }, [reloadSubscriptions]);\n\n  const subscriptionStatus = (subscription) => {\n    const dueDate = formatDate(subscription.dueDate)?.split(' ')?.at(0);\n\n    if (subscription.status === 'ACTIVE') {\n\t\t\treturn `Sua próxima data de cobrança é: ${dueDate}`;\n\t\t}\n\n\t\tif (subscription.status === 'SUSPENDED') {\n      if(subscription.dueDate && new Date(subscription.dueDate) > new Date()) {\n        return `Utilize os benefícios do plano até: ${dueDate}`;\n      }\n\n      return `Sua assinatura foi cancelada em: ${dueDate}`;\n\t\t}\n\n\t\tif (subscription.status === 'CANCELLED') {\n\t\t\treturn `Sua assinatura foi cancelada em ${dueDate}`;\n\t\t}\n\n\t\tif (subscription.status === 'ERROR') {\n\t\t\treturn `Houve um erro ao processar sua assinatura :(`;\n\t\t}\n\n    return `Aguardando o pagamento da sua fatura`;\n  }\n\n  const subscriptionIcon = (subscription) => {\n    if (subscription.status === 'ACTIVE') {\n      return <AutorenewIcon color=\"primary\" />\n\t\t}\n\n\t\tif (subscription.status === 'SUSPENDED') {\n      if(subscription.dueDate && new Date(subscription.dueDate) > new Date()) {\n        return <AccessTimeIcon color='disabled' />\n      }\n\n      return <CloseIcon color='disabled' />\n\t\t}\n\n\t\tif (subscription.status === 'CANCELLED') {\n\t\t\treturn <CloseIcon color='disabled' />\n\t\t}\n\n\t\tif (subscription.status === 'ERROR') {\n\t\t\treturn <ErrorOutlineIcon color='disabled' />\n\t\t}\n\n\t\treturn <AccessTimeIcon color='disabled' />\n  }\n\n  return (\n    <React.Fragment>\n      <Container>\n        <Hidden mdUp>\n          <Tabs\n            orientation=\"horizontal\"\n            value={value}\n            onChange={handleChange}\n            aria-label=\"Menu\"\n            className={classes.tabs}\n            indicatorColor=\"primary\"\n            variant=\"scrollable\"\n            scrollButtons=\"on\"\n          >\n            <Tab className={classes.tabLabel} label=\"Conta\" {...a11yProps(0)} />\n            <Tab\n              className={classes.tabLabel}\n              label=\"Assinatura e Cobrança\"\n              {...a11yProps(1)}\n            />\n            <Tab\n              className={classes.tabLabel}\n              label=\"Excluir Conta\"\n              {...a11yProps(2)}\n            />\n          </Tabs>\n        </Hidden>\n        <Box display=\"flex\" flexDirection=\"row\" mb={4}>\n          <Hidden smDown>\n            <Tabs\n              orientation=\"vertical\"\n              variant=\"standard\"\n              value={value}\n              onChange={handleChange}\n              aria-label=\"Menu\"\n              className={classes.tabs}\n              indicatorColor=\"primary\"\n            >\n              <Tab\n                className={classes.tabLabel}\n                label=\"Conta\"\n                {...a11yProps(0)}\n              />\n              <Tab\n                className={classes.tabLabel}\n                label=\"Assinatura e Cobrança\"\n                {...a11yProps(1)}\n              />\n              <Tab\n                className={classes.tabLabel}\n                label=\"Excluir Conta\"\n                {...a11yProps(2)}\n              />\n            </Tabs>\n          </Hidden>\n          <TabPanel value={value} index={0} className={classes.tabPanel}>\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"column\"\n              width=\"100%\"\n            >\n              <Card className={classes.card}>\n                <CardContent>\n                  <Typography\n                    gutterBottom\n                    component=\"h2\"\n                    className={classes.cardTitle}\n                  >\n                    Alterar e-mail\n                  </Typography>\n                  <FormAccount />\n                </CardContent>\n                <Divider />\n                <CardContent>\n                  <Typography\n                    gutterBottom\n                    component=\"h2\"\n                    className={classes.cardTitle}\n                  >\n                    Alterar senha\n                  </Typography>\n                  <FormPassword />\n                </CardContent>\n              </Card>\n            </Box>\n          </TabPanel>\n          <TabPanel value={value} index={1} className={classes.tabPanel}>\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"column\"\n              width=\"100%\"\n            >\n              <Card className={classes.card}>\n                <CardContent>\n                  <Typography\n                    gutterBottom\n                    component=\"h2\"\n                    className={classes.cardTitle}\n                  >\n                    Assinaturas\n                  </Typography>\n                  {\n                    subscriptions.length > 0 ?\n                      (\n                        <List>\n                          {subscriptions.map((subscription, key) => (\n                            <ListItem key={`subscription_${key}`}>\n                              <ListItemAvatar>\n                                <Avatar style={{ backgroundColor: 'transparent' }}>\n                                  {subscriptionIcon(subscription)}\n                                </Avatar>\n                              </ListItemAvatar>\n                              <ListItemText\n                                primary={subscription.product.name || '-'}\n                                secondary={\n                                  <Box mt={1}>\n                                    {subscriptionStatus(subscription)}\n                                    <Typography style={{fontSize: 10}}>GERENCIADO POR: {subscription.gateway === 'IUGU' ? 'KULTIVI' : subscription.gateway}</Typography>\n                                    <Box mt={1}>\n                                      {subscription.gateway === 'IUGU' && subscription.status === 'ACTIVE' && (\n                                        <Button variant='text' size=\"small\" onClick={() => toggleDialogSuspendSubscription(true, subscription)}>SUSPENDER ASSINATURA</Button>\n                                      )}\n                                      {subscription.gateway === 'KIWIFY' && (\n                                        <Button color='primary' variant='text' size=\"small\" onClick={() => window.open(subscription.managementLink, '_blank')}>GERENCIAR ASSINATURA</Button>\n                                      )}\n                                      {subscription.gateway === 'STRIPE' && (\n                                        <Button variant='text' size=\"small\" onClick={() => window.open(subscription.managementLink, '_blank')}>GERENCIAR ASSINATURA</Button>\n                                      )}\n                                    </Box>\n                                  </Box>\n                                }\n                              />\n                            </ListItem>\n                          ))}\n                        </List>\n                      ) : (\n                        <>\n                          <Box\n                            component=\"div\"\n                            display=\"flex\"\n                            flexDirection=\"column\"\n                            alignItems=\"center\"\n                          >\n                            <Lottie\n                              style={{\n                                maxWidth: 250,\n                                padding: 0,\n                                margin: 0,\n                              }}\n                              options={{\n                                loop: true,\n                                autoplay: true,\n                                animationData: GhostLottie,\n                                rendererSettings: {\n                                  preserveAspectRatio: \"xMidYMid slice\",\n                                },\n                              }}\n                            />\n                            <Typography\n                              component=\"h3\"\n                              className={classes.klubiTitleStatus}\n                            >\n                              Nenhuma assinatura disponível\n                            </Typography>\n                          </Box>\n                        </>\n                      )\n                  }\n                </CardContent>\n              </Card>\n            </Box>\n          </TabPanel>\n          <TabPanel value={value} index={2} className={classes.tabPanel}>\n            <Box\n              component=\"div\"\n              display=\"flex\"\n              flexDirection=\"column\"\n              width=\"100%\"\n            >\n              <Card className={classes.card}>\n                <CardContent>\n                  <Typography\n                    gutterBottom\n                    component=\"h2\"\n                    className={classes.cardTitle}\n                  >\n                    Deletar conta\n                  </Typography>\n                  <Typography\n                    component=\"p\"\n                    variant=\"body2\"\n                    className={classes.cardSubtitle}\n                  >\n                    Antes de deletar sua conta, analise o seguinte:\n                  </Typography>\n                  <List>\n                    <ListItem>\n                      <ListItemIcon>\n                        <ErrorOutlineIcon />\n                      </ListItemIcon>\n                      <ListItemText primary=\"Se você excluir sua conta, todas as suas informações pessoais, incluindo inscrições, progressos de curso e certificados, serão excluídos. Você perderá imediatamente o acesso a ela e não poderá fazer login.\" />\n                    </ListItem>\n                    <ListItem>\n                      <ListItemIcon>\n                        <ErrorOutlineIcon />\n                      </ListItemIcon>\n                      <ListItemText primary=\"Esta ação é irreversível - uma vez que seus dados foram excluídos, não podemos recuperá-los novamente.\" />\n                    </ListItem>\n                  </List>\n                  <Box component=\"div\" mt={2}>\n                    <Button\n                      color=\"primary\"\n                      onClick={() => {\n                        toggleDialogDeleteAccount(true);\n                      }}\n                    >\n                      Excluir conta\n                    </Button>\n                  </Box>\n                </CardContent>\n              </Card>\n            </Box>\n          </TabPanel>\n        </Box>\n      </Container>\n      <DialogDeleteAccount\n        open={openDialogDeleteAccount}\n        toggleDialog={toggleDialogDeleteAccount}\n      />\n      <DialogSuspendSubscription\n        open={openDialogSuspendSubscription}\n        toggleDialog={toggleDialogSuspendSubscription}\n        subscription={subscription}\n        subscriptions={subscriptions}\n        reloadSubscriptions={setReloadSubscriptions}\n      />\n      <DialogInvoices\n        open={openDialogInvoices}\n        toggleDialog={toggleDialogInvoices}\n      />\n    </React.Fragment>\n  );\n};\n","import React, { useMemo } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n  container: {\n    width: '100%',\n    height: '100%',\n    position: 'relative',\n    overflow: 'hidden',\n  },\n  lightOverlay: {\n    position: 'absolute',\n    width: 65,\n    height: 100,\n    borderStyle: 'solid',\n    borderBottomRightRadius: 90,\n    borderTopRightRadius: 90,\n    borderColor: 'transparent',\n    backgroundColor: 'rgba(255, 255, 255, 0.2)',\n    left: -20,\n    top: -25,\n    transform: 'rotate(90deg)',\n  },\n  darkOverlay: (dark) => ({\n    position: 'absolute',\n    width: 180,\n    height: 90,\n    borderStyle: 'solid',\n    borderWidth: 24,\n    borderRadius: '50% 50% 0 0 / 100% 100% 0 0',\n    borderColor: `rgba(${dark.join(\", \")},.3)`,\n    borderBottomColor: 'transparent',\n    borderLeftColor: 'transparent',\n    right: -45,\n    bottom: -15,\n    transform: 'rotate(-50deg)',\n  }),\n});\n\nconst hexToRgb = (hex) => {\n  return hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b)\n    .substring(1).match(/.{2}/g).map(x => parseInt(x, 16));\n};\n\nconst calculateDarkColor = (rgb, brightness) => {\n  return [\n    Math.floor((255 - rgb[0]) * brightness),\n    Math.floor((255 - rgb[1]) * brightness),\n    Math.floor((255 - rgb[2]) * brightness)\n  ];\n};\n\nconst ColorBox = ({ color }) => {\n  const rgb = useMemo(() => hexToRgb(color), [color]);\n  const brightness = 0.2;\n  const dark = useMemo(() => calculateDarkColor(rgb, brightness), [rgb, brightness]);\n  const classes = useStyles(dark);\n\n  return (\n    <div className={classes.container} style={{ backgroundColor: color }}>\n      <div className={classes.lightOverlay}></div>\n      <div className={classes.darkOverlay}></div>\n    </div>\n  );\n};\n\nexport default ColorBox;\n","import React, { createContext, useEffect, useState, useContext } from 'react';\n\nimport { useAuth } from 'app/contexts/AuthContext'\n\nconst ScopesContext = createContext({})\n\nexport const ScopesProvider = ({ children }) => {\n\n  const {user} = useAuth();\n  const [scopes,setScopes] = useState([])\n\n  useEffect( () => {\n\n    if(user) {\n      setScopes(user.scopes || []);\n    }\n\n  }, [user]);\n\n  return (\n    <ScopesContext.Provider value={{\n      scopes,\n    }}>\n      {children}\n    </ScopesContext.Provider>\n  )\n}\n\nexport function useScopes() {\n  const context = useContext(ScopesContext)\n\n  if (!context) {\n    throw new Error('useScopes must be used within an ScopesProvider')\n  }\n\n  return context;\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\n// import { isMobile } from 'react-device-detect';\nimport FreestarAdSlot from '@freestar/pubfig-adslot-react-component'\n// import { Box } from '@material-ui/core';\n// import { useStyles } from './styles'\n// import { useScopes } from \"app/contexts/ScopesContext\";\n\nconst MobileApp = React.memo(({_slot}) => {\n  const slotId = `kultivicom_app_mrec_1_${_slot}`\n\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_app_mrec_1'\n      slotId={slotId}\n    />\n  )\n})\n\nconst Desktop = React.memo(({_slot}) => {\n  const slotId = `kultivicom_incontent_${_slot}`\n\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_incontent'\n      slotId={slotId}\n    />\n  )\n})\n\nconst AdsIncontent = (props) => {\n  return (<></>);\n  // const classes = useStyles();\n  // const { slot } = props\n  // const { scopes } = useScopes();\n  // const _slot = slot || Math.random().toString(36).substr(2, 6)\n\n  // return (\n  //   !scopes?.includes(\"student_no_ads_display\") &&\n  //   <div align=\"center\">\n  //     <Box className={classes.ads}>Publicidade</Box>\n  //     { isMobile ? <MobileApp _slot={_slot} /> : <Desktop _slot={_slot} /> }\n  //   </div>\n  // );\n}\n\nexport default React.memo(AdsIncontent)\n","import React from \"react\";\n// import { isMobile } from 'react-device-detect';\nimport FreestarAdSlot from '@freestar/pubfig-adslot-react-component'\n// import { Box } from '@material-ui/core';\n// import { useStyles } from './styles'\n// import { useScopes } from \"app/contexts/ScopesContext\";\n\nconst Desktop = React.memo(() => {\n\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_top'\n      slotId='kultivicom_top'\n    />\n  )\n});\n\nconst MobileApp = () => {\n\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_app_banner_top'\n      slotId='kultivicom_app_banner_top'\n    />\n  )\n}\n\nconst AdsTop = (props) => {\n  return (<></>);\n  // const classes = useStyles();\n  // const { scopes } = useScopes();\n\n  // return (\n  //   !scopes?.includes(\"student_no_ads_display\") &&\n  //   <Box {...props}>\n  //     <div align=\"center\">\n  //       <Box className={classes.ads}>Publicidade</Box>\n  //       { isMobile ? <MobileApp /> : <Desktop /> }\n  //     </div>\n  //   </Box>\n  // );\n}\n\nexport default React.memo(AdsTop)\n","import React from \"react\";\n// import { isMobile } from 'react-device-detect';\nimport FreestarAdSlot from '@freestar/pubfig-adslot-react-component'\n// import { Box } from '@material-ui/core';\n// import { useStyles } from './styles'\n// import { useScopes } from \"app/contexts/ScopesContext\";\n\nconst MobileApp = React.memo(() => {\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_app_banner_bottom'\n      slotId= 'kultivicom_app_banner_bottom'\n    />\n  )\n})\n\nconst Desktop = React.memo(() => {\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_incontent'\n      slotId='kultivicom_incontent_bottom'\n    />\n  )\n});\n\nconst AdsBottom = () => {\n  return (<></>);\n  // const classes = useStyles();\n  // const { scopes } = useScopes();\n\n  // return (\n  //   !scopes?.includes(\"student_no_ads_display\") &&\n  //   <div align=\"center\">\n  //     <Box className={classes.ads}>Publicidade</Box>\n  //     { isMobile ? <MobileApp /> : <Desktop /> }\n  //   </div>\n  // );\n}\n\nexport default React.memo(AdsBottom)\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\nimport FreestarAdSlot from '@freestar/pubfig-adslot-react-component'\n// import { Box } from '@material-ui/core';\n// import { useStyles } from './styles'\n// import { useScopes } from \"app/contexts/ScopesContext\";\n\nconst Desktop = React.memo(() => {\n  const slotId = `kultivicom_billboard_video_pages`\n\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_billboard_video_pages'\n      slotId={slotId}\n    />\n  )\n})\n\nconst AdsBillboardLesson = (props) => {\n  return (<></>);\n\n  // const classes = useStyles();\n  // const { scopes } = useScopes();\n\n  // return (\n  //   !scopes?.includes(\"student_no_ads_display\") &&\n  //   <div align=\"center\">\n  //     <Box className={classes.ads}>Publicidade</Box>\n  //     <Desktop />\n  //   </div>\n  // );\n}\n\nexport default React.memo(AdsBillboardLesson)\n","import React from \"react\";\nimport FreestarAdSlot from '@freestar/pubfig-adslot-react-component'\n// import { Box } from '@material-ui/core';\n// import { useStyles } from './styles'\n// import { useScopes } from \"app/contexts/ScopesContext\";\n\nconst Desktop = React.memo(() => {\n  return (\n    <FreestarAdSlot\n      publisher='kultivi-com'\n      placementName='kultivicom_sidebar'\n      slotId= 'kultivicom_sidebar'\n    />\n  )\n});\n\n\nconst AdsSideBar = () => {\n  return (<></>);\n  // const classes = useStyles();\n  // const { scopes } = useScopes();\n\n  // return (\n  //   !scopes?.includes(\"student_no_ads_display\") &&\n  //   <div align=\"center\">\n  //     <Box className={classes.ads}>Publicidade</Box>\n  //     <Desktop />\n  //   </div>\n  // );\n}\n\nexport default React.memo(AdsSideBar)\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  titleNoCertificates: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(30),\n    marginBottom: theme.spacing(1),\n    textAlign: \"center\",\n  },\n  sectionTitle: {\n    color: theme.palette.grey[600],\n    fontSize: theme.typography.pxToRem(24),\n    marginBottom: theme.spacing(2),\n    fontWeight: 700\n  },\n  coursesAvailable: {\n    fontWeight: 700,\n    color: theme.palette.grey[700],\n    marginBottom: theme.spacing(2)\n  },\n  filterCategory: {\n    fontWeight: 600,\n    fontSize: theme.typography.pxToRem(16),\n    lineHeight: theme.typography.pxToRem(16),\n    marginBottom: theme.spacing(2)\n  },\n  drawer: {\n    paddingLeft: theme.spacing(3),\n    paddingRight: theme.spacing(3),\n  },\n  buttonFilter: {\n    backgroundColor: \"#FFF\",\n    boxShadow: '0px 0px 4px rgba(34, 40, 43, 0.16)',\n  },\n  lockedInfo: {\n    '& .title': {\n      fontWeight: 600,\n      fontSize: theme.typography.pxToRem(17),\n      marginBottom: theme.spacing(1),\n    }\n  },\n\n  incompleteBox: {\n    width: '100%',\n    paddingTop: theme.spacing(2),\n    '& .tipBox': {\n      '& .tip': {\n        fontWeight: 700,\n        marginBottom: theme.spacing(.5),\n        fontSize: theme.typography.pxToRem(14),\n      },\n      '& p': {\n        fontSize: theme.typography.pxToRem(14),\n      }\n    }\n  },\n  certificate: {\n    display: 'flex',\n    flexDirection: 'row',\n    [theme.breakpoints.down('md')]: {\n      flexDirection: 'column',\n    },\n    '& > .thumbnail': {\n      display: 'flex',\n      flexDirection: 'row',\n      width: 200,\n      minHeight: 100,\n      marginRight: theme.spacing(2),\n      [theme.breakpoints.down('md')]: {\n        marginRight: theme.spacing(0),\n        marginBottom: theme.spacing(2),\n        flexDirection: 'column',\n        height: 150,\n        width: '100%',\n      },\n    },\n    '& > .content': {\n      display: 'flex',\n      flexDirection: 'column',\n      '& .title': {\n        fontWeight: 'bold',\n        fontSize: theme.typography.pxToRem(18),\n      },\n      '& .info': {\n        color: theme.palette.grey['600'],\n        fontSize: theme.typography.pxToRem(12),\n      },\n    },\n  }\n}))\n\nexport { useStyles }\n","\nimport React, {useEffect, useState} from 'react'\nimport {\n    Box,\n    Button,\n    Card,\n    CardContent,\n    Container,\n    Link,\n    Typography,\n} from '@material-ui/core'\nimport LockIcon from '@material-ui/icons/LockOutlined';\nimport ArrowRightAltIcon from '@material-ui/icons/ArrowRightAlt';\n\nimport ColorBox from 'app/components/utils/thumbnail/MediaColor';\nimport { useScopes } from 'app/contexts/ScopesContext'\nimport { useHistory } from 'react-router-dom'\nimport { Skeleton } from '@material-ui/lab'\nimport { AdsTop } from 'app/components/ads/freestar'\n\nimport { useStyles } from './styles'\nimport { formatDate } from 'app/utils'\nimport studentApi from 'app/services/student-api'\n\nexport default (props) => {\n\n  const classes = useStyles()\n\n  const [certificates, setCertificates] = useState([])\n  const [isLoading, setIsLoading] = useState(true);\n  const { scopes } = useScopes();\n  const history = useHistory();\n\n  const download = (url) => {\n    window.open(`${url}`, \"_blank\");\n  }\n\n  const cta = (status) => {\n    if(status === 'CONCLUDED') {\n      return 'EMITIR CERTIFICADO'\n    }\n\n    return 'PROCESSANDO CERTIFICADO'\n  }\n\n  useEffect(() => {\n\n    studentApi.get(`subscribed-courses/certificates`).then(response => {\n      setCertificates(response.data)\n      setIsLoading(false)\n    }).catch(error => {\n      console.warn(error)\n    })\n  }, [])\n\n  return (\n    <>\n      <Container maxWidth='md'>\n        <Box component=\"div\" mb={7}>\n          <Box mb={3}>\n            <Typography component=\"h2\" variant=\"h1\" className={classes.sectionTitle}>Meus certificados</Typography>\n            <AdsTop mb={5}/>\n          </Box>\n          {isLoading && (\n            <>\n              {[0,1,2].map((item) => (\n                  <Skeleton variant='rect' height={150} style={{marginBottom: 10}}></Skeleton>\n              ))}\n            </>\n          )}\n          {!isLoading && certificates.length === 0 && (\n            <Box mx='auto' maxWidth={700}>\n              <Card className={classes.incompleteBox}>\n                <CardContent className='content'>\n                  <Box mb={3} textAlign='center'>\n                    <Typography component='p' variant='body2'>\n                      Você está no caminho certo para adquirir novos conhecimentos e habilidades.\n                      Não desista! Explore nossos cursos e encontre aquele que melhor se encaixa nos seus objetivos.\n                      Cada passo que você dá é uma conquista rumo ao seu crescimento pessoal e profissional.\n                    </Typography>\n                  </Box>\n                  <Box mb={5} textAlign='center'>\n                    <Button\n                      variant='contained'\n                      color='primary'\n                      onClick={() => history.push('/dashboard/enrollments')}>\n                        <>\n                          <Box mr={2}>CONTINUAR CURSOS</Box>\n                          <ArrowRightAltIcon fontSize='small'/>\n                        </>\n                      </Button>\n                  </Box>\n                  <Box className='tipBox'>\n                    <Typography component='div' className='tip'>Dica:</Typography>\n                    <Typography component='p'><span role='img' aria-label='bulb'>💡</span> Defina metas semanais e reserve um tempo dedicado ao estudo. Assim, você verá seu progresso rapidamente!</Typography>\n                  </Box>\n                </CardContent>\n              </Card>\n            </Box>\n          )}\n\n          <Box mb={4} className={classes.lockedInfo}>\n            <Typography className='title'>Nossa Missão: Educação de Qualidade para Todos</Typography>\n            <Box mb={2}>\n              <Typography component='p' variant='body2'>\n                Na Kultivi, acreditamos que a educação é a chave para transformar vidas.\n                Nosso compromisso é tornar o conhecimento acessível a todos, sem barreiras.\n                E você é parte essencial desse sonho!\n              </Typography>\n            </Box>\n            <Box>\n              <Typography component='p' variant='body2'>\n                Convidamos você a compartilhar essa oportunidade com mais pessoas.\n                Indique amigos para conhecer a Kultivi e ajude-nos a espalhar a educação de qualidade para ainda mais pessoas.\n                Juntos, podemos fazer a diferença!{\" \"}\n                <Link component='button' underline='always' style={{fontWeight: 700}} onClick={() => history.push('/dashboard/referrals')}>Saiba mais aqui!</Link>\n              </Typography>\n            </Box>\n          </Box>\n          {\n            !isLoading && certificates.map((certificate, key) => (\n              <Card style={{marginBottom: 20}} key={`cert_${key}`}>\n                <CardContent className={classes.certificate}>\n                  <Box className='thumbnail'>\n                    <ColorBox color={certificate.course.category.color} />\n                  </Box>\n                  <Box className='content'>\n                    <Box mb={3}>\n                      <Typography className='title'>{certificate.course.title}</Typography>\n                      <Typography component='span' className='info'>Concluído em: {formatDate(certificate.finishedAt)} / Total de aulas: {certificate.course.classes}</Typography>\n                    </Box>\n                    <Box>\n                      <Button\n                        variant='contained'\n                        color='secondary'\n                        size='small'\n                        onClick={() => download(certificate.url)}\n                        disabled={certificate.description !== 'CONCLUDED'}\n                      >\n                        <Box mr={2}>EMITIR CERTIFICADO</Box>\n                        <ArrowRightAltIcon fontSize='small'/>\n                      </Button>\n                    </Box>\n                  </Box>\n                </CardContent>\n              </Card>\n            ))\n          }\n        </Box>\n      </Container>\n    </>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst mediaHeight = 150\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        width: \"100%\",\n        height: \"100%\",\n    },\n    category: {\n        color: theme.palette.grey[600],\n        fontSize: theme.typography.pxToRem(9),\n        letterSpacing: theme.typography.pxToRem(1),\n        fontWeight: 600,\n        textTransform: 'uppercase',\n    },\n    actionArea: {\n        height: \"100%\",\n    },\n    media: {\n        height: mediaHeight,\n        position: 'relative',\n        overflow: 'hidden',\n    },\n    content: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        height: `calc(100% - ${mediaHeight}px)`, //toda a altura do card - tamanho da imagem\n    },\n    title: {\n        fontWeight: 700,\n        color: theme.palette.grey[700],\n        fontSize: theme.typography.pxToRem(16),\n    },\n    summary: {\n        color: theme.palette.grey[500],\n        fontSize: theme.typography.pxToRem(14),\n    },\n    infoIcon: {\n        marginRight: theme.spacing(.5),\n        color: theme.palette.grey[500],\n    },\n    infoContent: {\n        fontSize: theme.typography.pxToRem(12),\n        color: theme.palette.grey[500],\n    },\n    infoIconLink: {\n        color: theme.palette.primary['main']\n    },\n    skeleton: {\n        boxShadow: '0px 2px 6px rgba(92,84,122,0.2)',\n        borderRadius: '10px',\n    }\n}))\n\nexport { useStyles }\n","import React from 'react';\nimport CardMedia from '@material-ui/core/CardMedia';\n\n\nexport default (props) => {\n  const { id, title } = props;\n\n  return (\n    <CardMedia\n      component=\"img\"\n      alt={title}\n      height=\"160\"\n      image={`https://cdn-kultivi.s3.amazonaws.com/courses/${id}.webp`}\n      title={title}\n    />\n  );\n}\n","import React from 'react';\n\nexport default (props) => {\n  const { color } = props;\n\n  var rgb = color.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b)\n  .substring(1).match(/.{2}/g).map(x => parseInt(x, 16))\n\n  var brightness = .2;\n\n  const dark = [\n      Math.floor((255-rgb[0])*brightness),\n      Math.floor((255-rgb[1])*brightness),\n      Math.floor((255-rgb[2])*brightness)\n  ];\n\n  return (\n    <div\n        style={{\n          backgroundColor:`${color}`,\n          height: 160,\n          position: 'relative',\n          overflow: 'hidden',\n        }}>\n        <div style={{\n            position: 'absolute',\n            width: 65,\n            height: 100,\n            borderStyle: 'solid',\n            borderBottomRightRadius:90,\n            borderTopRightRadius:90,\n            borderColor: 'transparent',\n            backgroundColor: `rgba(255, 255, 255, 0.2)`,\n            left: -20,\n            top: -25,\n            transform: 'rotate(90deg)',\n        }}></div>\n        <div style={{\n            position: 'absolute',\n            width: 180,\n            height: 90,\n            borderStyle: 'solid',\n            borderWidth: 24,\n            borderRadius: '50% 50% 0 0 / 100% 100% 0 0',\n            borderColor: `rgba(${dark.join(\", \")},.3)`,\n            borderBottomColor: 'transparent',\n            borderLeftColor: 'transparent',\n            right: -45,\n            bottom: -15,\n            transform: 'rotate(-50deg)',\n        }}></div>\n    </div>\n  )\n}\n","import React, {memo} from 'react';\nimport { useHistory } from 'react-router-dom'\n\nimport {\n    Card,\n    CardContent,\n    CardActionArea,\n    Typography,\n    Box,\n    LinearProgress,\n} from '@material-ui/core';\n\nimport VideocamIcon from '@material-ui/icons/Videocam';\nimport SupervisorAccountIcon from '@material-ui/icons/SupervisorAccount';\nimport TrendingFlatIcon from '@material-ui/icons/TrendingFlat';\n\nimport { useStyles } from './styles'\n\nimport Thumbnail from 'app/components/cards/Course/thumbnail/Image';\nimport MediaColor from 'app/components/cards/Course/thumbnail/MediaColor';\n\nexport default memo((props) => {\n    const classes = useStyles();\n    const history = useHistory();\n\n    const goToCourse = (slug) => {\n        history.push(`/dashboard/course/${slug}`)\n    }\n\n    function LinearProgressWithLabel(props) {\n        return (\n          <Box display=\"flex\" alignItems=\"center\" mr={1}>\n            <Box width=\"100%\" mr={1}>\n              <LinearProgress color=\"primary\" variant=\"determinate\" {...props} />\n            </Box>\n            <Box minWidth={35}>\n              <Typography variant=\"body2\" color=\"textSecondary\">{`${Math.round(\n                props.value,\n              )}%`}</Typography>\n            </Box>\n          </Box>\n        );\n    }\n\n    return (\n        <Card className={classes.root}>\n            <CardActionArea onClick={()=>goToCourse(props.slug)} className={classes.actionArea}>\n                {\n                  props.imageUploadedAt ?\n                  <Thumbnail id={props.uuid} title={props.title} /> :\n                  <MediaColor color={props.category.color} />\n                }\n                <CardContent className={classes.content}>\n                    <Box component=\"div\" mb={2}>\n                        <Typography gutterBottom component=\"span\" className={classes.category}>{props.category.title}</Typography>\n                        <Typography gutterBottom component=\"h2\" className={classes.title}>{props.title}</Typography>\n                        {props.showSummary ? <Typography component=\"p\" className={classes.summary}>{props.summary && props.summary.length > 150 ? props.summary.substring(0, 150) + \"...\" : props.summary}</Typography> : ''}\n                    </Box>\n                    <Box component=\"div\" display=\"flex\" alignItems=\"center\" flexDirection=\"row\" className={classes.info} mt=\"auto\">\n                        {props.showProgress ?\n                            <Box component=\"div\" display=\"inline\" width=\"100%\" alignItems=\"center\">\n                                <LinearProgressWithLabel value={props.progress || props.percentage} />\n                            </Box> : (\n                            <React.Fragment>\n                                <Box component=\"div\" display=\"flex\" alignItems=\"center\" mr={1}>\n                                    <VideocamIcon className={classes.infoIcon} />\n                                    <Typography component=\"span\" className={classes.infoContent}>{props.total_classes || props.totalClasses} aulas</Typography>\n                                </Box>\n                                <Box component=\"div\" display=\"flex\" alignItems=\"center\" mr=\"auto\">\n                                    <SupervisorAccountIcon className={classes.infoIcon} />\n                                    <Typography component=\"span\" className={classes.infoContent}>{props.total_enrollments || props.totalEnrollments} alunos</Typography>\n                                </Box>\n                            </React.Fragment>\n                        )}\n                        <TrendingFlatIcon fontSize=\"small\" className={[classes.infoIcon,classes.infoIconLink].join(\" \")} />\n                    </Box>\n                </CardContent>\n            </CardActionArea>\n        </Card>\n    );\n})\n","import React from 'react'\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport {\n  Card,\n  CardContent,\n } from '@material-ui/core';\n\n import { useStyles } from './styles'\n\nconst SkeletonCourse = () => {\n\n  const classes = useStyles();\n\n  return (\n    <>      \n      <Card className={classes.root}>\n        <Skeleton animation=\"wave\" variant=\"rect\" height={150} />\n          <CardContent className={classes.content}>\n            <>\n              <Skeleton animation=\"wave\" height={30} width=\"40%\" />\n              <Skeleton animation=\"wave\" height={30} width=\"80%\" />\n              <Skeleton animation=\"wave\" height={70} width=\"100%\" />\n            </>\n          </CardContent>\n      </Card>\n    </>\n  )\n}\n\nexport default SkeletonCourse\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  coursesAvailable: {\n    fontWeight: 700,\n    color: theme.palette.grey[700],\n    marginBottom: theme.spacing(2)\n  },\n  filterCategory: {\n    fontWeight: 900,\n    fontSize: theme.typography.pxToRem(14),\n    lineHeight: theme.typography.pxToRem(14),\n    marginBottom: theme.spacing(2)\n  },\n  exploringTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(21),\n  },\n  drawer: {\n    paddingLeft: theme.spacing(3),\n    paddingRight: theme.spacing(3),\n  },\n  buttonFilter: {\n    backgroundColor: \"#FFF\",\n    boxShadow: '0px 0px 4px rgba(34, 40, 43, 0.16)',\n  },\n  showAll: {\n    fontWeight: 800\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n  searchPaper: {\n    width: \"100%\",\n    padding: '2px 8px',\n    paddingLeft: '16px',\n    display: \"flex\",\n    boxShadow: '0px 2px 6px rgba(92,84,122,0.2)',\n  },\n  inputSearch: {\n    flex: 1\n  },\n  emptyText: {\n    fontSize: theme.typography.pxToRem(21),\n    color: theme.palette.grey[700],\n    fontWeight: 900\n  }\n}))\n\nexport { useStyles }\n","import React, {useEffect, useState, useCallback} from 'react'\nimport { useHistory } from 'react-router-dom'\nimport coreApi from \"app/services/core-api\";\n\nimport {\n  Box,\n  Button,\n  Drawer,\n  Grid,\n  IconButton,\n  List,\n  ListItem,\n  ListItemText,\n  ListSubheader,\n  Hidden,\n  Link,\n  Typography,\n  Paper,\n  InputBase,\n  Container,\n} from '@material-ui/core'\n\n// Icons\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SearchIcon from '@material-ui/icons/Search';\n\n// Cards\nimport CourseCard from 'app/components/cards/Course/model-3'\nimport SkeletonCourse from 'app/components/cards/Course/model-3/skeleton'\n\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport {AdsTop, AdsIncontent, VideoAdsIncontent} from \"app/components/ads/freestar\";\n\n// Lotties animations\nimport Lottie from 'react-lottie';\nimport GhostLottie from 'lotties/ghost'\n\nimport { useFormik } from 'formik'\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const history = useHistory()\n  const classes = useStyles()\n\n  // Entities\n  const [categories,setCategories] = useState([])\n  const [courses, setCourses] = useState([])\n\n  // Loading states\n  const [loadingCategories, setLoadingCategories] = useState(true)\n  const [loading, setLoading] = useState(true);\n\n  // Local rules\n  const [drawerOpen, setDrawerOpen] = useState(false)\n  const [isLastPage, setIsLastPage] = useState(false)\n\n  const [configRestCourses, setConfigRestCourses] = useState({\n    append: false, // Se false renderiza cursos do zero; Se true 'carregar mais'\n    page: 1,\n    size: 12,\n    sort: '',\n    filters: {\n      label: props.match.params?.category // Caso usuario acesse a URL diretamente com slug, seta estado inicial\n    }\n  })\n\n  // Carrega categorias\n  useEffect(() => {\n\n    coreApi.get(`/categories`).then(response => {\n      setCategories(response.data)\n    }).catch(error => {\n      console.warn(error)\n    }).finally( () => {\n      setLoadingCategories(false)\n    })\n\n  }, [])\n\n  useEffect( () => {\n\n    if(!configRestCourses.append){\n      setCourses([])\n    }\n\n    setLoading(true)\n\n    var filters = [];\n    /** Monta filtros como querystring */\n    for(var prop in configRestCourses.filters) {\n      const el = configRestCourses.filters[prop];\n      if(el) {\n        filters.push(`${prop}=${el}`)\n      }\n    }\n\n    const query = filters.length > 0 ? `&${filters.join(\"&\")}` : \"\"\n\n    coreApi.get(`discovery-units?context=course&page[number]=${configRestCourses.page}&page[size]=${configRestCourses.size}&sort=${configRestCourses.sort}${query}`)\n    .then(response => {\n\n      if(configRestCourses.append) {\n        setCourses(prev => [...prev,...response.data.items])\n      } else {\n        setCourses(response.data.items)\n      }\n      setIsLastPage(response.data.lastPage === response.data.page || response.data.lastPage === 0);\n    })\n    .catch(error => {\n      console.warn(error)\n    })\n    .finally( () =>\n      setLoading(false)\n    );\n\n  },[configRestCourses])\n\n\n  // Atualiza URL e parâmetros para busca na API\n  const handleCategory = useCallback( (slug) => {\n    const link = slug ? `/dashboard/discover/${slug}` : `/dashboard/discover`\n    history.push(link)\n    setConfigRestCourses({\n      ...configRestCourses,\n      page:1,\n      sort: '',\n      append: false,\n      filters:{\n        label: slug,\n      }\n    })\n    searchForm.resetForm({search:\"\"})\n\n  },[history,configRestCourses])\n\n  /**\n   *\n   * Reponsável por indicar ao useEffect de cursos qual\n   * a paginação e se deve manter cursos adicionando novos\n   * ou refazer a lista. */\n  const handleMore = () => {\n    setConfigRestCourses({\n      ...configRestCourses,\n      page:configRestCourses.page+1,\n      append: true,\n    })\n  }\n\n\n  /**\n   *\n   * Reponsável por indicar ao useEffect de cursos busca\n   * do campo livre. */\n  const handleSearch = (search) => {\n    const filters = {...configRestCourses.filters,search:search}\n\n    setConfigRestCourses({\n      ...configRestCourses,\n      append: false,\n      page: 1,\n      filters: filters,\n    })\n  }\n\n  const toggleDrawer = (anchor, open) => (event) => {\n    if (event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {\n      return;\n    }\n    setDrawerOpen({ ...drawerOpen, [anchor]: open });\n  };\n\n  const searchForm = useFormik({\n    initialValues: {\n      search: \"\"\n    },\n    enableReinitialize: true,\n    onSubmit: (values, actions) => {\n      handleSearch(values.search)\n    }\n  })\n\n  function FiltersForm() {\n\n    return (\n      <React.Fragment>\n        <List subheader={<ListSubheader disableSticky disableGutters className={classes.filterCategory}>Categorias</ListSubheader>}>\n          {loadingCategories ? (\n            [0,1,2,3,4,5].map( (item,key) => {\n              return (\n                <Skeleton height={30} key={key} />\n              )\n            })\n          ) : (\n            categories.map(category => {\n              const labelId = `checkbox-list-category-${category.id}`;\n              return (\n                <ListItem\n                  button\n                  component=\"a\"\n                  key={`cat-${category.id}`}\n                  onClick={ () => {\n                    handleCategory(category.slug)\n                    setDrawerOpen(false)\n                  }}\n                  disabled={configRestCourses?.filters?.label === category.slug}\n                >\n                  <ListItemText id={labelId} primary={`${category.title}`} />\n                </ListItem>\n              )\n            })\n          )}\n        </List>\n      </React.Fragment>\n    )\n  }\n\n  function ShowAll() {\n\n    const showingCategory = configRestCourses.filters?.label\n    return (\n      <Box component=\"div\" pt={4} mb={2}>\n        <Link\n          disabled={!showingCategory}\n          component=\"button\"\n          className={classes.showAll}\n          onClick={() => handleCategory(null)}\n        >Mostrar todos os cursos</Link>\n      </Box>\n    )\n  }\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" mb={3}>\n        <Container maxWidth=\"xl\">\n          <Grid container spacing={2}>\n            <Hidden smDown>\n              <Grid item xs={12} sm={12} md={3} lg={2}>\n                <ShowAll />\n                <FiltersForm />\n              </Grid>\n            </Hidden>\n            <Grid item xs={12} sm={12} md={9} lg={10}>\n              <Hidden mdUp>\n                <Box component=\"div\" mb={2} textAlign=\"right\">\n                  <Button\n                    className={classes.buttonFilter}\n                    onClick={toggleDrawer(drawerOpen, false)}\n                    startIcon={<FilterListIcon />}\n                    size=\"small\"\n                    variant=\"contained\"\n                  >Filtrar</Button>\n                </Box>\n                <ShowAll />\n              </Hidden>\n              <Box component=\"div\" mb={3} display=\"flex\" flexDirection=\"row\" justifyContent=\"space-between\" flexWrap=\"wrap\">\n                <Typography component=\"h1\" className={classes.exploringTitle}>\n                  {!loadingCategories ?\n                    (\n                      configRestCourses?.filters?.label && categories ?\n                        `Cursos de ${categories.find( (item) => item.slug === configRestCourses.filters.label)?.title}` : \"Todos os cursos\"\n                    ) : '' }\n                </Typography>\n                {/* <Box component=\"div\" mt={{xs:1,sm:0}}>\n                  <Button\n                    className={classes.buttonFilter}\n                    aria-controls=\"sort-menu\"\n                    aria-haspopup=\"true\"\n                    size=\"small\"\n                    variant=\"contained\"\n                    onClick={handleClickSort}\n                    startIcon={<SortIcon />}\n                  >Ordenar</Button>\n                  <Menu\n                    keepMounted\n                    id=\"sort-menu\"\n                    anchorEl={sortEl}\n                    open={Boolean(sortEl)}\n                    onClose={handleCloseSort}\n                  >\n                    <MenuItem onClick={()=>handleSort(\"latest\")}>\n                      {configRestCourses.sort === \"latest\" ? (\n                        <>\n                          <ListItemIcon>\n                            <CheckIcon fontSize=\"small\" />\n                          </ListItemIcon>\n                          Novos\n                        </>\n                      ) : \"Novos\"}\n                    </MenuItem>\n                    <MenuItem onClick={()=>handleSort(\"popular\")}>\n                      {configRestCourses.sort === \"popular\" ? (\n                          <>\n                            <ListItemIcon>\n                              <CheckIcon fontSize=\"small\" />\n                            </ListItemIcon>\n                            Populares\n                          </>\n                        ) : \"Populares\"}\n                    </MenuItem>\n                    <MenuItem onClick={()=>handleSort(\"featured\")}>\n                      {configRestCourses.sort === \"featured\" ? (\n                          <>\n                            <ListItemIcon>\n                              <CheckIcon fontSize=\"small\" />\n                            </ListItemIcon>\n                            Destaques\n                          </>\n                        ) : \"Destaques\"}\n                    </MenuItem>\n                  </Menu>\n                </Box> */}\n              </Box>\n              <Box component=\"div\" mb={4}>\n                <AdsTop />\n              </Box>\n              <Box component=\"div\" display=\"flex\" mb={3}>\n                <Paper component=\"form\" className={classes.searchPaper} elevation={0} onSubmitCapture={searchForm.handleSubmit}>\n                  <InputBase\n                    className={classes.inputSearch}\n                    placeholder=\"Buscar cursos\"\n                    inputProps={{ 'aria-label': 'buscar cursos' }}\n                    id=\"search\"\n                    name=\"search\"\n                    value={searchForm.values.search}\n                    onChange={searchForm.handleChange}\n                    type=\"search\"\n                  />\n                  <IconButton className={classes.iconButton} aria-label=\"search\" onClick={searchForm.handleSubmit}>\n                    <SearchIcon />\n                  </IconButton>\n                </Paper>\n              </Box>\n              {!loading && courses.length < 1 && (\n                <Box component=\"div\" display=\"flex\" justifyContent=\"center\" alignItems=\"center\" flexDirection=\"column\">\n                  <Lottie\n                    style={{\n                      maxWidth: 400,\n                      padding: 0,\n                      margin: 0,\n                    }}\n                    options={{\n                      loop: true,\n                      autoplay: true,\n                      animationData: GhostLottie,\n                      rendererSettings: {\n                        preserveAspectRatio: \"xMidYMid slice\"\n                      }\n                    }}\n                  />\n                  <Typography component=\"span\" className={classes.emptyText}>Nenhum curso encontrado</Typography>\n                </Box>\n              )}\n              <Grid container spacing={2} direction=\"row\" alignItems=\"stretch\">\n                {courses.map( (course,index) => {\n                  return (\n                    <React.Fragment key={index}>\n                      <Hidden smDown>\n                        {\n                          ( index > 6 && index%6 === 0 && (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          ))\n                        }\n                      </Hidden>\n                      <Grid item xs={12} sm={6} md={6} lg={4} key={course.id}>\n                        <CourseCard key={course.id} {...course} showSummary={true} showEnrollments={true}/>\n                      </Grid>\n                      <Hidden smDown>\n                        {index > 0 && index === 5 && (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                        )}\n                      </Hidden>\n                      <Hidden mdUp>\n                        {index > 0 && index === 1 ? (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                        ) : ( index > 2 && index%2 !== 0 && (\n                              <Grid item xs={12}>\n                                <Box component=\"div\" mb={4}>\n                                  <AdsIncontent />\n                                </Box>\n                              </Grid>\n                            )\n                        )}\n                      </Hidden>\n                    </React.Fragment>\n                  )\n                })}\n                {loading && (\n                  [0,1,2,3,4,5].map( (item,key) => {\n                    return (\n                      <Grid item xs={12} sm={6} md={6} lg={4} key={key}>\n                        <SkeletonCourse key={`sk-${key}`} />\n                      </Grid>\n                    )\n                  }))\n                }\n              </Grid>\n              { !loading && !isLastPage && (\n                <Box display=\"flex\" component=\"div\" justifyContent=\"center\" my={3}>\n                  <Button\n                    size=\"large\"\n                    color=\"secondary\"\n                    variant=\"contained\"\n                    onClick={handleMore}\n                  >Carregar mais</Button>\n                </Box>\n              )}\n            </Grid>\n          </Grid>\n        </Container>\n      </Box>\n\n      <Drawer anchor=\"left\" open={drawerOpen} onClose={toggleDrawer(drawerOpen, false)}>\n        <Box component=\"div\" px={2}>\n          <Box component=\"div\" width=\"100%\" display=\"flex\" py={1} justifyContent=\"flex-end\">\n            <IconButton onClick={() => setDrawerOpen(false)}><CloseIcon /></IconButton>\n          </Box>\n          <FiltersForm />\n        </Box>\n      </Drawer>\n    </React.Fragment>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n      display: \"flex\",\n      flexDirection: \"column\",\n      height: \"100%\",\n      width: \"100%\",\n    },\n    cover: {\n      width: \"100%\",\n      height: 270,\n      marginTop: 5,\n    },\n    category: {\n      color: theme.palette.grey[600],\n      fontSize: theme.typography.pxToRem(9),\n      letterSpacing: theme.typography.pxToRem(1),\n      fontWeight: 600,\n      textTransform: 'uppercase',\n    },\n    content: {\n      display: \"flex\",\n      flexDirection: \"column\",\n      minHeight: 140,\n    },\n    title: {\n      fontWeight: 600,\n      color: theme.palette.grey[500],\n      fontSize: theme.typography.pxToRem(14),\n    },\n    summary: {\n      color: theme.palette.grey[500],\n      fontSize: theme.typography.pxToRem(14),\n    },\n    info: {\n      color: theme.palette.primary['main'],\n      fontWeight: 700,\n      fontSize: theme.typography.pxToRem(16),\n    },\n    infoIcon: {\n      marginRight: theme.spacing(.5),\n      color: theme.palette.grey[500],\n    },\n    infoContent: {\n      fontSize: theme.typography.pxToRem(12),\n      color: theme.palette.grey[500],\n    },\n    infoIconLink: {\n      color: theme.palette.primary['main']\n    },\n    skeleton: {\n      boxShadow: '0px 2px 6px rgba(92,84,122,0.2)',\n      borderRadius: '10px',\n    }\n}))\n\nexport { useStyles }\n","import React from 'react';\nimport { useHistory } from 'react-router-dom'\n\nimport {\n    Card,\n    CardContent,\n    CardMedia,\n    CardActionArea,\n    Typography,\n    Box,\n} from '@material-ui/core';\n\nimport TrendingFlatIcon from '@material-ui/icons/TrendingFlat';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    const classes = useStyles();\n    const history = useHistory();\n\n    const goToEbook = (url) => {\n        if(!url) {\n            return false;\n        }\n        const goTo = props.isEbookPlus ? `/dashboard/aprovare/ebook/${url}` : `/dashboard/ebook/${url}`\n        history.push(goTo)\n    }\n\n    return (\n        <Card className={classes.root}>\n            <CardActionArea onClick={()=>goToEbook(props.slug)}>\n                <CardMedia\n                    className={classes.cover}\n                    image={props.thumbnail}\n                    title={props.title}\n                />\n                <CardContent className={classes.content}>\n\n                    <Box component=\"div\" mb={2}>\n                        <Typography gutterBottom component=\"span\" className={classes.category}>{!props.category ? \"Outros\" : props.category.title}</Typography>\n                        <Typography gutterBottom component=\"h2\" className={classes.title}>{props.title}</Typography>\n                        {props.showSummary && <Typography component=\"p\" className={classes.summary}>{props.summary}</Typography>}\n                    </Box>\n\n                    <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\" flexDirection=\"row\" className={classes.info} mt=\"auto\">\n                        <TrendingFlatIcon />\n                    </Box>\n\n                </CardContent>\n            </CardActionArea>\n        </Card>\n    );\n}\n","import React from 'react'\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport {\n  Card,\n  CardContent,\n } from '@material-ui/core';\n\n import { useStyles } from './styles'\n\nconst SkeletonCourse = () => {\n\n  const classes = useStyles();\n\n  return (\n    <>      \n      <Card className={classes.root}>\n        <Skeleton animation=\"wave\" variant=\"rect\" height={190} />\n          <CardContent>\n            <>\n              <Skeleton animation=\"wave\" height={30} width=\"40%\" />\n              <Skeleton animation=\"wave\" height={30} width=\"80%\" />\n              <Skeleton animation=\"wave\" height={80} width=\"100%\" />\n            </>\n          </CardContent>\n      </Card>\n    </>\n  )\n}\n\nexport default SkeletonCourse\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  coursesAvailable: {\n    fontWeight: 700,\n    color: theme.palette.grey[700],\n    marginBottom: theme.spacing(2)\n  },\n  filterCategory: {\n    fontWeight: 900,\n    fontSize: theme.typography.pxToRem(14),\n    lineHeight: theme.typography.pxToRem(14),\n    marginBottom: theme.spacing(2)\n  },\n  exploringTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(21),\n  },\n  drawer: {\n    paddingLeft: theme.spacing(3),\n    paddingRight: theme.spacing(3),\n  },\n  buttonFilter: {\n    backgroundColor: \"#FFF\",\n    boxShadow: '0px 0px 4px rgba(34, 40, 43, 0.16)',\n  },\n  showAll: {\n    fontWeight: 800\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n  emptyText: {\n    fontSize: theme.typography.pxToRem(21),\n    color: theme.palette.grey[700],\n    fontWeight: 900\n  },\n  searchPaper: {\n    width: \"100%\",\n    padding: '2px 8px',\n    paddingLeft: '16px',\n    display: \"flex\",\n    boxShadow: '0px 2px 6px rgba(92,84,122,0.2)',\n  },\n  inputSearch: {\n    flex: 1\n  },\n}))\n\nexport { useStyles }","import React, { useEffect, useState, useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport coreApi from \"app/services/core-api\";\n\nimport {\n  Box,\n  Button,\n  Drawer,\n  Grid,\n  IconButton,\n  List,\n  ListItem,\n  ListItemText,\n  ListSubheader,\n  Hidden,\n  Link,\n  Typography,\n  Container,\n  Paper,\n  InputBase,\n} from \"@material-ui/core\";\n\nimport FilterListIcon from \"@material-ui/icons/FilterList\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport SearchIcon from \"@material-ui/icons/Search\";\n\nimport EbookCard from \"app/components/cards/Ebook/model-1\";\nimport SkeletonEbook from \"app/components/cards/Ebook/model-1/skeleton\";\n\nimport { AdsTop, AdsIncontent, VideoAdsIncontent } from \"app/components/ads/freestar\";\n\nimport Skeleton from \"@material-ui/lab/Skeleton\";\n\nimport { useFormik } from \"formik\";\nimport { useStyles } from \"./styles\";\n\n// Lotties animations\nimport Lottie from \"react-lottie\";\nimport GhostLottie from \"lotties/ghost\";\n\nexport default (props) => {\n  const history = useHistory();\n  const classes = useStyles();\n\n  // Entities\n  const [categories, setCategories] = useState([]);\n  const [ebooks, setEbooks] = useState([]);\n\n  // Loading states\n  const [loadingCategories, setLoadingCategories] = useState(true);\n  const [loading, setLoading] = useState(true);\n\n  // Local rules\n  const [drawerOpen, setDrawerOpen] = useState(false);\n  const [isLastPage, setIsLastPage] = useState(false);\n\n  const [configRestEbooks, setConfigRestEbooks] = useState({\n    append: false, // Se false renderiza ebooks do zero; Se true 'carregar mais'\n    page: 1,\n    size: 12,\n    filters: {\n      label: props.match.params?.category, // Caso usuario acesse a URL diretamente com slug, seta estado inicial\n    },\n  });\n\n  // Carrega categorias\n  useEffect(() => {\n    coreApi\n      .get(`/categories`)\n      .then((response) => {\n        setCategories(response.data);\n      })\n      .catch((error) => {\n        console.warn(error);\n      })\n      .finally(() => {\n        setLoadingCategories(false);\n      });\n  }, []);\n\n  useEffect(() => {\n    if (!configRestEbooks.append) {\n      setEbooks([]);\n    }\n\n    setLoading(true);\n\n    var filters = [];\n    /** Monta filtros como querystring */\n    for (var prop in configRestEbooks.filters) {\n      const el = configRestEbooks.filters[prop];\n      if (el) {\n        filters.push(`${prop}=${el}`);\n      }\n    }\n\n    const query = filters.length > 0 ? `&${filters.join(\"&\")}` : \"\";\n\n    coreApi\n      .get(\n        `discovery-units?context=ebook&type=1&page[number]=${configRestEbooks.page}&page[size]=${configRestEbooks.size}${query}`\n      )\n      .then((response) => {\n        if (configRestEbooks.append) {\n          setEbooks((prev) => [\n            ...prev,\n            ...response.data.items,\n          ]);\n        } else {\n          setEbooks(response.data.items);\n        }\n        setIsLastPage(\n          response.data.lastPage ===\n            response.data.page ||\n            response.data.lastPage === 0\n        );\n      })\n      .catch((error) => {\n        console.warn(error);\n      })\n      .finally(() => setLoading(false));\n  }, [configRestEbooks]);\n\n  // Atualiza URL e parâmetros para busca na API\n  const handleCategory = useCallback(\n    (slug) => {\n      const link = slug ? `/dashboard/ebooks/${slug}` : `/dashboard/ebooks`;\n      history.push(link);\n      setConfigRestEbooks({\n        ...configRestEbooks,\n        page: 1,\n        append: false,\n        filters: {\n          label: slug,\n        },\n      });\n      searchForm.resetForm({search:\"\"})\n    },\n    [history, configRestEbooks]\n  );\n\n  /**\n   *\n   * Reponsável por indicar ao useEffect de ebooks qual\n   * a paginação e se deve manter ebooks adicionando novos\n   * ou refazer a lista. */\n  const handleMore = () => {\n    setConfigRestEbooks({\n      ...configRestEbooks,\n      page: configRestEbooks.page + 1,\n      append: true,\n    });\n  };\n\n  /**\n   *\n   * Reponsável por indicar ao useEffect de cursos busca\n   * do campo livre. */\n  const handleSearch = (search) => {\n    const filters = { ...configRestEbooks.filters, search: search };\n\n    setConfigRestEbooks({\n      ...configRestEbooks,\n      append: false,\n      page: 1,\n      filters: filters,\n    });\n  };\n\n  const toggleDrawer = (anchor, open) => (event) => {\n    if (\n      event.type === \"keydown\" &&\n      (event.key === \"Tab\" || event.key === \"Shift\")\n    ) {\n      return;\n    }\n    setDrawerOpen({ ...drawerOpen, [anchor]: open });\n  };\n\n  const searchForm = useFormik({\n    initialValues: {\n      search: \"\",\n    },\n    enableReinitialize: true,\n    onSubmit: (values, actions) => {\n      handleSearch(values.search);\n    },\n  });\n\n  function FiltersForm() {\n    return (\n      <React.Fragment>\n        <List\n          subheader={\n            <ListSubheader\n              disableSticky\n              disableGutters\n              className={classes.filterCategory}\n            >\n              Categorias\n            </ListSubheader>\n          }\n        >\n          {loadingCategories\n            ? [0, 1, 2, 3, 4, 5].map((item, key) => {\n                return <Skeleton height={30} key={key} />;\n              })\n            : categories.map((category) => {\n                const labelId = `checkbox-list-category-${category.id}`;\n                return (\n                  <ListItem\n                    button\n                    component=\"a\"\n                    key={`cat-${category.id}`}\n                    onClick={() => {\n                      handleCategory(category.slug);\n                      setDrawerOpen(false);\n                    }}\n                    disabled={\n                      configRestEbooks?.filters?.label === category.slug\n                    }\n                  >\n                    <ListItemText id={labelId} primary={`${category.title}`} />\n                  </ListItem>\n                );\n              })}\n        </List>\n      </React.Fragment>\n    );\n  }\n\n  function ShowAll() {\n    const showingCategory = configRestEbooks.filters?.label;\n    return (\n      <Box component=\"div\" pt={4} mb={2}>\n        <Link\n          disabled={!showingCategory}\n          component=\"button\"\n          className={classes.showAll}\n          onClick={() => handleCategory(null)}\n        >\n          Mostrar todos os eBooks\n        </Link>\n      </Box>\n    );\n  }\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" mb={3}>\n        <Container maxWidth=\"xl\">\n          <Grid container spacing={2}>\n            <Hidden smDown>\n              <Grid item xs={12} sm={12} md={3} lg={2}>\n                <ShowAll />\n                <FiltersForm />\n              </Grid>\n            </Hidden>\n            <Grid item xs={12} sm={12} md={9} lg={10}>\n              <Hidden mdUp>\n                <Box component=\"div\" mb={2} textAlign=\"right\">\n                  <Button\n                    className={classes.buttonFilter}\n                    onClick={toggleDrawer(drawerOpen, false)}\n                    startIcon={<FilterListIcon />}\n                    size=\"small\"\n                    variant=\"contained\"\n                  >\n                    Filtrar\n                  </Button>\n                </Box>\n                <ShowAll />\n              </Hidden>\n              <Box component=\"div\" mb={3}>\n                <Typography component=\"h1\" className={classes.exploringTitle}>\n                  {!loadingCategories\n                    ? configRestEbooks?.filters?.label && categories\n                      ? `eBooks de ${\n                          categories.find(\n                            (item) =>\n                              item.slug === configRestEbooks.filters.label\n                          )?.title\n                        }`\n                      : \"Todos os eBooks\"\n                    : \"\"}\n                </Typography>\n              </Box>\n              <Box component=\"div\" mb={4}>\n                <AdsTop />\n              </Box>\n              <Box component=\"div\" display=\"flex\" mb={3}>\n                <Paper\n                  component=\"form\"\n                  className={classes.searchPaper}\n                  elevation={0}\n                  onSubmitCapture={searchForm.handleSubmit}\n                >\n                  <InputBase\n                    className={classes.inputSearch}\n                    placeholder=\"Buscar eBooks\"\n                    inputProps={{ \"aria-label\": \"buscar ebooks\" }}\n                    id=\"search\"\n                    name=\"search\"\n                    value={searchForm.values.search}\n                    onChange={searchForm.handleChange}\n                    type=\"search\"\n                  />\n                  <IconButton\n                    className={classes.iconButton}\n                    aria-label=\"search\"\n                    onClick={searchForm.handleSubmit}\n                  >\n                    <SearchIcon />\n                  </IconButton>\n                </Paper>\n              </Box>\n              <Grid container spacing={2} direction=\"row\" alignItems=\"stretch\">\n                {ebooks.length < 1 && !loading ? (\n                  <Grid item xs={12}>\n                    <Box\n                      component=\"div\"\n                      display=\"flex\"\n                      justifyContent=\"center\"\n                      alignItems=\"center\"\n                      flexDirection=\"column\"\n                    >\n                      <Lottie\n                        style={{\n                          maxWidth: 400,\n                          padding: 0,\n                          margin: 0,\n                        }}\n                        options={{\n                          loop: true,\n                          autoplay: true,\n                          animationData: GhostLottie,\n                          rendererSettings: {\n                            preserveAspectRatio: \"xMidYMid slice\",\n                          },\n                        }}\n                      />\n                      <Typography\n                        component=\"span\"\n                        className={classes.emptyText}\n                      >\n                        Nenhum eBook encontrado\n                      </Typography>\n                    </Box>\n                  </Grid>\n                ) : (\n                  ebooks.map((ebook, index) => {\n                    return (\n                      <React.Fragment key={index}>\n                        <Hidden smDown>\n                          {index > 6 && index % 6 === 0 && (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          )}\n                        </Hidden>\n                        <Grid item xs={12} sm={6} md={4} key={index}>\n                          <EbookCard key={index} {...ebook} />\n                        </Grid>\n                        <Hidden smDown>\n                          {index > 0 && index === 5 && (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          )}\n                        </Hidden>\n                        <Hidden mdUp>\n                          {index > 0 && index === 1 ? (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          ) : (\n                            index > 2 &&\n                            index % 2 !== 0 && (\n                              <Grid item xs={12}>\n                                <Box component=\"div\" mb={4}>\n                                  <AdsIncontent />\n                                </Box>\n                              </Grid>\n                            )\n                          )}\n                        </Hidden>\n                      </React.Fragment>\n                    );\n                  })\n                )}\n                {loading &&\n                  [0, 1, 2, 3, 4, 5].map((item, key) => {\n                    return (\n                      <Grid item xs={12} sm={6} md={4} key={key}>\n                        <SkeletonEbook key={`sk-${key}`} />\n                      </Grid>\n                    );\n                  })}\n              </Grid>\n              {!loading && !isLastPage && (\n                <Box\n                  display=\"flex\"\n                  component=\"div\"\n                  justifyContent=\"center\"\n                  my={3}\n                >\n                  <Button\n                    size=\"large\"\n                    color=\"secondary\"\n                    variant=\"contained\"\n                    onClick={handleMore}\n                  >\n                    Carregar mais\n                  </Button>\n                </Box>\n              )}\n            </Grid>\n          </Grid>\n        </Container>\n      </Box>\n\n      <Drawer\n        anchor=\"left\"\n        open={drawerOpen}\n        onClose={toggleDrawer(drawerOpen, false)}\n      >\n        <Box component=\"div\" px={2}>\n          <Box\n            component=\"div\"\n            width=\"100%\"\n            display=\"flex\"\n            py={1}\n            justifyContent=\"flex-end\"\n          >\n            <IconButton onClick={() => setDrawerOpen(false)}>\n              <CloseIcon />\n            </IconButton>\n          </Box>\n          <FiltersForm />\n        </Box>\n      </Drawer>\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  coursesAvailable: {\n    fontWeight: 700,\n    color: theme.palette.grey[700],\n    marginBottom: theme.spacing(2)\n  },\n  filterCategory: {\n    fontWeight: 900,\n    fontSize: theme.typography.pxToRem(14),\n    lineHeight: theme.typography.pxToRem(14),\n    marginBottom: theme.spacing(2)\n  },\n  exploringTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(21),\n  },\n  drawer: {\n    paddingLeft: theme.spacing(3),\n    paddingRight: theme.spacing(3),\n  },\n  buttonFilter: {\n    backgroundColor: \"#FFF\",\n    boxShadow: '0px 0px 4px rgba(34, 40, 43, 0.16)',\n  },\n  showAll: {\n    fontWeight: 800\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n  emptyText: {\n    fontSize: theme.typography.pxToRem(21),\n    color: theme.palette.grey[700],\n    fontWeight: 900\n  },\n  searchPaper: {\n    width: \"100%\",\n    padding: '2px 8px',\n    paddingLeft: '16px',\n    display: \"flex\",\n    boxShadow: '0px 2px 6px rgba(92,84,122,0.2)',\n  },\n  inputSearch: {\n    flex: 1\n  },\n}))\n\nexport { useStyles }","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport coreApi from \"app/services/core-api\";\n\nimport {\n  Box,\n  Button,\n  Drawer,\n  Grid,\n  IconButton,\n  List,\n  ListItem,\n  ListItemText,\n  ListSubheader,\n  Hidden,\n  Link,\n  Typography,\n  Container,\n  Paper,\n  InputBase,\n  Card,\n  CardContent,\n} from \"@material-ui/core\";\n\nimport FilterListIcon from \"@material-ui/icons/FilterList\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\n\n\nimport EbookCard from \"app/components/cards/Ebook/model-1\";\nimport SkeletonEbook from \"app/components/cards/Ebook/model-1/skeleton\";\n\nimport { AdsTop, AdsIncontent, VideoAdsIncontent } from \"app/components/ads/freestar\";\n\nimport Skeleton from \"@material-ui/lab/Skeleton\";\n\nimport { useFormik } from \"formik\";\nimport { useStyles } from \"./styles\";\n\n// Lotties animations\nimport Lottie from \"react-lottie\";\nimport GhostLottie from \"lotties/ghost\";\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nexport default (props) => {\n\n  const history = useHistory();\n  const classes = useStyles();\n  const { scopes } = useScopes();\n\n\n  // Entities\n  const [categories, setCategories] = useState([]);\n  const [loadingCategories, setLoadingCategories] = useState(true);\n\n  const [ebooks, setEbooks] = useState([]);\n  const [loading, setLoading] = useState(true);\n\n  // Local rules\n  const [drawerOpen, setDrawerOpen] = useState(false);\n  const [isLastPage, setIsLastPage] = useState(false);\n\n  const [configRestEbooks, setConfigRestEbooks] = useState({\n    append: false, // Se false renderiza ebooks do zero; Se true 'carregar mais'\n    page: 1,\n    size: 12,\n  });\n\n  useEffect(() => {\n    if (!configRestEbooks.append) {\n      setEbooks([]);\n    }\n\n    setLoading(true);\n\n    var filters = [];\n    /** Monta filtros como querystring */\n    for (var prop in configRestEbooks.filters) {\n      const el = configRestEbooks.filters[prop];\n      if (el) {\n        filters.push(`${prop}=${el}`);\n      }\n    }\n\n    const query = filters.length > 0 ? `&${filters.join(\"&\")}` : \"\";\n\n    coreApi\n      .get(\n        `discovery-units?context=ebook&type=2&page[number]=${configRestEbooks.page}&page[size]=${configRestEbooks.size}${query}`\n      )\n      .then((response) => {\n        if (configRestEbooks.append) {\n          setEbooks((prev) => [\n            ...prev,\n            ...response.data.items,\n          ]);\n        } else {\n          setEbooks(response.data.items);\n        }\n        setIsLastPage(\n          response.data.lastPage ===\n            response.data.page ||\n            response.data.lastPage === 0\n        );\n      })\n      .catch((error) => {\n        console.warn(error);\n      })\n      .finally(() => setLoading(false));\n  }, [configRestEbooks]);\n\n  // Atualiza URL e parâmetros para busca na API\n  const handleCategory = useCallback(\n    (slug) => {\n      const link = slug ? `/dashboard/ebooks/${slug}` : `/dashboard/ebooks`;\n      history.push(link);\n      setConfigRestEbooks({\n        ...configRestEbooks,\n        page: 1,\n        append: false,\n        filters: {\n          label: slug,\n        },\n      });\n      searchForm.resetForm({search:\"\"})\n    },\n    [history, configRestEbooks]\n  );\n\n  /**\n   *\n   * Reponsável por indicar ao useEffect de ebooks qual\n   * a paginação e se deve manter ebooks adicionando novos\n   * ou refazer a lista. */\n  const handleMore = () => {\n    setConfigRestEbooks({\n      ...configRestEbooks,\n      page: configRestEbooks.page + 1,\n      append: true,\n    });\n  };\n\n  /**\n   *\n   * Reponsável por indicar ao useEffect de cursos busca\n   * do campo livre. */\n  const handleSearch = (search) => {\n    const filters = { ...configRestEbooks.filters, search: search };\n\n    setConfigRestEbooks({\n      ...configRestEbooks,\n      append: false,\n      page: 1,\n      filters: filters,\n    });\n  };\n\n  const toggleDrawer = (anchor, open) => (event) => {\n    if (\n      event.type === \"keydown\" &&\n      (event.key === \"Tab\" || event.key === \"Shift\")\n    ) {\n      return;\n    }\n    setDrawerOpen({ ...drawerOpen, [anchor]: open });\n  };\n\n  const searchForm = useFormik({\n    initialValues: {\n      search: \"\",\n    },\n    enableReinitialize: true,\n    onSubmit: (values, actions) => {\n      handleSearch(values.search);\n    },\n  });\n\n  function CategoriesList() {\n    return (\n      <React.Fragment>\n        <List\n          subheader={\n            <ListSubheader\n              disableSticky\n              disableGutters\n              className={classes.filterCategory}\n            >\n              Categorias\n            </ListSubheader>\n          }\n        >\n          {loadingCategories\n            ? [0, 1, 2, 3, 4, 5].map((item, key) => {\n                return <Skeleton height={30} key={key} />;\n              })\n            : categories.map((category) => {\n                const labelId = `checkbox-list-category-${category.id}`;\n                return (\n                  <ListItem\n                    button\n                    component=\"a\"\n                    key={`cat-${category.id}`}\n                    onClick={() => {\n                      handleCategory(category.slug);\n                      setDrawerOpen(false);\n                    }}\n                    disabled={\n                      configRestEbooks?.filters?.label === category.slug\n                    }\n                  >\n                    <ListItemText id={labelId} primary={`${category.title}`} />\n                  </ListItem>\n                );\n              })}\n        </List>\n      </React.Fragment>\n    );\n  }\n\n  function ShowAllCategories() {\n    const showingCategory = configRestEbooks.filters?.label;\n    return (\n      <Box component=\"div\" pt={4} mb={2}>\n        <Link\n          disabled={!showingCategory}\n          component=\"button\"\n          className={classes.showAll}\n          onClick={() => handleCategory(null)}\n        >\n          Mostrar todos os eBooks\n        </Link>\n      </Box>\n    );\n  }\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" mb={3}>\n        <Container maxWidth=\"xl\">\n          <Grid container spacing={2}>\n            <Grid item xs={12}>\n              <Box component=\"div\" mb={3}>\n                <Typography component=\"h1\" className={classes.exploringTitle}>\n                  {'Apostilas digitais para concurseiros'}\n                </Typography>\n              </Box>\n              <Box component=\"div\" mb={4}>\n                <Card>\n                  <CardContent>\n                    <Typography component=\"p\">\n                      A Editora Aprovare surgiu no ano de 2011, quando um grupo de professores e concurseiros resolveu se unir com o\n                      objetivo de fornecer materiais de estudo, dirigidos e atualizados, para aqueles que buscam aprovação nos\n                      principais concursos públicos do país.\n                    </Typography>\n                  </CardContent>\n                  <CardContent>\n                    <Typography component=\"p\">\n                      Com centenas de milhares de apostilas e livros vendidos, a Editora Aprovare tornou-se referência no mercado de conteúdo didático para concursos no Brasil e agora disponibiliza seu acervo para <strong>apoiadores da Kultivi</strong>.\n                    </Typography>\n                  </CardContent>\n                  {!scopes.includes(\"student_get_special_ebooks\") && (\n                    <CardContent>\n                      <Button\n                        href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=ebooks\"\n                        target=\"_blank\"\n                        color=\"primary\"\n                        variant=\"contained\"\n                        size='small'\n                      >\n                        <>\n                          <Box mr={1}>COMO APOIAR A KULTIVI</Box>\n                          <ArrowForwardIcon />\n                        </>\n                      </Button>\n                    </CardContent>\n                  )}\n                </Card>\n              </Box>\n              <Box component=\"div\" display=\"flex\" mb={3}>\n                <Paper\n                  component=\"form\"\n                  className={classes.searchPaper}\n                  elevation={0}\n                  onSubmitCapture={searchForm.handleSubmit}\n                >\n                  <InputBase\n                    className={classes.inputSearch}\n                    placeholder=\"Buscar\"\n                    inputProps={{ \"aria-label\": \"buscar\" }}\n                    id=\"search\"\n                    name=\"search\"\n                    value={searchForm.values.search}\n                    onChange={searchForm.handleChange}\n                    type=\"search\"\n                  />\n                  <IconButton\n                    className={classes.iconButton}\n                    aria-label=\"search\"\n                    onClick={searchForm.handleSubmit}\n                  >\n                    <SearchIcon />\n                  </IconButton>\n                </Paper>\n              </Box>\n              <Grid container spacing={2} direction=\"row\" alignItems=\"stretch\">\n                {ebooks.length < 1 && !loading ? (\n                  <Grid item xs={12}>\n                    <Box\n                      component=\"div\"\n                      display=\"flex\"\n                      justifyContent=\"center\"\n                      alignItems=\"center\"\n                      flexDirection=\"column\"\n                    >\n                      <Lottie\n                        style={{\n                          maxWidth: 400,\n                          padding: 0,\n                          margin: 0,\n                        }}\n                        options={{\n                          loop: true,\n                          autoplay: true,\n                          animationData: GhostLottie,\n                          rendererSettings: {\n                            preserveAspectRatio: \"xMidYMid slice\",\n                          },\n                        }}\n                      />\n                      <Typography\n                        component=\"span\"\n                        className={classes.emptyText}\n                      >\n                        Nenhuma apostila encontrada\n                      </Typography>\n                    </Box>\n                  </Grid>\n                ) : (\n                  ebooks.map((ebook, index) => {\n                    return (\n                      <React.Fragment key={index}>\n                        <Hidden smDown>\n                          {index > 6 && index % 6 === 0 && (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          )}\n                        </Hidden>\n                        <Grid item xs={12} sm={6} md={4} key={index}>\n                          <EbookCard isEbookPlus={true} key={index} {...ebook} />\n                        </Grid>\n                        <Hidden smDown>\n                          {index > 0 && index === 5 && (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          )}\n                        </Hidden>\n                        <Hidden mdUp>\n                          {index > 0 && index === 1 ? (\n                            <Grid item xs={12}>\n                              <Box component=\"div\" mb={4}>\n                                <AdsIncontent />\n                              </Box>\n                            </Grid>\n                          ) : (\n                            index > 2 &&\n                            index % 2 !== 0 && (\n                              <Grid item xs={12}>\n                                <Box component=\"div\" mb={4}>\n                                  <AdsIncontent />\n                                </Box>\n                              </Grid>\n                            )\n                          )}\n                        </Hidden>\n                      </React.Fragment>\n                    );\n                  })\n                )}\n                {loading &&\n                  [0, 1, 2, 3, 4, 5].map((item, key) => {\n                    return (\n                      <Grid item xs={12} sm={6} md={4} key={key}>\n                        <SkeletonEbook key={`sk-${key}`} />\n                      </Grid>\n                    );\n                  })}\n              </Grid>\n              {!loading && !isLastPage && (\n                <Box\n                  display=\"flex\"\n                  component=\"div\"\n                  justifyContent=\"center\"\n                  my={3}\n                >\n                  <Button\n                    size=\"large\"\n                    color=\"secondary\"\n                    variant=\"contained\"\n                    onClick={handleMore}\n                  >\n                    Carregar mais\n                  </Button>\n                </Box>\n              )}\n            </Grid>\n          </Grid>\n        </Container>\n      </Box>\n\n      <Drawer\n        anchor=\"left\"\n        open={drawerOpen}\n        onClose={toggleDrawer(drawerOpen, false)}\n      >\n        <Box component=\"div\" px={2}>\n          <Box\n            component=\"div\"\n            width=\"100%\"\n            display=\"flex\"\n            py={1}\n            justifyContent=\"flex-end\"\n          >\n            <IconButton onClick={() => setDrawerOpen(false)}>\n              <CloseIcon />\n            </IconButton>\n          </Box>\n        </Box>\n      </Drawer>\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    carouselItem: {\n        paddingRight: theme.spacing(1),\n        paddingBottom: '6px',\n    },\n    title: {\n        fontWeight: 800,\n        color: theme.palette.grey[700],\n        fontSize: theme.typography.pxToRem(22),\n        marginBottom: theme.spacing(2),\n        [theme.breakpoints.only('xs')]: {\n            textAlign: 'center'\n        }\n    }\n}))\n\nexport { useStyles }","import React, {useEffect, useState} from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport coreApi from 'app/services/core-api';\n\n// components\nimport EbookCard from 'app/components/cards/Ebook/model-1'\nimport Skeleton from 'app/components/cards/Course/model-3/skeleton'\n\n// Material UI Imports\nimport {\n  Box,\n } from '@material-ui/core';\n\nimport Carousel from \"react-multi-carousel\";\nimport \"react-multi-carousel/lib/styles.css\";\n\n// Styles files\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const { category, isEbookPlus } = props\n\n    // States\n    const [ebooks, setEbooks] = useState([])\n    const [loading, setLoading] = useState(true)\n\n    useEffect(() => {\n      const type = isEbookPlus ? 2 : 1\n      coreApi.get(`discovery-units?context=ebook&type=${type}&label=${category}&page[number]=1&page[size]=10`).then(response => {\n        setEbooks(response.data.items)\n      }).catch(error => {\n        console.warn(error)\n      }).finally( () => {\n        setLoading(false)\n      })\n    }, [props.category])\n\n    const classes = useStyles()\n\n    const responsive = {\n        large: {\n          breakpoint: { max: 3000, min: 1024 },\n          items: 4,\n        },\n        desktop: {\n          breakpoint: { max: 1024, min: 768 },\n          items: 3,\n        },\n        tablet: {\n          breakpoint: { max: 768, min: 464 },\n          items: 2,\n        },\n        mobile: {\n          breakpoint: { max: 464, min: 0 },\n          items: 1,\n        }\n    }\n\n    return (\n\n        <Box component=\"div\">\n            <Carousel\n                itemClass={classes.carouselItem}\n                responsive={responsive}\n                arrows={!loading}\n                partialVisible\n              >\n              {loading ?\n                [0,1,2,3,4,5].map( (key) => {\n                  return <Skeleton key={key} />\n                }) :\n                ebooks.map((ebook,index) => (\n                  <EbookCard key={index} {...ebook} />\n                ))\n              }\n            </Carousel>\n        </Box>\n\n    )\n}\n","import { makeStyles } from '@material-ui/core/styles'\nimport styled, { keyframes } from 'styled-components'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n        padding: `${theme.spacing(2)}px ${theme.spacing(2)}px`,\n        marginBottom: theme.spacing(3),\n        fontSize: theme.typography.pxToRem(14)\n    },\n    warning: {\n        backgroundColor: theme.palette.warning.main\n    },\n    error: {\n        backgroundColor: theme.palette.error.main\n    },\n    primary: {\n        backgroundColor: theme.palette.primary.main,\n        color: theme.palette.getContrastText(theme.palette.primary.dark),\n        fontWeight: 700,\n    },\n    secondary: {\n        backgroundColor: theme.palette.secondary.main,\n        color: \"#FFF\",\n        fontWeight: 700\n    },\n}))\n\n// Use Styled Components\nconst apearFromTop = keyframes`\n  from {\n    opacity: 0;\n    transform: translateY(-50px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n`;\n\nconst AnimationContainer = styled.div `\n  animation: ${apearFromTop} 1s\n`;\n\n\nexport { useStyles, AnimationContainer }","import React from \"react\";\n\nimport { Paper, Box, Button } from \"@material-ui/core\";\n\nimport { useStyles, AnimationContainer } from \"./styles\";\n\nexport default ({ type, message }) => {\n  const classes = useStyles();\n\n  function PaymentPending({ message }) {\n    return (\n      <Paper\n        elevation={0}\n        className={[classes.root, classes.secondary].join(\" \")}\n      >\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexWrap=\"wrap\"\n          flexDirection={{ sm: \"row\" }}\n          justifyContent={{ sm: \"space-between\" }}\n          alignItems=\"center\"\n        >\n          {message ?? \"Olá, seu boleto ainda está pendente.\"}\n        </Box>\n      </Paper>\n    );\n  }\n\n  function ProcessingPayment({ message }) {\n    return (\n      <Paper\n        elevation={0}\n        className={[classes.root, classes.secondary].join(\" \")}\n      >\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexWrap=\"wrap\"\n          flexDirection={{ sm: \"row\" }}\n          justifyContent={{ sm: \"space-between\" }}\n          alignItems=\"center\"\n        >\n          {message ?? \"Olá, ainda estamos processando seu pagamento\"}\n        </Box>\n      </Paper>\n    );\n  }\n\n  function SubscriptionRequiredBar({ message }) {\n    return (\n      <Paper\n        elevation={0}\n        className={[classes.root, classes.secondary].join(\" \")}\n      >\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexWrap=\"wrap\"\n          flexDirection={{ sm: \"row\" }}\n          justifyContent={{ sm: \"space-between\" }}\n          alignItems=\"center\"\n        >\n          {message ??\n            \"Acelere com os benefícios e ferramentas exclusivas do Kultivi+\"}\n          <Button\n            href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=notification-bar\"\n            target=\"_blank\"\n          >\n            SAIBA MAIS\n          </Button>\n        </Box>\n      </Paper>\n    );\n  }\n\n  return (\n    <AnimationContainer>\n      {type === \"subscriptionRequired\" && (\n        <SubscriptionRequiredBar message={message} />\n      )}\n      {type === \"processingPayment\" && <ProcessingPayment message={message} />}\n      {type === \"paymentPending\" && <PaymentPending message={message} />}\n    </AnimationContainer>\n  );\n};\n","\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  chip: {\n    color: \"#FFF\",\n    fontWeight: \"bold\",\n    marginBottom: theme.spacing(1),\n    [theme.breakpoints.down('md')]: {\n      marginBottom: theme.spacing(2),\n    }\n  },\n  ebookTitle: {\n    fontSize: theme.typography.pxToRem(46),\n    fontWeight: 900,\n    marginBottom: theme.spacing(4),\n    [theme.breakpoints.down('md')]: {\n      fontSize: theme.typography.pxToRem(38),\n    }\n  },\n  cardEbook: {\n    width: \"100%\",\n    maxWidth: 320,\n    marginLeft: \"auto\",\n    [theme.breakpoints.down('md')]: {\n      marginRight: \"auto\",\n    }\n  },\n  ebookMedia: {\n    height: 320\n  },\n  ebookContent: {\n    height: \"100%\",\n    borderRadius: 0,\n    paddingTop: theme.spacing(4),\n    paddingBottom: theme.spacing(4),\n  },\n  ebookSectionTitle: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 800,\n    marginBottom: theme.spacing(2),\n  },\n  ebookSectionTitleRelatedCourses: {\n    marginBottom: theme.spacing(0),\n    marginRight: theme.spacing(1),\n  },\n  relatedEbooksAction: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n}))\n\nexport { useStyles }\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport coreApi from \"app/services/core-api\";\nimport studentApi from \"app/services/student-api\";\n\nimport {\n  Container,\n  Box,\n  Button,\n  Typography,\n  Chip,\n  Paper,\n  Grid,\n  Card,\n  CardMedia,\n  CardActions,\n  CircularProgress,\n  Link,\n} from \"@material-ui/core\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\n\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\n\nimport { useScopes } from \"app/contexts/ScopesContext\";\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\nimport RelatedEbooks from \"app/components/layouts/RelatedEbooks\";\nimport { AdsTop, AdsIncontent } from \"app/components/ads/freestar\";\nimport NotificationKlubi from \"app/components/notificationBar/KultiviPlus\";\n\nimport { useStyles } from \"./styles\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const { setSnackValues } = useSnackbar();\n  const { scopes } = useScopes();\n  const history = useHistory();\n\n  const [ebook, setEbook] = useState({});\n  const [isLoading, setIsLoading] = useState(true);\n  const { slug } = props.match.params;\n\n  const [downloading, setDownloading] = React.useState(false);\n\n  useEffect(() => {\n    setIsLoading(true);\n    coreApi\n      .get(`/ebooks/${slug}`)\n      .then((response) => {\n        setEbook(response.data);\n      })\n      .catch((err) => {\n        console.warn(err.data);\n      })\n      .finally(() => {\n        setIsLoading(false);\n      });\n  }, [slug]);\n\n  function _handleDownload() {\n    setDownloading(true);\n    setSnackValues({\n      message: \"Aguarde enquanto processamos seu e-book.\",\n      open: true,\n    });\n    studentApi\n      .get(`digital_collections/${slug}/download`, {\n        method: \"GET\",\n      })\n      .then((response) => {\n        const url = response.data.url;\n        const link = document.createElement(\"a\");\n        link.href = url;\n        link.target = '_blank';\n        link.setAttribute(\"download\", `${ebook.slug}.pdf`);\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n        setSnackValues({\n          message: \"Caso seu e-book não baixe automaticamente, verifique o bloqueio de pop-up do seu navegador.\",\n          open: true,\n        });\n      })\n      .catch((error) => {\n        console.error(error);\n        setSnackValues({\n          message: \"OPS! Erro ao baixar o arquivo. Tente novamente mais tarde.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setDownloading(false);\n      });\n  }\n\n  const goTo = (url) => {\n    history.push(`${url}`);\n  };\n\n  return (\n    <>\n      <Box component=\"div\" mb={7}>\n        <Container>\n          {!scopes.includes(\"student_get_digital_collections\") && (\n              <NotificationKlubi\n                type=\"subscriptionRequired\"\n                message=\"Este e outros materiais são exclusivos para alunos Kultivi+\"\n              />\n            )}\n          <Grid container spacing={3} justify=\"space-between\">\n            <Grid item xs={12} md={8} lg={6}>\n              <Box component=\"div\" mb={3}>\n                {isLoading ? (\n                  <>\n                    <Skeleton\n                      animation=\"wave\"\n                      variant=\"rect\"\n                      height={30}\n                      width={70}\n                    />\n                    <Skeleton\n                      animation=\"wave\"\n                      variant=\"text\"\n                      height={80}\n                      style={{ marginBottom: 18 }}\n                    />\n                    {[0, 1, 2].map((item, index) => (\n                      <Skeleton key={index} animation=\"wave\" variant=\"text\" />\n                    ))}\n                  </>\n                ) : (\n                  <>\n                    {ebook.category && (\n                      <Chip\n                        label={ebook.category.title}\n                        style={{ backgroundColor: `${ebook.category.color}` }}\n                        className={classes.chip}\n                      />\n                    )}\n                    <Typography\n                      component=\"h1\"\n                      variant=\"h1\"\n                      className={classes.ebookTitle}\n                    >\n                      {ebook.title}\n                    </Typography>\n                    <Typography component=\"p\">{ebook.summary}</Typography>\n                  </>\n                )}\n              </Box>\n            </Grid>\n            <Grid item xs={12} md={4}>\n              <Card className={classes.cardEbook}>\n                {isLoading ? (\n                  <React.Fragment>\n                    <Skeleton\n                      animation=\"wave\"\n                      variant=\"rect\"\n                      className={classes.ebookMedia}\n                    />\n                    <Box component=\"div\" width=\"95%\" mx=\"auto\" py={2}>\n                      <Skeleton animation=\"wave\" height={70} />\n                    </Box>\n                  </React.Fragment>\n                ) : (\n                  <>\n                    <CardMedia\n                      className={classes.ebookMedia}\n                      image={ebook.thumbnail}\n                      title={ebook.title}\n                    />\n                    <CardActions>\n                      <Box component=\"div\" width=\"95%\" mx=\"auto\" mb={1}>\n                        <Button\n                          id=\"downloadEbook\"\n                          fullWidth\n                          color=\"primary\"\n                          variant=\"contained\"\n                          onClick={_handleDownload}\n                          disabled={\n                            !scopes.includes(\n                              \"student_get_digital_collections\"\n                            ) || downloading\n                          }\n                        >\n                          {!downloading ? (\n                            \"ACESSAR MATERIAL\"\n                          ) : (\n                            <CircularProgress size={30} color=\"inherit\" />\n                          )}\n                        </Button>\n                      </Box>\n                    </CardActions>\n                  </>\n                )}\n              </Card>\n            </Grid>\n          </Grid>\n        </Container>\n      </Box>\n\n      <Box component=\"div\" mb={7}>\n        <Paper elevation={0} className={classes.ebookContent}>\n          <Container>\n            <Grid container spacing={3}>\n              <Grid item xs={12}>\n                <Box component=\"div\" mb={3}>\n                  <AdsTop />\n                </Box>\n              </Grid>\n              <Grid item xs={12} lg={8}>\n                <Box component=\"div\" mb={6}>\n                  <Typography\n                    component=\"h2\"\n                    variant=\"h2\"\n                    className={classes.ebookSectionTitle}\n                  >\n                    Sobre o e-book\n                  </Typography>\n                  {isLoading ? (\n                    [0, 1, 2, 4, 5, 6].map((item, index) => (\n                      <Skeleton key={index} animation=\"wave\" variant=\"text\" />\n                    ))\n                  ) : (\n                    <Box\n                      component=\"div\"\n                      dangerouslySetInnerHTML={{ __html: ebook.description }}\n                    />\n                  )}\n                </Box>\n                <Box component=\"div\" mb={4}>\n                  <AdsIncontent />\n                </Box>\n              </Grid>\n            </Grid>\n          </Container>\n        </Paper>\n      </Box>\n\n      <Box component=\"div\" mb={7}>\n        <Container>\n          {!isLoading && (\n            <React.Fragment>\n              <Box\n                component=\"div\"\n                display=\"flex\"\n                flexDirection=\"row\"\n                alignItems=\"center\"\n                mb={4}\n              >\n                <Typography\n                  component=\"h2\"\n                  variant=\"h2\"\n                  className={[\n                    classes.ebookSectionTitle,\n                    classes.ebookSectionTitleRelatedCourses,\n                  ].join(\" \")}\n                >\n                  {!ebook.category\n                    ? \"Mais e-books\"\n                    : `Mais e-books sobre ${ebook.category?.title}`}\n                </Typography>\n                <Link\n                  component=\"button\"\n                  onClick={() =>\n                    goTo(`/dashboard/ebooks/${ebook.category?.slug}`)\n                  }\n                  className={[\n                    classes.seeMore,\n                    classes.relatedEbooksAction,\n                  ].join(\" \")}\n                >\n                  Ver tudo <ChevronRightIcon />\n                </Link>\n              </Box>\n              <RelatedEbooks category={ebook.category?.slug} />\n            </React.Fragment>\n          )}\n        </Container>\n      </Box>\n    </>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    carouselItem: {\n        paddingRight: theme.spacing(1),\n        paddingBottom: '6px',\n    },\n    title: {\n        fontWeight: 800,\n        color: theme.palette.grey[700],\n        fontSize: theme.typography.pxToRem(22),\n        marginBottom: theme.spacing(2),\n        [theme.breakpoints.only('xs')]: {\n            textAlign: 'center'\n        }\n    }\n}))\n\nexport { useStyles }","import React, {useEffect, useState} from 'react'\nimport { useHistory } from 'react-router-dom'\nimport coreApi from 'app/services/core-api';\nimport EbookCard from 'app/components/cards/Ebook/model-1'\nimport Skeleton from 'app/components/cards/Course/model-3/skeleton'\nimport {\n  Box,\n } from '@material-ui/core';\n\nimport Carousel from \"react-multi-carousel\";\nimport \"react-multi-carousel/lib/styles.css\";\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    // States\n    const [ebooks, setEbooks] = useState([])\n    const [loading, setLoading] = useState(true)\n\n    useEffect(() => {\n      coreApi.get(`discovery-units?context=ebook&type=2&page[number]=1&page[size]=10`).then(response => {\n        setEbooks(response.data.items)\n      }).catch(error => {\n        console.warn(error)\n      }).finally( () => {\n        setLoading(false)\n      })\n    }, [props.category])\n\n    const history = useHistory()\n    const classes = useStyles()\n\n    const responsive = {\n        large: {\n          breakpoint: { max: 3000, min: 1024 },\n          items: 4,\n        },\n        desktop: {\n          breakpoint: { max: 1024, min: 768 },\n          items: 3,\n        },\n        tablet: {\n          breakpoint: { max: 768, min: 464 },\n          items: 2,\n        },\n        mobile: {\n          breakpoint: { max: 464, min: 0 },\n          items: 1,\n        }\n    }\n\n    return (\n\n        <Box component=\"div\">\n            <Carousel\n                itemClass={classes.carouselItem}\n                responsive={responsive}\n                arrows={!loading}\n                partialVisible\n              >\n              {loading ?\n                [0,1,2,3,4,5].map( (key) => {\n                  return <Skeleton key={key} />\n                }) :\n                ebooks.map((ebook,index) => (\n                  <EbookCard isEbookPlus={true} key={index} {...ebook} />\n                ))\n              }\n            </Carousel>\n        </Box>\n\n    )\n}\n","\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  chip: {\n    color: \"#FFF\",\n    fontWeight: \"bold\",\n    marginBottom: theme.spacing(1),\n    [theme.breakpoints.down('md')]: {\n      marginBottom: theme.spacing(2),\n    }\n  },\n  ebookTitle: {\n    fontSize: theme.typography.pxToRem(46),\n    fontWeight: 900,\n    marginBottom: theme.spacing(4),\n    [theme.breakpoints.down('md')]: {\n      fontSize: theme.typography.pxToRem(38),\n    }\n  },\n  cardEbook: {\n    width: \"100%\",\n    maxWidth: 320,\n    marginLeft: \"auto\",\n    [theme.breakpoints.down('md')]: {\n      marginRight: \"auto\",\n    }\n  },\n  ebookMedia: {\n    height: 320\n  },\n  ebookContent: {\n    height: \"100%\",\n    borderRadius: 0,\n    paddingTop: theme.spacing(4),\n    paddingBottom: theme.spacing(4),\n  },\n  ebookSectionTitle: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 800,\n    marginBottom: theme.spacing(2),\n  },\n  ebookSectionTitleRelatedCourses: {\n    marginBottom: theme.spacing(0),\n    marginRight: theme.spacing(1),\n  },\n  relatedEbooksAction: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n}))\n\nexport { useStyles }\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport coreApi from \"app/services/core-api\";\nimport studentApi from \"app/services/student-api\";\n\nimport {\n  Container,\n  Box,\n  Button,\n  Typography,\n  Chip,\n  Paper,\n  Grid,\n  Card,\n  CardMedia,\n  CardActions,\n  CircularProgress,\n  Link,\n} from \"@material-ui/core\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\n\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\n\nimport { useScopes } from \"app/contexts/ScopesContext\";\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\nimport RelatedEbooksPlus from \"app/components/layouts/RelatedEbooksPlus\";\nimport { AdsTop, AdsIncontent } from \"app/components/ads/freestar\";\nimport NotificationKlubi from \"app/components/notificationBar/KultiviPlus\";\n\nimport { useStyles } from \"./styles\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const { setSnackValues } = useSnackbar();\n  const { scopes } = useScopes();\n  const history = useHistory();\n\n  const [ebook, setEbook] = useState({});\n  const [isLoading, setIsLoading] = useState(true);\n  const { slug } = props.match.params;\n\n  const [downloading, setDownloading] = React.useState(false);\n\n  useEffect(() => {\n    setIsLoading(true);\n    coreApi\n      .get(`/ebooks/${slug}`)\n      .then((response) => {\n        setEbook(response.data);\n      })\n      .catch((err) => {\n        console.warn(err.data);\n      })\n      .finally(() => {\n        setIsLoading(false);\n      });\n  }, [slug]);\n\n  function _handleDownload() {\n    setDownloading(true);\n    setSnackValues({\n      message: \"Aguarde enquanto processamos sua apostila.\",\n      open: true,\n    });\n    studentApi\n      .get(`digital_collections/plus/${slug}/download`, {\n        method: \"GET\",\n      })\n      .then((response) => {\n        const url = response.data.url;\n        const link = document.createElement(\"a\");\n        link.href = url;\n        link.target = '_blank';\n        link.setAttribute(\"download\", `${ebook.slug}.pdf`);\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n        setSnackValues({\n          message: \"Caso sua apostila não baixe automaticamente, verifique o bloqueio de pop-up do seu navegador.\",\n          open: true,\n        });\n      })\n      .catch((error) => {\n        console.error(error);\n        setSnackValues({\n          message: \"OPS! Erro ao baixar o arquivo. Tente novamente mais tarde.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setDownloading(false);\n      });\n  }\n\n  const goTo = (url) => {\n    history.push(`${url}`);\n  };\n\n  return (\n    <>\n      <Box component=\"div\" mb={7}>\n        <Container>\n          {!scopes.includes(\"student_get_special_ebooks\") && (\n              <NotificationKlubi\n                type=\"subscriptionRequired\"\n                message=\"Este e outros materiais são exclusivos para apoiadores do 'Kultivi Concursos'\"\n              />\n            )}\n          <Grid container spacing={3} justify=\"space-between\">\n            <Grid item xs={12} md={8} lg={6}>\n              <Box component=\"div\" mb={3}>\n                {isLoading ? (\n                  <>\n                    <Skeleton\n                      animation=\"wave\"\n                      variant=\"rect\"\n                      height={30}\n                      width={70}\n                    />\n                    <Skeleton\n                      animation=\"wave\"\n                      variant=\"text\"\n                      height={80}\n                      style={{ marginBottom: 18 }}\n                    />\n                    {[0, 1, 2].map((item, index) => (\n                      <Skeleton key={index} animation=\"wave\" variant=\"text\" />\n                    ))}\n                  </>\n                ) : (\n                  <>\n                    {ebook.category && (\n                      <Chip\n                        label={ebook.category.title}\n                        style={{ backgroundColor: `${ebook.category.color}` }}\n                        className={classes.chip}\n                      />\n                    )}\n                    <Typography\n                      component=\"h1\"\n                      variant=\"h1\"\n                      className={classes.ebookTitle}\n                    >\n                      {ebook.title}\n                    </Typography>\n                    <Typography component=\"p\">{ebook.summary}</Typography>\n                  </>\n                )}\n              </Box>\n            </Grid>\n            <Grid item xs={12} md={4}>\n              <Card className={classes.cardEbook}>\n                {isLoading ? (\n                  <React.Fragment>\n                    <Skeleton\n                      animation=\"wave\"\n                      variant=\"rect\"\n                      className={classes.ebookMedia}\n                    />\n                    <Box component=\"div\" width=\"95%\" mx=\"auto\" py={2}>\n                      <Skeleton animation=\"wave\" height={70} />\n                    </Box>\n                  </React.Fragment>\n                ) : (\n                  <>\n                    <CardMedia\n                      className={classes.ebookMedia}\n                      image={ebook.thumbnail}\n                      title={ebook.title}\n                    />\n                    <CardActions>\n                      <Box component=\"div\" width=\"95%\" mx=\"auto\" mb={1}>\n                        <Button\n                          id=\"downloadEbook\"\n                          fullWidth\n                          color=\"primary\"\n                          variant=\"contained\"\n                          onClick={_handleDownload}\n                          disabled={\n                            !scopes.includes(\n                              \"student_get_special_ebooks\"\n                            ) || downloading\n                          }\n                        >\n                          {!downloading ? (\n                            \"ACESSAR MATERIAL\"\n                          ) : (\n                            <CircularProgress size={30} color=\"inherit\" />\n                          )}\n                        </Button>\n                      </Box>\n                    </CardActions>\n                  </>\n                )}\n              </Card>\n            </Grid>\n          </Grid>\n        </Container>\n      </Box>\n\n      <Box component=\"div\" mb={7}>\n        <Paper elevation={0} className={classes.ebookContent}>\n          <Container>\n            <Grid container spacing={3}>\n              <Grid item xs={12}>\n                <Box component=\"div\" mb={3}>\n                  <AdsTop />\n                </Box>\n              </Grid>\n              <Grid item xs={12} lg={8}>\n                <Box component=\"div\" mb={6}>\n                  <Typography\n                    component=\"h2\"\n                    variant=\"h2\"\n                    className={classes.ebookSectionTitle}\n                  >\n                    Sobre o e-book\n                  </Typography>\n                  {isLoading ? (\n                    [0, 1, 2, 4, 5, 6].map((item, index) => (\n                      <Skeleton key={index} animation=\"wave\" variant=\"text\" />\n                    ))\n                  ) : (\n                    <Box\n                      component=\"div\"\n                      dangerouslySetInnerHTML={{ __html: ebook.description }}\n                    />\n                  )}\n                </Box>\n                <Box component=\"div\" mb={4}>\n                  <AdsIncontent />\n                </Box>\n              </Grid>\n            </Grid>\n          </Container>\n        </Paper>\n      </Box>\n\n      <Box component=\"div\" mb={7}>\n        <Container>\n          {!isLoading && (\n            <React.Fragment>\n              <Box\n                component=\"div\"\n                display=\"flex\"\n                flexDirection=\"row\"\n                alignItems=\"center\"\n                mb={4}\n              >\n                <Typography\n                  component=\"h2\"\n                  variant=\"h2\"\n                  className={[\n                    classes.ebookSectionTitle,\n                    classes.ebookSectionTitleRelatedCourses,\n                  ].join(\" \")}\n                >\n                  {!ebook.category\n                    ? \"Mais apostilas\"\n                    : `Mais apostilas sobre ${ebook.category?.title}`}\n                </Typography>\n                <Link\n                  component=\"button\"\n                  onClick={() =>\n                    goTo(`/dashboard/aprovare`)\n                  }\n                  className={[\n                    classes.seeMore,\n                    classes.relatedEbooksAction,\n                  ].join(\" \")}\n                >\n                  Ver tudo <ChevronRightIcon />\n                </Link>\n              </Box>\n              <RelatedEbooksPlus />\n            </React.Fragment>\n          )}\n        </Container>\n      </Box>\n    </>\n  );\n};\n","import React, { useEffect } from \"react\";\nimport {\n  Box,\n  Grid,\n  Button,\n  TextField,\n  CircularProgress,\n  Snackbar,\n  IconButton,\n  InputLabel,\n  FormControl,\n  Select,\n} from \"@material-ui/core\";\n\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nimport { useFormik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport { useAuth } from \"app/contexts/AuthContext\";\n\nimport systemApi from \"app/services/system-api\";\nimport accountApi from \"app/services/account-api\";\n\nconst validationSchema = yup.object({\n  firstName: yup.string().trim().required(\"Nome é obrigatório\"),\n  surname: yup.string().trim().required(\"Sobrenome é obrigatório\"),\n  educationLevelId: yup.number().required(\"Escolaridade é obrigatório\"),\n});\n\nexport default (props) => {\n\n  const { refreshUserInfo } = useAuth();\n\n  const [snackValues, setSnackValues] = React.useState({\n    message: \"\",\n    open: false,\n  });\n\n  const [states, setStates] = React.useState([]);\n  const [cities, setCities] = React.useState([]);\n  const [schooling, setSchooling] = React.useState([]);\n  const [loadingData, setLoadingData] = React.useState(true);\n  const [loadingCities, setLoadingCities] = React.useState(false);\n  const [isForeign, setIsForeign] = React.useState(false);\n\n  const [formValues, setFormValues] = React.useState({\n    firstName: \"\",\n    surname: \"\",\n    stateId: \"\",\n    cityId: \"\",\n    educationLevelId: \"\",\n  });\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setSnackValues({ open: false });\n  };\n\n  const formik = useFormik({\n    initialValues: formValues,\n    validationSchema: validationSchema,\n    enableReinitialize: true,\n    onSubmit: (values, actions) => {\n      actions.setSubmitting(true);\n\n      accountApi\n        .patch(`/me/profile`, {\n          isForeign: !!isForeign,\n          firstName: values.firstName,\n          surname: values.surname,\n          cityId: String(values.cityId) ?? null,\n          stateId: String(values.stateId) ?? null,\n          educationLevelId: String(values.educationLevelId)\n        })\n        .then((response) => {\n          const fullname = `${values.firstName} ${values.surname}`;\n          refreshUserInfo({fullname, firstname: values.firstName, surname: values.surname });\n          setSnackValues({\n            message: \"Seus dados foram atualizados com sucesso.\",\n            open: true,\n          });\n        })\n        .catch((err) => {\n          const {response} = err\n          if (response && response.data) {\n            const {\n              data: { errors },\n            } = response;\n            setSnackValues({\n              message: errors.at(0),\n              open: true,\n            });\n          } else {\n            setSnackValues({\n              message: \"Ops! Falha ao atualizar seus dados. Tente novamente.\",\n              open: true,\n            });\n          }\n        })\n        .finally(() => {\n          actions.setSubmitting(false);\n        });\n    },\n  });\n\n  useEffect(() => {\n    async function getData() {\n      try {\n        setLoadingData(true);\n\n        const [states, levels, profile] = await Promise.all([\n          systemApi.get(\"countries/BR/states\"),\n          systemApi.get(\"education-levels\"),\n          accountApi.get(\"me/profile\"),\n        ]);\n\n        const cities = profile.data?.stateId\n          ? await systemApi.get(\n              `states/${profile.data.stateId}/cities`\n            )\n          : [];\n\n        setIsForeign(profile.data?.isForeign ?? false);\n        setStates(states.data);\n        setCities(cities.data ?? []);\n        setSchooling(levels.data);\n\n        setFormValues({\n          firstName: profile.data?.firstName,\n          surname: profile.data?.surname,\n          stateId: profile.data?.stateId ?? \"\",\n          cityId: profile.data?.cityId ?? \"\",\n          educationLevelId: profile.data?.educationLevelId ?? \"\",\n        });\n        setLoadingData(false);\n      } catch (error) {\n        setLoadingData(true);\n        setSnackValues({\n          message: \"Ops! Falha ao carregar dados. Tente novamente.\",\n          open: true,\n        });\n      }\n    }\n\n    getData();\n  }, []);\n\n  const handleChangeState = (e) => {\n    const target = e.target;\n\n    formik.handleChange(e);\n\n    if (target.value !== \"\") {\n      setLoadingCities(true);\n      setCities([]);\n\n      systemApi\n        .get(`states/${target.value}/cities`)\n        .then((response) => {\n          setCities(response.data);\n        })\n        .finally(() => {\n          formik.setFieldValue(\"cityId\", \"\");\n          setLoadingCities(false);\n        });\n    }\n  };\n\n  return (\n    <React.Fragment>\n      {loadingData ? (\n        <Box\n          width=\"100%\"\n          height={300}\n          display=\"flex\"\n          justifyContent=\"center\"\n          alignItems=\"center\"\n        >\n          <CircularProgress size={50} />\n        </Box>\n      ) : (\n        <form name=\"form-profile\" onSubmit={formik.handleSubmit}>\n          <Grid container spacing={2}>\n            <Grid item xs={12} lg={6}>\n              <TextField\n                label=\"Primeiro nome\"\n                id=\"firstName\"\n                name=\"firstName\"\n                variant=\"outlined\"\n                type=\"text\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.firstName}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={\n                  formik.touched.firstName && Boolean(formik.errors.firstName)\n                }\n                helperText={formik.touched.firstName && formik.errors.firstName}\n              />\n            </Grid>\n            <Grid item xs={12} lg={6}>\n              <TextField\n                label=\"Sobrenome\"\n                id=\"surname\"\n                name=\"surname\"\n                variant=\"outlined\"\n                type=\"text\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.surname}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={formik.touched.surname && Boolean(formik.errors.surname)}\n                helperText={formik.touched.surname && formik.errors.surname}\n              />\n            </Grid>\n            {!isForeign && (\n              <React.Fragment>\n                <Grid item xs={12} lg={6}>\n                  <FormControl required={!isForeign} variant=\"outlined\" fullWidth>\n                    <InputLabel id=\"stateId\">Estado</InputLabel>\n                    <Select\n                      required\n                      native\n                      labelId=\"stateId\"\n                      name=\"stateId\"\n                      label=\"Estado\"\n                      value={formik.values.stateId}\n                      onChange={handleChangeState}\n                      onBlur={formik.handleBlur}\n                      disabled={isForeign}\n                      displayEmpty\n                    >\n                      <option key={'state_0'}  aria-label=\"\" value=\"\" disabled></option>\n                      {states.map((state) => (\n                        <option key={`stateId_${state.id}`} value={state.id}>{state.name} ({state.code})</option>\n                      ))}\n                    </Select>\n                  </FormControl>\n                </Grid>\n                <Grid item xs={12} lg={6}>\n                  <FormControl required={!isForeign && !loadingCities} variant=\"outlined\" fullWidth>\n                    <InputLabel id=\"cityId\">{loadingCities ? 'Carregando ...' : \"Cidade\"}</InputLabel>\n                    <Select\n                      native\n                      label={loadingCities ? 'Carregando ...' : \"Cidade\"}\n                      labelId=\"cityId\"\n                      name=\"cityId\"\n                      value={formik.values.cityId}\n                      onChange={formik.handleChange}\n                      onBlur={formik.handleBlur}\n                      disabled={isForeign || loadingCities || cities?.length < 1}\n                      displayEmpty\n                    >\n                      <option key={'city_0'} aria-label=\"\" value=\"\" disabled></option>\n                      {\n                        cities?.map((city) => (\n                          <option key={`cityId_${city.id}`} value={city.id}>{city.name}</option>\n                        ))\n                      }\n                    </Select>\n                  </FormControl>\n                </Grid>\n              </React.Fragment>\n            )}\n            <Grid item xs={12}>\n              <FormControl required variant=\"outlined\" fullWidth>\n                <InputLabel id=\"educationLevelId\">Escolaridade</InputLabel>\n                <Select\n                  native\n                  required\n                  label=\"Escolaridade\"\n                  labelId=\"educationLevelId\"\n                  name=\"educationLevelId\"\n                  value={formik.values.educationLevelId}\n                  onChange={formik.handleChange}\n                  onBlur={formik.handleBlur}\n                >\n                  <option key={'educationLevelId_0'} value=\"\" disabled></option>\n                  {schooling.map((level) => (\n                    <option key={`educationLevelId_${level.id}`} value={level.id}>\n                      {level.level}\n                    </option>\n                  ))}\n                </Select>\n              </FormControl>\n            </Grid>\n            <Grid item xs={12}>\n              <Box component=\"div\" textAlign=\"right\">\n                <Button\n                  color=\"primary\"\n                  type=\"submit\"\n                  disabled={formik.isSubmitting || !formik.isValid}\n                >\n                  {formik.isSubmitting ? (\n                    <CircularProgress size={30} color=\"inherit\" />\n                  ) : (\n                    \"Salvar\"\n                  )}\n                </Button>\n              </Box>\n            </Grid>\n          </Grid>\n        </form>\n      )}\n      <Snackbar\n        anchorOrigin={{\n          vertical: \"bottom\",\n          horizontal: \"center\",\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton\n              size=\"small\"\n              aria-label=\"close\"\n              color=\"inherit\"\n              onClick={handleCloseSnack}\n            >\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n}))\n\nexport { useStyles }\n","import React from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  IconButton,\n  Box,\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\n// Forms\nimport FormProfile from 'app/components/forms/Profile'\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const {open,toggleDialog} = props;\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>\n        <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n          <IconButton aria-label=\"close\" onClick={toggleDialog(false)}>\n            <CloseIcon />\n          </IconButton>\n        </Box>\n        Informações pessoais\n      </DialogTitle>\n      <DialogContent>\n        <FormProfile isDialog={true} />\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    userAvatar: {\n        fontSize: theme.typography.pxToRem(60),\n        width: theme.spacing(20),\n        height: theme.spacing(20),\n        marginBottom: theme.spacing(2),\n        backgroundColor: theme.palette.primary['main']\n    },\n    userName: {\n        color: theme.palette.grey[600],\n        fontSize: theme.typography.pxToRem(22),\n        fontWeight: 700,\n        marginRight: theme.spacing(1),\n    },\n    userSince: {\n        color: theme.palette.grey[500],\n        fontSize: theme.typography.pxToRem(14),\n        fontWeight: 600,\n    },\n    title: {\n        fontWeight: 700,\n        color: theme.palette.grey[600],\n        fontSize: theme.typography.pxToRem(18),\n    },\n    noCoursesTitle: {\n        fontWeight: 700,\n        color: theme.palette.grey[700],\n        fontSize: theme.typography.pxToRem(20),\n        marginBottom: theme.spacing(1),\n    },\n    noCoursesSubtitle: {\n        fontSize: theme.typography.pxToRem(16),\n        marginBottom: theme.spacing(2),\n    },\n    noInvitesTitle: {\n      fontWeight: 700,\n      color: theme.palette.grey[700],\n      fontSize: theme.typography.pxToRem(18),\n      marginBottom: theme.spacing(2),\n      textAlign: 'center'\n    },\n    noInvitesText: {\n      fontSize: theme.typography.pxToRem(16),\n      marginBottom: theme.spacing(1),\n      maxWidth: 700,\n      [theme.breakpoints.down('md')]: {\n        fontSize: theme.typography.pxToRem(16),\n        maxWidth: '100%',\n      }\n    },\n}))\n\nexport { useStyles }\n","//\nimport React, { useEffect, useState, useCallback } from 'react'\nimport { jsPDF } from \"jspdf\";\n\nimport { useHistory } from 'react-router-dom'\nimport studentApi from 'app/services/student-api'\nimport { useAuth } from 'app/contexts/AuthContext'\nimport PersonalInformations from 'app/components/Modals/Profile/PersonalInformations'\nimport { useStyles } from './styles'\n\nimport {\n  Box,\n  Grid,\n  Card,\n  CardHeader,\n  CardContent,\n  IconButton,\n  Typography,\n  Avatar,\n  Container,\n  Divider,\n  Button,\n  List,\n  ListItem,\n  ListItemText,\n  ListItemSecondaryAction,\n  ListItemAvatar,\n  CircularProgress,\n  Dialog,\n  DialogActions,\n  DialogContent,\n  DialogContentText,\n  DialogTitle,\n  Snackbar,\n  Link,\n} from '@material-ui/core';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\n\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CloseIcon from '@material-ui/icons/Close';\nimport DoneAllIcon from '@material-ui/icons/DoneAll';\n\nimport accountApi from \"app/services/account-api\";\n\nimport { formatDate } from 'app/utils'\n\nimport kultiviLogo from \"assets/images/kultivi.png\";\nimport { signaturePydd } from 'helpers/signature-pydd';\n\n\n\nfunction CircularProgressWithLabel(props) {\n  return (\n    <Box position=\"relative\" display=\"inline-flex\">\n      <CircularProgress variant=\"determinate\" {...props} />\n      <Box\n        top={0}\n        left={0}\n        bottom={0}\n        right={0}\n        position=\"absolute\"\n        display=\"flex\"\n        alignItems=\"center\"\n        justifyContent=\"center\"\n      >\n        <Typography variant=\"caption\" component=\"div\" color=\"textSecondary\">{`${Math.round(\n          props.value,\n        )}%`}</Typography>\n      </Box>\n    </Box>\n  );\n}\n\nfunction CardPersonalInfo() {\n\n  const classes = useStyles()\n  const { user } = useAuth()\n  const [open, setOpen] = React.useState(false);\n\n  const toggleDialog = (open) => (event) => {\n    setOpen(open);\n  };\n\n  return (\n    <>\n      <Card className={classes.cardUser}>\n        <CardContent>\n          <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\">\n            <Avatar className={classes.userAvatar}>{user.firstname && ((user.firstname).charAt(0)).toUpperCase()}</Avatar>\n            <Box component=\"div\" display=\"flex\" flexDirection=\"row\" alignItems=\"center\">\n              <Typography variant=\"body2\" component=\"span\" className={classes.userName}>{user.fullname}</Typography>\n              <IconButton\n                aria-label=\"edit-name\"\n                onClick={toggleDialog(true)}\n              >\n                <EditIcon fontSize=\"small\" />\n              </IconButton>\n            </Box>\n          </Box>\n        </CardContent>\n        <Divider />\n        <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" p={2}>\n          <Typography variant=\"body2\" component=\"span\" className={classes.userSince}>Aluno desde: {formatDate(user.signup_at)}</Typography>\n        </Box>\n      </Card>\n      <PersonalInformations open={open} toggleDialog={toggleDialog} />\n    </>\n  )\n}\n\n\nexport default (props) => {\n\n  const history = useHistory()\n  const classes = useStyles()\n  const [enrollments, setEnrollments] = useState([])\n  const [courseId, setCourseId] = useState(null)\n\n  const {user} = useAuth()\n\n  const [loadingEnrollments, setLoadingEnrollments] = useState(true)\n\n  const [snackValues, setSnackValues] = React.useState({\n    message: '',\n    open: false,\n  });\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return;\n    }\n    setSnackValues({ open: false });\n  };\n\n  const [invites, setInvites] = useState([]);\n  const [loadingInvites, setLoadingInvites] = useState(true);\n\n  async function getInvites() {\n    setLoadingInvites(true);\n    try {\n      const response = await accountApi.get('referrals/invites');\n      setInvites(response.data);\n    } catch (error) {\n      console.warn(error);\n    } finally {\n      setLoadingInvites(false);\n    }\n  }\n\n  useEffect(() => {\n    const fetchData = async () => {\n      setLoadingInvites(true);\n      try {\n        await getInvites();\n      } finally {\n        setLoadingInvites(false);\n      }\n    };\n\n    fetchData();\n  }, []);\n\n  useEffect(() => {\n\n    studentApi.get(`subscribed-courses`).then(response => {\n      setEnrollments(response.data)\n    }).catch(error => {\n      console.warn(error)\n    }).finally(() => {\n      setLoadingEnrollments(false)\n    })\n\n  }, [])\n\n  const generatePdf = useCallback((enroll) => {\n    const doc = new jsPDF();\n\n    const today = new Date();\n    const formattedDate = today.toLocaleDateString(\"pt-BR\", {\n      day: \"2-digit\",\n      month: \"long\",\n      year: \"numeric\",\n    });\n\n    const img = new Image();\n    img.src = kultiviLogo;\n    img.onload = () => {\n      doc.addImage(img, \"PNG\", 10, 10, 30, 8);\n\n      doc.setFontSize(18);\n      doc.setFont(\"helvetica\", \"bold\");\n      doc.text(\"Comprovante de Matrícula\", 105, 40, null, null, \"center\");\n\n\n      doc.setFontSize(12);\n      doc.setFont(\"helvetica\", \"normal\");\n      const mainText = [\n        `Declaramos, para os devidos fins, que o aluno ${user.fullname} está oficialmente`,\n        `matriculado no curso \"${enroll.title}\".`\n      ];\n      let mainTextYPosition = 65;\n      const mainTextLineSpacing = 8;\n\n      mainText.forEach(line => {\n        doc.text(line, 20, mainTextYPosition, { maxWidth: 170 }, \"center\");\n        mainTextYPosition += mainTextLineSpacing;\n      });\n\n      doc.setFontSize(10);\n      const additionalText = [\n        \"Este curso faz parte do compromisso da Kultivi em oferecer educação de qualidade e acessível para todos\",\n        \"os brasileiros. Com milhões de alunos em nossa plataforma, continuamos a democratizar o acesso ao\",\n        \"conhecimento.\"\n      ];\n      let yPosition = 100;\n      const lineSpacing = 6;\n\n      additionalText.forEach(line => {\n        doc.text(line, 20, yPosition, { maxWidth: 170 });\n        yPosition += lineSpacing;\n      });\n\n      doc.setFontSize(9);\n      doc.text(\"Kultivi - A educação ao alcance de todos.\", 105, 130, null, null, \"center\");\n      doc.text(formattedDate, 105, 140, null, null, \"center\");\n\n      doc.addImage(signaturePydd(), \"PNG\", 86, 150, 40, 25);\n\n      doc.save(`comprovante-de-matricula-${enroll.title}.pdf`);\n    };\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  /**\n   * ######## ENROLLMENTS CARD ######## */\n  function CardEnrollments() {\n\n    const [dialogUnsubscribeCourseOpen, setDialogUnsubscribeCourseOpen] = React.useState(false)\n    const toggleDialogUnsubscribeCourseOpen = (open, course_id = null) => (event) => {\n      setCourseId(course_id)\n      setDialogUnsubscribeCourseOpen(open);\n    };\n\n    const deleteCourse = React.useCallback(() => {\n\n      setDialogUnsubscribeCourseOpen(false)\n\n      studentApi.delete(`subscribed-courses/${courseId}/unsubscribe`)\n        .then((response) => {\n          setSnackValues({ message: \"Curso removido com sucesso.\", open: true });\n          setEnrollments(enrollments.filter((item) => item.id !== courseId))\n          setCourseId(null)\n        }).catch((error) => {\n          console.warn(error.data)\n        })\n\n    }, [])\n\n    const _goToDiscover = useCallback(() => {\n      history.push('/dashboard/discover')\n    }, [])\n\n    return (\n      <React.Fragment>\n        <Card className={classes.cardAbout}>\n          <CardHeader\n            title=\"Meus cursos\"\n            className={classes.title}\n            disableTypography\n          ></CardHeader>\n          <CardContent>\n            {loadingEnrollments ?\n              [0, 1, 2, 3, 4, 5].map((key) => {\n                return <Skeleton height={45} key={key} />\n              }) : (\n                enrollments.length > 0 ? (\n                  <List className={classes.enrollments}>\n                    {enrollments.map((enroll, index) => {\n                      return (\n                        <React.Fragment key={enroll.id}>\n                          <ListItem>\n                            <ListItemAvatar>\n                              <CircularProgressWithLabel value={enroll.progress || enroll.percentage} />\n                            </ListItemAvatar>\n                            <ListItemText\n                              primary={enroll.title}\n                              secondary={\n                                <Box display='flex' flexDirection='column'>\n                                  {enroll.category.title}\n                                  <Link onClick={() => generatePdf(enroll)} style={{cursor: 'pointer'}}>Emitir comprovante de matrícula</Link>\n                                </Box>\n                              }>\n                            </ListItemText>\n                            <ListItemSecondaryAction>\n                              <IconButton edge=\"end\" aria-label=\"delete\" onClick={toggleDialogUnsubscribeCourseOpen(true, enroll.id)}>\n                                <DeleteIcon />\n                              </IconButton>\n                            </ListItemSecondaryAction>\n                          </ListItem>\n                          {index < (enrollments.length - 1) ? <Divider component=\"li\" /> : ''}\n                        </React.Fragment>\n                      )\n                    })}\n                  </List>\n                ) : (\n                  <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\">\n                    <Typography variant=\"h6\" component=\"p\" className={classes.noCoursesTitle}>\n                      Você ainda não se matriculou em nenhum curso\n                    </Typography>\n                    <Typography variant=\"body2\" component=\"p\" className={classes.noCoursesSubtitle}>\n                      Aproveite e comece a estudar agora mesmo! <span role=\"img\" aria-label=\"smile\">😃</span>\n                    </Typography>\n                    <Button size=\"large\" color=\"secondary\" variant=\"contained\" onClick={_goToDiscover}>Explorar cursos</Button>\n                  </Box>)\n              )\n            }\n          </CardContent>\n        </Card>\n        <Dialog\n          open={dialogUnsubscribeCourseOpen}\n          aria-labelledby=\"unsubscribe-dialog-title\"\n          aria-describedby=\"unsubscribe-dialog-description\"\n        >\n          <DialogTitle id=\"unsubscribe-dialog-title\">{\"Confirma exclusão de curso?\"}</DialogTitle>\n          <DialogContent>\n            <DialogContentText id=\"unsubscribe-dialog-description\">\n              Ao desmatricular-se de um curso, todo o seu progresso, histórico de questões e certificado vinculados à ele serão excluídos. Esta ação é irreversível - uma vez que seus dados foram excluídos, não podemos recuperá-los novamente.\n            </DialogContentText>\n          </DialogContent>\n          <DialogActions>\n            <Button onClick={toggleDialogUnsubscribeCourseOpen(false)}>Cancelar</Button>\n            <Button onClick={deleteCourse} color=\"primary\">Excluir</Button>\n          </DialogActions>\n        </Dialog>\n      </React.Fragment>\n    )\n  }\n\n\n\n  function CardInterests() {\n\n    return (\n      <Card className={classes.cardAbout}>\n        <CardHeader\n          title=\"Meus interesses e competências\"\n          className={classes.title}\n          disableTypography\n          action={\n            <IconButton aria-label=\"edit-about\">\n              <EditIcon fontSize=\"small\" />\n            </IconButton>\n          }\n        ></CardHeader>\n        <CardContent>\n          <Typography variant=\"body2\" color=\"textSecondary\" component=\"p\">\n            O que você gostaria de aprender? Quais são suas principais competências?\n          </Typography>\n        </CardContent>\n      </Card>\n    )\n\n  }\n\n  return (\n    <React.Fragment>\n      <Container>\n        <Grid container spacing={3}>\n          <Grid item xs={12}></Grid>\n          <Grid item xs={12} lg={4}>\n            <Box component=\"div\" mb={3} width=\"100%\">\n              <CardPersonalInfo />\n            </Box>\n          </Grid>\n          <Grid item xs={12} lg={8}>\n            <Box component=\"div\" mb={3} width=\"100%\">\n              <CardEnrollments />\n            </Box>\n            <Box component=\"div\" mb={3} width=\"100%\">\n              <Card className={classes.cardAbout}>\n                <CardHeader\n                  title=\"Minhas indicações\"\n                  className={classes.title}\n                  disableTypography\n                ></CardHeader>\n                <CardContent>\n                  {\n                    !loadingInvites && invites.length > 0 &&\n                      (\n                        <>\n                          {/* <Typography component='p' variant='body'>Para ativar seus certificados após as indicações, é necessário refazer seu login.</Typography> */}\n                          <List>\n                            {invites.map((invite, key) => (\n                              <ListItem key={`invite_${key}`}>\n                                <ListItemAvatar>\n                                  <Avatar style={{ backgroundColor: 'transparent' }}>\n                                    {invite.isConfirmed ? <DoneAllIcon color='primary' /> :  <AccessTimeIcon color='disabled' />}\n                                  </Avatar>\n                                </ListItemAvatar>\n                                <ListItemText primary={invite.name} secondary={invite.isConfirmed ? 'Ativo' : 'Aguardando confirmação de cadastro'}></ListItemText>\n                              </ListItem>\n                            ))}\n                          </List>\n                        </>\n                      )\n                  }\n                  {\n                    !loadingInvites && !invites.length && (\n                      <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\">\n                        <Box mb={3}>\n                          <Typography variant=\"h6\" className={classes.noInvitesTitle}>\n                            {/* Convide Seus Amigos e Desbloqueie Certificados Gratuitos! */}\n                            Convide Seus Amigos\n                          </Typography>\n                          <Box className={classes.noInvitesText}>\n                            <Typography component=\"body2\">\n                              {/* Você está a apenas alguns passos de conquistar certificados gratuitos para os cursos que você ama na Kultivi! */}\n                              Compartilhe seu link exclusivo com amigos e ajude a expandir nossa comunidade de aprendizes.\n                              {/* Quanto mais amigos você indicar, mais rápido você desbloqueia seus certificados. */}\n                            </Typography>\n                          </Box>\n                        </Box>\n                        <Button size=\"large\" color=\"primary\" variant=\"contained\" onClick={() => history.push('/dashboard/referrals')}>Convidar agora</Button>\n                      </Box>\n                    )\n                  }\n                  {\n                    loadingInvites && (\n                      [0, 1, 2, 3].map((key) => {\n                        return <Skeleton height={45} key={`skl_invites_${key}`} />\n                      })\n                    )\n                  }\n                </CardContent>\n              </Card>\n            </Box>\n          </Grid>\n        </Grid>\n      </Container>\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  )\n}\n","export const signaturePydd = () => {\n  return \"data:image/png;base64,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\"\n}\n","import {useEffect,useState} from 'react';\n\nexport default function useOnScreen(ref) {\n\n    const [isIntersecting, setIntersecting] = useState(false)\n  \n    const observer = new IntersectionObserver(\n      ([entry]) => setIntersecting(entry.isIntersecting)\n    )\n  \n    useEffect(() => {\n      observer.observe(ref.current)\n      // Remove the observer as soon as the component is unmounted\n      return () => { observer.disconnect() }\n    })\n  \n    return isIntersecting\n}","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    carouselItem: {\n        paddingLeft: theme.spacing(.5),\n        paddingRight: theme.spacing(.5),\n        paddingBottom: 6\n    },\n}))\n\nexport { useStyles }\n","import React, {useState,useRef, useEffect} from 'react';\nimport coreApi from 'app/services/core-api';\nimport useOnScreen from 'hooks/useOnScreen'\n\nimport CourseCard from 'app/components/cards/Course/model-3'\nimport Skeleton from 'app/components/cards/Course/model-3/skeleton'\n\nimport Carousel from \"react-multi-carousel\";\nimport \"react-multi-carousel/lib/styles.css\";\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    const {feature} = props;\n\n    const classes = useStyles();\n\n    const ref = useRef()\n    const isVisible = useOnScreen(ref)\n\n    const [courses, setCourses] = useState([])\n    const [loadingCourses, setLoadingCourses] = useState(true)\n\n    const fetchData = () => {\n\n        const hasCourses = JSON.parse(sessionStorage.getItem(`@Kultivi:${feature}`))\n\n        if (hasCourses) {\n            setCourses(hasCourses)\n            setLoadingCourses(false)\n            return\n        }\n        coreApi.get(`discovery-units?context=course&page[number]=1&page[size]=10&feature=${feature}`).then(response => {\n            setCourses(response.data.items)\n            sessionStorage.setItem(`@Kultivi:${feature}`, JSON.stringify(response.data.items))\n        }).catch(error => {\n            console.warn(error)\n        }).finally(() => {\n            setLoadingCourses(false)\n        })\n\n    }\n\n    useEffect( () => {\n\n        function load() {\n            if(isVisible) {\n                if(courses.length > 0) {\n                    return false;\n                }\n                fetchData();\n            }\n        }\n\n        load()\n\n    },[isVisible])\n\n    const responsive = {\n        large: {\n            breakpoint: { max: 3000, min: 1440 },\n            items: 4,\n            partialVisibilityGutter: 12\n        },\n        desktop: {\n            breakpoint: { max: 1439, min: 768 },\n            items: 3,\n            partialVisibilityGutter: 24\n        },\n        tablet: {\n            breakpoint: { max: 768, min: 464 },\n            items: 2,\n            partialVisibilityGutter: 24\n        },\n        mobile: {\n            breakpoint: { max: 464, min: 0 },\n            items: 1,\n        }\n    }\n\n    return (\n        <div ref={ref}>\n            <Carousel\n                itemClass={classes.carouselItem}\n                responsive={responsive}\n                infinite={false}\n                arrows={!loadingCourses}\n                partialVisible\n            >\n                {loadingCourses ?\n                    [0, 1, 2, 3, 4, 5].map((key) => {\n                        return <Skeleton key={key} />\n                    }) :\n                    courses.map((course, item) => (\n                        <CourseCard key={item} {...course} showSummary={false} />\n                    ))\n                }\n            </Carousel>\n        </div>\n    );\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    carouselItem: {\n        paddingLeft: theme.spacing(.5),\n        paddingRight: theme.spacing(.5),\n        paddingBottom: 6\n    },\n}))\n\nexport { useStyles }","import React, {useState,useRef, useEffect} from 'react';\nimport coreApi from 'app/services/core-api';\n\nimport useOnScreen from 'hooks/useOnScreen'\n\nimport EbookCard from 'app/components/cards/Ebook/model-1'\nimport Skeleton from 'app/components/cards/Ebook/model-1/skeleton'\n\nimport Carousel from \"react-multi-carousel\";\nimport \"react-multi-carousel/lib/styles.css\";\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    const { feature } = props\n\n    const classes = useStyles();\n\n    const ref = useRef()\n    const isVisible = useOnScreen(ref)\n\n    const [ebooks, setEbooks] = useState([])\n    const [loadingEbooks, setLoadingEbooks] = useState(true)\n\n    const fetchData = () => {\n        const hasEbooks = JSON.parse(sessionStorage.getItem(`@Kultivi:ebooks:${feature}`))\n        if (hasEbooks) {\n          setEbooks(hasEbooks)\n          setLoadingEbooks(false)\n          return\n        }\n        coreApi.get(`discovery-units?type=1&context=ebook&page[number]=1&page[size]=10&feature=${feature}`).then(response => {\n          setEbooks(response.data.items)\n          sessionStorage.setItem(`@Kultivi:ebooks:${feature}`, JSON.stringify(response.data.items))\n        }).catch(error => {\n            console.warn(error)\n        }).finally(() => {\n          setLoadingEbooks(false)\n        })\n    }\n\n    useEffect( () => {\n\n        function load() {\n            if(isVisible) {\n                if(ebooks.length > 0) {\n                    return false;\n                }\n                fetchData();\n            }\n        }\n\n        load()\n\n    },[isVisible])\n\n    const responsive = {\n        large: {\n            breakpoint: { max: 3000, min: 1441 },\n            items: 4,\n            partialVisibilityGutter: 12\n        },\n        desktop: {\n            breakpoint: { max: 1440, min: 768 },\n            items: 4,\n            partialVisibilityGutter: 24\n        },\n        tablet: {\n            breakpoint: { max: 768, min: 464 },\n            items: 2,\n            partialVisibilityGutter: 24\n        },\n        mobile: {\n            breakpoint: { max: 464, min: 0 },\n            items: 1,\n        }\n    }\n\n    return (\n        <div ref={ref}>\n            <Carousel\n                itemClass={classes.carouselItem}\n                responsive={responsive}\n                infinite={false}\n                arrows={!loadingEbooks}\n                partialVisible\n            >\n                {loadingEbooks ?\n                    [0, 1, 2, 3, 4, 5].map((key) => {\n                        return <Skeleton key={key} />\n                    }) : ebooks.map((ebook, item) => (\n                        <EbookCard key={item} {...ebook} />\n                    ))\n                }\n            </Carousel>\n        </div>\n    );\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  carouselItem: {\n    paddingLeft: theme.spacing(.5),\n    paddingRight: theme.spacing(.5),\n    paddingBottom: 6,\n  },\n  link: {\n    display: \"block\",\n    width: \"100%\",\n    cursor: \"pointer\",\n  },\n  carouselImg: {\n    width: \"100%\"\n  },\n}))\n\nexport { useStyles }\n","import React, {useEffect} from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport {\n  Box,\n  Hidden,\n} from '@material-ui/core'\nimport Skeleton from '@material-ui/lab/Skeleton'\nimport systemApi from \"app/services/system-api\";\n\n\nimport Carousel from \"react-multi-carousel\"\nimport \"react-multi-carousel/lib/styles.css\"\n\n// Styles files\nimport { useStyles } from './styles'\n\nconst responsive = {\n  large: {\n    breakpoint: { max: 3000, min: 1024 },\n    items: 1,\n  },\n  desktop: {\n    breakpoint: { max: 1024, min: 768 },\n    items: 1,\n  },\n  tablet: {\n    breakpoint: { max: 768, min: 464 },\n    items: 1,\n  },\n  mobile: {\n    breakpoint: { max: 464, min: 0 },\n    items: 1,\n  }\n}\n\nexport default (props) => {\n  const { context, courseSlug } = props\n  const [campaigns, setCampaigns] = React.useState([])\n  const [loading, setLoading] = React.useState(true)\n  const [showArrows, setShowArrows] = React.useState(false)\n  const [infiniteLoop, setInfiniteLoop] = React.useState(false)\n  const [autoPlay, setAutoplay] = React.useState(false)\n\n  const classes = useStyles()\n  const history = useHistory();\n\n  const goTo = ({link,target}) => {\n    if(!link) {\n      return;\n    }\n\n    if(!target || target === '_self') {\n      history.push(`${link}`)\n    } else {\n      window.open(`${link}`, '_blank');\n    }\n  }\n\n  useEffect(() => {\n    systemApi.get('vendor?context=dashboard')\n      .then((response) => {\n        const campaigns = response.data\n        setShowArrows(campaigns.length > 1)\n        setInfiniteLoop(campaigns.length > 1)\n        setAutoplay(campaigns.length > 1)\n        setCampaigns(campaigns)\n      })\n      .catch((error) => {\n        console.warn(error)\n      }).finally(() => {\n        setLoading(false);\n      })\n  }, [])\n\n  return (\n\n    loading ? <Skeleton variant=\"rect\" width='100%' height={190} />\n    :\n      <Carousel\n        itemClass={classes.carouselItem}\n        responsive={responsive}\n        autoPlaySpeed={3000}\n        focusOnSelect={true}\n        infinite={infiniteLoop}\n        autoPlay={autoPlay}\n        arrows={showArrows}\n      >\n        {campaigns.map((campaign, index) => (\n\n          <Box component=\"div\" display=\"flex\" key={index}>\n            <Hidden xsDown>\n              <div\n                key={campaign.id}\n                onClick={() => goTo(campaign)}\n                className={classes.link}\n              >\n                <img\n                  className={classes.carouselImg}\n                  src={campaign.photo}\n                  alt=\"Banner de campanha\"\n                />\n              </div>\n            </Hidden>\n            <Hidden smUp>\n              <div\n                key={campaign.id}\n                onClick={() => goTo(campaign)}\n                className={classes.link}\n              >\n                <img\n                  className={classes.carouselImg}\n                  src={campaign.photoMobile}\n                  alt=\"Banner de campanha\"\n                />\n              </div>\n            </Hidden>\n          </Box>\n        ))}\n      </Carousel>\n\n  )\n}\n","export class CPF {\n\tvalue;\n  CPF_LENGTH = 11\n\n\tconstructor(value) {\n\t\tthis.value = this.normalize(value);\n\t}\n\n\tnormalize(value) {\n\t\treturn value\n\t\t\t.replace(/[^\\d]/g, '')\n\t\t\t.replace(/(\\d{3})(\\d{3})(\\d{3})(\\d{2})/g, '$1.$2.$3-$4');\n\t}\n\n  isValid() {\n    return this.validate();\n  }\n\n\tvalidate() {\n\t\tif (!this.value) return false;\n\t\tconst document = this.clean(this.value);\n\t\tif (!this.hasMinimumLength(document)) return false;\n\t\tif (this.isBlocked(document)) return false;\n\t\tconst digit1 = this.calculateDigit(document, 10);\n\t\tconst digit2 = this.calculateDigit(document, 11);\n\t\tconst calculatedDigit = `${digit1}${digit2}`;\n\t\tconst actualDigit = document.slice(9);\n\t\treturn actualDigit === calculatedDigit;\n\t}\n\n\tcalculateDigit(cpf, factor) {\n\t\tlet total = 0;\n\t\tfor (const digit of cpf) {\n\t\t\tif (factor > 1) {\n\t\t\t\ttotal += parseInt(digit) * factor;\n\t\t\t\tfactor -= 1;\n\t\t\t}\n\t\t}\n\t\tconst rest = total % 11;\n\t\treturn rest < 2 ? 0 : 11 - rest;\n\t}\n\n\tclean(cpf) {\n\t\treturn cpf.replace(/\\D/g, '');\n\t}\n\n\thasMinimumLength(cpf) {\n\t\treturn cpf.length === this.CPF_LENGTH;\n\t}\n\n\tisBlocked(cpf) {\n\t\tconst [firstDigit] = cpf;\n\t\treturn [...cpf].every((digit) => digit === firstDigit);\n\t}\n}\n","import * as yup from \"yup\";\nimport { CPF } from './cpf';\n\nconst MIN_PASSWORD = 6;\n\nexport const signInValidator = yup.object({\n  username: yup.string(\"Digite o e-mail ou CPF\").required(\"Campo obrigatório\"),\n  password: yup\n    .string(\"Digite a sua senha\")\n    .required(\"Campo obrigatório\")\n    .min(MIN_PASSWORD, `Deve conter no mínimo ${MIN_PASSWORD} caracteres`),\n});\n\nexport const signUpValidator = yup.object({\n  fullname: yup\n    .string()\n    .trim()\n    .required(\"Campo obrigatório\")\n    .matches(/\\s/,\"Insira o seu nome e sobrenome\"),\n  email: yup\n    .string()\n    .required(\"Campo obrigatório\")\n    .email(\"Digite um email válido\"),\n  document: yup.string().when(\"isForeign\", {\n      is: false,\n      then: yup.string().required(\"Campo obrigatório\")\n    }),\n  password: yup\n    .string()\n    .required(\"Campo obrigatório\")\n    .min(MIN_PASSWORD, `Deve conter no mínimo ${MIN_PASSWORD} caracteres`),\n  isForeign: yup.boolean(),\n});\n\nexport const recoveryPasswordValidator = yup.object({\n  username: yup\n    .string()\n    .required(\"Campo obrigatório\"),\n});\n\nexport const redeemVoucherValidator = yup.object({\n  code: yup\n    .string()\n    .required(\"Campo obrigatório\"),\n});\n\nexport const resetPasswordValidator = yup.object({\n  password: yup\n    .string(\"Digite a nova senha\")\n    .required(\"Campo obrigatório\")\n    .min(MIN_PASSWORD, `Deve conter no mínimo ${MIN_PASSWORD} caracteres`),\n  password_confirmation: yup\n    .string(\"Confirme a nova senha\")\n    .required(\"Campo obrigatório\")\n    .oneOf(\n      [yup.ref(\"password\"), null],\n      \"Nova senha e confirmação de senha não coincidem\"\n    )\n    .min(MIN_PASSWORD, `Deve conter no mínimo ${MIN_PASSWORD} caracteres`),\n});\n\nexport const confirmAccountValidator = yup.object({\n  is_foreign: yup.boolean(),\n  firstname: yup.string().required(\"Campo obrigatório\"),\n  surname: yup.string().required(\"Campo obrigatório\"),\n  email: yup.string().email(\"E-mail inválido\").required(\"Campo obrigatório\"),\n  document: yup.string().when(\"is_foreign\", {\n    is: false,\n    then: yup.string().required(\"Campo obrigatório\"),\n  }),\n  education_level_id: yup.string().required(\"Campo obrigatório\"),\n  state_id: yup.string().when(\"is_foreign\", {\n    is: false,\n    then: yup.string().required(\"UF é obrigatório\"),\n  }),\n  city_id: yup.string().when(\"is_foreign\", {\n    is: false,\n    then: yup.string().required(\"Cidade é obrigatório\"),\n  }),\n});\n\nexport const confirmAccountByCodeValidator = yup.object({\n  code: yup\n    .number()\n    .typeError('Deve ser um número')\n    .integer('Deve ser um número inteiro')\n    .min(1000, 'Código incorreto')\n    .max(9999, 'Código incorreto')\n    .required(\"Campo obrigatório\"),\n});\n\nexport const changeUsernameValidator = yup.object({\n  email: yup\n    .string()\n    .required(\"Campo obrigatório\")\n    .email(\"Digite um email válido\"),\n  emailConfirmation: yup\n    .string()\n    .required(\"Campo obrigatório\")\n    .email(\"Digite um email válido\")\n    .oneOf(\n      [yup.ref(\"email\"), null],\n      \"Nova e-mail e confirmação de e-mail não coincidem\"\n    ),\n  password: yup\n    .string(\"Digite a sua senha\")\n    .required(\"Campo obrigatório\")\n    .min(MIN_PASSWORD, `Deve conter no mínimo ${MIN_PASSWORD} caracteres`),\n});\n","import React from 'react'\nimport {\n    Box,\n    Grid,\n    Button,\n    TextField,\n    CircularProgress,\n    Snackbar,\n    IconButton\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nimport accountApi from 'app/services/account-api';\n\n//Contexts imports\nimport { useFormik } from 'formik'\n\nimport { redeemVoucherValidator } from 'app/validators/auth'\nimport { useAuth } from 'app/contexts/AuthContext';\n\nexport default (props) => {\n\n  const {handleSuccess} = props;\n  const { signOut } = useAuth();\n\n\n  const [snackValues, setSnackValues] = React.useState({\n      message: '',\n      open: false,\n  })\n  const handleCloseSnack = (event, reason) => {\n      if (reason === 'clickaway') {\n        return\n      }\n      setSnackValues({open:false})\n  }\n\n  const formik = useFormik({\n    initialValues: {\n      code: '',\n    },\n    validationSchema: redeemVoucherValidator,\n    enableReinitialize: true,\n    validateOnMount:true,\n    onSubmit: (values,actions) => {\n      actions.setSubmitting(true);\n      accountApi.post(`/vouchers/redeem`, values)\n      .then(async (response) => {\n        handleSuccess()\n        const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));\n        await wait(5000);\n        signOut()\n      })\n      .catch((err) => {\n          setSnackValues({message:\"Ops! Falha ao resgatar seu voucher. Tente novamente.\",open:true});\n          const { response } = err;\n          if (response && response.data) {\n            const {\n              data: { message },\n            } = response;\n            const setErrors = {}\n            let feedback = '';\n            if(message === 'EXCEPTION:VOUCHER_NOT_FOUND') {\n              feedback = 'Voucher não localizado'\n            }\n            else if(message === 'EXCEPTION:VOUCHER_HAS_BEEN_USED') {\n              feedback = 'Voucher já utilizado'\n            }\n            else if(message === 'EXCEPTION:SUBSCRIPTION_NOT_FOUND') {\n              feedback = 'Não localizamos sua compra. Por favor, entre em contato com: contato@kultivi.com.'\n            } else {\n              feedback = 'Verifique o campo digitado'\n            }\n\n\n            setErrors[`code`] = feedback;\n            actions.setErrors(setErrors);\n          }\n      })\n      .finally( () => {\n          actions.setSubmitting(false);\n      })\n\n    }\n  })\n\n\n  return (\n    <React.Fragment>\n      <form name=\"form-forgot-password\" onSubmit={formik.handleSubmit}>\n        <Grid container spacing={2}>\n          <Grid item xs={12}>\n            <TextField\n              label=\"E-mail ou código\"\n              id=\"code\"\n              name=\"code\"\n              variant=\"outlined\"\n              type=\"text\"\n              fullWidth={true}\n              required={true}\n              disabled={formik.isSubmitting}\n              autoComplete=\"off\"\n              value={formik.values.code}\n              onChange={formik.handleChange}\n              onBlur={formik.handleBlur}\n              error={formik.touched.code && Boolean(formik.errors.code)}\n              helperText={formik.touched.code && formik.errors.code}\n            />\n          </Grid>\n          <Grid item xs={12}>\n            <Box component=\"div\" textAlign=\"right\">\n              <Button\n                color=\"primary\"\n                type=\"submit\"\n                disabled={formik.isSubmitting || !formik.isValid}>\n                { formik.isSubmitting ? (\n                  <CircularProgress size={30} color=\"inherit\" />\n                ) : 'Resgatar' }\n              </Button>\n            </Box>\n          </Grid>\n        </Grid>\n      </form>\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  copy: {\n    marginBottom: theme.spacing(3),\n    color: theme.palette.grey[600]\n  }\n}))\n\nexport { useStyles }\n","import React, { useState } from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Dialog,\n  DialogContent,\n  DialogContentText,\n  DialogTitle,\n  Box,\n  IconButton,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close';\n\n// Forms\nimport FormRedeemVoucher from 'app/components/forms/RedeemVoucher'\n\nimport Lottie from 'react-lottie';\nimport animationData from 'lotties/check'\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes  = useStyles()\n  const {open,toggleDialog} = props;\n\n  const [sent,setSent] = useState(false);\n\n  const handleSuccess = () => {\n    setSent(true);\n  }\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>\n        <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n          <IconButton aria-label=\"close\" className={classes.closeButton} onClick={toggleDialog(false)} disabled={sent}>\n            <CloseIcon />\n          </IconButton>\n        </Box>\n        {!sent && \"Resgatar Assinatura\"}\n      </DialogTitle>\n      {sent ? (\n        <DialogContent>\n          <DialogContentText classes={{root:classes.copy}}>\n            <Box mb={2} display='flex' justifyContent='center'>\n              <Lottie\n                style={{\n                  maxWidth: 400,\n                  padding: 0,\n                  margin: 0,\n                }}\n                options={{\n                  loop: true,\n                  autoplay: true,\n                  animationData: animationData,\n                  rendererSettings: {\n                    preserveAspectRatio: \"xMidYMid slice\"\n                  }\n                }}\n              />\n            </Box>\n            <Box mb={2}>Voucher resgatado com sucesso. Em até 5 segundos você será redirecionado para a área de login! Caso ocorra algum problema, entre em contato em contato@kultivi.com</Box>\n          </DialogContentText>\n        </DialogContent>\n      ) : (\n        <DialogContent>\n          <DialogContentText classes={{root:classes.copy}}>\n            Digite o e-mail utilizado na compra ou o código recebido por e-mail para resgatar sua compra.\n          </DialogContentText>\n          <FormRedeemVoucher handleSuccess={handleSuccess} />\n        </DialogContent>\n      )}\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  discoveryTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(45),\n    marginBottom: theme.spacing(1),\n    textAlign: \"center\",\n  },\n  discoverySubtitle: {\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(3),\n    textAlign: \"center\",\n  },\n  sectionTitle: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 800,\n    marginRight: theme.spacing(1),\n  },\n  seeMore: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n}))\n\nexport { useStyles }","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { Box, Typography, Link, Container, Button } from \"@material-ui/core\";\n\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\n\nimport {\n  AdsTop,\n  AdsBottom,\n  AdsIncontent\n} from \"app/components/ads/freestar\";\n\nimport CoursesCarousel from \"app/components/carousels/Courses\";\nimport EbooksCarousel from \"app/components/carousels/Ebooks\";\nimport Campaigns from \"app/components/carousels/Campaigns\";\n\nimport DialogRedeemVoucher from \"app/components/Modals/RedeemVoucher\";\nimport { useStyles } from \"./styles\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const history = useHistory();\n\n  const [openRedeemVoucherDialog, setOpenRedeemVoucherDialog] = useState(false);\n\n  const handleRedeemVoucherDialog = (open) => (event) => {\n    setOpenRedeemVoucherDialog(open);\n  };\n\n  const goTo = (url) => {\n    if (!url) {\n      return;\n    }\n    history.push(`${url}`);\n  };\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" mb={3}>\n        <Container maxWidth=\"xl\">\n          <Box component=\"div\" mb={4} display=\"flex\" flexDirection=\"row\" justifyContent=\"right\">\n            <Button\n              style={{marginRight: 10}}\n              size='small'\n              disableElevation={false}\n              href=\"https://lp.fesn.org.br/aluno-kultivi\"\n              target=\"_blank\"\n            >\n              <span role='img' aria-label='gift' style={{fontSize: 18, marginRight: 10}}>🎁</span>\n              Carteirinha de Estudante\n            </Button>\n            <Button\n              size='small'\n              disableElevation={false}\n              onClick={handleRedeemVoucherDialog(true)}\n            >\n              <span role='img' aria-label='gift' style={{fontSize: 18, marginRight: 10}}>🎟️</span>\n              Resgatar Assinatura\n            </Button>\n          </Box>\n        </Container>\n\n        <Box component=\"div\" mb={2}>\n          <Container maxWidth=\"md\">\n            <Campaigns context='dashboard' />\n          </Container>\n        </Box>\n\n        <Box component=\"div\" mb={3} px={3}>\n          <Typography\n            component=\"h2\"\n            variant=\"h1\"\n            className={classes.discoveryTitle}\n          >\n            Explore, aprenda, pratique\n          </Typography>\n          <Typography component=\"p\" className={classes.discoverySubtitle}>\n            Estude gratuitamente em quantas áreas quiser. Sem limites.\n            <br /> Aqui estão algumas sugestões para você!\n            <br /> Vamos começar? 😃\n          </Typography>\n        </Box>\n\n        <Box component=\"div\" mb={3} px={{ xs: 2, sm: 2, md: 3 }}>\n          <AdsTop />\n        </Box>\n\n        <Box mb={3} component=\"section\" pl={3} pr={{ xs: 2, sm: 2, md: 0 }}>\n          <Box component=\"div\" display=\"flex\" flexDirection=\"row\" mb={2}>\n            <Typography\n              component=\"h3\"\n              variant=\"h3\"\n              className={classes.sectionTitle}\n            >\n              Populares na Kultivi\n            </Typography>\n            <Link\n              component=\"button\"\n              onClick={() => goTo(\"/dashboard/discover\")}\n              className={classes.seeMore}\n            >\n              Ver tudo <ChevronRightIcon />\n            </Link>\n          </Box>\n          <CoursesCarousel feature=\"popular\" />\n        </Box>\n\n        <Box component=\"div\" mb={4} px={{ xs: 2, sm: 2, md: 3 }}>\n          <AdsIncontent />\n        </Box>\n\n        <Box mb={3} component=\"section\" pl={3} pr={{ xs: 2, sm: 2, md: 0 }}>\n          <Box component=\"div\" display=\"flex\" flexDirection=\"row\" mb={2}>\n            <Typography\n              component=\"h3\"\n              variant=\"h3\"\n              className={classes.sectionTitle}\n            >\n              Últimos lançamentos\n            </Typography>\n            <Link\n              component=\"button\"\n              onClick={() => goTo(\"/dashboard/discover\")}\n              className={classes.seeMore}\n            >\n              Ver tudo <ChevronRightIcon />\n            </Link>\n          </Box>\n          <CoursesCarousel feature=\"latest\" />\n        </Box>\n\n        <Box component=\"div\" mb={4} px={{ xs: 2, sm: 2, md: 3 }}>\n          <AdsIncontent />\n        </Box>\n\n        <Box mb={3} component=\"section\" pl={3} pr={{ xs: 2, sm: 2, md: 0 }}>\n          <Box component=\"div\" display=\"flex\" flexDirection=\"row\" mb={2}>\n            <Typography\n              component=\"h3\"\n              variant=\"h3\"\n              className={classes.sectionTitle}\n            >\n              Mais bem avaliados\n            </Typography>\n            <Link\n              component=\"button\"\n              onClick={() => goTo(\"/dashboard/discover\")}\n              className={classes.seeMore}\n            >\n              Ver tudo <ChevronRightIcon />\n            </Link>\n          </Box>\n          <CoursesCarousel feature=\"featured\" />\n        </Box>\n\n        <Box component=\"div\" mb={4} px={{ xs: 2, sm: 2, md: 3 }}>\n          <AdsIncontent />\n        </Box>\n\n        <Box mb={3} component=\"section\" pl={3} pr={{ xs: 2, sm: 2, md: 0 }}>\n          <Box component=\"div\" display=\"flex\" flexDirection=\"row\" mb={2}>\n            <Typography\n              component=\"h3\"\n              variant=\"h3\"\n              className={classes.sectionTitle}\n            >\n              E-books\n            </Typography>\n            <Link\n              component=\"button\"\n              onClick={() => goTo(\"/dashboard/ebooks\")}\n              className={classes.seeMore}\n            >\n              Ver tudo <ChevronRightIcon />\n            </Link>\n          </Box>\n          <EbooksCarousel feature='featured' />\n        </Box>\n\n        <Box component=\"div\" mb={4} px={{ xs: 2, sm: 2, md: 3 }}>\n          <AdsBottom />\n        </Box>\n\n        <DialogRedeemVoucher\n          open={openRedeemVoucherDialog}\n          toggleDialog={handleRedeemVoucherDialog}\n        />\n\n      </Box>\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(22),\n    marginBottom: theme.spacing(2),\n    [theme.breakpoints.only('xs')]: {\n        textAlign: 'center'\n    }\n  },\n  noCoursesFallback: {\n    maxWidth: 600,\n    textAlign: 'center'\n  },\n  noCoursesCard: {\n    padding: theme.spacing(3)\n  },\n  noCoursesTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(22),\n    marginBottom: theme.spacing(2),\n  },\n  noCoursesSubtitle: {\n    marginBottom: theme.spacing(1),\n  }\n}))\n\nexport { useStyles }\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    width: '100%',\n    maxWidth: 700,\n    marginLeft: 'auto',\n    marginRight: 'auto',\n    backgroundColor: theme.palette.secondary.dark,\n    color: theme.palette.getContrastText(theme.palette.secondary.dark),\n  },\n  title: {\n    fontSize: theme.typography.pxToRem(23),\n    marginBottom: theme.spacing(1),\n    fontFamily: 'Nunito Sans, sans-serif',\n    fontWeight: 800,\n    lineHeight: 1.3,\n  },\n  subtitle: {\n    fontSize: theme.typography.pxToRem(16),\n    marginBottom: theme.spacing(4),\n    maxWidth: 500,\n  },\n  button: {\n    backgroundColor: '#FFF',\n    maxWidth: 300\n  },\n  hero: {\n    width: 130\n  }\n}))\n\nexport { useStyles }\n","import React from \"react\";\nimport {\n  Card,\n  CardContent,\n  Typography,\n  Button,\n  Box,\n  Hidden\n} from \"@material-ui/core\";\nimport { useStyles } from './styles'\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nconst BillboardBannerApoie = ({fallbackBanner}) => {\n  const classes = useStyles();\n  const { scopes } = useScopes();\n\n  function Hero() {\n    return (\n      <Box\n      alignSelf='center'\n      >\n        <img\n          className={classes.hero}\n          alt=\"astronaut\"\n          src=\"https://cdn-kultivi.s3.amazonaws.com/static/platform/heroes/astronaut-1.png\"\n        />\n      </Box>\n    )\n  }\n\n  function HeroMobile() {\n    return (\n      <Hidden smUp>\n        <Hero />\n      </Hidden>\n    )\n  }\n\n  function HeroDesktop() {\n    return (\n      <Hidden smDown>\n        <Hero />\n      </Hidden>\n    )\n  }\n\n  function Cta() {\n    return (\n      <Box>\n        <Button\n          variant='contained'\n          size='small'\n          disableElevation={false}\n          className={classes.button}\n          href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=billboard\"\n          target=\"_blank\"\n        >APRENDER COM KULTIVI+</Button>\n      </Box>\n    )\n  }\n\n  return (\n    !scopes.includes('student_no_ads_display') ?\n      <Card className={classes.root} elevation={1}>\n        <CardContent>\n          <Box\n            display='flex'\n            flexDirection={{xs: 'column', md: 'row'}}\n          >\n            <Box\n              display='flex'\n              flexDirection='column'\n              marginRight={{md:5}}\n            >\n              <Typography component=\"h2\" className={classes.title}>Potencialize o seu aprendizado</Typography>\n              <HeroMobile />\n              <Typography component=\"p\" className={classes.subtitle}>\n                Desbloqueie seu máximo potencial, alcance novos patamares de conhecimento e apoie a plataforma #1 em educação\n              </Typography>\n              <Cta />\n            </Box>\n            <HeroDesktop />\n          </Box>\n        </CardContent>\n      </Card>\n    : fallbackBanner\n  )\n}\n\nexport default BillboardBannerApoie;\n","\nimport React, {useEffect, useState, useMemo} from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { useStyles } from './styles'\nimport {\n    Box,\n    Typography,\n    Grid,\n    Container,\n    Tabs,\n    Tab,\n    Card,\n    CardContent,\n    Button,\n} from '@material-ui/core'\nimport { BillboardBannerApoie } from \"app/components/banners/billboard\";\nimport CourseCard from 'app/components/cards/Course/model-3'\nimport Skeleton from 'app/components/cards/Course/model-3/skeleton'\nimport { AdsTop } from \"app/components/ads/freestar\";\nimport studentApi from 'app/services/student-api';\n\n\nexport default (props) => {\n\n  const classes = useStyles();\n  const history = useHistory();\n  const [coursesInProgress, setCoursesInProgress] = useState([]);\n  const [completedCourses, setCompletedCourses] = useState([]);\n  const [loading, setLoading] = useState(true);\n  const [tabId, setTabId] = React.useState(0);\n\n  const _goToDiscover = () => {\n    history.push('/dashboard/discover')\n  };\n\n  const handleChange = (event, newValue) => {\n    setTabId(newValue);\n  };\n\n  useEffect(() => {\n    studentApi.get(`/subscribed-courses`).then(response => {\n      const courses = response.data;\n      setCompletedCourses(courses?.filter((course) => course.percentage >= 100) || [])\n      setCoursesInProgress(courses?.filter((course) => course.percentage < 100) || [])\n    }).catch(error => {\n        console.warn(error)\n    }).finally( () => {\n        setLoading(false)\n    })\n  }, [])\n\n  function Loader() {\n    return (\n      <Grid container spacing={2} direction=\"row\" alignItems=\"stretch\">\n        {[0,1,2,3,4,5,6,7].map( (item,key) => {\n            return (\n              <Grid item xs={12} sm={6} md={6} lg={3} key={key}>\n                <Skeleton key={`sk-${key}`} />\n              </Grid>\n            )\n          })\n        }\n      </Grid>\n    )\n  }\n\n  function TabContent({index, courses}) {\n    const courseCards = useMemo(() => {\n      return courses.map((course, index) => (\n        <React.Fragment key={index}>\n          <Grid item xs={12} sm={6} md={6} lg={3} key={course.id}>\n            <CourseCard key={course.id} {...course} showSummary={false} showProgress={true} />\n          </Grid>\n        </React.Fragment>\n      ));\n    }, [courses]);\n\n    return (\n      <Box hidden={index !== tabId}>\n        <Grid container spacing={2} direction=\"row\" alignItems=\"stretch\">\n          {courseCards}\n        </Grid>\n      </Box>\n    );\n  }\n\n  function FallbackNoCourses() {\n    return (\n      <Box className={classes.noCoursesFallback} mx=\"auto\">\n        <Card className={classes.noCoursesCard}>\n          <CardContent>\n            <Typography variant=\"h2\" component=\"h2\" className={classes.noCoursesTitle}>\n              Você não tem cursos em andamento\n            </Typography>\n            <Typography variant=\"body2\" component=\"p\" className={classes.noCoursesSubtitle}>\n              Aproveite e comece a estudar agora mesmo! <span role=\"img\" aria-label=\"smile\">😃</span>\n            </Typography>\n            <Button size=\"large\" color=\"secondary\" variant=\"contained\" onClick={_goToDiscover}>Explorar cursos</Button>\n          </CardContent>\n        </Card>\n      </Box>\n    )\n  }\n\n\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" mb={3}>\n        <Container maxWidth=\"xl\">\n          <Typography component=\"h1\" variant=\"h1\" className={classes.title}>Meus cursos</Typography>\n          <Box mb={2}>\n            <BillboardBannerApoie fallbackBanner={<AdsTop/>} />\n          </Box>\n          <Box mb={4}>\n            <Tabs\n              value={tabId}\n              onChange={handleChange}\n              textColor=\"secondary\"\n              aria-label=\"Courses status\"\n            >\n              <Tab\n                label=\"Em andamento\"\n                disabled={loading  || coursesInProgress.length === 0}\n              />\n              <Tab label=\"Concluídos\" disabled={loading || completedCourses.length === 0} />\n            </Tabs>\n          </Box>\n          {loading && <Loader />}\n          <TabContent index={0} courses={coursesInProgress} />\n          <TabContent index={1} courses={completedCourses} />\n          {\n            !loading &&\n            coursesInProgress.length === 0 &&\n            <FallbackNoCourses />\n          }\n        </Container>\n      </Box>\n    </React.Fragment>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(26),\n    marginBottom: theme.spacing(2),\n    [theme.breakpoints.only('xs')]: {\n        textAlign: 'center'\n    }\n  },\n  topicParentTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(24),\n    marginRight: theme.spacing(1),\n  },\n  topicTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(20),\n    marginRight: theme.spacing(1),\n  },\n  seeMore: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n  noCoursesFallback: {\n    maxWidth: 600,\n    textAlign: 'center'\n  },\n  noCoursesCard: {\n    padding: theme.spacing(3)\n  },\n  noCoursesTitle: {\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(22),\n    marginBottom: theme.spacing(2),\n  },\n  noCoursesSubtitle: {\n    marginBottom: theme.spacing(1),\n  },\n  carouselItem: {\n    maxWidth: 250,\n    minWidth:250,\n    paddingLeft: theme.spacing(.5),\n    paddingRight: theme.spacing(.5),\n  },\n}))\n\nexport { useStyles }\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n        width: '100%',\n        marginBottom:'6px',\n    },\n    title: {\n        fontWeight: 800,\n        color: \"#FFF\",\n        fontSize: theme.typography.pxToRem(14),\n    },\n    icon: {\n      color: \"#FFF\",\n      fontSize: theme.typography.pxToRem(18),\n    },\n    content: {\n        minHeight: 400,\n        display: \"flex\",\n        flexDirection: \"column\"\n    },\n}))\n\nexport { useStyles }\n","import React from 'react';\nimport {\n    Card,\n    CardActionArea,\n    CardContent,\n    Typography,\n    Box,\n    Chip,\n} from '@material-ui/core';\nimport LockIcon from '@material-ui/icons/Lock';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n    const classes = useStyles();\n    const { handlePillDialog, pill } = props;\n\n    return (\n        <Card style={{background: `url(${pill.thumbnail}) no-repeat center center`,backgroundSize:'cover'}} className={classes.root}>\n            <CardActionArea\n              className={classes.actionArea}\n              onClick={handlePillDialog(true, pill)}\n            >\n                <CardContent className={classes.content} >\n                      <Box mr=\"auto\">\n                        <Chip\n                          icon={!pill.isPublic ? <LockIcon /> : ''}\n                          color={pill.isPublic ? 'default' : 'primary'}\n                          size=\"small\"\n                          label={pill.isPublic ? \"Público\" : \"Kultivi+\"}\n                        />\n                      </Box>\n\n                    <Box display=\"flex\" flexDirection=\"column\" mt=\"auto\">\n                      <Typography gutterBottom component=\"h2\" className={classes.title}>\n                        {pill.title}\n                      </Typography>\n                    </Box>\n                </CardContent>\n            </CardActionArea>\n        </Card>\n    );\n}\n","import React from 'react'\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport {\n  Card,\n } from '@material-ui/core';\n\n import { useStyles } from './styles'\n\nexport default () => {\n\n  const classes = useStyles();\n\n  return (\n    <>      \n      <Card className={classes.root}>\n        <Skeleton animation=\"wave\" variant=\"rect\" height={400} />\n      </Card>\n    </>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    paddingBottom: 0,\n  },\n  videoWrapperContainer: {\n    position: 'relative',\n    width: '100%',\n    paddingTop: '177.7%',\n    overflow: 'hidden',\n    '& iframe': {\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      width: '100%',\n      height: '100%',\n    },\n  },\n}))\n\nexport { useStyles }\n","import React from 'react'\n\nimport {\n  Box,\n  Dialog,\n  DialogContent,\n  CircularProgress,\n} from '@material-ui/core'\n\nimport YouTube from 'react-youtube'\n\nimport { useStyles } from './styles'\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\nimport studentApi from 'app/services/student-api';\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const { setSnackValues } = useSnackbar();\n  const { open, toggleDialog, pillId } = props\n\n  const [loading, setLoading] = React.useState(true);\n  const [pill, setPill] = React.useState(null);\n\n  React.useEffect(() => {\n\n    if(!pillId) return;\n\n    const fetchData = async () => {\n      try {\n        setLoading(true)\n        const { data } = await studentApi.get(`/pills/${pillId}`);\n        setPill(data)\n      } catch (error) {\n        setSnackValues({\n          message: \"Ops! Falha ao carregar dados. Tente novamente.\",\n          open: true,\n        });\n      } finally {\n        setLoading(false);\n      }\n    }\n\n    fetchData();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [pillId])\n\n\n  const opts = {\n    height: '390',\n    width: '640',\n    playerVars: {\n      autoplay: 1,\n      controls: 1,\n      color: 'white',\n      modestbranding: 1,\n      rel: 0,\n      showinfo: 0,\n    },\n  }\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      onClose={toggleDialog(false, null)}\n      disableScrollLock={true}\n      PaperProps={{\n        style: {\n          maxWidth: 335,\n          width: '90%',\n          margin: 'auto',\n          backgroundColor: 'transparent',\n          boxShadow: 'none',\n        },\n      }}\n    >\n      <DialogContent\n        style={{padding: 0, margin: 0, backgroundColor: 'transparent'}}\n      >\n          <Box\n            display=\"flex\"\n            flexDirection=\"column\"\n            justifyContent=\"center\"\n            alignItems=\"center\"\n          >\n            {loading ?\n              <CircularProgress size={60} color=\"primary\" /> :\n              <YouTube\n                onEnd={toggleDialog(false, null)}\n                videoId={pill?.embed}\n                containerClassName={`${classes.videoWrapperContainer}`}\n                opts={opts}\n              />\n            }\n          </Box>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import React, {useEffect, useState} from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport Carousel from \"react-multi-carousel\"\nimport \"react-multi-carousel/lib/styles.css\"\n\nimport { useStyles } from './styles'\nimport {\n    Box,\n    Typography,\n    Container,\n    Link,\n} from '@material-ui/core'\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\n\nimport coreApi from 'app/services/core-api';\n\nimport { AdsTop } from \"app/components/ads/freestar\";\nimport { BillboardBannerApoie } from \"app/components/banners/billboard\";\n\nimport PillCard from 'app/components/cards/Pill'\nimport Skeleton from 'app/components/cards/Pill/skeleton'\n\nimport PillDialogVideo from 'app/components/Modals/Pill'\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\n\nconst responsive = {\n  large: {\n    breakpoint: { max: 3000, min: 1200 },\n    items: 4,\n    paritialVisibilityGutter: 0,\n    slidesToSlide: 1,\n  },\n  desktop: {\n    breakpoint: { max: 1199, min: 768 },\n    items: 4,\n    paritialVisibilityGutter: 0\n\n  },\n  tablet: {\n    breakpoint: { max: 768, min: 464 },\n    items: 3,\n  },\n  mobile: {\n    breakpoint: { max: 464, min: 0 },\n    items: 1,\n  }\n}\n\nexport default (props) => {\n\n  const classes = useStyles();\n  const history = useHistory();\n  const params  = useParams();\n\n  const { setSnackValues } = useSnackbar();\n\n  const [loading, setLoading] = useState(true);\n  const [topics, setTopics] = useState([]);\n  const [parentTopic, setParentTopic] = useState(null);\n\n  const [openPillDialog, setOpenPillDialog] = React.useState(false);\n  const [showPill, setShowPill] = React.useState(null);\n  const handlePillDialog = (open, pill) => (event) => {\n    setOpenPillDialog(open);\n    setShowPill(pill);\n  };\n\n  const loadTopic = (slug) => {\n    history.push(`${history.location.pathname}/${slug}`);\n  };\n\n  useEffect(() => {\n    const fetchData = async () => {\n      setParentTopic(null);\n      setTopics([]);\n      const paths = params.topics\n      const slug = paths?.split('/')?.filter(Boolean)?.at(-1);\n      let url = '/topics';\n      url += slug ? `/${slug}/pills` : '/pills';\n\n      try {\n        setLoading(true)\n        const { data } = await coreApi.get(url);\n        if(slug) {\n          setParentTopic({id: data.id, title: data.title, pills: data.pills});\n          setTopics(data.topics);\n        }\n        else setTopics(data);\n\n      } catch (error) {\n        setSnackValues({\n          message: \"Ops! Falha ao carregar dados. Tente novamente.\",\n          open: true,\n        });\n      } finally {\n        setLoading(false);\n        window.scrollTo(0, 0);\n      }\n    }\n\n    fetchData();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [params])\n\n  function Loader() {\n    return (\n      <>\n        <Carousel\n          itemClass={classes.carouselItem}\n          responsive={responsive}\n          autoPlay={false}\n          infinite={true}\n          arrows={true}\n          partialVisible\n        >\n          {[0,1,2,3,4,5,6,7].map( (item,key) => {\n              return (\n                <Skeleton key={`sk-${key}`} height={600} width={300} />\n              )\n            })\n          }\n        </Carousel>\n      </>\n    )\n  }\n\n  function ParentTopicTitle({title}) {\n    return (\n      <Box component=\"div\" display=\"flex\" flexDirection=\"row\" mb={2}>\n        <Typography\n          className={classes.topicParentTitle}\n          component=\"span\"\n        >\n          {title}\n        </Typography>\n      </Box>\n    )\n  }\n\n  function TopicTitle({title, url}) {\n    return (\n      <Box component=\"div\" display=\"flex\" flexDirection=\"row\" mb={2}>\n        <Typography\n          className={classes.topicTitle}\n          component=\"span\"\n        >\n          {title}\n        </Typography>\n        <Link\n          component=\"button\"\n          onClick={() => loadTopic(url)}\n          className={classes.seeMore}\n        >\n          Ver tudo <ChevronRightIcon />\n        </Link>\n      </Box>\n    )\n  }\n\n  function TopicPills({pills = []}) {\n    return (\n      <>\n        <Carousel\n          itemClass={classes.carouselItem}\n          responsive={responsive}\n          autoPlay={false}\n          infinite={true}\n          arrows={true}\n        >\n          {pills.map( (pill, key) => {\n              return (\n                <PillCard\n                  key={`pillCard_${key}`}\n                  handlePillDialog={handlePillDialog}\n                  pill={pill}\n                />\n              )\n            })\n          }\n        </Carousel>\n      </>\n    )\n  }\n\n\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" mb={9}>\n        <Container maxWidth=\"xl\">\n          <Typography component=\"h1\" variant=\"h1\" className={classes.title}>Pílulas de Conhecimento</Typography>\n          <Box mb={4}><BillboardBannerApoie fallbackBanner={<AdsTop/>} /></Box>\n\n          {loading && (<Box mb={3}><Loader /></Box>)}\n\n          {\n            !loading && parentTopic ? (\n              <Box mb={4}>\n                <ParentTopicTitle title={parentTopic.title} />\n                <TopicPills pills={parentTopic.pills} />\n              </Box>\n            ) : ''\n          }\n          {\n            !loading && topics.map((topic, key) => {\n              return (\n                <Box mb={4}>\n                  <TopicTitle title={topic.title} url={topic.slug} />\n                  <TopicPills pills={topic.pills} />\n                </Box>\n              )\n            })\n          }\n        </Container>\n      </Box>\n      <PillDialogVideo\n        open={openPillDialog}\n        toggleDialog={handlePillDialog}\n        pillId={showPill?.uuid}\n      />\n    </React.Fragment>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    heading: {\n        marginRight: \"auto\"\n    },\n    secondaryHeading: {\n        \n    },\n    accordionSummary: {\n        alignItems: 'center'\n    },\n    module: {\n        background: theme.palette.grey[200],\n        color: theme.palette.getContrastText(theme.palette.grey[200]),\n    },\n    moduleDetails: {\n        padding: 0,\n        background: theme.palette.grey[900],\n        color: theme.palette.getContrastText(theme.palette.grey[900])\n    },\n    lessonsList: {\n        width: \"100%\",\n    },\n    lessonItemIcon: {\n        color: theme.palette.grey[700],\n    },\n    lessonTitle: {\n        color: theme.palette.grey[400],\n        fontSize: theme.typography.pxToRem(15),\n    },\n    lessonSubtitle: {\n        color: theme.palette.grey[200],\n        fontSize: theme.typography.pxToRem(12)\n    }\n}))\n\nexport { useStyles }\n","import React from 'react';\nimport { useHistory } from 'react-router-dom'\n\nimport {\n    Accordion,\n    AccordionSummary,\n    AccordionDetails,\n    Typography,\n    List,\n    ListItem,\n    ListItemIcon,\n    ListItemText,\n    Box,\n    Chip,\n} from '@material-ui/core';\n\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport PlayCircleFilledIcon from '@material-ui/icons/PlayCircleFilled';\nimport DoneIcon from '@material-ui/icons/Done';\nimport NotesIcon from '@material-ui/icons/Notes';\nimport HelpIcon from '@material-ui/icons/Help';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    const classes = useStyles();\n    const history = useHistory();\n\n    const goToClass = (course,lesson) => {\n\n        if(!course || !lesson) {\n            return false;\n        }\n        history.push(`/dashboard/course/${course}/lesson/${lesson}`)\n    }\n\n\n    const id = `panel1a-header-${props.id}`\n    const ariaControls = `panel-content-${props.id}`;\n    const classesSeen = props.progress?.completedLessonIds ?? [];\n    const enableLink = props.enableLink;\n\n    function ClassTypeIcon( props ) {\n        if(props?.seen)\n          return <DoneIcon color=\"primary\" />\n        if(props.type === 1)\n            return <PlayCircleFilledIcon />\n        if(props.type === 2)\n            return <NotesIcon />\n        if(props.type === 3)\n            return <HelpIcon />\n    }\n\n    return (\n        <Accordion square className={classes.module} TransitionProps={{ unmountOnExit: true }}>\n            <AccordionSummary\n                expandIcon={<ExpandMoreIcon />}\n                aria-controls={ariaControls}\n                id={id}\n                classes={{content: classes.accordionSummary}}\n            >\n                <Typography className={classes.heading} dangerouslySetInnerHTML={{ __html: props.title}}></Typography>\n                <Box className={classes.secondaryHeading}><Chip label={props.time} /></Box>\n            </AccordionSummary>\n            <AccordionDetails className={classes.moduleDetails}>\n                <List component=\"div\" disablePadding className={classes.lessonsList} >\n                    {props.lessons.map( (lesson,index) => {\n                        return (\n                            <ListItem disabled={!enableLink} key={index} button className={[classes.nested,classes.lessonItem].join(\" \")} onClick={()=>goToClass(props.courseSlug,lesson.slug)}>\n                                <ListItemIcon className={classes.lessonItemIcon}>\n                                    <ClassTypeIcon seen={classesSeen.includes(lesson.id) ?? false}  {...lesson} />\n                                </ListItemIcon>\n                                <ListItemText\n                                    classes={{ primary: classes.lessonTitle, secondary: classes.lessonSubtitle }}\n                                    primary={<Typography component=\"span\" dangerouslySetInnerHTML={{ __html: lesson.title}}></Typography>}\n                                    secondary={lesson.time}\n                                />\n                            </ListItem>\n                        )\n                    })}\n                </List>\n            </AccordionDetails>\n        </Accordion>\n    );\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    carouselItem: {\n        paddingLeft: theme.spacing(.5),\n        paddingRight: theme.spacing(.5),\n        paddingBottom: 6\n    },\n    title: {\n        fontWeight: 800,\n        color: theme.palette.grey[700],\n        fontSize: theme.typography.pxToRem(22),\n        marginBottom: theme.spacing(2),\n        [theme.breakpoints.only('xs')]: {\n            textAlign: 'center'\n        }\n    }\n}))\n\nexport { useStyles }","import React, {useEffect, useState, useRef} from 'react'\nimport coreApi from 'app/services/core-api';\nimport useOnScreen from 'hooks/useOnScreen'\n\nimport {\n  Box,\n} from '@material-ui/core';\n\nimport CourseCard from 'app/components/cards/Course/model-3'\nimport Skeleton from 'app/components/cards/Course/model-3/skeleton'\n\nimport Carousel from \"react-multi-carousel\";\nimport \"react-multi-carousel/lib/styles.css\";\n\n// Styles files\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const ref = useRef()\n  const isVisible = useOnScreen(ref)\n\n  const [courses, setCourses] = useState([])\n  const [loading, setLoading] = useState(true)\n\n  const fetchData = () => {\n    coreApi.get(`discovery-units?context=course&label=${props.category}&page[number]=1&page[size]=10`)\n    .then(response => {\n      setCourses(response.data.items)\n    }).catch(error => {\n      console.warn(error)\n    }).finally( () => {\n      setLoading(false)\n    })\n  }\n\n  useEffect( () => {\n\n    function load() {\n      if(isVisible) {\n          if(courses.length > 0) {\n              return false;\n          }\n          fetchData();\n      }\n    }\n    load()\n\n  },[isVisible])\n\n  const responsive = {\n      large: {\n        breakpoint: { max: 3000, min: 1024 },\n        items: 4,\n      },\n      desktop: {\n        breakpoint: { max: 1024, min: 768 },\n        items: 3,\n      },\n      tablet: {\n        breakpoint: { max: 768, min: 464 },\n        items: 2,\n      },\n      mobile: {\n        breakpoint: { max: 464, min: 0 },\n        items: 1,\n      }\n  }\n\n  return (\n    <Box ref={ref} component=\"div\">\n      <Carousel\n        itemClass={classes.carouselItem}\n        responsive={responsive}\n        arrows={!loading}\n        partialVisible\n      >\n        {loading ?\n          [0,1,2,3,4,5].map( (key) => {\n            return <Skeleton key={key} />\n          }) :\n          courses.map((course) => (\n            <CourseCard key={course.id} {...course} showSummary={false} />\n          ))\n        }\n      </Carousel>\n    </Box>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    paddingBottom: 0,\n  },\n  videoWrapper: {\n    position: \"absolute\",\n    top: 0,\n    left: 5,\n    width: '98%',\n    height: '95%',\n    border: 0,\n  },\n  videoWrapperContainer: {\n    position: \"relative\",\n    width: \"100%\",\n    paddingBottom: \"56.25%\",\n  },\n}))\n\nexport { useStyles }\n","import React from 'react'\n\nimport {\n  Box,\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  IconButton,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\nimport YouTube from 'react-youtube'\n\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const { open, toggleDialog, presentationVideo } = props\n\n  const opts = {\n    height: '390',\n    width: '640',\n    playerVars: {\n      autoplay: 1,\n      controls: 2,\n      color: 'white',\n      modestbranding: 1,\n      rel: 0,\n      showinfo: 0,\n    },\n  }\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>\n        <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n          <IconButton aria-label=\"close\" onClick={toggleDialog(false)} size=\"small\" >\n            <CloseIcon />\n          </IconButton>\n        </Box>\n      </DialogTitle>\n      <DialogContent>\n        <YouTube\n          videoId={presentationVideo}\n          containerClassName={`${classes.videoWrapperContainer}`}\n          className={`${classes.videoWrapper}`}\n          opts={opts}\n        />\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import React from 'react'\n\nimport {\n  Box,\n  Hidden,\n} from '@material-ui/core'\n\nimport Carousel from \"react-multi-carousel\"\nimport \"react-multi-carousel/lib/styles.css\"\n\nimport { useStyles } from './styles'\n\nconst responsive = {\n  large: {\n    breakpoint: { max: 3000, min: 1024 },\n    items: 1,\n  },\n  desktop: {\n    breakpoint: { max: 1024, min: 768 },\n    items: 1,\n  },\n  tablet: {\n    breakpoint: { max: 768, min: 464 },\n    items: 1,\n  },\n  mobile: {\n    breakpoint: { max: 464, min: 0 },\n    items: 1,\n  }\n}\n\nexport default (props) => {\n  const { campaigns = []} = props\n\n  const classes = useStyles()\n\n  const goTo = ({link,target}) => {\n    if(!link) {\n      return;\n    }\n\n    window.open(`${link}`, target || '_blank');\n  }\n\n  return (\n\n      <Carousel\n        itemClass={classes.carouselItem}\n        responsive={responsive}\n        autoPlay={campaigns.length > 1}\n        autoPlaySpeed={3000}\n        infinite={campaigns.length > 1}\n        focusOnSelect={true}\n        arrows={campaigns.length > 1}\n      >\n        {campaigns.map((campaign, index) => (\n\n          <Box component=\"div\" display=\"flex\" key={index}>\n            <Hidden xsDown>\n              <div\n                key={campaign.id}\n                onClick={() => goTo(campaign)}\n                className={classes.link}\n              >\n                <img\n                  className={classes.carouselImg}\n                  src={campaign.photo}\n                  alt=\"Banner de campanha\"\n                />\n              </div>\n            </Hidden>\n            <Hidden smUp>\n              <div\n                key={campaign.id}\n                onClick={() => goTo(campaign)}\n                className={classes.link}\n              >\n                <img\n                  className={classes.carouselImg}\n                  src={campaign.photoMobile}\n                  alt=\"Banner de campanha\"\n                />\n              </div>\n            </Hidden>\n          </Box>\n        ))}\n      </Carousel>\n\n  )\n}\n","\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  chip: {\n    color: \"#FFF\",\n    fontWeight: \"bold\",\n    marginBottom: theme.spacing(1),\n    [theme.breakpoints.down('md')]: {\n      marginBottom: theme.spacing(2),\n    }\n  },\n  courseTitle: {\n    fontSize: theme.typography.pxToRem(46),\n    fontWeight: 900,\n    marginBottom: theme.spacing(4),\n    [theme.breakpoints.down('md')]: {\n      fontSize: theme.typography.pxToRem(38),\n    }\n  },\n  courseMedia: {\n    height: 0,\n    paddingTop: '56.25%', // 16:9\n  },\n  ctaCourse: {\n    marginRight: theme.spacing(1)\n  },\n  courseContent: {\n    height: \"100%\",\n    borderRadius: 0,\n    paddingTop: theme.spacing(4),\n    paddingBottom: theme.spacing(4),\n  },\n  courseSectionTitle: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 800,\n    marginBottom: theme.spacing(3),\n  },\n  courseSectionTitleRelatedCourses: {\n    marginBottom: theme.spacing(0),\n    marginRight: theme.spacing(1),\n  },\n  relatedCoursesAction: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n  alert: {\n    background: theme.palette.warning['main'],\n    color: \"#FFF\",\n    padding: theme.spacing(2),\n  },\n  instructorCard: {\n    backgroundColor: theme.palette.grey[800],\n    padding: `${theme.spacing(4)}px ${theme.spacing(3)}px 0`,\n    boxShadow: 'none',\n  },\n  instructorCardHeader: {\n    paddingBottom: theme.spacing(1),\n    alignItems: 'flex-start',\n  },\n  instructorCardContent: {\n    [theme.breakpoints.up('sm')]: {\n      marginLeft: `calc(${theme.spacing(2)}px + 64px)`,\n      paddingTop: theme.spacing(1),\n    }\n  },\n  instructorAvatar: {\n    width: '64px',\n    height: '64px',\n  },\n  instructorName: {\n    display: 'block',\n    fontSize: theme.typography.pxToRem(16),\n    fontWeight: 700,\n    color: theme.palette.common.white,\n  },\n  instructorJobTitle: {\n    display: 'block',\n    fontSize: theme.typography.pxToRem(14),\n    color: theme.palette.grey[200],\n    marginBottom: theme.spacing(1),\n  },\n  instructorDescription: {\n    color: theme.palette.common.white\n  },\n  instructorSocialButton: {\n    color: theme.palette.grey[300],\n    marginRight: theme.spacing(1),\n  }\n}))\n\nexport { useStyles }\n","import React, { useRef } from 'react'\nimport { isMobile } from 'react-device-detect';\n\nimport {\n  Container,\n  Box,\n  IconButton,\n  Button,\n  Typography,\n  Chip,\n  Paper,\n  Grid,\n  Avatar,\n  List,\n  ListItem,\n  ListItemText,\n  ListItemAvatar,\n  Card,\n  CardHeader,\n  CardContent,\n  CardActions,\n  CardActionArea,\n  LinearProgress,\n  ListItemIcon,\n  Snackbar,\n  CircularProgress,\n  Link,\n} from '@material-ui/core';\n\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport PlayArrowIcon from '@material-ui/icons/PlayArrow';\nimport EventAvailableIcon from '@material-ui/icons/EventAvailable';\nimport VideocamIcon from '@material-ui/icons/Videocam';\nimport SchoolIcon from '@material-ui/icons/School';\nimport GroupIcon from '@material-ui/icons/Group';\nimport AllInclusiveIcon from '@material-ui/icons/AllInclusive';\nimport VideoLibraryIcon from '@material-ui/icons/VideoLibrary';\nimport InstagramIcon from '@material-ui/icons/Instagram';\nimport FacebookIcon from '@material-ui/icons/Facebook';\nimport YouTubeIcon from '@material-ui/icons/YouTube';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport TwitterIcon from '@material-ui/icons/Twitter';\nimport LinkedInIcon from '@material-ui/icons/LinkedIn';\nimport LanguageIcon from '@material-ui/icons/Language';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\n\nimport Module from 'app/components/accordions/Module/model-2'\nimport RelatedCourses from 'app/components/carousels/RelatedCourses'\n\nimport {AdsTop, AdsBottom, AdsIncontent, AdsSideBar} from \"app/components/ads/freestar\";\n\nimport PresentationVideo from 'app/components/Modals/PresentationVideo'\n\nimport Campaigns from \"app/components/carousels/Campaigns/ads\";\n\n\nimport { useStyles } from './styles'\n\nimport studentApi from 'app/services/student-api'\n\nimport Thumbnail from 'app/components/cards/Course/thumbnail/Image';\nimport MediaColor from 'app/components/cards/Course/thumbnail/MediaColor';\n\nexport default (props) => {\n\n  const classes = useStyles()\n\n  const {\n    isLoadingContent,\n    isLoadingCurriculum,\n    isLoadingInstructors,\n    isLoadingProgress,\n    isLoadingAds,\n    content,\n    curriculum,\n    instructors,\n    progress,\n    ads,\n  } = props;\n  const curriculumSection = useRef(null);\n  const [isEnrolling, setIsEnrolling] = React.useState(false);\n  const [firstEnroll, setFirstEnroll] = React.useState(false);\n  const [courseUrl, setCourseUrl] = React.useState('');\n  const [snackValues, setSnackValues] = React.useState({\n    message: '',\n    open: false,\n  });\n  const [openPresentationVideoDialog, setOpenPresentationVideoDialog] = React.useState(false);\n  const handlePresetatonVideoDialog = (open) => (event) => {\n    setOpenPresentationVideoDialog(open);\n  };\n\n  const presentationVideo = content.presentationVideo || null\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return;\n    }\n    setSnackValues({ open: false });\n  };\n\n  const continueCourse = (url) => {\n      window.location.href = (`/dashboard/course/${url}`);\n  }\n\n\n  const enrollMe = () => {\n\n    setIsEnrolling(true);\n\n    studentApi.post(`enroll`, { courseId: content.id })\n      .then(response => {\n        setFirstEnroll(true)\n        if(content?.sellerUrl)\n          window.open(content.sellerUrl, '_blank');\n      }).catch((err) => {\n        setSnackValues({ message: \"Houve uma falha ao realizar sua matrícula. Tente novamente.\", open: true });\n        console.warn(err.data)\n      }).finally(() => {\n        setIsEnrolling(false);\n      })\n  }\n\n  function ProducerSocialLink(props) {\n\n    switch (props.type) {\n      case 1:\n        return <FacebookIcon fontSize=\"inherit\" />\n      case 2:\n        return <InstagramIcon fontSize=\"inherit\" />\n      case 3:\n        return <YouTubeIcon fontSize=\"inherit\" />\n      case 4:\n        return <TwitterIcon fontSize=\"inherit\" />\n      case 5:\n        return <LinkedInIcon fontSize=\"inherit\" />\n      case 6:\n        return <LanguageIcon fontSize=\"inherit\" />\n\n      default:\n        return null;\n    }\n  }\n\n  const _handlePresentationVideo = () => {\n    if (!presentationVideo) return\n    setOpenPresentationVideoDialog(true)\n  }\n\n  function Producer(producer) {\n\n    return (\n      <Card className={classes.instructorCard} elevation={0}>\n        <CardHeader\n          className={classes.instructorCardHeader}\n          disableTypography\n          avatar={\n            <Avatar aria-label=\"recipe\" alt={producer.displayName} className={classes.instructorAvatar} src={producer.thumbnail}>A</Avatar>\n          }\n          title={<Typography className={classes.instructorName}>{producer.displayName}</Typography>}\n          subheader={\n            <>\n              <Typography className={classes.instructorJobTitle} component=\"span\">{producer.jobTitle}</Typography>\n              <Box component=\"div\" display=\"flex\" flexDirection=\"row\">\n                {producer.links.map((link, index) => {\n                  return (\n                    <IconButton size=\"small\" className={classes.instructorSocialButton} href={link.link} key={index} target=\"_blank\"><ProducerSocialLink {...link} /></IconButton>\n                  )\n                })}\n              </Box>\n            </>\n          }\n        />\n        <CardContent className={classes.instructorCardContent}>\n          <Box mb={2} lineHeight={2} className={classes.instructorDescription} dangerouslySetInnerHTML={{ __html: producer.description.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />') }} />\n        </CardContent>\n      </Card>\n    )\n\n  }\n\n  const scrollDown = (ref) => {\n    window.scrollTo({\n      top: ref.current.offsetTop - 20,\n      behavior: 'smooth',\n    });\n  };\n\n  return (\n    <>\n      <Box component=\"div\" mb={7}>\n        <Container>\n          <Grid container spacing={3} justify=\"space-between\">\n            <Grid item xs={12} md={8} lg={6}>\n              <Box component=\"div\" mb={3}>\n                {isLoadingContent ?\n                  (\n                    <React.Fragment>\n                      <Skeleton animation=\"wave\" variant=\"rect\" height={30} width={70} />\n                      <Skeleton animation=\"wave\" variant=\"text\" height={80} style={{ marginBottom: 18 }} />\n                      {[0, 1, 2].map((item, index) => <Skeleton key={index} animation=\"wave\" variant=\"text\" />)}\n                    </React.Fragment>) :\n                  <React.Fragment>\n                    <Chip label={content.category.title} style={{ backgroundColor: `${content.category?.color}` }} className={classes.chip} />\n                    <Typography component=\"h1\" variant=\"h1\" className={classes.courseTitle}>{content.title}</Typography>\n                    <Typography component=\"p\">{content.summary}</Typography>\n                  </React.Fragment>\n                }\n              </Box>\n            </Grid>\n            <Grid item xs={12} md={4}>\n              {isMobile && <Box component=\"div\" mb={4}><AdsTop /></Box>}\n              <Card>\n                {\n                  isLoadingContent ?\n                    <Skeleton animation=\"wave\" variant=\"rect\" height={160} /> :\n                    content.presentationVideo ? (\n                      <CardActionArea\n                        onClick={_handlePresentationVideo}\n                      >\n                        <Box component=\"div\" style={{ color: \"#FFF\", backgroundColor: 'rgba(0,0,0,.5)' }} position=\"absolute\" zIndex={2} height=\"100%\" width=\"100%\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\">\n                          <PlayArrowIcon style={{ fontSize: 50 }} className={classes.courseMediaPreviewIcon} />\n                          <Typography style={{ fontWeight: 'bold' }} component=\"span\">Ver prévia do curso</Typography>\n                        </Box>\n                        {\n                          content.imageUploadedAt ?\n                            <Thumbnail title={content.title} id={content.uuid} /> :\n                            <MediaColor color={content.category.color} />\n                        }\n                      </CardActionArea>\n                    ) : (\n                      content.imageUploadedAt ?\n                        <Thumbnail title={content.title} id={content.uuid} /> :\n                        <MediaColor color={content.category.color} />\n                    )\n                }\n                {\n                  isLoadingProgress ? (\n                    <React.Fragment>\n                      <Box component=\"div\" width=\"95%\" mx=\"auto\" py={2}>\n                        <Skeleton animation=\"wave\" variant=\"text\" />\n                        <Skeleton animation=\"wave\" variant=\"text\" width=\"80%\" />\n                        <Skeleton animation=\"wave\" height={70} />\n                      </Box>\n                    </React.Fragment>\n                  ) : (\n                    <React.Fragment>\n                      {progress?.certificate ? (\n                        <React.Fragment>\n                          <CardContent>\n                            <Box display=\"flex\" alignItems=\"center\">\n                              <Box mr={1} flexGrow={1}>\n                                <LinearProgress variant=\"determinate\" value={100} />\n                              </Box>\n                              <Box>\n                                <Typography variant=\"body2\" color=\"textSecondary\">100%</Typography>\n                              </Box>\n                            </Box>\n                          </CardContent>\n                          <CardActions>\n                            <Box component=\"div\" width=\"95%\" mx=\"auto\" mb={1}>\n                              <Button fullWidth color=\"primary\" variant=\"contained\" className={classes.ctaCourse} disabled={progress.certificate.status !== 3} href=\"/dashboard/user/certificates\">\n                                {(progress.certificate.status === 1 || progress.certificate.status === 2) && 'Gerando certificado'}\n                                {progress.certificate.status === 3 && 'Obter certificado'}\n                                {progress.certificate.status === 4 && 'Erro ao gerar certificado'}\n                              </Button>\n                            </Box>\n                          </CardActions>\n                        </React.Fragment>\n                      ) : progress?.isValidStudent ? (\n                        <React.Fragment>\n                          <CardContent>\n                            <Box display=\"flex\" alignItems=\"center\">\n                              <Box mr={1} flexGrow={1}>\n                                <LinearProgress variant=\"determinate\" value={Math.trunc(progress.completedLessonIds.length*100/content.totalClasses)} />\n                              </Box>\n                              <Box>\n                                <Typography variant=\"body2\" color=\"textSecondary\">{Math.trunc(progress.completedLessonIds.length*100/content.totalClasses)}%</Typography>\n                              </Box>\n                            </Box>\n                          </CardContent>\n                          <CardActions>\n                            <Box component=\"div\" width=\"95%\" mx=\"auto\" mb={1}>\n                              <Button\n                                color=\"primary\"\n                                variant=\"contained\"\n                                fullWidth\n                                onClick={() => scrollDown(curriculumSection)}\n                                // onClick={() => continueCourse(`${content.slug}/lesson/${progress.nextLesson}`)}\n                                className={classes.ctaCourse}>CONTINUAR CURSO</Button>\n                            </Box>\n                          </CardActions>\n                        </React.Fragment>\n                      ) : (\n                        <React.Fragment>\n                          <CardContent>\n                            <Typography component=\"p\">Matricule-se para iniciar o curso e estudar gratuitamente.</Typography>\n                          </CardContent>\n                          <CardActions>\n                            <Box component=\"div\" width=\"95%\" mx=\"auto\" mb={1}>\n                              {\n                                firstEnroll ?\n                                  <Button color=\"primary\" fullWidth variant=\"contained\" onClick={() => continueCourse(`${content.slug}/lesson/${curriculum.at(0)?.lessons?.at(0)?.slug}`)} className={classes.ctaCourse}>COMEÇAR CURSO</Button>\n                                :\n                                  <Button id=\"enrollCourse\" fullWidth color=\"secondary\" variant=\"contained\" className={classes.ctaCourse} disabled={isEnrolling} onClick={enrollMe}>{isEnrolling ? <CircularProgress size={30} /> : 'MATRICULAR-SE'}</Button>\n                              }\n                            </Box>\n                          </CardActions>\n                        </React.Fragment>\n                      )}\n                    </React.Fragment>\n                  )\n                }\n              </Card>\n            </Grid>\n          </Grid>\n        </Container>\n      </Box>\n\n      <Box component=\"div\" mb={7}>\n        <Paper elevation={0} className={classes.courseContent}>\n          <Container>\n            <Grid container spacing={3}>\n              <Grid item xs={12}>\n                <Box component=\"div\" my={3}>\n                  {\n                    isMobile ? <AdsIncontent /> : <AdsTop />\n                  }\n                </Box>\n              </Grid>\n              <Grid item xs={12} md={8}>\n\n                <Box component=\"div\" mb={6}>\n                  <Typography component=\"h2\" variant=\"h2\" className={classes.courseSectionTitle}>Sobre o curso</Typography>\n                  {isLoadingContent ?\n                    [0, 1, 2, 4, 5, 6].map((item, index) => <Skeleton key={index} animation=\"wave\" variant=\"text\" />) :\n                    <Box component=\"div\" dangerouslySetInnerHTML={{ __html: content.description }} />\n                  }\n                </Box>\n\n                <Box ref={curriculumSection} component=\"div\" mb={6}>\n                  {\n                    isLoadingAds ?\n                    <Skeleton variant=\"rect\" width='100%' height={190} /> :\n                    ads.length > 0 ?\n                      <Campaigns campaigns={ads} /> : <AdsIncontent />\n                  }\n                </Box>\n\n                <Box component=\"div\" mb={6}>\n                  <Typography component=\"h2\" variant=\"h2\" className={classes.courseSectionTitle}>Conteúdo do curso</Typography>\n                  {isLoadingCurriculum && isLoadingProgress ?\n                    [0, 1, 2, 4].map((item, index) => <Skeleton key={index} animation=\"wave\" height={60} />) :\n                    curriculum.map((module, index) => <Module key={index} enableLink={progress.isValidStudent ?? false} courseSlug={content.slug} progress={progress} {...module} />)\n                  }\n                </Box>\n\n                <Box component=\"div\" mb={6}>\n                  <Typography component=\"h2\" variant=\"h2\" className={classes.courseSectionTitle}>Para quem é indicado</Typography>\n                  <List disablePadding>\n                    {isLoadingContent ?\n                      <React.Fragment>\n                        {[0, 1, 2].map((item, index) =>\n                          <ListItem disableGutters key={index}>\n                            <ListItemIcon>\n                              <ArrowForwardIosIcon fontSize=\"small\" color=\"primary\" />\n                            </ListItemIcon>\n                            <ListItemText\n                              primary={<Skeleton animation=\"wave\" variant=\"text\" width={300} />}\n                            />\n                          </ListItem>\n                        )}\n                      </React.Fragment> : (\n                        content.targets?.length > 0 ? content.targets.map((item, index) => {\n                          return (\n                            <ListItem key={index} disableGutters>\n                              <ListItemIcon>\n                                <ArrowForwardIosIcon fontSize=\"small\" color=\"primary\" />\n                              </ListItemIcon>\n                              <ListItemText\n                                primary={item.target}\n                              />\n                            </ListItem>)\n                        }) : (\n                          <ListItem disableGutters>\n                            <ListItemIcon>\n                              <ArrowForwardIosIcon fontSize=\"small\" color=\"primary\" />\n                            </ListItemIcon>\n                            <ListItemText\n                              primary=\"Todo tipo de público\"\n                            />\n                          </ListItem>\n                        )\n                      )\n                    }\n                  </List>\n                </Box>\n\n                {!isLoadingInstructors && instructors.length > 0 ?\n                  (\n                    <Box component=\"div\" mb={6}>\n                      <Typography component=\"h2\" variant=\"h2\" className={classes.courseSectionTitle}>{instructors.length > 1 ? 'Instrutores' : 'Instrutor'}</Typography>\n                      {instructors.map((producer, index) => {\n                        return <Producer {...producer} key={index} />\n                      })}\n                    </Box>\n                  ) : ''}\n\n              </Grid>\n\n              <Grid item xs={12} md={4}>\n                <Box component=\"div\" mb={6}>\n                  <Box mb={3}>\n                    <List disablePadding>\n                      {isLoadingContent ?\n                        [0, 1, 2, 4, 5].map((item, index) => {\n                          return (\n                            <ListItem key={index}>\n                              <ListItemAvatar>\n                                <Skeleton variant=\"circle\" width={40} height={40} />\n                              </ListItemAvatar>\n                              <ListItemText\n                                primary={<Skeleton animation=\"wave\" variant=\"text\" />}\n                                secondary={<Skeleton animation=\"wave\" variant=\"text\" />}\n                              />\n                            </ListItem>\n                          )\n                        }) :\n                        (\n                          <React.Fragment>\n                            {\n                              content.totalEnrollments > 10 &&\n                              <ListItem>\n                                <ListItemAvatar>\n                                  <Avatar>\n                                    <GroupIcon />\n                                  </Avatar>\n                                </ListItemAvatar>\n                                <ListItemText\n                                  primary={`${content.totalEnrollments} alunos`}\n                                  secondary='Também estão fazendo este curso.'\n                                />\n                              </ListItem>\n                            }\n                            {content.status === 2 ?\n                              <React.Fragment>\n                                <ListItem>\n                                  <ListItemAvatar>\n                                    <Avatar>\n                                      <VideocamIcon />\n                                    </Avatar>\n                                  </ListItemAvatar>\n                                  <ListItemText\n                                    primary=\"Curso em gravação\"\n                                    secondary='Estamos realizando a gravação deste curso, mas você já pode ir assistindo as aulas.'\n                                  />\n                                </ListItem>\n                                <ListItem>\n                                  <ListItemAvatar>\n                                    <Avatar>\n                                      <SchoolIcon />\n                                    </Avatar>\n                                  </ListItemAvatar>\n                                  <ListItemText\n                                    primary=\"Certificado indisponível\"\n                                    secondary='O certificado estará disponível assim que todas as aulas forem gravadas.'\n                                  />\n                                </ListItem>\n                              </React.Fragment> :\n                              <ListItem>\n                                <ListItemAvatar>\n                                  <Avatar>\n                                    <SchoolIcon />\n                                  </Avatar>\n                                </ListItemAvatar>\n                                <ListItemText\n                                  primary=\"Certificado disponível\"\n                                  secondary='Ganhe o certificado após a conclusão.'\n                                />\n                              </ListItem>\n                            }\n                            <ListItem>\n                              <ListItemAvatar>\n                                <Avatar>\n                                  <VideoLibraryIcon />\n                                </Avatar>\n                              </ListItemAvatar>\n                              <ListItemText\n                                primary={`${content.totalClasses} ${content.totalClasses === 1 ? 'aula' : 'aulas'}`}\n                                secondary={`${content.totalClasses === 1 ? 'Disponível' : 'Disponíveis'} ${content.status === 1 ? 'para você estudar' : 'até o momento'}`}\n                              />\n                            </ListItem>\n                            <ListItem>\n                              <ListItemAvatar>\n                                <Avatar>\n                                  <EventAvailableIcon />\n                                </Avatar>\n                              </ListItemAvatar>\n                              <ListItemText\n                                primary=\"Prazo flexível\"\n                                secondary='Estude no seu tempo e no seu ritmo.'\n                              />\n                            </ListItem>\n                            <ListItem>\n                              <ListItemAvatar>\n                                <Avatar>\n                                  <AllInclusiveIcon />\n                                </Avatar>\n                              </ListItemAvatar>\n                              <ListItemText\n                                primary=\"Acesso ilimitado e vitalício\"\n                                secondary='Comece imediatamente e aprenda em seu próprio cronograma.'\n                              />\n                            </ListItem>\n                          </React.Fragment>\n                        )}\n                    </List>\n                  </Box>\n                  {!isMobile && <Box><AdsSideBar /></Box>}\n                </Box>\n              </Grid>\n\n              <Grid item xs={12}>\n                <AdsBottom />\n              </Grid>\n            </Grid>\n          </Container>\n        </Paper>\n      </Box>\n\n      <Box component=\"div\" mb={7}>\n        <Container>\n          {!isLoadingContent && (\n            <React.Fragment>\n              <Box component=\"div\" display=\"flex\" flexDirection=\"row\" alignItems=\"center\" mb={4}>\n                <Typography component=\"h2\" variant=\"h2\" className={[classes.courseSectionTitle, classes.courseSectionTitleRelatedCourses].join(\" \")}>Mais cursos de {content.category.title}</Typography>\n                <Link href={`/dashboard/discover/${content.category.slug}`} className={[classes.seeMore,classes.relatedCoursesAction].join(\" \")}>\n                  Ver tudo <ChevronRightIcon />\n                </Link>\n              </Box>\n              <RelatedCourses category={content.category?.slug} />\n            </React.Fragment>\n          )}\n        </Container>\n      </Box>\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n      <PresentationVideo\n        open={openPresentationVideoDialog}\n        toggleDialog={handlePresetatonVideoDialog}\n        presentationVideo={presentationVideo}\n      />\n    </>\n  );\n}\n","import React, {useEffect, useState} from 'react'\n\n// API file\nimport coreApi from 'app/services/core-api'\nimport studentApi from 'app/services/student-api'\nimport systemApi from 'app/services/system-api'\n\nimport CourseLayout from 'app/components/layouts/Course/v1'\n\nexport default (props) => {\n\n  const [content, setContent] = useState({})\n  const [progress, setProgress] = useState({})\n  const [curriculum, setCurriculum] = useState([])\n  const [instructors, setInstructors] = useState([])\n  const [ads, setAds] = useState([])\n  const [isLoadingContent, setIsLoadingContent] = useState(true)\n  const [isLoadingCurriculum, setIsLoadingCurriculum] = useState(true)\n  const [isLoadingInstructors, setIsLoadingInstructors] = useState(true)\n  const [isLoadingProgress, setIsLoadingProgress] = useState(true)\n  const [isLoadingAds, setIsLoadingAds] = useState(true)\n\n  const { slug } = props.match.params\n\n  useEffect(() => {\n\n    setIsLoadingCurriculum(true);\n    setIsLoadingInstructors(true);\n    setIsLoadingContent(true);\n    setIsLoadingProgress(true);\n    setIsLoadingAds(true);\n\n    const fetchResult = async () => {\n\n      const [course, ads] = await Promise.allSettled([\n        coreApi.get(`/courses/${slug}?components=content,curriculum,instructors`),\n        systemApi.get(`vendor?context=course&courseId=${slug}`)\n      ])\n\n      setContent(course.value?.data.content)\n      setCurriculum(course.value?.data.curriculum);\n      setInstructors(course.value?.data.instructors);\n      setIsLoadingContent(false);\n      setIsLoadingInstructors(false);\n\n      setAds(ads.value?.data || [])\n      setIsLoadingAds(false);\n\n      let progress = [];\n      if(course.status === 'fulfilled') {\n        progress = await studentApi.get(`/subscribed-courses/${course.value.data.content.id}/status`)\n      }\n\n      setProgress(progress.data);\n      setIsLoadingCurriculum(false);\n      setIsLoadingProgress(false);\n    }\n\n    fetchResult().catch(console.error);\n  },[slug])\n\n  return (\n    <CourseLayout\n      isLoadingContent={isLoadingContent}\n      isLoadingCurriculum={isLoadingCurriculum}\n      isLoadingInstructors={isLoadingInstructors}\n      isLoadingProgress={isLoadingProgress}\n      isLoadingAds={isLoadingAds}\n      content={content}\n      curriculum={curriculum}\n      instructors={instructors}\n      progress={progress}\n      ads={ads}\n    />\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    title: {\n        fontSize: theme.typography.pxToRem(36),\n        marginBottom: theme.spacing(1),\n        fontWeight: 800\n    },\n    subtitle: {\n        fontSize: theme.typography.pxToRem(16),\n        color: theme.palette.grey[600]\n    },\n    boxKlubi: {\n        backgroundColor: theme.palette.grey[100],\n        padding: `${theme.spacing(2)}px ${theme.spacing(2)}px`,\n        marginBottom: theme.spacing(2),\n        textAlign: \"center\"\n    },\n    boxKlubiTitle: {\n        fontWeight: 700,\n        fontSize: theme.typography.pxToRem(18),\n    },\n    boxKlubiCopy: {\n        textAlign: 'center',\n        fontSize: theme.typography.pxToRem(15)\n    },\n}))\n\nexport { useStyles }","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex',\n    width: '100%',\n    minHeight: 200,\n    color: theme.palette.common.white,\n  },\n  cardActionArea: {\n    display: \"flex\",\n  },\n  cardContent: {\n    width: \"100%\",\n    height: \"100%\",\n    padding: 0,\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"flex-start\"\n  },\n  cardTitle: {\n    fontWeight: 700,\n    fontSize: theme.typography.pxToRem(16),\n    padding: theme.spacing(2),\n  },\n  cardFooter: {\n    width: \"100%\",\n    color: theme.palette.grey[600],\n    backgroundColor: theme.palette.common.white,\n    padding: theme.spacing(2),\n  },\n  avatar: {\n    width: theme.spacing(4),\n    height: theme.spacing(4),\n    color: \"#FFF\",\n    fontSize: theme.typography.pxToRem(13),\n    fontWeight: 700,\n    marginRight: theme.spacing(.7),\n    backgroundColor: theme.palette.primary['main'],\n  },\n  checkedProfile: {\n    fontSize: theme.typography.pxToRem(14),\n    color: \"#44abfe\",\n    marginLeft: theme.spacing(.1)\n  },\n  creatorName: {\n    fontSize: theme.typography.pxToRem(14)\n  }\n}))\n\nexport { useStyles }","import React from 'react';\nimport { useHistory } from 'react-router-dom'\n\nimport {\n  LinearProgress,\n  Card,\n  CardActionArea,\n  CardContent,\n  Typography,\n  Box,\n  Avatar,\n} from '@material-ui/core';\n\nimport {\n  useStyles\n} from './styles'\n\nimport NewReleasesIcon from '@material-ui/icons/NewReleases';\n\nfunction LinearProgressWithLabel(props) {\n\n  return (\n    <Box display=\"flex\" alignItems=\"center\">\n      <Box width=\"100%\" mr={1}>\n        <LinearProgress variant=\"determinate\" {...props} />\n      </Box>\n      <Box minWidth={35}>\n        <Typography variant=\"body2\" color=\"textSecondary\">{props.value}%</Typography>\n      </Box>\n    </Box>\n  );\n}\n\n\nexport default (props) => {\n\n  const classes = useStyles();\n  const history = useHistory()\n\n  const getQuiz = (props) => {\n    if(!props.demo) {\n      history.push(`/dashboard/quizzes/${props.uuid}`)\n    }\n  }\n\n  return (\n    <Card className={classes.root} style={{backgroundColor:props.category?.color ?? '#0F5B7A'}}>\n      <CardActionArea className={classes.cardActionArea} onClick={()=> getQuiz(props)}>\n        <CardContent className={classes.cardContent}>\n          <Box display=\"flex\" flexDirection=\"column\" mt=\"auto\" width=\"100%\">\n              <Typography component=\"h4\" className={classes.cardTitle}>{props.title ?? ''}</Typography>\n              <Box component=\"div\" display=\"inline\" width=\"100%\" alignItems=\"center\" className={classes.cardFooter}>\n                {!props.demo ? (\n                  props.isFinished ? `Ver resultado` : <LinearProgressWithLabel value={props.totals?.progress} />\n                ) : (\n                  <>\n                  <Box component=\"div\" display=\"flex\" flexDirection=\"row\">\n                    <Box component=\"div\" display=\"flex\" flexDirection=\"row\" alignItems=\"center\">\n                      <Avatar className={classes.avatar}>K</Avatar>\n                      <Box className={classes.creatorName}>Kultivi</Box>\n                    </Box>\n                    <NewReleasesIcon className={classes.checkedProfile} />\n                  </Box>\n                  </>\n                )}\n              </Box>\n          </Box>\n        </CardContent>\n      </CardActionArea>\n    </Card>\n  );\n}\n","import React from 'react'\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport {\n  Card,\n  CardContent,\n} from '@material-ui/core';\n\n\nconst SkeletonCourse = () => {\n\n  return (\n    <>\n      <Card>\n        <Skeleton animation=\"wave\" variant=\"rect\" height={120} />\n          <CardContent>\n            <Skeleton animation=\"wave\" height={50} width=\"100%\" />\n          </CardContent>\n      </Card>\n    </>\n  )\n}\n\nexport default SkeletonCourse\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    carouselItem: {\n        paddingLeft: theme.spacing(.5),\n        paddingRight: theme.spacing(.5),\n        paddingBottom: 6\n    },\n    title: {\n        fontSize: theme.typography.pxToRem(18),\n        fontWeight: 700,\n        marginBottom: theme.spacing(1),\n    }\n}))\n\nexport { useStyles }","import React, {useEffect, useState} from 'react'\n\nimport studentApi from 'app/services/student-api'\nimport QuizCard from 'app/components/cards/Quiz'\nimport Skeleton from 'app/components/cards/Quiz/skeleton'\nimport {\n  Box,\n  Typography,\n } from '@material-ui/core';\n\nimport Carousel from \"react-multi-carousel\";\nimport \"react-multi-carousel/lib/styles.css\";\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n\n  // States\n  const [quizzes, setQuizzes] = useState([])\n  const [loading, setLoading] = useState(true)\n\n  useEffect(() => {\n    studentApi.get(`practice-exams`).then(response => {\n      setQuizzes(response.data)\n    }).catch(error => {\n      console.warn(error)\n    }).finally( () => {\n      setLoading(false)\n    })\n  }, [])\n\n  const responsive = {\n      large: {\n        breakpoint: { max: 3000, min: 1024 },\n        items: 5,\n      },\n      desktop: {\n        breakpoint: { max: 1024, min: 768 },\n        items: 4,\n      },\n      tablet: {\n        breakpoint: { max: 768, min: 464 },\n        items: 3,\n      },\n      mobile: {\n        breakpoint: { max: 464, min: 0 },\n        items: 1,\n      }\n  }\n\n  return (\n\n      <Box component=\"div\">\n          {!loading && quizzes.length > 0 && <Typography component=\"h2\" className={classes.title}>Meus Simulados</Typography>}\n          <Carousel\n              itemClass={classes.carouselItem}\n              responsive={responsive}\n              arrows={!loading}\n              partialVisible\n            >\n            {loading ?\n              [0,1,2,3,4].map( (key) => {\n                return <Skeleton key={key} />\n              }) :\n              quizzes.map((quiz) => (\n                <QuizCard key={quiz.id} {...quiz} />\n              ))\n            }\n          </Carousel>\n      </Box>\n\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    chip: {\n        margin: theme.spacing(0.5),\n    },\n    maxSubjects: {\n        fontSize: theme.typography.pxToRem(12),\n    }\n}))\n\nexport { useStyles }","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from 'react'\nimport { useHistory } from 'react-router-dom'\n\nimport studentApi from 'app/services/student-api'\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  FormControl,\n  InputLabel,\n  FormHelperText,\n  TextField,\n  Checkbox,\n  Select,\n  Chip,\n  Switch,\n  FormControlLabel,\n  Grid,\n  Snackbar,\n  IconButton,\n} from '@material-ui/core'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nimport CloseIcon from '@material-ui/icons/Close';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\n\nimport { useFormik } from 'formik'\nimport * as yup from 'yup'\n\nimport { useStyles } from './styles'\n\nconst validationSchema = yup.object({\n  title: yup.string().required(\"Título é obrigatório\"),\n  category_id: yup.string().required(\"Categoria é obrigatório\"),\n  is_public: yup.boolean(),\n});\n\nexport default function QuizForm({setQuestions, setPagination}) {\n\n  const classes = useStyles()\n  const history = useHistory()\n\n  const [categories, setCategories] = React.useState([])\n  const [subjects, setSubjects] = React.useState([])\n  const [sections, setSections] = React.useState([])\n  const [limits, setLimits] = React.useState([20,30,40,50]);\n  const [subjectsSelected, setSubjectsSelected] = React.useState([])\n  const [sectionsSelected, setSectionsSelected] = React.useState([])\n  const [snackValues, setSnackValues] = React.useState({\n    message: '',\n    open: false,\n  });\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return;\n    }\n    setSnackValues({open:false});\n  };\n\n\n  const formik = useFormik({\n    initialValues: {\n      title: '',\n      category_id: '',\n      subject_id: [],\n      section_id: [],\n      limit: '',\n      is_public: false,\n      description: '',\n    },\n    validationSchema: validationSchema,\n    enableReinitialize: true,\n    validateOnMount: true,\n    onSubmit: (values, actions) => {\n\n      const category = values.category_id;\n      const subjects = subjectsSelected;\n      const sections = sectionsSelected;\n\n      actions.setSubmitting(true)\n\n      studentApi.post('/practice-exams/create',{\n        categoryId: category,\n        subjectsIds: subjects.map((s)=>s.uuid),\n        modulesIds: sections.map((s)=>s.uuid),\n        limit: Number(values.limit || 20),\n        title: values.title,\n        isPublic: values.is_public,\n        description: values.description,\n      }).then( (response) => {\n        history.push(`/dashboard/quizzes/${response.data.id}`);\n      }).catch((error) => {\n        setSnackValues({message: error.response?.data?.message ?? \"Ops! Falha ao criar quiz. Tente novamente.\",open:true});\n      }).finally(() => [\n        actions.setSubmitting(false)\n      ])\n    }\n  })\n\n  function handleCategoryChange(e) {\n\n    const { value } = e.target\n    setSubjectsSelected([])\n    setSectionsSelected([])\n    setSections([])\n    setSubjects([])\n\n    formik.handleChange(e)\n    studentApi.get(`practice-exams/subjects`,{params:{categoryId: value}})\n      .then((response) => {\n        setSubjects(response.data)\n      })\n      .catch((error) => console.warn(error.data))\n  }\n\n  function handleSubjectChange(e,items) {\n    setSubjectsSelected(items)\n  }\n\n  function handleSectionChange(e,items) {\n    setSectionsSelected(items)\n  }\n\n  function handleSubjectClose(e) {\n    const topics = subjectsSelected.map((s) => s.uuid);\n    if(!topics.length) {\n      return;\n    }\n    studentApi.get(`practice-exams/topics`,{params:{subjectsIds: topics}})\n    .then((response) => {\n      setSections(response.data)\n    })\n    .catch((error) => console.warn(error.data))\n  }\n\n  function handleDeleteSubject(item) {\n    setSubjectsSelected( (subjectsSelected) => subjectsSelected.filter((subject) => subject.id !== item.id));\n  }\n\n  function handleDeleteSection(item) {\n    setSectionsSelected( (sectionsSelected) => sectionsSelected.filter((section) => section.id !== item.id));\n  }\n\n  React.useEffect(() => {\n    studentApi.get('practice-exams/categories')\n      .then((response) => {\n        setCategories(response.data)\n      })\n      .catch((error) => console.warn(error.data))\n  }, [])\n\n  React.useEffect(() => {\n    setSections( s => sections.filter( (section) => subjectsSelected.find((subject) => section.subject_id === subject.id) ) )\n    setSectionsSelected( s => sectionsSelected.filter( (section) => subjectsSelected.find((subject) => section.subject_id === subject.id) ) )\n  }, [subjectsSelected])\n\n  return (\n    <React.Fragment>\n      <form name=\"form-quiz\" onSubmit={formik.handleSubmit}>\n        <Grid container style={{marginBottom:21}} spacing={2}>\n          <Grid item xs={12} lg={6}>\n            <Grid item xs container direction=\"column\" spacing={2}>\n              <Grid item xs>\n                <TextField\n                  label=\"Dê um nome para o seu simulado\"\n                  id=\"title\"\n                  name=\"title\"\n                  variant=\"outlined\"\n                  fullWidth={true}\n                  required={true}\n                  autoComplete=\"off\"\n                  value={formik.values.title}\n                  onChange={formik.handleChange}\n                  onBlur={formik.handleBlur}\n                  error={formik.touched.title && Boolean(formik.errors.title)}\n                  helperText={formik.touched.title && formik.errors.title}\n                />\n              </Grid>\n              <Grid item xs>\n                <FormControl required variant=\"outlined\" fullWidth error={formik.touched.category_id && Boolean(formik.errors.category_id)}>\n                  <InputLabel id=\"category_id\">Selecione uma categoria</InputLabel>\n                  <Select\n                    labelId=\"category_id\"\n                    native\n                    required\n                    name=\"category_id\"\n                    label=\"Selecione uma categoria\"\n                    value={formik.values.category_id}\n                    onChange={handleCategoryChange}\n                    onBlur={formik.handleBlur}\n                  >\n                    <option key={0} value=\"\" disabled></option>\n                    {categories.map((category) => (\n                      <option key={category.uuid} value={category.uuid}>{category.title} ({category.title})</option>\n                    ))}\n                  </Select>\n                  <FormHelperText>{formik.touched.category_id && formik.errors.category_id}</FormHelperText>\n                </FormControl>\n              </Grid>\n              <Grid item xs>\n                <Autocomplete\n                  limitTags={1}\n                  multiple\n                  id=\"subject_id\"\n                  name=\"subject_id\"\n                  options={subjects}\n                  value={subjectsSelected}\n                  disabled={!formik.values.category_id}\n                  disableCloseOnSelect\n                  getOptionLabel={(option) => option.title}\n                  onChange={handleSubjectChange}\n                  onClose={handleSubjectClose}\n                  renderOption={(option, { selected }) => (\n                    <React.Fragment>\n                      <Checkbox\n                        style={{ marginRight: 8 }}\n                        checked={selected}\n                      />\n                      {option.title}\n                    </React.Fragment>\n                  )}\n                  renderInput={(params) => (\n                    <TextField {...params} variant=\"outlined\" label=\"Selecione uma ou mais disciplinas\" placeholder=\"Disciplina(s)\" />\n                  )}\n                />\n              </Grid>\n              <Grid item xs>\n                <Autocomplete\n                  limitTags={1}\n                  multiple\n                  id=\"sections\"\n                  options={sections}\n                  disableCloseOnSelect\n                  getOptionLabel={(option) => option.title}\n                  onChange={handleSectionChange}\n                  value={sectionsSelected}\n                  disabled={subjectsSelected.length < 1}\n                  groupBy={(option) => option.subject_title}\n                  renderOption={(option, { selected }) => (\n                    <React.Fragment>\n                      <Checkbox\n                        style={{ marginRight: 8 }}\n                        checked={selected}\n                      />\n                      {option.title}\n                    </React.Fragment>\n                  )}\n                  renderInput={(params) => (\n                    <TextField {...params} variant=\"outlined\" label=\"Selecione um ou mais assuntos\" placeholder=\"Assunto(s)\" />\n                  )}\n                />\n              </Grid>\n            </Grid>\n          </Grid>\n          <Grid item xs={12} lg={6}>\n            <Grid item xs container direction=\"column\" spacing={2}>\n              <Grid item xs>\n                <TextField\n                  label=\"Descrição (opcional)\"\n                  id=\"description\"\n                  name=\"description\"\n                  variant=\"outlined\"\n                  type=\"text\"\n                  multiline\n                  rows={5}\n                  fullWidth={true}\n                  required={false}\n                  autoComplete=\"off\"\n                  value={formik.values.about}\n                  onChange={formik.handleChange}\n                  onBlur={formik.handleBlur}\n                  error={formik.touched.about && Boolean(formik.errors.about)}\n                  helperText=\"Dica pro: uma boa descrição ajudará outros usuários a encontrar seu quiz.\"\n                />\n              </Grid>\n              <Grid item xs>\n                <FormControl required variant=\"outlined\" fullWidth>\n                  <InputLabel id=\"limit\">Quantidade máxima de questões</InputLabel>\n                  <Select\n                    labelId=\"limit\"\n                    native\n                    required\n                    name=\"limit\"\n                    label=\"Quantidade máxima de questões\"\n                    value={formik.values.limit}\n                    onChange={formik.handleChange}\n                    onBlur={formik.handleBlur}\n                  >\n                    {limits.map((limit) => (\n                      <option key={limit} value={limit}>{limit}</option>\n                    ))}\n                  </Select>\n                </FormControl>\n              </Grid>\n            </Grid>\n          </Grid>\n        </Grid>\n        <Box mb={2} width>\n          <FormControlLabel\n            control={\n                <Switch\n                    value={formik.values.is_public}\n                    checked={formik.values.is_public}\n                    onChange={formik.handleChange}\n                    name=\"is_public\"\n                />\n            }\n            label=\"Disponibilizar no catálogo de simulados públicos da Kultivi\"\n            labelPlacement=\"end\"\n          />\n        </Box>\n        <Box mb={2} width>\n          {subjectsSelected.length > 0 && (\n            <>\n              <Box component=\"div\" fontWeight={600} mb={1}>Disciplinas selecionadas:</Box>\n              {subjectsSelected.map((item) => {\n                return (\n                  <Chip\n                    key={item.id}\n                    className={classes.chip}\n                    label={item.title}\n                    onDelete={()=>handleDeleteSubject(item)}\n                  />\n                )\n              })}\n            </>\n          )}\n        </Box>\n        <Box mb={2} width>\n          {sectionsSelected.length > 0 && (\n            <>\n              <Box component=\"div\" fontWeight={600} mb={1}>Assuntos selecionados:</Box>\n              {sectionsSelected.map((item) => {\n                return (\n                  <Chip\n                    key={item.id}\n                    className={classes.chip}\n                    label={item.title}\n                    onDelete={()=>handleDeleteSection(item)}\n                  />\n                )\n              })}\n            </>\n          )}\n        </Box>\n        <Box component=\"div\" display=\"flex\" justifyContent=\"start\" mt={4}>\n          <Button color=\"primary\" variant=\"contained\" type=\"submit\" disabled={formik.isSubmitting || !formik.isValid}>\n            {formik.isSubmitting ? (\n              <CircularProgress size={30} color=\"inherit\" />\n            ) : (\n              <>\n                <Box mr={3}>Criar simulado</Box>\n                <ArrowForwardIcon />\n              </>\n            )}\n          </Button>\n        </Box>\n      </form>\n      <Snackbar\n        anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n            <React.Fragment>\n                <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n                    <CloseIcon fontSize=\"small\" />\n                </IconButton>\n            </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  )\n}\n","import React from \"react\";\nimport { Box, Container, Typography, Paper, Button } from \"@material-ui/core\";\n\nimport { useStyles } from \"./styles\";\n\nimport UserQuizzes from \"app/components/layouts/UserQuizzes\";\nimport QuizForm from \"app/components/forms/Quiz\";\n\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nimport LockIcon from \"@material-ui/icons/Lock\";\n\n// Lotties animations\nimport Lottie from \"react-lottie\";\nimport animationData from \"lotties/boy-studying-science\";\n\nexport default function Quizzes() {\n  const classes = useStyles();\n\n  const { scopes } = useScopes();\n\n  const lottieOptions = {\n    loop: true,\n    autoplay: true,\n    animationData: animationData,\n    rendererSettings: {\n      preserveAspectRatio: \"xMidYMid slice\",\n    },\n  };\n\n  return (\n    <>\n      <Container>\n        <Box mb={4}>\n          <Typography component=\"h1\" variant=\"h1\" className={classes.title}>\n            Pratique e aprenda!\n          </Typography>\n          <Typography component=\"p\" className={classes.subtitle}>\n            Milhares de exercícios para você aprofundar seu conhecimento!\n          </Typography>\n        </Box>\n        <Box mb={3}>\n          {scopes.includes(\"student_manage_quiz\") && <UserQuizzes />}\n        </Box>\n      </Container>\n      <Paper elevation={0} square style={{ height: \"100%\" }}>\n        <Box component=\"div\" pt={6} mb={5}>\n          {scopes.includes(\"student_manage_quiz\") ? (\n            <Container maxWidth=\"md\">\n              <Box\n                component=\"div\"\n                textAlign=\"center\"\n                mb={3}\n                fontWeight={600}\n                fontSize={15}\n              >\n                Comece a praticar agora mesmo\n              </Box>\n              <QuizForm />\n            </Container>\n          ) : (\n            <Container maxWidth=\"sm\">\n              <Box component=\"div\" display=\"flex\" justifyContent=\"center\">\n                <Lottie\n                  style={{\n                    maxWidth: 300,\n                    padding: 0,\n                    margin: 0,\n                  }}\n                  options={lottieOptions}\n                />\n              </Box>\n              <Paper className={classes.boxKlubi}>\n                <Box mb={2}>\n                  <LockIcon color=\"disabled\" fontSize=\"large\" />\n                </Box>\n                <Box className={classes.boxKlubiTitle} mb={2}>\n                  Módulo Bloqueado\n                </Box>\n                <Box mb={3}>\n                  <Typography\n                    component=\"p\"\n                    variant=\"p\"\n                    className={classes.boxKlubiCopy}\n                  >\n                    Tenha acesso a funcionalidades exclusivas, diversos e-books\n                    e ainda ganhe desconto em quase 300 das principais lojas e\n                    serviços do país. Conheça Kultivi+ agora.\n                  </Typography>\n                </Box>\n                <Button\n                  variant=\"contained\"\n                  color=\"secondary\"\n                  href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=quizzes\"\n                  target=\"_blank\"\n                >\n                  CONHECER KULTIVI+\n                </Button>\n              </Paper>\n            </Container>\n          )}\n        </Box>\n      </Paper>\n    </>\n  );\n}\n","import React from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Box,\n  Dialog,\n  DialogContent,\n  DialogContentText,\n  Button,\n} from '@material-ui/core'\n\nexport default (props) => {\n\n  const { open, toggleDialog, answers, complete, total, confirmFinishQuiz } = props;\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n      onClose={toggleDialog(false)}\n    >\n      <DialogContent>\n        \n        <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" mb={2} py={3}>\n          <Box fontWeight={700} fontSize={18} mb={4}>Tem certeza de que deseja finalizar seu simulado?</Box>\n          {!complete && <DialogContentText>{`Você respondeu ${answers.length} de ${total} questões`}</DialogContentText>}\n          <Box component=\"div\" display=\"flex\" flexDirection=\"row\">\n            <Box mr={2}><Button onClick={toggleDialog(false)}>Cancelar</Button></Box>\n            <Box><Button onClick={confirmFinishQuiz} color=\"primary\" size=\"small\" variant=\"contained\">FINALIZAR</Button></Box>\n          </Box>\n        </Box>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import React from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Box,\n  Dialog,\n  DialogContent,\n  DialogContentText,\n  CircularProgress\n} from '@material-ui/core'\n\nexport default (props) => {\n\n  const { open } = props;\n\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogContent>\n        \n        <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" mb={2} py={3}>\n          <Box mb={3}><CircularProgress /></Box>\n          <DialogContentText>Aguarde! Estamos gerando seu resultado.</DialogContentText>\n        </Box>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import React from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Box,\n  Dialog,\n  DialogContent,\n  DialogContentText,\n  CircularProgress\n} from '@material-ui/core'\n\nexport default (props) => {\n\n  const { open } = props;\n\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogContent>\n        \n        <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\" mb={2} py={3}>\n          <Box mb={3}><CircularProgress /></Box>\n          <DialogContentText>Aguarde! Estamos gerando seu simulado.</DialogContentText>\n        </Box>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  cardEvaluation: {\n    width: 400,\n    marginLeft: theme.spacing(2),\n    marginRight: theme.spacing(2),\n    paddingTop: theme.spacing(3),\n    paddingBottom: theme.spacing(3),\n    background: theme.palette.grey[700],\n    [theme.breakpoints.down('sm')]: {\n      width: \"50%\",\n      maxWidth: 300,\n      marginLeft: theme.spacing(1),\n      marginRight: theme.spacing(1),\n    },\n    textAlign: \"center\",\n  },\n  evaluationEmoji: {\n    width: 50,\n  },\n  evaluationTitle: {\n    fontSize: theme.typography.pxToRem(21),\n    fontWeight: 600,\n  },\n  evaluationResult: {\n    fontSize: theme.typography.pxToRem(42),\n    fontWeight: 800,\n  },\n  evaluationCorrect: {\n    color: theme.palette.primary['main']\n  },\n  evaluationWrong: {\n    color: theme.palette.error['main']\n  },\n  resultsTitle: {\n    marginBottom: theme.spacing(2),\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(24),\n    textAlign: \"center\",\n  }\n}))\n\nexport { useStyles }\n","import React from 'react';\nimport {\n    Card,\n    CardContent,\n    Box\n } from '@material-ui/core';\n\nimport SmileEmoji from 'assets/images/smiling_face_with_sunglasses.png'\nimport ShockedEmoji from 'assets/images/shocked_face.png'\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    const classes = useStyles();\n\n    const {corrects,wrongs} = props\n\n    return (\n        <Box component=\"div\" display=\"flex\" flexDirection=\"row\" width=\"100%\" justifyContent=\"center\">\n            <Card className={[classes.cardEvaluation,classes.evaluationCorrect].join(\" \")}>\n                <CardContent >\n                    <Box component=\"div\" mb={2} width=\"100%\"><img src={SmileEmoji} className={classes.evaluationEmoji} alt=\"\" /></Box>\n                    <Box component=\"div\" mb={2} className={classes.evaluationTitle}>Acertos</Box>\n                    <Box component=\"div\" className={classes.evaluationResult}>{corrects}</Box>\n                </CardContent>\n            </Card>\n            <Card className={[classes.cardEvaluation,classes.evaluationWrong].join(\" \")}>\n                <CardContent>\n                    <Box component=\"div\" mb={2} width=\"100%\"><img src={ShockedEmoji} className={classes.evaluationEmoji} alt=\"\" /></Box>\n                    <Box component=\"div\" mb={2} className={classes.evaluationTitle}>Erros</Box>\n                    <Box component=\"div\" className={classes.evaluationResult}>{wrongs}</Box>\n                </CardContent>\n            </Card>\n        </Box>\n    );\n}","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontSize: theme.typography.pxToRem(32),\n    marginBottom: theme.spacing(1),\n    fontWeight: 800\n  },\n  category: {\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(2),\n    fontWeight: 800,\n    color: theme.palette.grey[500]\n  },\n  cardAnswer: {\n    marginBottom: theme.spacing(2),\n    '&:last-child': {\n      marginBottom:0\n    }\n  },\n  content: {\n    '& img': {\n      [theme.breakpoints.down('sm')]: {\n        width: '100%',\n        maxWidth: 400,\n      },\n    }\n  },\n  checked: {\n    backgroundColor: theme.palette.grey[600],\n    color: theme.palette.getContrastText(theme.palette.grey[600]),\n  },\n  unChecked: {\n    backgroundColor: \"#FFF\",\n    color: theme.palette.getContrastText(\"#FFF\"),\n  },\n  correctAnswer: {\n    backgroundColor: theme.palette.primary['main'],\n    color: \"#FFF\",\n  },\n  wrongAnswer: {\n    backgroundColor: theme.palette.error['main'],\n    color: \"#FFF\",\n  },\n  cardEvaluation: {\n    width: 400,\n    marginLeft: theme.spacing(2),\n    marginRight: theme.spacing(2),\n    paddingTop: theme.spacing(3),\n    paddingBottom: theme.spacing(3),\n    [theme.breakpoints.down('sm')]: {\n      width: \"50%\",\n      maxWidth: 300,\n      marginLeft: theme.spacing(1),\n      marginRight: theme.spacing(1),\n    },\n    textAlign: \"center\",\n  },\n  evaluationEmoji: {\n    width: 50,\n  },\n  evaluationTitle: {\n    fontSize: theme.typography.pxToRem(21),\n    fontWeight: 600,\n  },\n  evaluationResult: {\n    fontSize: theme.typography.pxToRem(42),\n    fontWeight: 800,\n  },\n  evaluationCorrect: {\n    color: theme.palette.primary['main']\n  },\n  evaluationWrong: {\n    color: theme.palette.error['main']\n  },\n  resultsTitle: {\n    marginBottom: theme.spacing(2),\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(24),\n    textAlign: \"center\",\n  }\n}))\n\nexport { useStyles }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n  Box,\n  Typography,\n  Button,\n  Container,\n  Chip,\n  Card,\n  CardActionArea,\n  CardContent,\n  CircularProgress,\n  Divider,\n  Paper,\n} from \"@material-ui/core\";\n\nimport { Pagination, Skeleton } from \"@material-ui/lab\";\n\nimport FinishingUpConfirmation from \"app/components/Modals/Quiz/FinishingUpConfirmation\";\nimport FinishingUpDialog from \"app/components/Modals/Quiz/FinishingUp\";\nimport RetakingTestDialog from \"app/components/Modals/Quiz/RetakingTest\";\nimport QuizResults from \"app/components/cards/QuizResults\";\n\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport SettingsBackupRestoreIcon from \"@material-ui/icons/SettingsBackupRestore\";\n\nimport { AdsTop, AdsIncontent } from \"app/components/ads/freestar\";\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\n\nimport studentApi from 'app/services/student-api'\n\nexport default (props) => {\n  const classes = useStyles();\n  const history = useHistory();\n  const { setSnackValues } = useSnackbar();\n\n  const { id } = props.match.params;\n\n  const [quiz, setQuiz] = useState();\n  const [questions, setQuestions] = useState([]);\n  const [answers, setAnswers] = useState([]);\n  const [pagination, setPagination] = useState();\n  const [page, setPage] = useState(1);\n\n  const [loading, setLoading] = useState(false);\n  const [loadingQuiz, setLoadingQuiz] = useState(false);\n  const [finishingUpQuiz, setFinishingUpQuiz] = useState(false);\n  const [answering, setAnswering] = useState(false);\n  const [retakingTest, setRetaking] = useState(false);\n\n  const [openDialog, setOpenDialog] = React.useState(false);\n\n  const toggleDialog = (open) => (event) => {\n    setOpenDialog(open);\n  };\n\n  const fetchQuestions = useCallback((id, page = 1) => {\n    setLoading(true);\n    studentApi\n      .get(`/practice-exams/${id}?page[number]=${page}`)\n      .then((response) => {\n        window.scrollTo(0, 0);\n        setQuestions(response.data.questions);\n        setPagination(response.data.pagination);\n        setAnswers(response.data.user_responses);\n      })\n      .catch((error) => {\n        setSnackValues({\n          message:\n            error.response?.data?.message ??\n            \"Ops! Falha ao listar questões. Tente novamente.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setLoading(false);\n      });\n  },[]);\n\n  useEffect(() => {\n    setLoadingQuiz(true);\n\n    studentApi\n      .get(`/practice-exams/${id}?page[number]=1`)\n      .then((response) => {\n        setQuiz(response.data.quiz);\n      })\n      .catch((error) => {\n        setSnackValues({\n          message:\n            error.response?.data?.message ??\n            \"Ops! Falha ao listar infos do quiz. Tente novamente.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setLoadingQuiz(false);\n      });\n  }, [id]);\n\n  useEffect(() => {\n    fetchQuestions(id);\n  }, [id]);\n\n  const finishLater = () => {\n    history.push(`/dashboard/quizzes`);\n  };\n\n  const finishQuiz = () => {\n    setOpenDialog(true);\n  };\n\n  const confirmFinishQuiz = () => {\n    setOpenDialog(false);\n    setFinishingUpQuiz(true);\n\n    studentApi\n      .post(`/practice-exams/${id}/finish`)\n      .then((response) => {\n        window.location.reload();\n      })\n      .catch((error) => {\n        setSnackValues({\n          message:\n            error.response?.data?.message ??\n            \"Ops! Falha ao finalizar quiz. Tente novamente.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setFinishingUpQuiz(false);\n      });\n  };\n\n  const retakeQuiz = () => {\n    setRetaking(true);\n    studentApi\n      .post(`/practice-exams/${id}/retake`)\n      .then((response) => {\n        window.location.reload()\n      })\n      .catch((error) => {\n        setSnackValues({\n          message:\n            error.response?.data?.message ??\n            \"Ops! Falha ao resetar quiz. Tente novamente.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setRetaking(false);\n      });\n  };\n\n  function HeaderQuiz(props) {\n    return (\n      <>\n        <Box mb={2}>\n          <Container maxWidth=\"lg\">\n            {props.loading ? (\n              <>\n                <Skeleton />\n                <Skeleton />\n              </>\n            ) : (\n              <>\n                <Typography component=\"h1\" className={classes.title}>\n                  {quiz?.title}\n                </Typography>\n                <Typography component=\"h2\" className={classes.category}>\n                  {quiz?.category?.title}\n                </Typography>\n                <Box\n                  display=\"flex\"\n                  flexDirection=\"row\"\n                  alignItems=\"center\"\n                  flexWrap=\"wrap\"\n                  mb={2}\n                >\n                  <Box component=\"span\" mr={1} fontWeight={600}>\n                    Disciplina(s):\n                  </Box>\n                  {quiz?.subjects?.map((item) => (\n                    <Chip\n                      key={item.id}\n                      size=\"small\"\n                      style={{ marginRight: 4, marginBottom: 4 }}\n                      label={item.title}\n                    ></Chip>\n                  ))}\n                </Box>\n                <Box\n                  display=\"flex\"\n                  flexDirection=\"row\"\n                  alignItems=\"center\"\n                  flexWrap=\"wrap\"\n                >\n                  <Box component=\"span\" mr={1} fontWeight={600}>\n                    Assunto(s):\n                  </Box>\n                  {quiz?.sections?.map((item) => (\n                    <Chip\n                      key={item.id}\n                      size=\"small\"\n                      style={{ marginRight: 4, marginBottom: 4 }}\n                      label={item.title}\n                    ></Chip>\n                  ))}\n                </Box>\n              </>\n            )}\n          </Container>\n        </Box>\n      </>\n    );\n  }\n\n  function ActionsBar({\n    pagination,\n    answers,\n    finishLater,\n    finishQuiz,\n    retakeQuiz,\n    is_finished,\n  }) {\n    return (\n      <Paper elevation={0}>\n        <Container maxWidth=\"lg\">\n          <Box\n            display=\"flex\"\n            flexDirection=\"row\"\n            flexWrap=\"wrap\"\n            justifyContent={{ xs: \"center\", sm: \"space-between\" }}\n            alignItems=\"center\"\n            py={3}\n          >\n            <Box fontWeight={600} mb={{ xs: 2, sm: 0 }}>\n              {pagination &&\n                `Você respondeu: ${answers.length} / ${pagination.total}`}\n            </Box>\n            {!loading && (\n              <Box\n                display=\"flex\"\n                flexWrap=\"wrap\"\n                justifyContent={{ xs: \"center\", sm: \"flex-end\" }}\n              >\n                {!is_finished ? (\n                  <>\n                    <Box\n                      width={{ xs: \"100%\", sm: \"auto\" }}\n                      mb={{ xs: 1, sm: 0 }}\n                      mr={{ sm: 1 }}\n                    >\n                      <Button\n                        variant=\"outlined\"\n                        disabled={loading || answering}\n                        startIcon={<SaveIcon />}\n                        fullWidth\n                        onClick={finishLater}\n                      >\n                        Continuar depois\n                      </Button>\n                    </Box>\n                    <Box width={{ xs: \"100%\", sm: \"auto\" }}>\n                      <Button\n                        fullWidth\n                        variant=\"contained\"\n                        disabled={loading || answering}\n                        color=\"primary\"\n                        size=\"small\"\n                        onClick={finishQuiz}\n                      >\n                        FINALIZAR\n                      </Button>\n                    </Box>\n                  </>\n                ) : (\n                  <>\n                    <Box\n                      width={{ xs: \"100%\", sm: \"auto\" }}\n                      mb={{ xs: 1, sm: 0 }}\n                      mr={{ sm: 1 }}\n                    >\n                      <Button\n                        variant=\"outlined\"\n                        startIcon={<SettingsBackupRestoreIcon />}\n                        fullWidth\n                        onClick={retakeQuiz}\n                      >\n                        Refazer simulado\n                      </Button>\n                    </Box>\n                    <Box\n                      width={{ xs: \"100%\", sm: \"auto\" }}\n                      mb={{ xs: 1, sm: 0 }}\n                      mr={{ sm: 1 }}\n                    >\n                      <Button\n                        fullWidth\n                        variant=\"contained\"\n                        disabled={loading}\n                        color=\"primary\"\n                        size=\"small\"\n                        onClick={finishLater}\n                      >\n                        SAIR\n                      </Button>\n                    </Box>\n                  </>\n                )}\n              </Box>\n            )}\n          </Box>\n        </Container>\n      </Paper>\n    );\n  }\n\n  /**\n   * Método marca resposta do usuário\n   * @param {*} q\n   * @param {*} a\n   */\n  const handleAnswers = (q, a) => {\n    if (quiz.finished) {\n      return false;\n    }\n\n    setAnswers([\n      ...answers.filter((item) => item.question_id !== q.id),\n      {\n        question_id: q.id,\n        answer_id: a.id,\n      },\n    ]);\n\n    setAnswering(true);\n\n    studentApi\n      .post(`/practice-exams/${id}/answer`, {\n        questionId: q.uuid,\n        answerId: a.uuid,\n      })\n      .then((response) => {})\n      .catch((error) => {\n        setSnackValues({\n          message:\n            error.response?.data?.message ??\n            \"Ops! Falha ao gravar sua resposta. Tente novamente.\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setAnswering(false);\n      });\n  };\n\n  const handleChangePagination = (event, value) => {\n    window.scrollTo(0, 0);\n    setPage(value);\n    fetchQuestions(id, value);\n  };\n\n  return (\n    <React.Fragment>\n      <HeaderQuiz {...quiz} loading={loadingQuiz} />\n      {quiz?.finished ? (\n        <Box mb={4}>\n          <QuizResults corrects={quiz.corrects} wrongs={quiz.wrongs} />\n        </Box>\n      ) : null}\n      <Container>\n        <Box component=\"div\" mb={3}>\n          <AdsTop />\n        </Box>\n      </Container>\n      <Box mb={4}>\n        <ActionsBar\n          answers={answers}\n          pagination={pagination}\n          finishLater={finishLater}\n          finishQuiz={finishQuiz}\n          retakeQuiz={retakeQuiz}\n          is_finished={quiz?.finished}\n        />\n        <Divider />\n      </Box>\n      <Box component=\"div\" className={classes.root}>\n        {loadingQuiz || loading ? (\n          <Box component=\"div\" display=\"flex\" justifyContent=\"center\">\n            <CircularProgress />\n          </Box>\n        ) : (\n          <Container maxWidth=\"md\">\n            {questions.map((q, index) => {\n              return (\n                <React.Fragment key={index}>\n                  <Box\n                    component=\"div\"\n                    display=\"flex\"\n                    flexDirection=\"column\"\n                    mb={4}\n                    className={classes.content}\n                  >\n                    <Box display=\"flex\" flexDirection=\"column\" mb={1}>\n                      <Box component=\"div\" mb={1}>\n                        <Chip\n                          color=\"primary\"\n                          label={`${\n                            pagination.perPage * page -\n                            pagination.perPage +\n                            index +\n                            1\n                          }/${pagination.total}`}\n                        />\n                      </Box>\n                      <Box\n                        component=\"div\"\n                        className={classes.content}\n                        dangerouslySetInnerHTML={{ __html: q.question }}\n                      ></Box>\n                    </Box>\n                    {quiz.finished ? (\n                      <Box\n                        my={2}\n                        fontWeight={700}\n                        fontStyle=\"italic\"\n                        color=\"error.main\"\n                      >\n                        {!answers.find((a) => a.question_id === q.id) &&\n                          \"Você não respondeu essa questão\"}\n                      </Box>\n                    ) : null}\n                    {q.answers.map((item, index) => {\n                      return (\n                        <Card key={index} className={classes.cardAnswer}>\n                          <CardActionArea\n                            disabled={answering || quiz.finished}\n                            className={\n                              quiz.finished ? (\n                                answers.find((a) => a.answer_id === item.id) ? (\n                                  item.isCorrect ? classes.correctAnswer : classes.wrongAnswer\n                                ) : (\n                                  item.isCorrect ? classes.correctAnswer : <></>\n                                )\n                              ) : (\n                                answers.find((a) => a.answer_id === item.id) ? classes.checked : classes.unChecked\n                              )\n                            }\n                            onClick={() => handleAnswers(q, item)}\n                          >\n                            <CardContent\n                              className={classes.content}\n                              dangerouslySetInnerHTML={{\n                                __html: answers.find(\n                                  (a) => a.answer_id === item.id\n                                )\n                                  ? `<div align=\"right\"><i>Sua resposta</i></div> ${item.answer}`\n                                  : item.answer,\n                              }}\n                            ></CardContent>\n                          </CardActionArea>\n                        </Card>\n                      );\n                    })}\n                  </Box>\n                  <Box component=\"div\" mb={4}>\n                    <AdsIncontent />\n                  </Box>\n                </React.Fragment>\n              );\n            })}\n            {pagination && pagination.lastPage > 1 && (\n              <Box\n                component=\"div\"\n                display=\"flex\"\n                justifyContent=\"center\"\n                mb={5}\n              >\n                <Pagination\n                  count={pagination.lastPage}\n                  page={page}\n                  color=\"secondary\"\n                  disabled={loading || answering}\n                  onChange={handleChangePagination}\n                />\n              </Box>\n            )}\n          </Container>\n        )}\n      </Box>\n      <ActionsBar\n        answers={answers}\n        pagination={pagination}\n        finishLater={finishLater}\n        finishQuiz={finishQuiz}\n        retakeQuiz={retakeQuiz}\n        is_finished={quiz?.finished}\n      />\n      <FinishingUpConfirmation\n        open={openDialog}\n        toggleDialog={toggleDialog}\n        answers={answers}\n        quiz={quiz}\n        total={pagination?.total}\n        complete={answers.length === pagination?.total}\n        confirmFinishQuiz={confirmFinishQuiz}\n      />\n      <FinishingUpDialog open={finishingUpQuiz} />\n      <RetakingTestDialog open={retakingTest} />\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontSize: theme.typography.pxToRem(30),\n    fontWeight: 900,\n    marginBottom: theme.spacing(1),\n    [theme.breakpoints.down('md')]: {\n      fontSize: theme.typography.pxToRem(20),\n    }\n  },\n  subtitle: {\n    fontSize: theme.typography.pxToRem(20),\n    fontWeight: 600,\n    [theme.breakpoints.down('md')]: {\n      fontSize: theme.typography.pxToRem(16),\n    }\n  },\n  faq: {\n    width: '100%',\n    maxWidth: 700,\n    fontSize: theme.typography.pxToRem(20),\n    fontWeight: 800,\n    marginBottom: theme.spacing(3),\n    [theme.breakpoints.down('md')]: {\n      fontSize: theme.typography.pxToRem(16),\n    },\n    '& h4': {\n      marginBottom: theme.spacing(1.5),\n      fontSize: theme.typography.pxToRem(20),\n      fontWeight: 700,\n\n    },\n    '& p': {\n      marginBottom: theme.spacing(1.5),\n    }\n  },\n  howItWorks: {\n    width: '100%',\n    maxWidth: 700,\n    '& p': {\n      marginBottom: theme.spacing(1.5),\n    }\n  },\n  referralBox: {\n    width: '100%',\n    maxWidth: 700\n  },\n  referralBoxTitle: {\n    color: theme.palette.grey[700],\n    fontWeight: 800,\n  },\n  referralInfo: {\n    color: theme.palette.grey[600]\n  },\n}))\n\nexport { useStyles }\n","\nimport React, {useEffect, useState} from 'react'\nimport { useHistory } from 'react-router-dom';\nimport { useStyles } from './styles'\n\nimport {\n    Box,\n    Card,\n    CardContent,\n    Container,\n    IconButton,\n    Link,\n    TextField,\n    Typography,\n} from '@material-ui/core'\nimport ContentCopyIcon from '@material-ui/icons/FileCopyOutlined';\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\nimport { useAuth } from 'app/contexts/AuthContext';\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const history = useHistory()\n\n  const { user } = useAuth();\n  const { setSnackValues } = useSnackbar();\n\n  const inviteText = 'Estou fazendo cursos gratuitos incríveis na Kultivi e quero te convidar para se juntar a mim! Vamos?';\n  const [refLink, setRefLink] = useState(null);\n\n  const copyLink = () => {\n    navigator.clipboard.writeText(refLink)\n      .then(() => {\n        setSnackValues({\n          message: `Link copiado com sucesso!`,\n          open: true,\n        });\n      })\n      .catch(() => {\n        setSnackValues({\n          message: `Houve uma falha ao copiar o link!`,\n          open: true,\n        });\n      });\n  };\n\n  useEffect(() => {\n    setRefLink(`https://app.kultivi.com/signup?ref=${user.uuid}`)\n  }, [user])\n\n  return (\n    <>\n      <Container>\n        <Box component=\"div\" px={3} mb={12} pt={2}>\n          <Box mb={3}>\n          <Link\n              style={{\n                display: \"flex\",\n                flexDirection: \"row\",\n                alignItems: \"center\",\n              }}\n              component=\"button\"\n              onClick={() => history.push('/dashboard')}\n            >\n              <ChevronLeftIcon /> Ir para página inicial\n          </Link>\n          </Box>\n          <Box>\n            <Typography\n              component=\"h1\"\n              className={classes.title}\n            >\n              Kultivi Amigos\n            </Typography>\n          </Box>\n          <Box mb={3}>\n            <Typography\n              component=\"h1\"\n              className={classes.subtitle}\n            >\n              {/* Conquiste certificados gratuitos e ajude nossa comunidade a crescer! */}\n              Ajude nossa comunidade a crescer!\n            </Typography>\n          </Box>\n          <Box mb={3} className={classes.howItWorks}>\n            <Typography component='p' variant='body2'>1 - Envie seu link de indicação para amigos, familiares, colegas de trabalho ou qualquer pessoa interessada em aprender algo novo.</Typography>\n            {/* <Typography component='p' variant='body2'>2 - Quando três ou mais novos alunos se inscreverem e <strong>permanecerem ativos</strong> na plataforma usando o seu link, você ganha acesso gratuito aos nossos certificados de conclusão.</Typography> */}\n            <Typography component='p' variant='body2'>2 - Verifique o status de suas indicações na sua <Link style={{cursor: 'pointer', textDecoration: 'underline'}} onClick={() => history.push('/dashboard/user/profile')}>página de perfil</Link> e veja quantas pessoas já se inscreveram usando o seu link.</Typography>\n          </Box>\n          <Box mb={4} className={classes.referralBox}>\n            <Card>\n              <CardContent>\n                <Box mb={2}>\n                  <Typography component=\"h3\" className={classes.referralBoxTitle}>\n                    Compartilhe o seu link de indicação\n                  </Typography>\n                </Box>\n                <Box style={{ display: 'flex', alignItems: 'center' }} mb={2}>\n                  <TextField\n                    fullWidth\n                    variant=\"outlined\"\n                    value={refLink}\n                    onClick={copyLink}\n                    InputProps={{\n                      readOnly: true,\n                      endAdornment: (\n                        <IconButton onClick={copyLink} color='primary'>\n                          <ContentCopyIcon />\n                        </IconButton>\n                      ),\n                    }}\n                  />\n                </Box>\n                <Box display='flex'>\n                  <IconButton\n                    color=\"primary\"\n                    href={`https://wa.me/?text=${encodeURIComponent(inviteText)} ${encodeURIComponent(refLink)}`}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                  >\n                    <img src='https://cdn-kultivi.s3.amazonaws.com/static/platform/socials/whatsapp.svg' alt='Whatsapp' width={33} />\n                  </IconButton>\n                  <IconButton\n                    color=\"primary\"\n                    href={`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(refLink)}`}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                  >\n                    <img src='https://cdn-kultivi.s3.amazonaws.com/static/platform/socials/facebook.svg' alt='Facebook' width={40} />\n                  </IconButton>\n                  <IconButton\n                    color=\"primary\"\n                    href={`https://twitter.com/intent/tweet?text=${encodeURIComponent(inviteText)}&url=${encodeURIComponent(refLink)}`}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                  >\n                    <img src='https://cdn-kultivi.s3.amazonaws.com/static/platform/socials/twitter.svg' alt='Twitter' width={40} />\n                  </IconButton>\n                  <IconButton\n                    color=\"primary\"\n                    href={`https://linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(refLink)}`}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                  >\n                    <img src='https://cdn-kultivi.s3.amazonaws.com/static/platform/socials/linkedin.svg' alt='LinkedIn' width={40} />\n                  </IconButton>\n                </Box>\n              </CardContent>\n            </Card>\n          </Box>\n\n          <Box mb={2} className={classes.faq}>\n            <Box mb={2}>\n              <Typography component='h4' variant='h4'>Por que participar?</Typography>\n              {/* <Typography component='p'>Ao completar a missão, você desbloqueia a emissão de certificados gratuitos para todos os cursos que você concluir com sucesso.</Typography> */}\n              <Typography component='p'>Ao indicar novos estudantes, você está ajudando a disseminar o conhecimento e a fortalecer nossa missão de levar educação de qualidade e gratuita para todos.</Typography>\n            </Box>\n            <Box mb={2}>\n              <Typography component='h4' variant='h4'>Dicas para o sucesso</Typography>\n              <Typography component='p'>Publique seu link nas suas redes sociais com uma mensagem personalizada incentivando as pessoas a se inscreverem.</Typography>\n              <Typography component='p'>Envie seu link diretamente para amigos e conhecidos que você acredita que possam se beneficiar dos nossos cursos.</Typography>\n              <Typography component='p'>Forme grupos de estudo e convide novos membros a se juntarem através do seu link de indicação.</Typography>\n            </Box>\n          </Box>\n        </Box>\n      </Container>\n    </>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    minHeight: '100vh',\n  },\n  wrap: {\n    // [theme.breakpoints.up('lg')]: {\n    //   marginLeft: theme.overrides.MuiDrawer.paper.width,\n    //   width: `calc(100% - ${theme.overrides.MuiDrawer.paper.width}px)`,\n    // },\n    flexGrow: 1,\n    width: \"100%\",\n  }\n}))\n\nexport { useStyles }\n","import React from \"react\";\nimport { Switch, Route } from \"react-router-dom\";\n\nimport { Box } from \"@material-ui/core\";\n\n// Components\nimport AppBarMenu from \"app/components/navs/topbar/app-bar\"\n\n\nimport Error from \"app/components/layouts/500\";\nimport NotFound from \"app/components/layouts/404\";\nimport Copyright from \"app/components/layouts/Copyright\";\n\n// Pages\nimport Account from \"app/pages/Account\";\nimport Certificates from \"app/pages/Certificates\";\nimport Discover from \"app/pages/Discover\";\nimport DigitalCollections from \"app/pages/DigitalCollections\";\nimport DigitalCollectionsPlus from \"app/pages/DigitalCollectionsPlus\";\nimport EbookDetails from \"app/pages/EbookDetails\";\nimport EbookPlusDetails from \"app/pages/EbookPlusDetails\";\nimport Profile from \"app/pages/Profile\";\nimport Wellcome from \"app/pages/Wellcome\";\nimport MyCourses from \"app/pages/MyCourses\";\nimport Pills from \"app/pages/Pills\";\nimport Course from \"app/pages/Course\";\nimport Quizzes from \"app/pages/Quizzes\";\nimport QuizQuestions from \"app/pages/QuizQuestions\";\nimport ReferralPage from \"app/pages/Referral\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\n\nconst Dashboard = () => {\n  const classes = useStyles();\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" display=\"flex\" className={classes.root}>\n        <Box\n          component=\"main\"\n          display=\"flex\"\n          flexDirection=\"column\"\n          className={classes.wrap}\n        >\n          <AppBarMenu />\n\n          <Box mt={2}>\n            <Switch>\n              <Route exact path=\"/dashboard/\" component={Wellcome} />\n              <Route exact path=\"/dashboard/pills\" component={Pills} />\n              <Route exact path=\"/dashboard/pills/:topics+\" component={Pills} />\n              <Route exact path=\"/dashboard/enrollments\" component={MyCourses} />\n              <Route exact path=\"/dashboard/referrals\" component={ReferralPage} />\n              <Route path=\"/dashboard/course/:slug\" component={Course} />\n              <Route\n                path=\"/dashboard/ebooks/:category?\"\n                component={DigitalCollections}\n              />\n              <Route\n                exact\n                path=\"/dashboard/aprovare\"\n                component={DigitalCollectionsPlus}\n              />\n              <Route exact path=\"/dashboard/aprovare/ebook/:slug\" component={EbookPlusDetails} />\n              <Route path=\"/dashboard/ebook/:slug\" component={EbookDetails} />\n              <Route exact path=\"/dashboard/user/profile\" component={Profile} />\n              <Route exact path=\"/dashboard/user/account\" component={Account} />\n              <Route\n                exact\n                path=\"/dashboard/user/certificates\"\n                component={Certificates}\n              />\n              <Route\n                exact\n                path=\"/dashboard/discover/:category?\"\n                component={Discover}\n              />\n              <Route exact path=\"/dashboard/quizzes\" component={Quizzes} />\n              <Route\n                exact\n                path=\"/dashboard/quizzes/:id\"\n                component={QuizQuestions}\n              />\n              <Route exact path=\"/dashboard/error\" component={Error} />\n              <Route path=\"/dashboard/404\" component={NotFound} />\n              <Route exact path=\"/dashboard/*\" component={NotFound} />\n            </Switch>\n          </Box>\n          <Copyright />\n        </Box>\n      </Box>\n    </React.Fragment>\n  );\n};\n\nexport default Dashboard;\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  //\n}))\n\nexport { useStyles }\n","import React from 'react'\n\nimport api from 'app/services/api'\n\nimport {\n  Button,\n  Dialog,\n  DialogActions,\n  DialogContent,\n  DialogTitle,\n  FormControl,\n  TextField,\n} from '@material-ui/core'\n\nimport { useFormik } from 'formik';\nimport * as yup from 'yup';\n\nimport { useStyles } from './styles'\n\nconst validationSchema = yup.object({\n  report: yup\n    .string('Digite o problema')\n    .required('Campo obrigatório'),\n});\n\nexport default (props) => {\n\n  const { open, onClose } = props\n\n  const classes = useStyles()\n\n  const [snackValues, setSnackValues] = React.useState({\n    message: '',\n    open: false,\n  });\n\n  const formik = useFormik({\n    initialValues: {\n      report: '',\n    },\n    validationSchema: validationSchema,\n    onSubmit: (values,actions) => {\n        \n        actions.setSubmitting(true);\n       \n        api.put(`....`, values)\n        .then((response) => {\n            setSnackValues({message:\"Obrigado por ajudar a Kultivi a melhorar cada vez mais.\",open:true});\n            actions.resetForm()\n        })\n        .catch((err) => {\n            setSnackValues({message:\"Ops! Falha ao atualizar seus dados. Tente novamente.\",open:true});\n            const errors = err.response.data\n            for (let index = 0; index < errors.length; index++) {\n                const error = errors[index];\n                var setErr = {};\n                setErr[`${error.field}`] = error.message;\n                actions.setErrors(setErr)\n            }\n        })\n        .finally( () => {\n            actions.setSubmitting(false);\n        })\n    },\n  });\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      onClose={onClose}\n      fullWidth={true}\n      disableBackdropClick\n    >\n      <DialogTitle id=\"form-dialog-title\">Reportar um problema</DialogTitle>\n        <DialogContent>\n          <form name=\"form-report\" onSubmit={formik.handleSubmit}>\n            <FormControl\n              fullWidth\n            >\n              <TextField\n                placeholder=\"Por favor, nos dê detalhes do problema encontrado\"\n                id=\"report\"\n                name=\"report\"\n                variant=\"filled\"\n                type=\"textarea\"\n                multiline\n                rows={5}\n                rowsMax={8}\n                value={formik.values.report}\n                onChange={formik.handleChange}\n                error={formik.touched.report && Boolean(formik.errors.report)}\n                helperText={formik.touched.report && formik.errors.report}\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n              />\n            </FormControl>\n          </form>\n        </DialogContent>\n        <DialogActions>\n          <Button onClick={onClose}>Cancelar</Button>\n          <Button color=\"primary\" type='submit'>Enviar</Button>\n        </DialogActions>\n    </Dialog>\n  )\n\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    module: {\n        background: theme.palette.grey[700],\n        color: theme.palette.getContrastText(theme.palette.grey[700]),\n    },\n    moduleDetails: {\n        padding: 0,\n        background: theme.palette.grey[900],\n        color: theme.palette.getContrastText(theme.palette.grey[900])\n    },\n    lessonsList: {\n        width: \"100%\",\n        // maxWidth: '36ch',\n    },\n    lessonItemIcon: {\n        color: theme.palette.grey[700],\n    },\n    lessonTitle: {\n        color: theme.palette.grey[400],\n        fontSize: theme.typography.pxToRem(15),\n    },\n    lessonSubtitle: {\n        color: theme.palette.grey[200],\n        fontSize: theme.typography.pxToRem(12)\n    }\n}))\n\nexport { useStyles }\n","import React from 'react';\nimport {\n    Accordion,\n    AccordionSummary,\n    AccordionDetails,\n    Typography,\n    List,\n    ListItem,\n    ListItemIcon,\n    ListItemText,\n} from '@material-ui/core';\n\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport PlayCircleFilledIcon from '@material-ui/icons/PlayCircleFilled';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport NotesIcon from '@material-ui/icons/Notes';\nimport HelpIcon from '@material-ui/icons/Help';\nimport DoneIcon from '@material-ui/icons/Done';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n    const {\n      progress,\n      lessons,\n      title,\n      currentClass\n    } = props\n\n    const classes = useStyles();\n\n    const id = `panel1a-header-${props.id}`\n    const ariaControls = `panel-content-${props.id}`;\n\n    function ClassTypeIcon( props ) {\n\n        if(props.currentClass === props.slug) {\n            return <ChevronRightIcon color=\"secondary\" />\n        }\n        else if(props.seen) {\n            return <DoneIcon color=\"primary\" />\n        }\n        else {\n            if(props.type === 1) {\n                return <PlayCircleFilledIcon />\n            }\n            else if(props.type === 2) {\n                return <NotesIcon />\n            }\n            else if(props.type === 3) {\n                return <HelpIcon />\n            }\n        }\n\n    }\n\n    return (\n        <Accordion square className={classes.module} TransitionProps={{ unmountOnExit: true }}>\n            <AccordionSummary\n                expandIcon={<ExpandMoreIcon />}\n                aria-controls={ariaControls}\n                id={id}\n            >\n                <Typography className={classes.heading} dangerouslySetInnerHTML={{ __html: title}}></Typography>\n            </AccordionSummary>\n            <AccordionDetails className={classes.moduleDetails}>\n                <List component=\"div\" disablePadding className={classes.lessonsList} >\n                    {lessons.map( (lesson,index) => {\n                        return (\n                            <ListItem key={index} button className={[classes.nested,classes.lessonItem].join(\" \")} component=\"a\" href={`./${lesson.slug}`}>\n                                <ListItemIcon className={classes.lessonItemIcon}>\n                                    <ClassTypeIcon seen={progress.includes(lesson.id)} currentClass={props.currentClass}  {...lesson} />\n                                </ListItemIcon>\n                                <ListItemText\n                                    classes={{ primary: classes.lessonTitle, secondary: classes.lessonSubtitle }}\n                                    primary={<Typography component=\"span\" dangerouslySetInnerHTML={{ __html: lesson.title}}></Typography>}\n                                    secondary={lesson.time}\n                                />\n                            </ListItem>\n                        )\n                    })}\n\n                </List>\n            </AccordionDetails>\n        </Accordion>\n    );\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n        flexShrink: 0,\n    },\n    paper: {\n        width: theme.overrides.MuiDrawer.paper.width+70,\n        background: theme.palette.grey[800],\n        overflowX: 'hidden',\n    },\n    drawerGroup: {\n        marginBottom: theme.spacing(1),\n    },\n    drawerGroupLabel: {\n        fontWeight: 800,\n        fontSize: theme.typography.pxToRem(11),\n        color: theme.palette.grey[300],\n        textTransform: 'uppercase',\n        lineHeight: theme.typography.pxToRem(32),\n    },\n    drawerIcon: {\n        color: theme.palette.getContrastText(theme.palette.grey[400]),\n    },\n    upperMenu: {\n        color: theme.palette.getContrastText(theme.palette.grey[800]),\n    },\n    BtnNavClasses: {\n        flexGrow: 1,\n        width: \"50%\",\n        borderRadius:0,\n        boxSizing: 'border-box',\n        '&.Mui-disabled': {\n          backgroundColor: theme.palette.grey[600],\n        },\n        '&:only-child': {\n          width: '100%'\n        }\n    },\n    BtnNavClassesNeutral: {\n      color: theme.palette.getContrastText(theme.palette.grey[600]),\n      backgroundColor: theme.palette.grey[600],\n      '&:hover': {\n        backgroundColor: theme.palette.grey[700],\n      },\n    },\n    BtnNavClassesFeatured: {\n      backgroundColor: theme.palette.common.white,\n      borderRadius:0,\n      '&:hover': {\n        color: \"#fff\",\n        backgroundColor: theme.palette.primary.dark,\n      }\n    },\n    premiumCard: {\n        width: \"100%\",\n        borderRadius: 0,\n        background: theme.palette.secondary['main'],\n        color: theme.palette.getContrastText(theme.palette.secondary['main']),\n    },\n    premiumCardTitle: {\n        marginBottom: theme.spacing(1),\n        fontWeight: 800\n    },\n    premiumCardAction: {\n        marginLeft: \"auto\",\n        color: \"#FFF\",\n    }\n}))\n\nexport { useStyles }\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n  IconButton,\n  Drawer,\n  SwipeableDrawer,\n  ListItem,\n  ListItemIcon,\n  ListItemText,\n  Card,\n  CardContent,\n  CardActions,\n  Typography,\n  Hidden,\n  Box,\n  Badge,\n  Menu,\n  Button,\n  Tooltip,\n} from \"@material-ui/core\";\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport ReportProblemOutlinedIcon from \"@material-ui/icons/ReportProblemOutlined\";\nimport AttachFileIcon from \"@material-ui/icons/AttachFile\";\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\nimport ReplyIcon from \"@material-ui/icons/Reply\";\n\n// Components\nimport ProfileMenu from \"app/components/navs/dropdowns/profile\";\nimport ReportProblemDialog from \"app/components/Modals/Report\";\nimport ModuleAccordion from \"app/components/accordions/Module/model-1\";\n\nimport { useStyles } from \"./styles\";\nimport { useAuth } from \"app/contexts/AuthContext\";\n\nimport SchoolIcon from '@material-ui/icons/SchoolOutlined';\nimport GroupAddIcon from '@material-ui/icons/GroupAddOutlined';\nimport NewReleasesIcon from '@material-ui/icons/NewReleasesOutlined';\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\n\nexport default (props) => {\n  const {\n    curriculum,\n    progress,\n    lesson,\n    lessonSlug,\n    isLoadingCurriculum,\n    isLoadingProgress,\n  } = props\n  const classes = useStyles();\n  const { user } = useAuth()\n  const { scopes } = useScopes()\n  const history = useHistory();\n\n\n  const getAttachment = (link) => {\n    window.open(link);\n  };\n\n  function UpperMenu() {\n    const [openAttachmentMenu, setOpenAttachmentMenu] = React.useState(null);\n    const handleAttachmentMenuClick = (event) => {\n      setOpenAttachmentMenu(event.currentTarget);\n    };\n    const handleAttachmentMenuClose = () => {\n      setOpenAttachmentMenu(null);\n    };\n\n    return (\n      <Box\n        component=\"div\"\n        display=\"flex\"\n        flexDirection=\"row\"\n        justifyContent=\"space-between\"\n      >\n        <Tooltip title=\"Voltar ao curso\" arrow>\n          <IconButton href=\"../.\" aria-label=\"back\">\n            <ReplyIcon className={classes.upperMenu} />\n          </IconButton>\n        </Tooltip>\n        {/*<Tooltip title=\"Reportar um problema\" arrow>\n          <IconButton\n            aria-label=\"warning\"\n            onClick={() => setOpenReportDialog(true)}\n          >\n            <ReportProblemOutlinedIcon className={classes.upperMenu} />\n          </IconButton>\n        </Tooltip>*/}\n        <Tooltip\n          title={\n            lesson?.attachments?.length === 0\n              ? \"Nenhum material de apoio\"\n              : \"Materiais de apoio\"\n          }\n          arrow\n        >\n          <IconButton\n            aria-label=\"attachments\"\n            aria-haspopup=\"true\"\n            onClick={handleAttachmentMenuClick}\n          >\n            <Badge\n              color=\"secondary\"\n              badgeContent={\n                lesson?.attachments\n                  ? `${lesson.attachments.length}`\n                  : \"..\"\n              }\n            >\n              <AttachFileIcon className={classes.upperMenu} />\n            </Badge>\n          </IconButton>\n        </Tooltip>\n        <Tooltip title=\"Indique a Kultivi\" arrow>\n          <IconButton onClick={() => history.push('/dashboard/referrals')}>\n            <GroupAddIcon className={classes.upperMenu} />\n          </IconButton>\n        </Tooltip>\n        <Tooltip title=\"Conheça Kultivi+\" arrow>\n          <IconButton href='https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=nav-profile' target='_blank'>\n            <NewReleasesIcon className={classes.upperMenu} />\n          </IconButton>\n        </Tooltip>\n        <ProfileMenu />\n        {lesson?.attachments?.length > 0 && (\n          <Menu\n            id=\"menu-account\"\n            anchorEl={openAttachmentMenu}\n            keepMounted\n            open={Boolean(openAttachmentMenu)}\n            onClose={handleAttachmentMenuClose}\n          >\n            {lesson.attachments.map((item, index) => {\n              return (\n                <ListItem\n                  key={index}\n                  button\n                  onClick={() => getAttachment(item.link)}\n                >\n                  <ListItemIcon>\n                    <GetAppIcon />\n                  </ListItemIcon>\n                  <ListItemText primary={`Material de apoio ${++index}`} />\n                </ListItem>\n              );\n            })}\n          </Menu>\n        )}\n      </Box>\n    );\n  }\n\n  function SummaryAndMindMapNav(props) {\n    return (\n      <Box component=\"div\" display=\"flex\">\n        {\n          props.summaryLink &&\n            <Button\n            target='_blank'\n            href={props.summaryLink}\n            className={[classes.BtnNavClasses, classes.BtnNavClassesFeatured].join(' ')}\n          >\n            RESUMO DA AULA\n          </Button>\n        }\n        {\n          props.mindMapLink &&\n          <Button\n            target='_blank'\n            href={props.mindMapLink}\n            className={[classes.BtnNavClasses, classes.BtnNavClassesFeatured].join(' ')}\n          >\n            MAPA MENTAL\n          </Button>\n        }\n      </Box>\n    );\n  }\n\n  function NavClasses(props) {\n    return (\n      <Box component=\"div\" display=\"flex\">\n        <Button\n          disabled={!props.previous}\n          href={`./${props.previous?.slug}`}\n          className={[classes.BtnNavClasses, classes.BtnNavClassesNeutral].join(' ')}\n        >\n          Aula anterior\n        </Button>\n        <Button\n          disabled={!props.next}\n          href={`./${props.next?.slug}`}\n          className={[classes.BtnNavClasses, classes.BtnNavClassesNeutral].join(' ')}\n        >\n          Próxima aula\n        </Button>\n      </Box>\n    );\n  }\n\n  function PremiumSeller() {\n    return (\n      <Box component=\"div\" display=\"flex\">\n        <Card className={classes.premiumCard}>\n          <CardContent>\n            <Typography component=\"h2\" className={classes.premiumCardTitle}>\n              Dê um passo a mais com o Kultivi+\n            </Typography>\n            <Typography\n              component=\"p\"\n              variant=\"body2\"\n              className={classes.premiumCardCopy}\n            >\n              E-books exclusivos, simulados e novas funcionalidades para você\n              aprender de forma mais rápida e divertida.\n            </Typography>\n          </CardContent>\n          <CardActions>\n            <Button\n              href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=nav-box-classes\"\n              target=\"_blank\"\n              size=\"small\"\n              className={classes.premiumCardAction}\n            >\n              QUERO CONHECER\n            </Button>\n          </CardActions>\n        </Card>\n      </Box>\n    );\n  }\n\n  const options = (\n    <React.Fragment>\n      <UpperMenu />\n      <SummaryAndMindMapNav {...lesson} />\n      {!scopes.includes('student_no_ads_display') && <PremiumSeller />}\n      <NavClasses {...lesson} />\n      {\n        isLoadingCurriculum && isLoadingProgress ?\n        [0, 1, 2, 4, 5, 6, 7].map((item, index) => <Skeleton key={index} animation=\"wave\" variant=\"rect\" height={50} style={{ marginBottom: 1, backgroundColor: 'rgba(158,207,250,0.1)' }} />) :\n        curriculum?.map((module, index) => {\n          return (\n            <ModuleAccordion\n              key={index}\n              {...module}\n              progress={progress}\n              currentClass={lessonSlug}\n            />\n          );\n        })\n      }\n    </React.Fragment>\n  );\n\n  const [openReportDialog, setOpenReportDialog] = React.useState(false);\n  const closeReportDialog = () => setOpenReportDialog(false);\n\n  return (\n    <React.Fragment>\n      <nav>\n        <Hidden mdUp implementation=\"css\">\n          <SwipeableDrawer\n            variant=\"temporary\"\n            anchor=\"right\"\n            open={props.open}\n            onClose={props.toggleDrawer(false)}\n            onOpen={props.toggleDrawer(true)}\n            className={classes.root}\n            classes={{ paper: classes.paper }}\n            ModalProps={{\n              keepMounted: true, // Better open performance on mobile.\n            }}\n          >\n            {options}\n          </SwipeableDrawer>\n        </Hidden>\n        <Hidden mdDown implementation=\"css\">\n          <Drawer\n            anchor=\"right\"\n            variant=\"permanent\"\n            className={classes.root}\n            classes={{ paper: classes.paper }}\n          >\n            {options}\n          </Drawer>\n        </Hidden>\n      </nav>\n      <ReportProblemDialog\n        open={openReportDialog}\n        onClose={closeReportDialog}\n      />\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n    root: {\n      width: '100%',\n      position: 'fixed',\n      bottom: 0,\n      zIndex: 9999,\n    },\n    drawer: {\n      width: '100%',\n      maxHeight: '70%',\n      paddingBottom: 60\n    },\n    list: {\n      paddingTop: 10,\n      background: theme.palette.grey[800],\n      fontWeight: 800,\n      fontSize: theme.typography.pxToRem(11),\n      color: theme.palette.grey[300],\n      textTransform: 'uppercase',\n      lineHeight: theme.typography.pxToRem(32),\n    },\n    listIcon: {\n      color: theme.palette.grey[400],\n    }\n}))\n\nexport { useStyles }\n","import React from \"react\";\n\nimport {\n  Hidden,\n  BottomNavigation,\n  BottomNavigationAction,\n  Paper,\n  Drawer,\n  ListItem,\n  ListItemText,\n  ListItemIcon,\n} from \"@material-ui/core\";\n\nimport AttachFileIcon from \"@material-ui/icons/AttachFile\";\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport DynamicFeedIcon from '@material-ui/icons/DynamicFeed';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\n\n\n// Components\nimport ModuleAccordion from \"app/components/accordions/Module/model-1\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\n\nconst BottomMobileNavigation = (props) => {\n  const classes = useStyles();\n\n  const { course, lesson, curriculum, progress, lessonSlug } = props\n\n\n  const getAttachment = (link) => {\n    window.open(link);\n  };\n\n  const [option, setOption] = React.useState(0);\n  const handleChangeOption = (event, newValue) => {\n    setOption(newValue);\n  };\n\n  const handleClose = () => {\n    setOption(0);\n  };\n\n  return (\n    <React.Fragment>\n      <Hidden mdUp implementation=\"css\">\n        <Paper className={classes.root}>\n          <BottomNavigation\n            showLabels\n            value={option}\n            onChange={handleChangeOption}\n          >\n            <BottomNavigationAction label=\"Curso\" value=\"course\" icon={<ExitToAppIcon />} disabled={!course} href={'../.'} />\n            <BottomNavigationAction label=\"Aulas\" value=\"aulas\" icon={<DynamicFeedIcon />} disabled={!course} />\n            <BottomNavigationAction label=\"Materiais\" value=\"materiais\" icon={<AttachFileIcon />} disabled={!lesson} />\n            <BottomNavigationAction label=\"Próxima\" value=\"proxima\" icon={<NavigateNextIcon />} href={`../lesson/${lesson?.next?.slug}`} disabled={!lesson.next} />\n          </BottomNavigation>\n        </Paper>\n        <Drawer\n          anchor=\"bottom\"\n          open={option === 'aulas'}\n          onClose={handleClose}\n          classes={{paper: classes.drawer}}\n        >\n          {option === 'aulas' && curriculum?.map((module, index) => {\n            return (\n              <ModuleAccordion\n                key={index}\n                {...module}\n                progress={progress}\n                currentClass={lessonSlug}\n              />\n            )})\n          }\n        </Drawer>\n        <Drawer\n          anchor=\"bottom\"\n          open={option === 'materiais'}\n          onClose={handleClose}\n          classes={{paper: classes.drawer}}\n        >\n          {\n            lesson?.attachments?.length < 1 ? (\n              <ListItem\n                className={classes.list}\n              >\n                <ListItemText primary={`Nenhum material disponível`} />\n              </ListItem>\n            ) : (\n              lesson?.attachments?.map((item, index) => {\n                return (\n                  <ListItem\n                    className={classes.list}\n                    key={index}\n                    button\n                    onClick={() => getAttachment(item.link)}\n                  >\n                    <ListItemIcon className={classes.listIcon}>\n                      <GetAppIcon />\n                    </ListItemIcon>\n                    <ListItemText primary={`Material de apoio ${++index}`} />\n                  </ListItem>\n                );\n              })\n            )\n          }\n        </Drawer>\n      </Hidden>\n    </React.Fragment>\n  );\n};\n\nexport default BottomMobileNavigation\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    background: theme.palette.grey[100],\n    minHeight: '100vh',\n  },\n  header: {\n    backgroundColor: \"#000\",\n  },\n  title: {\n    color: \"#FFF\",\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(24),\n  },\n  subtitle: {\n    color: \"#FFF\",\n    fontWeight: 600,\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(1),\n  },\n  adsenseContainer: {\n    position: 'fixed',\n    display: 'flex',\n    justifyContent: 'center',\n    bottom: 0,\n    width: `calc(100% - ${theme.overrides.MuiDrawer.paper.width+50}px)`,\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n  cardAnswer: {\n    marginBottom: theme.spacing(2),\n    '&:last-child': {\n      marginBottom:0\n    }\n  },\n  content: {\n    '& img': {\n      [theme.breakpoints.down('sm')]: {\n        width: '100%',\n        maxWidth: 400,\n      },\n    }\n  },\n  checked: {\n    backgroundColor: theme.palette.grey[600],\n    color: theme.palette.getContrastText(theme.palette.grey[600]),\n  },\n  unChecked: {\n    backgroundColor: \"#FFF\",\n    color: theme.palette.getContrastText(\"#FFF\"),\n  },\n  correctAnswer: {\n    backgroundColor: theme.palette.primary['main'],\n    color: \"#FFF\",\n  },\n  wrongAnswer: {\n    backgroundColor: theme.palette.error['main'],\n    color: \"#FFF\",\n  },\n  cardEvaluation: {\n    width: 400,\n    marginLeft: theme.spacing(2),\n    marginRight: theme.spacing(2),\n    paddingTop: theme.spacing(3),\n    paddingBottom: theme.spacing(3),\n    [theme.breakpoints.down('sm')]: {\n      width: \"50%\",\n      maxWidth: 300,\n      marginLeft: theme.spacing(1),\n      marginRight: theme.spacing(1),\n    },\n    textAlign: \"center\",\n  },\n  evaluationEmoji: {\n    width: 50,\n  },\n  evaluationTitle: {\n    fontSize: theme.typography.pxToRem(21),\n    fontWeight: 600,\n  },\n  evaluationResult: {\n    fontSize: theme.typography.pxToRem(42),\n    fontWeight: 800,\n  },\n  evaluationCorrect: {\n    color: theme.palette.primary['main']\n  },\n  evaluationWrong: {\n    color: theme.palette.error['main']\n  },\n  resultsTitle: {\n    marginBottom: theme.spacing(2),\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(24),\n    textAlign: \"center\",\n  }\n}))\n\nexport { useStyles }\n","import React, { useState } from \"react\";\n\nimport {\n  Box,\n  Typography,\n  Button,\n  Container,\n  Chip,\n  Card,\n  CardActionArea,\n  CardContent,\n  CircularProgress,\n} from \"@material-ui/core\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\n\nimport SmileEmoji from \"assets/images/smiling_face_with_sunglasses.png\";\nimport ShockedEmoji from \"assets/images/shocked_face.png\";\nimport { AdsTop, AdsIncontent } from \"app/components/ads/freestar\";\nimport Campaigns from \"app/components/carousels/Campaigns/ads\";\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const {scopes} = useScopes();\n\n  const {lesson, ads, isLoadingAds} = props\n\n  const [answers, setAnswers] = useState([]);\n\n  /**\n   * Método marca resposta do usuário\n   * @param {*} q\n   * @param {*} a\n   */\n  const handleAnswers = (q, a) => {\n    setAnswers([\n      ...answers.filter((item) => item.question_id !== q),\n      {\n        question_id: q,\n        answer_id: a,\n      },\n    ]);\n  };\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" className={classes.root}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"column\"\n          className={classes.header}\n          pt={4}\n          pb={2}\n          mb={5}\n        >\n          <Container>\n            <Typography component=\"h2\" className={classes.subtitle}>\n              {lesson.module?.title}\n            </Typography>\n            <Typography component=\"h1\" className={classes.title}>\n              {lesson.title}\n            </Typography>\n          </Container>\n        </Box>\n\n        <Box component=\"div\" mb={10}>\n          <Container>\n            <Box\n              component=\"div\"\n              mb={4}\n              display=\"flex\"\n              flexDirection=\"column\"\n              justifyContent=\"center\"\n            >\n              <Box mb={4}>\n                {\n                  !isLoadingAds && !scopes.includes('student_no_ads_display') ?\n                    ads.length > 0 ?\n                      <Campaigns campaigns={ads} /> :\n                      <AdsTop />\n                  : ''\n                }\n              </Box>\n              {lesson.finished && (\n                <React.Fragment>\n                  <Box\n                    component=\"div\"\n                    width=\"100%\"\n                    className={classes.resultsTitle}\n                  >\n                    Resultado\n                  </Box>\n                  <Box\n                    component=\"div\"\n                    display=\"flex\"\n                    flexDirection=\"row\"\n                    width=\"100%\"\n                    justifyContent=\"center\"\n                  >\n                    <Card\n                      className={[\n                        classes.cardEvaluation,\n                        classes.evaluationCorrect,\n                      ].join(\" \")}\n                    >\n                      <CardContent>\n                        <Box component=\"div\" mb={2} width=\"100%\">\n                          <img\n                            src={SmileEmoji}\n                            className={classes.evaluationEmoji}\n                            alt=\"\"\n                          />\n                        </Box>\n                        <Box\n                          component=\"div\"\n                          mb={2}\n                          className={classes.evaluationTitle}\n                        >\n                          Acertos\n                        </Box>\n                        <Box\n                          component=\"div\"\n                          className={classes.evaluationResult}\n                        >\n                          {lesson.evaluation?.corrects}\n                        </Box>\n                      </CardContent>\n                    </Card>\n                    <Card\n                      className={[\n                        classes.cardEvaluation,\n                        classes.evaluationWrong,\n                      ].join(\" \")}\n                    >\n                      <CardContent>\n                        <Box component=\"div\" mb={2} width=\"100%\">\n                          <img\n                            src={ShockedEmoji}\n                            className={classes.evaluationEmoji}\n                            alt=\"\"\n                          />\n                        </Box>\n                        <Box\n                          component=\"div\"\n                          mb={2}\n                          className={classes.evaluationTitle}\n                        >\n                          Erros\n                        </Box>\n                        <Box\n                          component=\"div\"\n                          className={classes.evaluationResult}\n                        >\n                          {lesson.evaluation?.wrongs}\n                        </Box>\n                      </CardContent>\n                    </Card>\n                  </Box>\n                </React.Fragment>\n              )}\n            </Box>\n            {lesson.quiz.map((q, index) => {\n              return (\n                <React.Fragment>\n                  <Box\n                    component=\"div\"\n                    display=\"flex\"\n                    flexDirection=\"column\"\n                    mb={4}\n                    className={classes.content}\n                  >\n                    <Box display=\"flex\" flexDirection=\"column\" mb={1}>\n                      <Box component=\"div\" mb={1}>\n                        <Chip\n                          color=\"primary\"\n                          label={`${++index}/${lesson.quiz.length}`}\n                        />\n                      </Box>\n                      <Box\n                        component=\"div\"\n                        className={classes.content}\n                        dangerouslySetInnerHTML={{ __html: q.question }}\n                      ></Box>\n                    </Box>\n\n                    {q.answers.map((item, index2) => {\n                      return (\n                        <Card key={index2} className={classes.cardAnswer}>\n                          <CardActionArea\n                            className={\n                              lesson.finished\n                                ? item.is_correct\n                                  ? classes.correctAnswer\n                                  : /** Se carrega questões já respondidas */\n                                  lesson.evaluation?.user_responses\n                                  ? /** Se cair aqui, resposta do usuario sempre estará incorreta */\n                                    lesson.evaluation?.user_responses?.find(\n                                      (a) => a.answer_id === item.id\n                                    ) && classes.wrongAnswer\n                                  : /** Se usuário acabou de responder */\n                                  lesson.evaluation?.feedbacks.find(\n                                      (a) => a.correct_answer === item.id\n                                    )\n                                  ? classes.correctAnswer\n                                  : lesson.evaluation?.feedbacks.find(\n                                      (a) => a.user_response === item.id\n                                    ) && classes.wrongAnswer\n                                : answers.find((a) => a.answer_id === item.id)\n                                ? classes.checked\n                                : classes.unChecked\n                            }\n                            onClick={() => handleAnswers(q.id, item.id)}\n                            disabled={\n                              lesson.evaluation || lesson.finished\n                            }\n                          >\n                            <CardContent\n                              className={classes.content}\n                              dangerouslySetInnerHTML={{\n                                __html: lesson.finished\n                                  ? /** Se carrega questões já respondidas */\n                                    lesson.evaluation?.user_responses\n                                    ? lesson.evaluation?.user_responses.find(\n                                        (a) => a.answer_id === item.id\n                                      )\n                                      ? '<div align=\"right\"><i>Você respondeu</i></div>' +\n                                        item.answer\n                                      : item.answer\n                                    : /** Se usuário acabou de responder */\n                                    lesson.evaluation?.feedbacks?.find(\n                                        (a) => a.user_response === item.id\n                                      )\n                                    ? '<div align=\"right\"><i>Você respondeu</i></div>' +\n                                      item.answer\n                                    : item.answer\n                                  : item.answer,\n                              }}\n                            ></CardContent>\n                          </CardActionArea>\n                        </Card>\n                      );\n                    })}\n                  </Box>\n\n                  {index % 2 === 0 && index > 0 && (\n                    <Box component=\"div\" mb={4}>\n                      <AdsIncontent />\n                    </Box>\n                  )}\n                </React.Fragment>\n              );\n            })}\n            <Box component=\"div\" display=\"flex\" justifyContent=\"center\">\n              {lesson.finished ? (\n                lesson.next ? (\n                  <Button\n                    variant=\"contained\"\n                    href={`./${lesson.next.slug}`}\n                    color=\"secondary\"\n                  >\n                    Próxima aula\n                  </Button>\n                ) : (\n                  <Button variant=\"contained\" href={`./../`} color=\"secondary\">\n                    Retornar ao curso\n                  </Button>\n                )\n              ) : (\n                <Button\n                  variant=\"contained\"\n                  disabled={\n                    props.isSubmitting ||\n                    lesson.quiz.length !== answers.length\n                  }\n                  color=\"primary\"\n                  onClick={() => props._finishQuizz(answers)}\n                >\n                  {!props.isSubmitting ? (\n                    \"Enviar respostas\"\n                  ) : (\n                    <CircularProgress size={30} color=\"inherit\" />\n                  )}\n                </Button>\n              )}\n            </Box>\n          </Container>\n        </Box>\n      </Box>\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    background: theme.palette.grey[100],\n    minHeight: '100vh',\n  },\n  header: {\n    backgroundColor: \"#000\",\n  },\n  title: {\n    color: \"#FFF\",\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(24),\n  },\n  subtitle: {\n    color: \"#FFF\",\n    fontWeight: 600,\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(1),\n  },\n  adsenseContainer: {\n    position: 'fixed',\n    display: 'flex',\n    justifyContent: 'center',\n    bottom: 0,\n    width: `calc(100% - ${theme.overrides.MuiDrawer.paper.width+50}px)`,\n  },\n  adsenseHorizontal: {\n    width: 728,\n    height: 90,\n  },\n  cardAnswer: {\n    marginBottom: theme.spacing(2),\n    '&:last-child': {\n      marginBottom:0\n    }\n  },\n  content: {\n    '& img': {\n      [theme.breakpoints.down('sm')]: {\n        width: '100%',\n        maxWidth: 400,\n      },\n    }\n  },\n  checked: {\n    backgroundColor: theme.palette.grey[600],\n    color: theme.palette.getContrastText(theme.palette.grey[600]),\n  },\n  unChecked: {\n    backgroundColor: \"#FFF\",\n    color: theme.palette.getContrastText(\"#FFF\"),\n  },\n  correctAnswer: {\n    backgroundColor: theme.palette.primary['main'],\n    color: \"#FFF\",\n  },\n  wrongAnswer: {\n    backgroundColor: theme.palette.error['main'],\n    color: \"#FFF\",\n  },\n  cardEvaluation: {\n    width: 400,\n    marginLeft: theme.spacing(2),\n    marginRight: theme.spacing(2),\n    paddingTop: theme.spacing(3),\n    paddingBottom: theme.spacing(3),\n    [theme.breakpoints.down('sm')]: {\n      width: \"50%\",\n      maxWidth: 300,\n      marginLeft: theme.spacing(1),\n      marginRight: theme.spacing(1),\n    },\n    textAlign: \"center\",\n  },\n  evaluationEmoji: {\n    width: 50,\n  },\n  evaluationTitle: {\n    fontSize: theme.typography.pxToRem(21),\n    fontWeight: 600,\n  },\n  evaluationResult: {\n    fontSize: theme.typography.pxToRem(42),\n    fontWeight: 800,\n  },\n  evaluationCorrect: {\n    color: theme.palette.primary['main']\n  },\n  evaluationWrong: {\n    color: theme.palette.error['main']\n  },\n  resultsTitle: {\n    marginBottom: theme.spacing(2),\n    fontWeight: 800,\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(24),\n    textAlign: \"center\",\n  }\n}))\n\nexport { useStyles }\n","import React from \"react\";\n\nimport {\n  Box,\n  Typography,\n  Button,\n  Container,\n  CircularProgress,\n} from \"@material-ui/core\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\nimport { AdsTop, AdsBillboardLesson } from \"app/components/ads/freestar\";\nimport Campaigns from \"app/components/carousels/Campaigns/ads\";\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const { scopes } = useScopes();\n\n  const {lesson, ads, isLoadingAds} = props\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" className={classes.root}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"column\"\n          className={classes.header}\n          pt={4}\n          pb={2}\n          mb={5}\n        >\n          <Container>\n            <Typography component=\"h2\" className={classes.subtitle}>\n              {lesson.module?.title}\n            </Typography>\n            <Typography component=\"h1\" className={classes.title}>\n              {lesson.title}\n            </Typography>\n          </Container>\n        </Box>\n\n        <Box component=\"div\" mb={10}>\n          <Container>\n            <Box\n              component=\"div\"\n              mb={4}\n              display=\"flex\"\n              flexDirection=\"column\"\n              justifyContent=\"center\"\n            >\n              <Box mb={4}>\n                {\n                  !isLoadingAds && !scopes.includes('student_no_ads_display') ?\n                    ads.length > 0 ?\n                      <Campaigns campaigns={ads} /> :\n                      <AdsTop />\n                  : ''\n                }\n              </Box>\n              <Box component=\"div\" dangerouslySetInnerHTML={{ __html: lesson.text }} />\n            </Box>\n\n            <Box component=\"div\" display=\"flex\" justifyContent=\"center\">\n              <Box mb={2}><AdsBillboardLesson /></Box>\n              {lesson.finished ? (\n                lesson.next ? (\n                  <Button\n                    variant=\"contained\"\n                    href={`./${lesson.next.slug}`}\n                    color=\"secondary\"\n                  >\n                    Próxima aula\n                  </Button>\n                ) : (\n                  <Button variant=\"contained\" href={`./../`} color=\"secondary\">\n                    Retornar ao curso\n                  </Button>\n                )\n              ) : (\n                <Button\n                  variant=\"contained\"\n                  disabled={props.isSubmitting}\n                  color=\"primary\"\n                  onClick={() => props._finishLesson()}\n                >\n                  {!props.isSubmitting ? (\n                    \"Finalizar aula\"\n                  ) : (\n                    <CircularProgress size={30} color=\"inherit\" />\n                  )}\n                </Button>\n              )}\n            </Box>\n          </Container>\n        </Box>\n      </Box>\n    </React.Fragment>\n  );\n};\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  wrapper: {\n  },\n}))\n\nexport { useStyles }\n","import React,{useState} from 'react'\nimport {\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  DialogActions,\n  Button,\n  CircularProgress,\n} from '@material-ui/core'\n\nimport studentApi from 'app/services/student-api'\n\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport ClassicEditor from '@ckeditor/ckeditor5-build-classic';\nimport '@ckeditor/ckeditor5-build-classic/build/translations/pt-br';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const {open,toggleDialog,position,toggleNote,note,course_id,lesson_id} = props;\n  const [editorContent, setEditorContent] = useState(\"\")\n  const [loading, setLoading] = useState(false);\n\n  const editorConfiguration = {\n    toolbar: [ 'heading', '|', 'bold', 'italic', 'bulletedList', 'numberedList', '|', 'undo', 'redo' ],\n    heading: {\n      options: [\n        { model: 'paragraph', title: 'Parágrafo', class: 'ck-heading_paragraph' },\n        { model: 'heading3', view: 'h3', title: 'Título', class: 'ck-heading_heading3' },\n      ]\n    },\n    highlight: true,\n    language: 'pt-br',\n  };\n\n  const submitNote = () => {\n\n    const content = editorContent;\n    if(note?.id) {\n      const payload = {body: content};\n      update(payload,note.id);\n    } else {\n      const payload = {\n        body: content,\n        position: parseInt(position)\n      }\n      store(payload);\n    }\n\n  };\n\n  const update = (payload,id) => {\n\n    var endpoint  = `subscribed-courses/${course_id}/lessons/${lesson_id}/notes/${id}`;\n    setLoading(true);\n\n    studentApi.patch(`${endpoint}`,payload)\n    .then((response) => {\n      toggleNote(id,response.data);\n    })\n    .catch((error) => {\n      console.warn(error)\n      setLoading(false);\n    }).finally(() => {\n      //\n    })\n\n  }\n\n  const store = (payload) => {\n\n    const endpoint  = `subscribed-courses/${course_id}/lessons/${lesson_id}/notes`;\n    setLoading(true);\n\n    studentApi.post(endpoint,payload)\n    .then((response) => {\n      toggleNote(null,response.data);\n    })\n    .catch((error) => {\n      console.warn(error)\n      setLoading(false);\n    }).finally(() => {\n      //\n    })\n\n  }\n\n  return (\n    <Dialog\n      aria-labelledby=\"editor-note\"\n      open={open}\n      fullWidth={true}\n      onExited={ () => {\n        setLoading(false);\n        setEditorContent(\"\");\n      }}\n    >\n      <DialogTitle id=\"editor-note\" className={classes.title} disableTypography>\n        {!note ? 'Criar anotação' : 'Editar anotação'}\n      </DialogTitle>\n      <DialogContent>\n        <CKEditor\n          className={classes.ckEditor}\n          editor={ ClassicEditor }\n          config={ editorConfiguration }\n          data={note ? note.body : ''}\n          onReady={editor => {\n            // You can store the \"editor\" and use when it is needed.\n            // console.log(\"Editor is ready to use!\", editor);\n            editor.editing.view.change(writer => {\n              writer.setStyle(\n                \"min-height\",\n                \"100px\",\n                editor.editing.view.document.getRoot()\n              );\n            });\n          }}\n          onChange={ ( event, editor ) => {\n            const data = editor.getData();\n            setEditorContent(data);\n\n          }}\n          onBlur={( event, editor ) => {\n            //\n          }}\n          onFocus={( event, editor ) => {\n            //\n          }}\n        />\n      </DialogContent>\n      <DialogActions>\n        <Button onClick={toggleDialog(false)} disabled={loading}>\n          Cancelar\n        </Button>\n        <Button onClick={submitNote} color=\"primary\" disabled={loading}>\n          {!loading ? 'Salvar' : <CircularProgress size={30} />}\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  buttonDelete: {\n    color: theme.palette.error['main']\n  }\n}))\n\nexport { useStyles }\n","import React, { useState } from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  DialogActions,\n  DialogContentText,\n  Button,\n} from '@material-ui/core'\n\nimport studentApi from 'app/services/student-api';\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const { open, toggleDialog, toggleNote, note, course_id, lesson_id } = props;\n  const [loading, setLoading] = useState(false)\n\n  const deleteNote = (id) => {\n    setLoading(true)\n    studentApi.delete(`subscribed-courses/${course_id}/lessons/${lesson_id}/notes/${id}`)\n      .then((response) => {\n        toggleNote(id)\n      })\n      .catch((error) => {\n        //\n      })\n      .finally(() => {\n        setLoading(false)\n      })\n  };\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n      onClose={toggleDialog(false)}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>Excluir anotação?</DialogTitle>\n      <DialogContent>\n        <DialogContentText>\n          Uma vez que sua anotação foi excluída, não poderemos recuperá-la novamente.\n        </DialogContentText>\n        <DialogActions>\n          <Button onClick={toggleDialog(false)} disabled={loading}>\n            Cancelar\n          </Button>\n          <Button onClick={() => deleteNote(note.id)} className={classes.buttonDelete} disabled={loading}>\n            Excluir\n          </Button>\n        </DialogActions>\n      </DialogContent>\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  notesMainTitle: {\n    fontWeight: 700,\n    fontSize: theme.typography.pxToRem(21),\n  },\n  noteCreatedAt: {\n    fontSize: theme.typography.pxToRem(10),\n    color: theme.palette.grey[400],\n  },\n  noteTitle: {\n    fontWeight: 600,\n    color: theme.palette.primary['main']\n  },\n  noteBody: {\n    backgroundColor: theme.palette.grey[100],\n    padding: `${theme.spacing(1)}px ${theme.spacing(2)}px`,\n    marginBottom: theme.spacing(2),\n  },\n  time: {\n    fontSize: theme.typography.pxToRem(13),\n  },\n  noteKlubi: {\n    backgroundColor: theme.palette.grey[100],\n    padding: `${theme.spacing(2)}px ${theme.spacing(2)}px`,\n    marginBottom: theme.spacing(2),\n  },\n  noteKlubiTitle: {\n    fontWeight: 700,\n    fontSize: theme.typography.pxToRem(18),\n  },\n  noteKlubiCopy: {\n    textAlign: 'center',\n    marginBottom: theme.spacing(3)\n  },\n  extraContent: {\n    height: \"100%\",\n    paddingTop: theme.spacing(2),\n    paddingBottom: theme.spacing(2),\n  }\n}))\n\nexport { useStyles }\n","import React, { useEffect, useState } from \"react\";\nimport {\n  Box,\n  IconButton,\n  Divider,\n  Paper,\n  Chip,\n  Container,\n  Typography,\n  Button,\n  Tooltip,\n} from \"@material-ui/core\";\n\nimport studentApi from 'app/services/student-api'\nimport Skeleton from \"@material-ui/lab/Skeleton\";\n\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport NoteAddIcon from \"@material-ui/icons/NoteAdd\";\n\nimport NoteEditorDialog from \"app/components/Modals/Lesson/NoteEditor\";\nimport DeleteNoteDialog from \"app/components/Modals/Lesson/DeleteNote\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nexport default (props) => {\n  const classes = useStyles();\n  const { scopes } = useScopes();\n\n  const {\n    lesson_id,\n    course_id,\n    videoApi,\n  } = props;\n\n  const [notes, setNotes] = useState([]);\n  const [note, setNote] = useState(null);\n  const [loadingNotes, setLoadingNotes] = useState(false);\n\n  const [openNotesDialog, setOpenNotesDialog] = React.useState(false);\n  const toggleNotesDialog =\n    (open, note = null) =>\n    (event) => {\n      setNote(note);\n      setOpenNotesDialog(open);\n    };\n\n  const [openDeleteNoteDialog, setOpenDeleteNoteDialog] = React.useState(false);\n  const toggleDeleteNotesDialog = (open, note) => (event) => {\n    setNote(note);\n    setOpenDeleteNoteDialog(open);\n  };\n\n  const toggleNote = (id = null, note) => {\n    // delete\n    if (id && !note) {\n      setOpenDeleteNoteDialog(false);\n      setNotes(notes.filter((item) => item.id !== id));\n    }\n    // update\n    else if (id && note) {\n      for (const i in notes) {\n        if (notes[i].id === id) {\n          notes[i].body = note.body;\n        }\n      }\n      setNotes(notes);\n      setOpenNotesDialog(false);\n    }\n    // insert\n    else {\n      notes.unshift(note);\n      setNotes(notes);\n      setOpenNotesDialog(false);\n    }\n  };\n\n  useEffect(() => {\n    function getNotes() {\n      if (scopes.includes(\"student_manage_class_notes\")) {\n        setLoadingNotes(true);\n        studentApi\n          .get(\n            `subscribed-courses/${course_id}/lessons/${lesson_id}/notes`\n          )\n          .then((response) => {\n            setNotes(response.data);\n          })\n          .catch((error) => {\n            console.warn(error);\n          })\n          .finally(() => {\n            setLoadingNotes(false);\n          });\n      }\n    }\n    getNotes();\n  }, [course_id, lesson_id, scopes]);\n\n  function Header() {\n    return (\n      <Box mb={3}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          justifyContent=\"space-between\"\n          mb={1}\n        >\n          <Typography component=\"h2\" className={classes.notesMainTitle}>\n            Anotações de Aula\n          </Typography>\n          <IconButton\n            color=\"primary\"\n            aria-label=\"add-note\"\n            onClick={toggleNotesDialog(true)}\n            disabled={!scopes.includes(\"student_manage_class_notes\")}\n          >\n            <AddCircleIcon />\n          </IconButton>\n        </Box>\n        <Divider />\n      </Box>\n    );\n  }\n\n  function PremiumSeller() {\n    return (\n      <Paper className={classes.noteKlubi} elevation={0}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"column\"\n          alignItems=\"center\"\n        >\n          <Box className={classes.noteKlubiTitle} mb={2}>\n            Melhore a sua experiência na Kultivi\n          </Box>\n          <Typography component=\"p\" className={classes.noteKlubiCopy}>\n            Anote pontos importantes da aula e consulte-os sempre que precisar.\n            Este recurso é exclusivo para alunos do Kultivi+.\n          </Typography>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=notes\"\n            target=\"_blank\"\n          >\n            QUERO CONHECER\n          </Button>\n        </Box>\n      </Paper>\n    );\n  }\n\n  function FirstNote() {\n    return (\n      <Paper className={classes.noteKlubi} elevation={0}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"column\"\n          alignItems=\"center\"\n          pt={2}\n        >\n          <Box mb={2}>\n            <NoteAddIcon fontSize=\"large\" color=\"disabled\" />\n          </Box>\n          <Box className={classes.noteKlubiTitle} mb={2}>\n            Suas anotações aparecerão aqui\n          </Box>\n          <Button\n            variant=\"contained\"\n            color=\"primary\"\n            onClick={toggleNotesDialog(true)}\n          >\n            Criar agora\n          </Button>\n        </Box>\n      </Paper>\n    );\n  }\n\n\n  return (\n    <>\n      <Paper className={classes.extraContent} elevation={0}>\n        <Container maxWidth=\"sm\">\n          <Header />\n\n          {!scopes.includes(\"student_manage_class_notes\") ? (\n            <PremiumSeller />\n          ) : (\n            loadingNotes ? (\n              <>\n                <Box mb={2}>\n                  <Skeleton animation=\"wave\" variant=\"rect\" height={100} />\n                </Box>\n                <Skeleton animation=\"wave\" variant=\"rect\" height={100} />\n              </>\n            ) : notes.length > 0 ? (\n              notes.map((note, index) => {\n                return (\n                  <Paper key={index} className={classes.noteBody} elevation={0}>\n                    <Box\n                      component=\"div\"\n                      display=\"flex\"\n                      justifyContent=\"flex-end\"\n                    >\n                      <Typography\n                        component=\"span\"\n                        className={classes.noteCreatedAt}\n                      >\n                        {note.createdAt}\n                      </Typography>\n                    </Box>\n                    <Box\n                      mb={2}\n                      dangerouslySetInnerHTML={{ __html: note.body }}\n                    />\n                    <Box\n                      component=\"div\"\n                      display=\"flex\"\n                      flexDirection=\"row\"\n                      alignItems=\"center\"\n                      justifyContent=\"space-between\"\n                    >\n                      {note.position > 0 && (\n                        <Tooltip title=\"Ir para\" arrow>\n                          <Chip\n                            color=\"primary\"\n                            size=\"small\"\n                            onClick={ () => {\n                              videoApi.setPosition(note.position)\n                              window.scrollTo(0,0);\n                              videoApi.play()\n                            }}\n                            label={note.time}\n                          />\n                        </Tooltip>\n                      )}\n                      <Box\n                        component=\"div\"\n                        display=\"flex\"\n                        flexDirection=\"row\"\n                        marginLeft=\"auto\"\n                      >\n                        <IconButton\n                          aria-label=\"delete\"\n                          onClick={toggleNotesDialog(true, note)}\n                        >\n                          <EditIcon fontSize=\"small\" />\n                        </IconButton>\n                        <IconButton\n                          aria-label=\"delete\"\n                          onClick={toggleDeleteNotesDialog(true, note)}\n                        >\n                          <DeleteIcon fontSize=\"small\" />\n                        </IconButton>\n                      </Box>\n                    </Box>\n                  </Paper>\n                );\n              })\n            ) : (\n              <FirstNote />\n            )\n          )}\n        </Container>\n      </Paper>\n      <NoteEditorDialog\n        open={openNotesDialog}\n        toggleDialog={toggleNotesDialog}\n        toggleNote={toggleNote}\n        position={videoApi?.getCurrentTime() || 0}\n        note={note}\n        {...props}\n      />\n      <DeleteNoteDialog\n        open={openDeleteNoteDialog}\n        toggleDialog={toggleDeleteNotesDialog}\n        toggleNote={toggleNote}\n        note={note}\n        {...props}\n      />\n    </>\n  );\n};\n","import React from 'react'\nimport {\n  Box,\n} from '@material-ui/core'\nimport { grey } from '@material-ui/core/colors';\nimport Rating from '@material-ui/lab/Rating';\n\nimport StarBorderIcon from '@material-ui/icons/StarBorder';\n\nimport studentApi from 'app/services/student-api'\n\nexport default (props) => {\n\n  const [savingRating,setSavingRating] = React.useState(false);\n  const {course_id, lesson_id, copy} = props\n\n  const [rating,setRating] = React.useState(0);\n\n  React.useEffect(()=>{\n    const rating = JSON.parse(sessionStorage.getItem(`@Kultivi:/courses/${course_id}/reviews/${lesson_id}`))?.rating || 0\n    setRating(rating)\n  },[course_id, lesson_id])\n\n  const RatingCourse = (e,value) => {\n\n    if( (value < 1 && value > 5) || !value ) {\n      return false;\n    }\n    setRating(value)\n    setSavingRating(true);\n    const payload = {rating:value};\n    studentApi.put(`/subscribed-courses/${course_id}/lessons/${lesson_id}/rating`,payload)\n    .then(response => {\n      sessionStorage.setItem(`@Kultivi:/courses/${course_id}/reviews/${lesson_id}`,JSON.stringify(payload))\n    })\n    .catch((err) => {\n      console.warn(err.response)\n    })\n    .finally(() => {\n      setSavingRating(false);\n    })\n\n  }\n\n  return (\n    <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\">\n      <Box component=\"div\" mb={2} fontWeight={700} color=\"white\">{copy}</Box>\n      <Rating\n        name=\"rating\"\n        size=\"large\"\n        precision={0.5}\n        max={5}\n        value={rating}\n        disabled={savingRating}\n        emptyIcon={<StarBorderIcon style={{ color: grey[400] }} fontSize=\"inherit\" />}\n        onChange={RatingCourse} />\n    </Box>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    backgroundColor: \"#000\",\n    justifyContent: 'center',\n  },\n  videoDone: {\n    minHeight: \"50%\",\n  },\n  videoWrapper: {\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n    width: '100%',\n    height: '100%',\n    border: 0,\n  },\n  videoWrapperContainer: {\n    position: \"relative\",\n    width: \"100%\",\n    paddingBottom: \"56.25%\",\n  },\n  lessonHeader: {\n    position: \"fixed\",\n    top: 0,\n    width: `calc(100% - ${theme.overrides.MuiDrawer.paper.width + 50}px)`,\n    color: \"#FFF\",\n    zIndex: 2,\n    backgroundImage: 'linear-gradient(to top, rgba(0,0,0,0), rgba(0,0,0,1))'\n  },\n  lessonModule: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 800,\n    marginBottom: theme.spacing(1),\n  },\n  lessonTitle: {\n    fontSize: theme.typography.pxToRem(23),\n    fontWeight: 800\n  },\n  nextClassCopy: {\n    color: \"#FFF\",\n    fontSize: theme.typography.pxToRem(21),\n  },\n  videoAreaSize: {\n    width: \"100%\",\n    [theme.breakpoints.up('lg')]: {\n      width: \"85%\"\n    }\n  }\n}))\n\nexport { useStyles }\n","import React from \"react\";\nimport YouTube from \"react-youtube\";\n\n// Styles files\nimport { useStyles } from \"./styles\";\n\nexport default (props) => {\n  const classes = useStyles();\n\n  const {\n    lesson,\n    finishVideo,\n    setLoadingVideo,\n    setVideoDone,\n    setVideoApi,\n  } = props;\n\n  const opts = {\n    height: \"390\",\n    width: \"640\",\n    playerVars: {\n      autoplay: 0,\n      controls: 2,\n      color: \"white\",\n      modestbranding: 1,\n      rel: 0,\n      showinfo: 0,\n    },\n  };\n\n  function _onReady(event) {\n    setLoadingVideo(false);\n    setVideoApi({\n      play: () => event.target.playVideo(),\n      setPosition: (time) => event.target.seekTo(time),\n      getCurrentTime: () => event.target.getCurrentTime(),\n    });\n  }\n\n  function _onEnd(event) {\n    setVideoDone(true);\n    finishVideo();\n  }\n\n  function _onStateChange(event) {\n    //\n  }\n\n  return (\n    <React.Fragment>\n      <YouTube\n        videoId={lesson.videoCode}\n        opts={opts}\n        containerClassName={`${classes.videoWrapperContainer}`}\n        className={`${classes.videoWrapper}`}\n        onReady={_onReady}\n        onStateChange={_onStateChange}\n        onEnd={_onEnd}\n      />\n    </React.Fragment>\n  );\n};\n","import React, { useEffect, memo } from \"react\";\nimport { AdBlockDetectedWrapper } from \"adblock-detect-react\";\nimport { Box, Link } from \"@material-ui/core\";\nimport { Alert } from \"@material-ui/lab\";\n\nconst Connatixel = ({\n  setLoadingVideo,\n  setVideoDone,\n  setVideoApi,\n  loadingVideo,\n  finishVideo,\n  lesson,\n}) => {\n\n  const initCnxelHeadScript = () => {\n\n    /* eslint-disable */\n    try {\n      !(function (n) {\n        if (!window.cnx) {\n          (window.cnx = {}), (window.cnx.cmd = []);\n          var t = n.createElement(\"iframe\");\n          (t.display = \"none\"),\n            (t.onload = function () {\n              var n = t.contentWindow.document,\n                c = n.createElement(\"script\");\n              (c.src = \"//cd.connatix.com/connatix.player.js?cid=92e9dfb3-b71f-4061-8312-3e07284a749d\"),\n                c.setAttribute(\"async\", \"1\"),\n                c.setAttribute(\"type\", \"text/javascript\"),\n                n.body.appendChild(c);\n            }),\n            n.head.appendChild(t);\n        }\n      })(document);\n    } catch (error) {\n      console.log(\"Some Connatix init error:\", error);\n    }\n    /* eslint-enable */\n  };\n\n  initCnxelHeadScript();\n\n  return (\n    <Box>\n      <AdBlockDetectedWrapper>\n        <Box my={3}>\n          <Alert variant=\"filled\" severity=\"error\">\n            Para que o player funcione corretamente, por favor desative o AdBlock!\n          </Alert>\n        </Box>\n      </AdBlockDetectedWrapper>\n      <Player\n        mediaId={lesson.connatixCode}\n        setVideoDone={setVideoDone}\n        setLoadingVideo={setLoadingVideo}\n        finishVideo={finishVideo}\n        setVideoApi={setVideoApi}\n      />\n      {!loadingVideo &&\n        <Alert variant=\"filled\" severity=\"info\" style={{borderTopLeftRadius: 0, borderTopRightRadius: 0}}>\n          <Link\n            href=\"https://planos.kultivi.com/?utm_source=app.kultivi.com&utm_medium=link_player\"\n            target=\"_blank\"\n            style={{color: '#FFF', textDecoration: 'underline'}}\n          >Assista sem interrupções, ajuste a velocidade e ainda apoie a nossa missão. CLIQUE AQUI</Link>\n        </Alert>\n      }\n    </Box>\n  );\n};\n\nconst Player = ({mediaId, finishVideo, setLoadingVideo, setVideoDone, setVideoApi}) => {\n\n  const playerId = '94bdc624-560e-499a-9c58-b84d41714ec3';\n  const renderId = '7529ba5a7a444b63863a3d58080f331a';\n\n  const initCnxelBodyScript = () => {\n    /* eslint-disable */\n    (new Image()).src = `https://capi.connatix.com/tr/si?token=${playerId}&92e9dfb3-b71f-4061-8312-3e07284a749d`;\n    cnx.cmd.push(function () {\n      cnx({\n        playerId,\n        mediaId,\n        settings: {\n          playbackMode: 1,\n          defaultSoundMode: 1,\n          nextVideoMode: 2,\n          advertising: {\n            timeBetweenAds: 300\n          },\n          customization: {\n            responsive: true,\n            ratioWidth: 16,\n            ratioHeight: 9,\n          },\n        }\n      }).render(renderId, (renderError, playerApi) => {\n\n        if (!renderError) {\n\n          setVideoApi({\n              play: () => playerApi.play(),\n              setPosition: (time) => playerApi.setVideoPosition(time),\n              getCurrentTime: () => playerApi.getVideoCurrentPosition(),\n          });\n\n          playerApi.on('isViewable', () => {\n            setLoadingVideo(false);\n          });\n\n          playerApi.on(\"videoCompleted100\", async () => {\n            setVideoDone(true);\n            await finishVideo()\n          });\n        }\n      });\n    });\n\n    /* eslint-enable */\n  };\n\n  useEffect(() => {\n    initCnxelBodyScript();\n    /* eslint-disable */\n  }, []);\n\n  return(\n    <div className=\"cnx\" id={'cnx'+playerId}>\n      <div id={renderId}></div>\n    </div>\n  )\n}\n\nexport default memo(Connatixel);\n\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    backgroundColor: \"#000\",\n    justifyContent: 'center',\n  },\n  videoDone: {\n    minHeight: \"50%\",\n  },\n  videoWrapper: {\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n    width: '100%',\n    height: '100%',\n    border: 0,\n  },\n  videoWrapperContainer: {\n    position: \"relative\",\n    width: \"100%\",\n    paddingBottom: \"56.25%\",\n  },\n  lessonHeader: {\n    position: \"fixed\",\n    top: 0,\n    width: `calc(100% - ${theme.overrides.MuiDrawer.paper.width + 50}px)`,\n    color: \"#FFF\",\n    zIndex: 2,\n    backgroundImage: 'linear-gradient(to top, rgba(0,0,0,0), rgba(0,0,0,1))'\n  },\n  lessonModule: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 800,\n    marginBottom: theme.spacing(1),\n  },\n  lessonTitle: {\n    fontSize: theme.typography.pxToRem(23),\n    fontWeight: 800\n  },\n  nextClassCopy: {\n    color: \"#FFF\",\n    fontSize: theme.typography.pxToRem(21),\n  },\n  videoAreaSize: {\n    width: \"100%\",\n    [theme.breakpoints.up('lg')]: {\n      width: \"85%\"\n    }\n  }\n}))\n\nexport { useStyles }\n","import React, { useState } from \"react\";\n\nimport {\n  Box,\n  LinearProgress,\n  Typography,\n  Button,\n  Container,\n  Hidden,\n} from \"@material-ui/core\";\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\n\nimport studentApi from \"app/services/student-api\";\n\nimport NotesComponent from \"app/components/Notes\";\nimport { AdsBillboardLesson, AdsBottom } from \"app/components/ads/freestar\";\nimport Campaigns from \"app/components/carousels/Campaigns/ads\";\nimport Rating from \"app/components/Rating\";\nimport { YTPlayer, CNXPlayer } from \"app/components/layouts/Player\";\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\nimport { useScopes } from \"app/contexts/ScopesContext\";\n\nimport { useStyles } from \"./styles\";\n\nexport default (props) => {\n  const classes = useStyles();\n\n  const { setSnackValues } = useSnackbar();\n  const { scopes } = useScopes();\n\n\n  const [loadingVideo, setLoadingVideo] = useState(true);\n  const [videoDone, setVideoDone] = useState(false);\n  const [videoApi, setVideoApi] = useState(null);\n\n  const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n  const {\n    course,\n    lesson,\n    ads,\n    isLoadingAds,\n  } = props;\n\n  const finishVideo = () => {\n    if (lesson.finished) return;\n    setIsSubmitting(true);\n    studentApi\n      .post(`/subscribed-courses/${course.id}/finish-lesson`, {\n        module: 'video',\n        lessonId: lesson.id,\n      })\n      .then((response) => {})\n      .catch((err) => {\n        setSnackValues({\n          message: \"Ops! Houve uma falha ao finalizar aula. Tente novamente\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setIsSubmitting(false);\n        window.scrollTo(0, 0);\n      });\n  };\n\n\n  const getAttachment = (link) => {\n    window.open(link);\n  };\n\n  return (\n    <React.Fragment>\n      {loadingVideo && <LinearProgress color=\"secondary\" />}\n      <Box\n        component=\"div\"\n        display=\"flex\"\n        flexDirection=\"column\"\n        className={[classes.root, videoDone ? classes.videoDone : \"\"].join(\" \")}\n        alignItems=\"center\"\n        justifyContent=\"center\"\n        py={1}\n        px={1}\n      >\n        {!videoDone ? (\n          <>\n            <Box component=\"div\" className={classes.videoAreaSize} mb={2}>\n              {\n                !scopes?.includes(\"student_no_ads_display\") && lesson.connatixCode ?\n                  <CNXPlayer\n                    setLoadingVideo={setLoadingVideo}\n                    setVideoApi={setVideoApi}\n                    setVideoDone={setVideoDone}\n                    finishVideo={finishVideo}\n                    lesson={lesson}\n                    course={course}\n                    loadingVideo={loadingVideo}\n                  /> :\n                  <YTPlayer\n                    setLoadingVideo={setLoadingVideo}\n                    setVideoApi={setVideoApi}\n                    setVideoDone={setVideoDone}\n                    finishVideo={finishVideo}\n                    lesson={lesson}\n                    course={course}\n                  />\n                }\n            </Box>\n          </>\n        ) : (\n          <Box\n            component=\"div\"\n            display=\"flex\"\n            flexDirection=\"column\"\n            justifyContent=\"center\"\n            alignItems=\"center\"\n            className={classes.nextClassCopy}\n            my=\"auto\"\n          >\n            <Box mb={3}>\n              <Rating\n                course_id={course.id}\n                lesson_id={lesson?.id}\n                copy={\n                  !lesson?.next && course.status === 1\n                    ? \"Avalie este curso\"\n                    : \"O que você está achando do curso?\"\n                }\n              />\n            </Box>\n            <Box component=\"div\" mb={3} textAlign=\"center\">\n              <Typography\n                component=\"h5\"\n                variant=\"h5\"\n                dangerouslySetInnerHTML={{\n                  __html: `Você concluiu a aula \"${lesson.title}\"`,\n                }}\n              ></Typography>\n              {lesson?.next ? (\n                <>\n                  <Box component=\"div\" mb={3}>\n                    <Typography\n                      component=\"h6\"\n                      variant=\"h6\"\n                      dangerouslySetInnerHTML={{\n                        __html: `A seguir: \"${lesson?.next.title}\"`,\n                      }}\n                    ></Typography>\n                  </Box>\n                  {\n                    !isSubmitting &&\n                    <Button\n                    variant=\"contained\"\n                    color=\"secondary\"\n                    disabled={isSubmitting}\n                    href={`./${lesson?.next.slug}`}\n                    >\n                      Reproduzir próxima aula\n                    </Button>\n                  }\n                </>\n              ) : (\n                <>\n                  <Box component=\"div\" mb={3}>\n                    {course.status === 2 && (\n                      <Typography component=\"h6\" variant=\"h6\">\n                        Este curso está em gravação e em breve\n                        disponibilizaremos mais aulas\n                      </Typography>\n                    )}\n                  </Box>\n                  <Button\n                    variant=\"contained\"\n                    color=\"secondary\"\n                    href={`/dashboard/course/${course.slug}`}\n                  >\n                    Retornar ao curso\n                  </Button>\n                </>\n              )}\n            </Box>\n          </Box>\n        )}\n      </Box>\n      <Box component=\"div\" mb={6} paddingTop={2}>\n        <Box mb={4} maxWidth={900} mx='auto'>\n          {\n            !isLoadingAds && !scopes.includes('student_no_ads_display') ?\n              ads.length > 0 ?\n                <Campaigns campaigns={ads} /> :\n                <AdsBillboardLesson />\n            : ''\n          }\n        </Box>\n        <Container maxWidth=\"md\">\n          <Hidden mdDown implementation=\"css\">\n            <Box component=\"div\" pt={3} mb={2}>\n              <Typography\n                component=\"h6\"\n                variant=\"h6\"\n                style={{ color: \"#0F5B7A\", fontWeight: 700 }}\n              >\n                Materiais de apoio\n              </Typography>\n            </Box>\n            <Box display='flex' flexDirection='row'>\n              {lesson?.attachments.length > 0 ? (\n                lesson.attachments.map((attach, index) => (\n                  <Box mr={1}>\n                    <Button\n                      color=\"secondary\"\n                      key={`lesson_source_${index}`}\n                      variant=\"contained\"\n                      onClick={() => getAttachment(attach.link)}\n                      size=\"small\"\n                      endIcon={<GetAppIcon />}\n                    >\n                      {`Baixar material de apoio`}\n                    </Button>\n                  </Box>\n                ))\n              ) : (\n                <>Nenhum material de apoio disponível 😕</>\n              )}\n            </Box>\n          </Hidden>\n        </Container>\n      </Box>\n      <NotesComponent\n        lesson_id={lesson.id}\n        course_id={course.id}\n        videoApi={videoApi}\n      />\n      <Box my={3}>\n        <AdsBottom />\n      </Box>\n    </React.Fragment>\n  );\n};\n","export const lessonType = {\n  VIDEO: 1,\n  TEXT: 2,\n  QUESTION: 3\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    minHeight: '100vh',\n  },\n  loading: {\n    backgroundColor: \"#000\",\n  },\n  filterBox: {\n    position: 'absolute',\n    bottom: '10px',\n    right: '5px',\n  },\n  buttonFilter: {\n    backgroundColor: \"#FFF\",\n    boxShadow: '0px 0px 4px rgba(34, 40, 43, 0.16)',\n  },\n  wrap: {\n    [theme.breakpoints.up('lg')]: {\n      marginRight: theme.overrides.MuiDrawer.paper.width + 70,\n      width: `calc(100% - ${theme.overrides.MuiDrawer.paper.width + 70}px)`,\n    },\n    flexGrow: 1,\n    width: \"100%\",\n  },\n  fab: {\n    position: 'fixed',\n    bottom: theme.spacing(3),\n    right: theme.spacing(2),\n    color: theme.palette.common.white,\n    backgroundColor: theme.palette.grey[600],\n    '&:hover': {\n      backgroundColor: theme.palette.grey[800],\n    },\n  },\n}))\n\nexport { useStyles }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect } from \"react\";\nimport {\n  Box,\n  CircularProgress,\n} from \"@material-ui/core\";\n\nimport coreApi from \"app/services/core-api\";\nimport systemApi from \"app/services/system-api\";\nimport studentApi from \"app/services/student-api\";\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\nimport DrawerLesson from \"app/components/navs/drawers/lesson\";\nimport { BottomMobileNavigation } from \"app/components/navs/bottom\";\nimport QuizzLayout from \"app/components/layouts/Quizz\";\nimport LessonTextLayout from \"app/components/layouts/LessonText\";\nimport PlayerLayout from \"app/components/layouts/Player/Player\";\n\nimport { lessonType } from './lesson-type'\nimport { useStyles } from \"./styles\";\n\nconst Lesson = (props) => {\n  const classes = useStyles();\n\n  const { setSnackValues } = useSnackbar();\n\n  const [openDrawer, setOpenDrawer] = React.useState(false);\n  const [lesson, setLesson] = React.useState({});\n  const [course, setCourse] = React.useState({});\n  const [curriculum, setCurriculum] = React.useState([]);\n  const [ads, setAds] = React.useState([]);\n  const [progress, setProgress] = React.useState([]);\n  const [isLoadingCurriculum, setIsLoadingCurriculum] = React.useState(true);\n  const [isLoadingProgress, setIsLoadingProgress] = React.useState(true);\n  const [isLoadingLesson, setIsLoadingLesson] = React.useState(true);\n  const [isLoadingAds, setisLoadingAds] = React.useState(true);\n  const [isSubmitting, setIsSubmitting] = React.useState(false);\n  const { courseSlug, lessonSlug } = props.computedMatch.params;\n\n  const toggleDrawer = (open) => (event) => {\n    if (\n      event.type === \"keydown\" &&\n      (event.key === \"Tab\" || event.key === \"Shift\")\n    ) {\n      return;\n    }\n    setOpenDrawer(open);\n  };\n\n  useEffect(() => {\n\n    setIsLoadingCurriculum(true);\n    setIsLoadingProgress(true);\n\n    const fetchResult = async () => {\n\n      const [course, ads] = await Promise.allSettled([\n        coreApi.get(`/courses/${courseSlug}?components=content,curriculum`),\n        systemApi.get(`vendor?context=lesson&courseId=${courseSlug}&lessonId=${lessonSlug}`)\n      ])\n\n      const {\n          content,\n          curriculum\n      } = course.value?.data\n      setCourse(content)\n      setAds(ads.value?.data || [])\n      setisLoadingAds(false)\n\n      let i = 0;\n      let matchLesson;\n      do {\n        const module = curriculum[i];\n        matchLesson = module.lessons.find((_lesson) => _lesson.slug === lessonSlug)\n        i++;\n      } while(i < curriculum.length && !matchLesson)\n\n      const [progress, lesson] = await Promise.allSettled([\n        studentApi.get(`/subscribed-courses/${content.id}/progress`),\n        studentApi.get(`/subscribed-courses/${content.id}/lesson/${matchLesson.id}`),\n      ])\n      setProgress(progress.value?.data);\n      setCurriculum(curriculum);\n      setLesson(lesson.value?.data);\n      setIsLoadingCurriculum(false);\n      setIsLoadingProgress(false);\n      setIsLoadingLesson(false);\n    }\n    fetchResult().catch(console.error);\n\n  },[courseSlug, lessonSlug])\n\n  const finishText = () => {\n    if (lesson.finished) return;\n    setIsSubmitting(true);\n    studentApi\n      .post(`/subscribed-courses/${course.id}/finish-lesson`, {\n        module: 'text',\n        lessonId: lesson.id,\n      })\n      .then((response) => {\n        setSnackValues({\n          message: \"Oba! Aula concluída com sucesso.\",\n          open: true,\n        });\n        lesson.finished = true;\n        setLesson({ ...lesson });\n      })\n      .catch((err) => {\n        setSnackValues({\n          message: \"Ops! Houve uma falha ao finalizar aula. Tente novamente\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setIsSubmitting(false);\n      });\n  };\n\n  const finishQuizz = (answers) => {\n    if (lesson.finished) return;\n    setIsSubmitting(true);\n    studentApi\n      .post(`/subscribed-courses/${course.id}/finish-lesson`, {\n        lessonId: lesson.id,\n        module: \"quiz\",\n        quiz: answers.map((answer) => {\n          return {\n            answerId: Number(answer.answer_id),\n            questionId: Number(answer.question_id)\n          }\n        }),\n      })\n      .then((response) => {\n        lesson.finished = true;\n        lesson.evaluation = response.data.evaluation;\n        setLesson({ ...lesson });\n      })\n      .catch((err) => {\n        setSnackValues({\n          message:\n            \"Ops! Houve uma falha ao finalizar avaliação. Tente novamente\",\n          open: true,\n        });\n      })\n      .finally(() => {\n        setIsSubmitting(false);\n        window.scrollTo(0, 0);\n      });\n  };\n\n  return (\n    <React.Fragment>\n      <Box component=\"div\" display=\"flex\" className={classes.root}>\n        <Box\n          component=\"main\"\n          display=\"flex\"\n          flexDirection=\"column\"\n          className={classes.wrap}\n        >\n          {isLoadingLesson ? (\n            <Box\n              component=\"div\"\n              alignItems=\"center\"\n              display=\"flex\"\n              className={classes.loading}\n              height=\"100%\"\n              justifyContent=\"center\"\n            >\n              <CircularProgress size={80} />\n            </Box>\n          ) :\n          lesson.type === lessonType.VIDEO ? (\n            <PlayerLayout\n              lesson={lesson}\n              course={course}\n              ads={ads}\n              isLoadingAds={isLoadingAds}\n            />\n          ) :\n          lesson.type === lessonType.TEXT ? (\n            <LessonTextLayout\n              _finishLesson={finishText}\n              lesson={lesson}\n              course={course}\n              ads={ads}\n              isSubmitting={isSubmitting}\n              isLoadingAds={isLoadingAds}\n            />\n          ) :\n            <QuizzLayout\n              _finishQuizz={finishQuizz}\n              lesson={lesson}\n              course={course}\n              ads={ads}\n              isSubmitting={isSubmitting}\n              isLoadingAds={isLoadingAds}\n            />\n          }\n        </Box>\n\n        <DrawerLesson\n          toggleDrawer={toggleDrawer}\n          open={openDrawer}\n          lesson={lesson}\n          course={course}\n          curriculum={curriculum}\n          progress={progress}\n          lessonSlug={lessonSlug}\n          isLoadingCurriculum={isLoadingCurriculum}\n          isLoadingProgress={isLoadingProgress}\n        />\n      </Box>\n      <BottomMobileNavigation\n        course={course}\n        lesson={lesson}\n        lessonSlug={lessonSlug}\n        curriculum={curriculum}\n        progress={progress}\n      />\n    </React.Fragment>\n  );\n};\n\nexport default Lesson;\n","/**\n * Form responsável por realizar o Login do usuário*/\nimport React from 'react'\nimport {\n    Box,\n    Grid,\n    Button,\n    TextField,\n    CircularProgress,\n    Snackbar,\n    IconButton\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\n\nimport accountApi from 'app/services/account-api';\n\n//Contexts imports\nimport { useFormik } from 'formik'\n\nimport { recoveryPasswordValidator } from 'app/validators/auth'\n\nexport default (props) => {\n\n  const {handleSuccess} = props;\n\n  const [snackValues, setSnackValues] = React.useState({\n      message: '',\n      open: false,\n  })\n  const handleCloseSnack = (event, reason) => {\n      if (reason === 'clickaway') {\n        return\n      }\n      setSnackValues({open:false})\n  }\n\n  const formik = useFormik({\n    initialValues: {\n      username: '',\n    },\n    validationSchema: recoveryPasswordValidator,\n    enableReinitialize: true,\n    validateOnMount:true,\n    onSubmit: (values,actions) => {\n      actions.setSubmitting(true);\n      accountApi.post(`/forgot-password`, values)\n      .then((response) => {\n        handleSuccess(response.data.email)\n      })\n      .catch((err) => {\n          setSnackValues({message:\"Ops! Falha ao recuperar sua senha. Tente novamente.\",open:true});\n          const { response } = err;\n          if (response && response.data) {\n            const {\n              data: { errors },\n            } = response;\n            const setErrors = {};\n            setErrors[`username`] = errors.join(', ');\n            actions.setErrors(setErrors);\n          }\n      })\n      .finally( () => {\n          actions.setSubmitting(false);\n      })\n\n    }\n  })\n\n\n  return (\n    <React.Fragment>\n      <form name=\"form-forgot-password\" onSubmit={formik.handleSubmit}>\n        <Grid container spacing={2}>\n          <Grid item xs={12}>\n            <TextField\n              label=\"Email de cadastro ou CPF\"\n              id=\"username\"\n              name=\"username\"\n              variant=\"outlined\"\n              type=\"text\"\n              fullWidth={true}\n              required={true}\n              disabled={formik.isSubmitting}\n              autoComplete=\"off\"\n              value={formik.values.username}\n              onChange={formik.handleChange}\n              onBlur={formik.handleBlur}\n              error={formik.touched.username && Boolean(formik.errors.username)}\n              helperText={formik.touched.username && formik.errors.username}\n            />\n          </Grid>\n          <Grid item xs={12}>\n            <Box component=\"div\" textAlign=\"right\">\n              <Button\n                color=\"primary\"\n                type=\"submit\"\n                disabled={formik.isSubmitting || !formik.isValid}>\n                { formik.isSubmitting ? (\n                  <CircularProgress size={30} color=\"inherit\" />\n                ) : 'Recuperar senha' }\n              </Button>\n            </Box>\n          </Grid>\n        </Grid>\n      </form>\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  copy: {\n    marginBottom: theme.spacing(3),\n    color: theme.palette.grey[600]\n  }\n}))\n\nexport { useStyles }\n","import React, { useState } from 'react'\n\n// FRAMEWORK IMPORTS\nimport {\n  Dialog,\n  DialogContent,\n  DialogContentText,\n  DialogTitle,\n  Box,\n  IconButton,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close';\n\n// Forms\nimport FormForgotPassword from 'app/components/forms/Forgot'\n\n// Lotties animations\nimport Lottie from 'react-lottie';\nimport animationData from 'lotties/mail-sent'\n\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes  = useStyles()\n  const {open,toggleDialog} = props;\n\n  const [sent,setSent] = useState(false);\n  const [email,setEmail] = useState('');\n\n  const handleSuccess = (email) => {\n    setSent(true);\n    setEmail(email)\n  }\n\n  const lottieOptions = {\n    loop: true,\n    autoplay: true,\n    animationData: animationData,\n    rendererSettings: {\n      preserveAspectRatio: \"xMidYMid slice\"\n    }\n  }\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>\n        <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n          <IconButton aria-label=\"close\" className={classes.closeButton} onClick={toggleDialog(false)}>\n            <CloseIcon />\n          </IconButton>\n        </Box>\n        {!sent && \"Recupere sua senha!\"}\n      </DialogTitle>\n      {sent ? (\n        <DialogContent>\n          <Box component=\"div\" display=\"flex\" justifyContent=\"center\" mb={2}>\n            <Lottie\n              style={{\n                maxWidth: 200,\n                padding: 0,\n                margin: 0,\n              }}\n              options={lottieOptions}\n            />\n          </Box>\n          <DialogContentText classes={{root:classes.copy}}>\n            <Box mb={2}>Dentro de alguns instantes você receberá no e-mail <strong>{email}</strong> as instruções para resetar sua senha!</Box>\n            <small>Ah ... não esqueça de verificar também sua caixa de spam ;)</small>\n          </DialogContentText>\n        </DialogContent>\n      ) : (\n        <DialogContent>\n          <DialogContentText classes={{root:classes.copy}}>\n            Informe o e-mail de cadastro ou o seu CPF e enviaremos as instruções para você recuperar sua senha :)\n          </DialogContentText>\n          <FormForgotPassword handleSuccess={handleSuccess} />\n        </DialogContent>\n      )}\n    </Dialog>\n  )\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  forgotPasswordButton: {\n    cursor: 'pointer',\n    color: theme.palette.grey[600],\n    fontWeight: 700,\n    fontSize: theme.typography.pxToRem(13)\n  },\n  socialContainer: {\n    display: 'flex',\n    justifyContent: 'center',\n    [theme.breakpoints.only('xs')]: {\n      display: 'flex',\n      flexDirection: 'column',\n    },\n  },\n  socialButton: {\n    color: \"#FFF\",\n    textAlign: 'center',\n    [theme.breakpoints.only('xs')]: {\n      margin: theme.spacing(1),\n    }\n  },\n  socialButtonFacebook: {\n    background: '#3679FA',\n    '&:hover': {\n      background: '#279AE3',\n    },\n  },\n  socialButtonGoogle: {\n    background: '#DD4B38',\n    '&:hover': {\n      background: '#F53145',\n    },\n  },\n  socialButtonApple: {\n    background: '#000',\n    '&:hover': {\n      background: '#333',\n    },\n  },\n  loginFieldset: {\n    marginBottom: theme.spacing(2),\n    color: theme.palette.grey[600],\n    fontWeight: 700,\n    fontSize: theme.typography.pxToRem(14)\n  },\n\n}))\n\nexport { useStyles }\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {\n  Box,\n  Grid,\n  Button,\n  TextField,\n  CircularProgress,\n  Link,\n  Typography,\n} from \"@material-ui/core\";\n\nimport FacebookIcon from \"@material-ui/icons/Facebook\";\n//import AppleIcon from '@material-ui/icons/Apple';\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\n\nimport FacebookLogin from \"react-facebook-login/dist/facebook-login-render-props\";\nimport GoogleLogin from \"react-google-login\";\n//import AppleLogin from 'react-apple-login'\n\nimport DialogForgotPassword from \"app/components/Modals/Auth/ForgotPassword\";\n\nimport { useAuth } from \"app/contexts/AuthContext\";\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\nimport { signInValidator } from \"app/validators/auth\";\n\nimport { useStyles } from \"./styles\";\nimport { useFormik } from \"formik\";\n\nexport default () => {\n  const history = useHistory();\n\n  const classes = useStyles();\n  const { signIn, socialSignIn } = useAuth();\n  const { setSnackValues } = useSnackbar();\n\n  const [socialLoading, setSocialLoading] = useState(false);\n  const [signInGoogle, setSignInGoogle] = useState(false);\n  const [signInFacebook, setSignInFacebook] = useState(false);\n\n  const [openForgotPasswordDialog, setOpenForgotPasswordDialog] =\n    useState(false);\n  const handleForgotPasswordDialog = (open) => (event) => {\n    setOpenForgotPasswordDialog(open);\n  };\n\n  const formik = useFormik({\n    initialValues: {\n      username: \"\",\n      password: \"\",\n    },\n    validationSchema: signInValidator,\n    enableReinitialize: true,\n    validateOnMount: true,\n    onSubmit: async (values, actions) => {\n      try {\n        actions.setSubmitting(true);\n        const user = await signIn(values);\n        localStorage.removeItem('@Kultivi:login_attempts');\n        // nao usar \"history push\" neste componente devido a renderização dos banners ads freestar\n        if(user.is_confirmed)\n          window.location.href = \"/dashboard\";\n        else\n          window.location.href = \"/confirm-account\";\n      } catch (err) {\n        const { response } = err;\n        if (response && response.data) {\n          const {\n            data: { errors, message },\n          } = response;\n          const setErrors = {};\n          // if (Array.isArray(errors)) {\n          //   for (let index = 0; index < errors.length; index++) {\n          //     const error = errors[index];\n          //     setErrors[`${error.field}`] = error.message;\n          //   }\n          // } else\n\n            let feedback = '';\n            let feedbackField = '';\n            if(message === 'EXCEPTION:AUTHENTICATION_FAILURE') {\n              let loginAttempts = { attempts: 0 }\n              try {\n                loginAttempts = JSON.parse(localStorage.getItem('@Kultivi:login_attempts'));\n              } catch (error) {\n                //\n              }\n\n              const attempts = loginAttempts?.attempts + 1;\n              localStorage.setItem('@Kultivi:login_attempts', JSON.stringify({attempts}))\n              feedbackField = 'Usuário/senha incorreto(s)'\n              if(attempts >= 3) {\n                feedback = 'Clique em esqueci minha senha para resetar sua senha';\n              }\n            }\n            else if(message === 'EXCEPTION:ACCOUNT_TEMPORARILY_BLOCKED') {\n              feedbackField = 'Sua conta foi bloqueada temporariamente';\n              feedback = 'Resete sua senha ou tente novamente em 5 minutos';\n            }\n            else if(message === 'EXCEPTION:ACCOUNT_BLOCKED') {\n              feedbackField = 'Sua conta está bloqueada'\n              feedback = 'Se isso foi um erro, contate: contato@kultivi.com';\n            } else {\n              feedbackField = errors.at(0) || message\n              feedback = 'Falha ao acessar conta. Tente novamente';\n            }\n            setErrors[`username`] = feedbackField;\n          actions.setErrors(setErrors);\n          setSnackValues({\n            message: `Ops! ${feedback}`,\n            open: true,\n          });\n        }\n\n        formik.setSubmitting(false);\n      }\n    },\n  });\n\n  const loginFacebook = async (response) => {\n    if (response.error) {\n      setSnackValues({\n        message:\n          \"Ops! Não é possível entrar com Facebook. Tente novamente mais tarde.\",\n        open: true,\n      });\n    } else {\n      try {\n        setSignInFacebook(true);\n        setSocialLoading(true);\n        const payload = {\n          provider: \"facebook\",\n          _token: response.accessToken,\n        };\n        const user = await socialSignIn(payload);\n        if(user.is_confirmed)\n          window.location.href = \"/dashboard\";\n        else\n          window.location.href = \"/confirm-account\";\n      } catch (error) {\n        setSignInFacebook(false);\n        setSocialLoading(false);\n        const { response } = error;\n        if (response && response.data) {\n          const {\n            data: { errors },\n          } = response;\n          setSnackValues({\n            message: errors,\n            open: true,\n          });\n        } else {\n          setSnackValues({\n            message: \"Ops! Algum erro ocorreu. Tente novamente.\",\n            open: true,\n          });\n        }\n      }\n    }\n  };\n\n  const loginGoogle = async (response) => {\n    if (response.error) {\n      console.error(response.error);\n      setSnackValues({\n        message:\n          \"Ops! Não é possível entrar com Google. Tente novamente mais tarde.\",\n        open: true,\n      });\n    } else {\n      try {\n        setSignInGoogle(true);\n        setSocialLoading(true);\n        const payload = {\n          provider: \"google\",\n          _token: response.tokenId,\n        };\n        const user = await socialSignIn(payload);\n        if(user.is_confirmed)\n          window.location.href = \"/dashboard\";\n        else\n          window.location.href = \"/confirm-account\";\n      } catch (error) {\n        console.log('error', error)\n        setSignInGoogle(false);\n        setSocialLoading(false);\n        const { response } = error;\n        if (response && response.data) {\n          const {\n            data: { errors },\n          } = response;\n          setSnackValues({\n            message: errors,\n            open: true,\n          });\n        } else {\n          setSnackValues({\n            message: \"Ops! Algum erro ocorreu. Tente novamente.\",\n            open: true,\n          });\n        }\n      }\n    }\n  };\n\n  return (\n    <>\n      <Box component=\"div\" mb={5}>\n        <form id=\"formSignIn\" name=\"formSignIn\" onSubmit={formik.handleSubmit}>\n          <Grid container spacing={2}>\n            <Grid item xs={12}>\n              <TextField\n                label=\"E-mail ou CPF\"\n                id=\"username\"\n                name=\"username\"\n                variant=\"outlined\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.username}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={\n                  formik.touched.username && Boolean(formik.errors.username)\n                }\n                helperText={formik.touched.username && formik.errors.username}\n              />\n            </Grid>\n            <Grid item xs={12}>\n              <TextField\n                label=\"Sua senha\"\n                id=\"password\"\n                name=\"password\"\n                variant=\"outlined\"\n                type=\"password\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.password}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={\n                  formik.touched.password && Boolean(formik.errors.password)\n                }\n                helperText={formik.touched.password && formik.errors.password}\n              />\n            </Grid>\n            <Grid item xs={12}>\n              <Box\n                component=\"div\"\n                display=\"flex\"\n                justifyContent=\"flex-end\"\n                mb={2}\n              >\n                <Link\n                  onClick={handleForgotPasswordDialog(true)}\n                  variant=\"body2\"\n                  className={classes.forgotPasswordButton}\n                >\n                  ESQUECEU SUA SENHA?\n                </Link>\n              </Box>\n            </Grid>\n            <Grid item xs={12}>\n              <Box component=\"div\" display=\"flex\" alignItems=\"flex-start\">\n                <Button\n                  id=\"loginButton\"\n                  color=\"primary\"\n                  variant=\"contained\"\n                  type=\"submit\"\n                  disabled={\n                    formik.isSubmitting || !formik.isValid || socialLoading\n                  }\n                >\n                  {formik.isSubmitting ? (\n                    <CircularProgress size={30} color=\"inherit\" />\n                  ) : (\n                    <>\n                      <Box mr={3}>ENTRAR</Box>\n                      <ArrowForwardIcon />\n                    </>\n                  )}\n                </Button>\n              </Box>\n            </Grid>\n          </Grid>\n        </form>\n      </Box>\n      <Box\n        component=\"div\"\n        justifyContent=\"center\"\n        flexDirection=\"column\"\n        className={classes.socialContainer}\n        textAlign=\"center\"\n        width=\"100%\"\n        mx=\"auto\"\n        mb={5}\n      >\n        <Typography className={classes.loginFieldset} component=\"h2\">\n          Acesse com\n        </Typography>\n        <Grid container spacing={2} justify=\"center\">\n          <Grid item xs={12} sm={4} md={4}>\n            <FacebookLogin\n              textButton=\"Facebook\"\n              appId={process.env.REACT_APP_OAUTH_FACEBOOK_KEY}\n              fields=\"name,email,picture\"\n              callback={loginFacebook}\n              render={(renderProps) => (\n                <Button\n                  id=\"loginFacebookAccount\"\n                  variant=\"contained\"\n                  disabled={renderProps.isDisabled || socialLoading}\n                  fullWidth\n                  className={[\n                    classes.socialButtonFacebook,\n                    classes.socialButton,\n                  ].join(\" \")}\n                  onClick={renderProps.onClick}\n                >\n                  {signInFacebook ? (\n                    <CircularProgress size={24} color=\"inherit\" />\n                  ) : (\n                    <FacebookIcon />\n                  )}\n                </Button>\n              )}\n            />\n          </Grid>\n          <Grid item xs={12} sm={4} md={4}>\n            <GoogleLogin\n              clientId={process.env.REACT_APP_OAUTH_GOOGLE_KEY}\n              buttonText=\"Google\"\n              tag=\"button\"\n              icon={false}\n              className={classes.socialButton}\n              onSuccess={loginGoogle}\n              onFailure={loginGoogle}\n              isSignedIn={false}\n              render={(renderProps) => (\n                <Button\n                  id=\"loginGoogleAccount\"\n                  variant=\"contained\"\n                  disabled={renderProps.disabled || socialLoading}\n                  fullWidth\n                  className={[\n                    classes.socialButtonGoogle,\n                    classes.socialButton,\n                  ].join(\" \")}\n                  onClick={renderProps.onClick}\n                >\n                  {signInGoogle ? (\n                    <CircularProgress size={24} color=\"inherit\" />\n                  ) : (\n                    \"Google\"\n                  )}\n                </Button>\n              )}\n            />\n          </Grid>\n          {/*<Grid item xs={12} sm={4} md={3}>\n            <AppleLogin\n              clientId={process.env.REACT_APP_OAUTH_APPLE_KEY}\n              redirectURI=\"https://redirectUrl.com\"\n              render={renderProps => (\n                <Button variant=\"contained\" disabled={renderProps.disabled} fullWidth className={[classes.socialButtonApple, classes.socialButton].join(\" \")} onClick={renderProps.onClick}><AppleIcon /></Button>\n              )}\n            />\n          </Grid>*/}\n        </Grid>\n      </Box>\n      <DialogForgotPassword\n        open={openForgotPasswordDialog}\n        toggleDialog={handleForgotPasswordDialog}\n      />\n    </>\n  );\n};\n","import styled, { keyframes } from 'styled-components'\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nimport BackgroundImg from 'assets/images/signin_bg.png';\n\nconst useStyles = makeStyles((theme) => ({\n  leftContent: {\n    backgroundColor: \"#FFF\",\n    [theme.breakpoints.down('md')]: {\n      padding: theme.spacing(4)\n    }\n  },\n  formArea: {\n    maxWidth: \"70%\",\n    minHeight: \"100vh\",\n    paddingTop: theme.spacing(4),\n    [theme.breakpoints.down('md')]: {\n      maxWidth: \"80%\",\n      paddingTop: theme.spacing(3),\n    },\n    [theme.breakpoints.down('sm')]: {\n      maxWidth: \"100%\",\n      paddingTop: theme.spacing(1),\n    },\n  },\n  copySignUp: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 400\n  },\n  ctaSignUp: {\n    fontWeight: 700,\n    cursor: 'pointer',\n  },\n  rightContent: {\n    background: `url(${BackgroundImg})`,\n    backgroundRepeat: \"no-repeat\",\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center\",\n    backgroundColor: theme.palette.primary['main'],\n    [theme.breakpoints.down('sm')]: {\n      display: 'none',\n    },\n  },\n  mainTitle: {\n    fontSize: theme.typography.pxToRem(24),\n    fontWeight: 700\n  },\n  logoContainer: {\n    [theme.breakpoints.down('xs')]: {\n      textAlign: \"center\",\n      marginBottom: theme.spacing(2)\n    },\n  },\n  logo: {\n    width: 130,\n    maxWidth: 130,\n    [theme.breakpoints.only('xs')]: {\n        width: \"100%\",\n        maxWidth: 154\n    },\n  },\n  welcomeText: {\n    fontSize: theme.typography.pxToRem(18),\n    marginBottom: theme.spacing(1),\n  },\n  policy: {\n    fontSize: theme.typography.pxToRem(12),\n    fontWeight: 600\n  }\n}))\n\nexport { useStyles }\n\n// Use Styled Components\nconst apearFromLeft = keyframes`\n  from {\n    opacity: 0;\n    transform: translateX(-50px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n`;\nexport const AnimationContainer = styled.div `\n  animation: ${apearFromLeft} 1s\n`;\n","import React, {useEffect} from \"react\";\nimport { useHistory } from \"react-router-dom\";\n// import { pubfig } from 'scripts/freestar'\n\nimport {\n  Box,\n  CssBaseline,\n  Link,\n  Typography,\n  Grid,\n} from \"@material-ui/core\";\n\nimport LoginForm from \"app/components/forms/Login\";\n\n// Assets import\nimport Logo from \"assets/images/kultivi.png\";\n\n// Styles files\nimport { useStyles, AnimationContainer } from \"./styles\";\n\nimport Statistics from 'app/components/cards/Statistics'\n\nexport default function SignIn(props) {\n  const classes = useStyles();\n  const history = useHistory();\n\n  // useEffect(() => {\n  //   const freestar = pubfig();\n  //   document.getElementsByTagName(\"head\")[0].appendChild(freestar);\n  //   return () => {\n  //     document.getElementsByTagName(\"head\")[0].removeChild(freestar);\n  //   }\n  // })\n\n  const goToSignUp = () => {\n    history.push(\"/signup\");\n  };\n\n  function Header() {\n    return (\n      <Box mb={4}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"row\"\n          justifyContent=\"space-around\"\n          flexWrap=\"wrap\"\n          alignItems=\"center\"\n          width=\"100%\"\n          mb={6}\n        >\n          <Box component=\"div\" flexGrow={1} className={classes.logoContainer}>\n            <img src={Logo} className={classes.logo} alt=\"Logo Kulitiv\" />\n          </Box>\n          <Box component=\"div\">\n            <Box component=\"span\" mr={1} className={classes.copySignUp}>\n              Não tem conta?\n            </Box>\n            <Link className={classes.ctaSignUp} onClick={() => goToSignUp()}>\n              CADASTRE-SE AGORA!\n            </Link>\n          </Box>\n        </Box>\n        <Typography component=\"h2\" variant=\"h2\" className={classes.welcomeText}>\n          Bem-vindo(a) a plataforma da Kultivi.\n        </Typography>\n        <Typography component=\"h1\" variant=\"h1\" className={classes.mainTitle}>\n          Entre para estudar!\n        </Typography>\n      </Box>\n    );\n  }\n\n  return (\n    <React.Fragment>\n      <Grid container>\n        <Grid item xs={12} md={6} className={classes.leftContent}>\n          <CssBaseline>\n            <AnimationContainer>\n              <Box\n                component=\"div\"\n                display=\"flex\"\n                flexDirection=\"column\"\n                mx=\"auto\"\n                className={classes.formArea}\n              >\n                <Header />\n                <Box\n                  component=\"div\"\n                  className={classes.loginFormContainer}\n                  textAlign=\"center\"\n                  width=\"100%\"\n                  mx=\"auto\"\n                  mb={6}\n                >\n                  <LoginForm />\n                </Box>\n                <Box\n                  component=\"div\"\n                  display=\"flex\"\n                  mt=\"auto\"\n                  flexDirection=\"row\"\n                  justifyContent={{ xs: \"center\", lg: \"start\" }}\n                  mb={2}\n                >\n                  <Typography className={classes.policy}>\n                    Conheça nossos{\" \"}\n                    <Link\n                      href=\"https://kultivi.com/politica-de-privacidade\"\n                      target=\"_blank\"\n                    >\n                      Termos de Uso & Política de Privacidade\n                    </Link>\n                  </Typography>\n                </Box>\n              </Box>\n            </AnimationContainer>\n          </CssBaseline>\n        </Grid>\n        <Grid item xs={12} md={6} className={classes.rightContent}>\n          <Statistics />\n        </Grid>\n      </Grid>\n    </React.Fragment>\n  );\n}\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  loginFieldset: {\n    marginBottom: theme.spacing(2),\n    color: theme.palette.grey[600],\n    fontWeight: 700,\n    fontSize: theme.typography.pxToRem(14)\n  },\n  socialContainer: {\n    display: 'flex',\n    justifyContent: 'center',\n    [theme.breakpoints.only('xs')]: {\n      display: 'flex',\n      flexDirection: 'column',\n    },\n  },\n  socialButton: {\n    color: \"#FFF\",\n    textAlign: 'center',\n    [theme.breakpoints.only('xs')]: {\n      margin: theme.spacing(1),\n    }\n  },\n  socialButtonFacebook: {\n    background: '#3679FA',\n    '&:hover': {\n      background: '#279AE3',\n    },\n  },\n  socialButtonGoogle: {\n    background: '#DD4B38',\n    '&:hover': {\n      background: '#F53145',\n    },\n  },\n  forgotPasswordButton: {\n    marginLeft: 10,\n    cursor: 'pointer'\n  },\n  policy: {\n    fontSize: theme.typography.pxToRem(13),\n    fontWeight: 600\n  }\n}))\n\nexport { useStyles }\n","import React, {useState} from 'react'\nimport { useHistory } from 'react-router-dom'\nimport ReCAPTCHA from 'react-google-recaptcha'\n\nimport {\n  Box,\n  Grid,\n  Button,\n  TextField,\n  CircularProgress,\n  Link,\n  Typography,\n  FormControlLabel,\n  Switch,\n  FormHelperText\n} from '@material-ui/core'\n\nimport InputMask from \"react-input-mask\"\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward';\n\nimport { useAuth } from 'app/contexts/AuthContext'\nimport { useSnackbar } from 'app/contexts/SnackbarContext'\n\nimport { signUpValidator } from 'app/validators/auth'\nimport { CPF } from 'app/validators/cpf'\n\nimport { useFormik } from 'formik'\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const { signUp, signIn } = useAuth()\n  const { setSnackValues } = useSnackbar()\n\n  function onReCaptchaChange(value) {\n    setRecaptchaToken(value)\n  }\n\n  const [socialLoading,setSocialLoading] = useState(false);\n  const [documentError,setDocumentError] = useState(false);\n  const [recaptchaToken,setRecaptchaToken] = useState(false);\n\n  const formik = useFormik({\n    initialValues: {\n      fullname: '',\n      email: '',\n      password: '',\n      document: '',\n      isForeign: false,\n    },\n    validationSchema: signUpValidator,\n    enableReinitialize: true,\n    validateOnMount: true,\n    onSubmit: async (values, actions) => {\n\n      try {\n\n        if(!recaptchaToken) {\n          setSnackValues({\n            message: 'Confirme que você não é um robô 🧐',\n            open: true,\n          });\n          return;\n        }\n\n        actions.setSubmitting(true)\n        await signUp({...values, indicatedBy: localStorage.getItem('@Kultivi:ref'), captcha: recaptchaToken})\n        setSnackValues({ message: \"Cadastro realizado com sucesso! Aguarde enquanto redirecionamos seu acesso.\", open: true })\n        const user = await signIn({\n          username: values.email,\n          password: values.password\n        });\n        if(user.is_confirmed)\n          window.location.href = \"/dashboard\";\n        else\n          window.location.href = \"/confirm-account\";\n      } catch (err) {\n        const { response } = err;\n        if (response && response.data) {\n          const {\n            data: { message, errors },\n          } = response;\n          // if (Array.isArray(errors)) {\n          //   for (let index = 0; index < errors.length; index++) {\n          //     const error = errors[index];\n          //     setErrors[`${error.field}`] = error.message;\n          //   }\n          // } else\n          //   setErrors[`username`] = errors;\n          // actions.setErrors(setErrors);\n          let feedback = '';\n          if(message === 'EXCEPTION:ACCOUNT_ALREADY_EXISTS') {\n            feedback = 'Email/CPF já cadastrado'\n          }\n          else if(message === 'EXCEPTION:AUTHENTICATION_CAPTCHA_INVALID') {\n            feedback = 'Captcha não é válido'\n          } else {\n            feedback = errors.at(0)\n          }\n\n          setSnackValues({\n            message: feedback || 'Falha ao criar nova conta!',\n            open: true,\n          });\n        } else {\n          setSnackValues({ message: \"Ops! Falha ao criar seu cadastro. Tente novamente.\", open: true });\n        }\n        actions.setSubmitting(false)\n\n        // if (err.response?.data) {\n        //   const errors = err.response.data\n        //   for (let index = 0; index < errors.length; index++) {\n        //     const error = errors[index];\n        //     var setErr = {};\n        //     setErr[`${error.field}`] = error.message;\n        //     actions.setErrors(setErr)\n        //   }\n        // }\n      }\n\n    }\n  })\n\n  const handleBlurDocument = (e) => {\n    const target = e.target\n    formik.handleChange(e)\n    if(!new CPF(target.value).isValid())\n      setDocumentError(true)\n    else\n      setDocumentError(false)\n  }\n\n  return (\n    <>\n      <Box component=\"div\" mb={5}>\n        <form id=\"formSignUp\" name=\"formSignUp\" onSubmit={formik.handleSubmit}>\n          <Grid container spacing={2}>\n            <Grid item xs={12}>\n              <TextField\n                label=\"Nome completo\"\n                id=\"fullname\"\n                name=\"fullname\"\n                variant=\"outlined\"\n                type=\"text\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.fullname}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={formik.touched.fullname && Boolean(formik.errors.fullname)}\n                helperText={formik.touched.fullname && formik.errors.fullname}\n              />\n            </Grid>\n            <Grid item xs={12} lg={7}>\n              <TextField\n                label=\"Seu melhor e-mail\"\n                id=\"email\"\n                name=\"email\"\n                variant=\"outlined\"\n                type=\"email\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.email}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={formik.touched.email && Boolean(formik.errors.email)}\n                helperText=\"Será o seu usuário (enviaremos um código de validação)\"\n              />\n            </Grid>\n            <Grid item xs={12} lg={5}>\n              <TextField\n                label=\"Senha\"\n                id=\"password\"\n                name=\"password\"\n                variant=\"outlined\"\n                type=\"password\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.password}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                error={formik.touched.password && Boolean(formik.errors.password)}\n                helperText={formik.touched.password && formik.errors.password}\n              />\n            </Grid>\n            <Grid item xs={12}>\n              <Box display=\"flex\" justifyContent=\"flex-end\">\n                <FormControlLabel\n                  control={\n                    <Switch\n                      value={formik.values.isForeign}\n                      checked={formik.values.isForeign}\n                      onChange={formik.handleChange}\n                      name=\"isForeign\"\n                    />\n                  }\n                  label=\"Sou Estrangeiro(a)\"\n                  labelPlacement=\"start\"\n                />\n              </Box>\n              <Box hidden={formik.values.isForeign}>\n              <InputMask\n                mask=\"999.999.999-99\"\n                value={formik.values.document}\n                onChange={formik.handleChange}\n                onBlur={handleBlurDocument}\n                onFocus={handleBlurDocument}\n                required={!formik.values.isForeign}\n              >\n                {() => <TextField\n                  id=\"document\"\n                  name=\"document\"\n                  label=\"CPF\"\n                  variant=\"outlined\"\n                  error={formik.touched.document && Boolean(formik.errors.document)}\n                  required={!formik.values.isForeign}\n                  fullWidth={true}\n                ></TextField>\n                }\n              </InputMask>\n              {documentError && <FormHelperText error={documentError}>Documento inválido</FormHelperText>}\n              <FormHelperText>O CPF é essencial para garantir a autenticidade dos usuários, validar certificados e evitar duplicidade de cadastro. Fique tranquilo(a), nossa missão é transformar a educação à distância em uma experiência segura e incrível para todos! 🎓😄</FormHelperText>\n              </Box>\n            </Grid>\n            <Grid item xs={12}>\n              <Box component=\"div\" display=\"flex\" justifyContent=\"flex-start\" mb={2}>\n                <Typography className={classes.policy}>Ao me cadastrar, concordo com os <Link href=\"https://kultivi.com/politica-de-privacidade\" target=\"_blank\">Termos de uso e Política de privacidade</Link></Typography>\n              </Box>\n            </Grid>\n            <Grid item xs={12}>\n              <Box display='flex' justifyContent=\"center\" mb={3}>\n                <ReCAPTCHA onChange={onReCaptchaChange} sitekey={process.env.REACT_APP_GOOGLE_RECAPTCHA} />\n              </Box>\n            </Grid>\n            <Grid item xs={12}>\n              <Box component=\"div\" display=\"flex\" alignItems=\"flex-start\">\n                <Button\n                  id=\"signupButton\"\n                  color=\"primary\"\n                  variant=\"contained\"\n                  type=\"submit\"\n                  disabled={\n                    formik.isSubmitting ||\n                    !formik.isValid ||\n                    socialLoading ||\n                    (documentError && !formik.values.isForeign) ||\n                    !recaptchaToken\n                  }>\n                  {formik.isSubmitting ? (\n                    <CircularProgress size={30} color=\"inherit\" />\n                  ) : (\n                    <>\n                      <Box mr={3}>CRIAR CONTA</Box>\n                      <ArrowForwardIcon />\n                    </>\n                  )}\n                </Button>\n              </Box>\n            </Grid>\n          </Grid>\n        </form>\n      </Box>\n    </>\n  )\n}\n","import styled, { keyframes } from 'styled-components'\n\nimport BackgroundImg from 'assets/images/signup_bg.png';\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  leftContent: {\n    backgroundColor: \"#FFF\",\n    [theme.breakpoints.down('md')]: {\n      padding: theme.spacing(4)\n    }\n  },\n  formArea: {\n    maxWidth: \"70%\",\n    minHeight: \"100vh\",\n    paddingTop: theme.spacing(4),\n    [theme.breakpoints.down('md')]: {\n      maxWidth: \"80%\",\n      paddingTop: theme.spacing(3),\n    },\n    [theme.breakpoints.down('sm')]: {\n      maxWidth: \"100%\",\n      paddingTop: theme.spacing(1),\n    },\n  },\n  copySignUp: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 400\n  },\n  ctaSignIn: {\n    fontWeight: 700,\n    cursor:'pointer'\n  },\n  rightContent: {\n    backgroundColor: theme.palette.secondary['dark'],\n    background: `url(${BackgroundImg})`,\n    backgroundRepeat: \"no-repeat\",\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center\",\n    [theme.breakpoints.down('sm')]: {\n      display: 'none',\n    },\n  },\n  mainTitle: {\n    fontSize: theme.typography.pxToRem(20),\n    fontWeight: 700\n  },\n  logoContainer: {\n    [theme.breakpoints.down('xs')]: {\n      textAlign: \"center\",\n      marginBottom: theme.spacing(2)\n    },\n  },\n  logo: {\n    width: 130,\n    maxWidth: 130,\n    [theme.breakpoints.only('xs')]: {\n        width: \"100%\",\n        maxWidth: 154\n    },\n  }\n}))\n\nexport { useStyles }\n\n// Use Styled Components\nconst apearFromLeft = keyframes`\n  from {\n    opacity: 0;\n    transform: translateX(-50px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n`;\nexport const AnimationContainer = styled.div `\n  animation: ${apearFromLeft} 1s\n`;\n","import React, {useEffect} from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\n// import { pubfig } from 'scripts/freestar'\n\nimport {\n  Box,\n  CssBaseline,\n  Link,\n  Typography,\n  Snackbar,\n  IconButton,\n  Grid,\n} from \"@material-ui/core\";\n\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nimport SignupForm from \"app/components/forms/Signup\";\n\n// Assets import\nimport Logo from \"assets/images/kultivi.png\";\n\n// Styles files\nimport { useStyles, AnimationContainer } from \"./styles\";\nimport Statistics from 'app/components/cards/Statistics'\n\n\nexport default (props) => {\n  const classes = useStyles();\n  const history = useHistory();\n\n  const [snackValues, setSnackValues] = React.useState({\n    message: \"\",\n    open: false,\n  });\n\n  // useEffect(() => {\n  //   const freestar = pubfig();\n  //   document.getElementsByTagName(\"head\")[0].appendChild(freestar);\n  //   return () => {\n  //     document.getElementsByTagName(\"head\")[0].removeChild(freestar);\n  //   }\n\n  // });\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setSnackValues({ open: false });\n  };\n\n  const goToSignIn = () => {\n    history.push(\"/\");\n  };\n\n  function Header() {\n    return (\n      <Box mb={4}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"row\"\n          justifyContent=\"space-around\"\n          flexWrap=\"wrap\"\n          alignItems=\"center\"\n          width=\"100%\"\n          mb={6}\n        >\n          <Box component=\"div\" flexGrow={1} className={classes.logoContainer}>\n            <img src={Logo} className={classes.logo} alt=\"Logo Kulitiv\" />\n          </Box>\n          <Box component=\"div\">\n            <Box component=\"span\" mr={1} className={classes.copySignUp}>\n              Já tem conta?\n            </Box>\n            <Link\n              component=\"a\"\n              className={classes.ctaSignIn}\n              onClick={() => goToSignIn()}\n            >\n              CLIQUE AQUI!\n            </Link>\n          </Box>\n        </Box>\n        <Typography component=\"h1\" variant=\"h1\" className={classes.mainTitle}>\n          Cadastre-se e comece a estudar gratuitamente!\n        </Typography>\n      </Box>\n    );\n  }\n\n  return (\n    <React.Fragment>\n      <Grid container>\n        <Grid item xs={12} md={6} className={classes.leftContent}>\n          <CssBaseline>\n            <AnimationContainer>\n              <Box\n                component=\"div\"\n                display=\"flex\"\n                flexDirection=\"column\"\n                mx=\"auto\"\n                className={classes.formArea}\n              >\n                <Header />\n                <Box\n                  component=\"div\"\n                  className={classes.loginFormContainer}\n                  textAlign=\"center\"\n                  width=\"100%\"\n                  mx=\"auto\"\n                  mb={6}\n                >\n                  <SignupForm />\n                </Box>\n              </Box>\n            </AnimationContainer>\n          </CssBaseline>\n        </Grid>\n        <Grid item xs={12} md={6} className={classes.rightContent}>\n          <Statistics />\n        </Grid>\n      </Grid>\n      <Snackbar\n        anchorOrigin={{\n          vertical: \"bottom\",\n          horizontal: \"center\",\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton\n              size=\"small\"\n              aria-label=\"close\"\n              color=\"inherit\"\n              onClick={handleCloseSnack}\n            >\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  );\n};\n","import styled, { keyframes } from 'styled-components'\n\nimport BackgroundImg from 'assets/images/signup_bg.png';\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  leftContent: {\n    backgroundColor: \"#FFF\",\n    [theme.breakpoints.down('md')]: {\n      padding: theme.spacing(4)\n    }\n  },\n  formArea: {\n    maxWidth: \"70%\",\n    minHeight: \"100vh\",\n    paddingTop: theme.spacing(10),\n    [theme.breakpoints.down('md')]: {\n      maxWidth: \"80%\",\n      paddingTop: theme.spacing(6),\n    },\n    [theme.breakpoints.down('sm')]: {\n      maxWidth: \"100%\",\n    },\n  },\n  copySignUp: {\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: 400\n  },\n  ctaSignUp: {\n    fontWeight: 700\n  },\n  rightContent: {\n    backgroundColor: theme.palette.secondary['dark'],\n    background: `url(${BackgroundImg})`,\n    backgroundRepeat: \"no-repeat\",\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center\",\n    [theme.breakpoints.down('sm')]: {\n      display: 'none',\n    },\n  },\n  mainTitle: {\n    fontSize: theme.typography.pxToRem(24),\n    fontWeight: 700\n  },\n  logoContainer: {\n    [theme.breakpoints.down('xs')]: {\n      textAlign: \"center\",\n      marginBottom: theme.spacing(2)\n    },\n  },\n  logo: {\n    width: 130,\n    maxWidth: 130,\n    [theme.breakpoints.only('xs')]: {\n      width: \"100%\",\n      maxWidth: 154\n    },\n  }\n}))\n\nexport { useStyles }\n\n// Use Styled Components\nconst apearFromLeft = keyframes`\n  from {\n    opacity: 0;\n    transform: translateX(-50px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n`;\nexport const AnimationContainer = styled.div`\n  animation: ${apearFromLeft} 1s\n`;\n","import React from 'react'\n\nimport { useFormik } from 'formik'\nimport { useHistory } from 'react-router-dom'\n// Ui Files\nimport {\n  Box,\n  Grid,\n  IconButton,\n  Button,\n  InputLabel,\n  InputAdornment,\n  FormControl,\n  FormHelperText,\n  CircularProgress,\n  Snackbar,\n  OutlinedInput,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close'\nimport Visibility from '@material-ui/icons/Visibility'\nimport VisibilityOff from '@material-ui/icons/VisibilityOff'\n\nimport accountApi from 'app/services/account-api';\n\nimport { resetPasswordValidator } from 'app/validators/auth'\n\nconst ResetPassword = (props) => {\n\n  const { token } = props\n\n  const history = useHistory()\n  const [showPassword, setShowPassword] = React.useState(false)\n  const [snackValues, setSnackValues] = React.useState({\n    message: '',\n    open: false,\n  })\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return;\n    }\n    setSnackValues({ open: false });\n  }\n  const handleClickShowPassword = () => {\n    setShowPassword(!showPassword)\n  };\n\n  const handleMouseDownPassword = (event) => {\n    event.preventDefault();\n  }\n\n  const formik = useFormik({\n    initialValues: {\n      password: '',\n      password_confirmation: '',\n    },\n    validationSchema: resetPasswordValidator,\n    enableReinitialize: true,\n    validateOnMount: true,\n    onSubmit: (values, actions) => {\n\n      actions.setSubmitting(true)\n\n      const data = {\n        token: token,\n        password: values.password,\n      }\n\n      accountApi.post('/reset-password', data)\n        .then((reponse) => {\n          setSnackValues({ message: \"Sua senha foi resetada com sucesso! Faça seu login para continuar\", open: true })\n          setTimeout(function () { history.push('/') }, 3000)\n        })\n        .catch((error) => {\n          setSnackValues({ message: \"Ops! Falha ao atualizar seus dados. Tente novamente.\", open: true })\n          const errors = error.response.data\n          for (let index = 0; index < errors.length; index++) {\n            const error = errors[index];\n            var setErr = {};\n            setErr[`${error.field}`] = error.message;\n            actions.setErrors(setErr)\n          }\n        }).finally(() => {\n          actions.setSubmitting(false);\n        })\n    },\n  });\n\n\n  return (\n    <>\n      <form name=\"form-password\" onSubmit={formik.handleSubmit}>\n        <Grid container spacing={2}>\n          <Grid item xs={12}>\n            <FormControl\n              variant=\"outlined\"\n              fullWidth\n              error={formik.touched.password && Boolean(formik.errors.password)}\n            >\n              <InputLabel htmlFor=\"password\">Nova senha</InputLabel>\n              <OutlinedInput\n                id=\"password\"\n                name=\"password\"\n                type={showPassword ? 'text' : 'password'}\n                value={formik.values.password}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                aria-describedby=\"error-password\"\n                endAdornment={\n                  <InputAdornment position=\"end\">\n                    <IconButton\n                      aria-label=\"toggle password visibility\"\n                      onClick={handleClickShowPassword}\n                      onMouseDown={handleMouseDownPassword}\n                    >\n                      {showPassword ? <Visibility /> : <VisibilityOff />}\n                    </IconButton>\n                  </InputAdornment>\n                }\n\n              />\n              <FormHelperText id=\"error-password\">{formik.touched.password && formik.errors.password}</FormHelperText>\n            </FormControl>\n          </Grid>\n          <Grid item xs={12}>\n            <FormControl\n              variant=\"outlined\"\n              fullWidth\n              error={formik.touched.password_confirmation && Boolean(formik.errors.password_confirmation)}\n            >\n              <InputLabel htmlFor=\"password_confirmation\">Confirmar nova senha</InputLabel>\n              <OutlinedInput\n                notched={true}\n                id=\"password_confirmation\"\n                name=\"password_confirmation\"\n                type={showPassword ? 'text' : 'password'}\n                value={formik.values.password_confirmation}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                aria-describedby=\"error-password_confirmation\"\n                endAdornment={\n                  <InputAdornment position=\"end\">\n                    <IconButton\n                      aria-label=\"toggle password visibility\"\n                      onClick={handleClickShowPassword}\n                      onMouseDown={handleMouseDownPassword}\n                    >\n                      {showPassword ? <Visibility /> : <VisibilityOff />}\n                    </IconButton>\n                  </InputAdornment>\n                }\n              />\n              <FormHelperText id=\"error-password_confirmation\">{formik.touched.password_confirmation && formik.errors.password_confirmation}</FormHelperText>\n            </FormControl>\n          </Grid>\n          <Grid item xs={12}>\n            <Box component=\"div\" textAlign=\"right\">\n              <Button\n                color=\"primary\"\n                variant=\"contained\"\n                type=\"submit\"\n                disabled={formik.isSubmitting || !formik.isValid}\n              >\n                {formik.isSubmitting ? (\n                  <CircularProgress size={30} color=\"inherit\" />\n                ) : 'Resetar Senha!'}</Button>\n            </Box>\n          </Grid>\n        </Grid>\n      </form>\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </>\n  )\n\n}\n\nexport default ResetPassword\n","import React from 'react'\nimport {\n  Box,\n  CssBaseline,\n  Typography,\n  Snackbar,\n  IconButton,\n  Grid,\n  CircularProgress\n} from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close';\nimport Logo from 'assets/images/kultivi.png'\nimport Lottie from 'react-lottie';\nimport animationData from 'lotties/student-computer'\nimport { useStyles, AnimationContainer } from './styles'\nimport ResetPassword from 'app/components/forms/ResetPassword'\nimport Statistics from 'app/components/cards/Statistics'\n\nexport default (props) => {\n  const { token } = props.computedMatch.params\n  const classes = useStyles()\n  const [isValidToken, setIsValidToken] = React.useState(true)\n  const [loading, setLoading] = React.useState(false)\n\n  const [snackValues, setSnackValues] = React.useState({\n    message: '',\n    open: false,\n  })\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return\n    }\n    setSnackValues({ open: false })\n  }\n\n  const lottieOptions = {\n    loop: true,\n    autoplay: true,\n    animationData: animationData,\n    rendererSettings: {\n      preserveAspectRatio: \"xMidYMid slice\"\n    }\n  }\n\n  function Loading() {\n    return (\n      <Box\n        component=\"div\"\n        display=\"flex\"\n        flexDirection=\"row\"\n        justifyContent=\"space-around\"\n        alignItems=\"center\"\n        style={{ height: '90vh' }}\n      >\n        <CircularProgress size={30} color=\"inherit\" />\n      </Box>\n    )\n  }\n\n  function Header() {\n    return (\n      <Box mb={4}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"row\"\n          justifyContent=\"space-around\"\n          flexWrap=\"wrap\"\n          alignItems=\"center\"\n          width=\"100%\"\n          mb={6}\n        >\n          <Box component=\"div\" flexGrow={1} className={classes.logoContainer}>\n            <img src={Logo} className={classes.logo} alt=\"Logo Kulitiv\" />\n          </Box>\n        </Box>\n        <Typography component=\"h1\" variant=\"h1\" className={classes.mainTitle}>Resetar senha!</Typography>\n      </Box>\n    )\n  }\n\n  function Form() {\n    return (\n      <Box\n        component=\"div\"\n        className={classes.loginFormContainer}\n        textAlign=\"center\"\n        width=\"100%\"\n        mx=\"auto\"\n        mb={6}\n      >\n        {isValidToken\n          ? <ResetPassword token={token} />\n          : <>\n            <Box component=\"div\" display=\"flex\" flexDirection=\"column\" alignItems=\"center\">\n              <Typography component=\"p\" variant=\"p\" className={classes.titleNoCertificates}>Token inválido</Typography>\n              <Lottie\n                style={{\n                  maxWidth: 400,\n                  padding: 0,\n                  margin: 0,\n                }}\n                options={lottieOptions}\n              />\n            </Box>\n          </>\n        }\n      </Box>\n    )\n  }\n\n  return (\n    <React.Fragment>\n      <Grid container>\n        <Grid item xs={12} md={6} className={classes.leftContent}>\n          <CssBaseline>\n            <AnimationContainer>\n              <Box component=\"div\" display=\"flex\" flexDirection=\"column\" mx=\"auto\" className={classes.formArea}>\n                {loading\n                  ? <Loading />\n                  : <>\n                    <Header />\n                    <Form />\n                  </>\n\n                }\n              </Box>\n            </AnimationContainer>\n          </CssBaseline>\n        </Grid>\n        <Grid item xs={12} md={6} className={classes.rightContent}>\n          <Statistics />\n        </Grid>\n      </Grid>\n      <Snackbar\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'center'\n        }}\n        open={snackValues.open}\n        autoHideDuration={6000}\n        onClose={handleCloseSnack}\n        message={snackValues.message}\n        action={\n          <React.Fragment>\n            <IconButton size=\"small\" aria-label=\"close\" color=\"inherit\" onClick={handleCloseSnack}>\n              <CloseIcon fontSize=\"small\" />\n            </IconButton>\n          </React.Fragment>\n        }\n      />\n    </React.Fragment>\n  )\n}\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"100%\",\n    padding: \"2rem\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \" #292929\",\n  },\n  text: {\n    color: \"#FFFFFF\",\n    [theme.breakpoints.down(\"sm\")]: {\n      textAlign: \"center\",\n    },\n  },\n\n  img: {\n    marginTop: \"1rem\",\n    display: \"flex\",\n  },\n  image: {\n    cursor: \"pointer\",\n    width: \"1.5rem\",\n    margin: \"0.5rem\",\n    [theme.breakpoints.down(\"sm\")]: {\n      margin: \"2rem 0.5rem\",\n      width: \"1.5rem\",\n    },\n  },\n}));\n\nexport { useStyles };\n","import facebook from \"assets/images/facebook.svg\";\nimport instagram from \"assets/images/instagram.svg\";\nimport email from \"assets/images/email.svg\";\n\nconst socialIcons = [\n  {\n    icon: facebook,\n    alt: \"Icone do facebook\",\n    path: \"https://www.facebook.com/kultivieduk\",\n  },\n  {\n    icon: instagram,\n    alt: \"Icone do Instagram\",\n    path: \"https://www.instagram.com/kultiviedu/\",\n  },\n  {\n    icon: email,\n    alt: \"Icone do Email\",\n    path: \"mailto:atendimento.klubi@kultivi.com\",\n  },\n];\n\nexport default socialIcons;\n","import React from \"react\";\nimport { Box, Typography } from \"@material-ui/core\";\n\nimport { useStyles } from \"./styles\";\nimport socialIcons from \"./data\";\n\nfunction Footer() {\n  const classes = useStyles();\n  const redirectForSocial = (path) => (window.location.href = path);\n\n  return (\n    <Box component=\"footer\" className={classes.content}>\n      <Typography variant=\"body1\" className={classes.text}>\n        Copyright© 2022 Kultivi - Produção e Edição de Conteúdo Ltda. Todos os\n        direitos reservados. Feito com ❤ pelo time Kultivi\n      </Typography>\n\n      <Box className={classes.img}>\n        {socialIcons.map((social, index) => (\n          <img\n            key={`Comunicação-${index}`}\n            src={social.icon}\n            alt={social.alt}\n            onClick={() => redirectForSocial(social.path)}\n            className={classes.image}\n          />\n        ))}\n      </Box>\n    </Box>\n  );\n}\n\nexport default Footer;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  links: {\n    color: theme.palette.grey[900],\n    cursor: \"pointer\",\n  },\n}));\n\nexport { useStyles };\n","import React from \"react\";\nimport { Drawer, List, ListItem } from \"@material-ui/core\";\n\nimport { useStyles } from \"./styles\";\n\nfunction NavigationMobile({\n  open,\n  faqRef,\n  bestRef,\n  partnersRef,\n  allPlansRef,\n  handleBackClick,\n  handleChangeDrawer,\n}) {\n  const classes = useStyles();\n\n  return (\n    <Drawer anchor=\"left\" open={open} onClose={() => handleChangeDrawer()}>\n      <List>\n        {/* <ListItem\n          onClick={() => handleBackClick(bestRef)}\n          className={classes.links}\n        >\n          Melhor plano\n        </ListItem> */}\n\n        <ListItem\n          onClick={() => handleBackClick(allPlansRef)}\n          className={classes.links}\n        >\n          Todos os planos\n        </ListItem>\n\n        <ListItem\n          onClick={() => handleBackClick(faqRef)}\n          className={classes.links}\n        >\n          Perguntas frequentes\n        </ListItem>\n\n        {/* <ListItem\n          onClick={() => handleBackClick(partnersRef)}\n          className={classes.links}\n        >\n          Parceria\n        </ListItem> */}\n      </List>\n    </Drawer>\n  );\n}\n\nexport default NavigationMobile;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    height: \"4rem\",\n    width: \"100%\",\n    background: \"#0F5B7A\",\n  },\n  navigation: {\n    height: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    [theme.breakpoints.down(\"md\")]: {\n      justifyContent: \"flex-start\",\n    },\n  },\n  listLinks: {\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-around\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"none\",\n    },\n  },\n  links: {\n    cursor: \"pointer\",\n    width: \"auto\",\n    color: \"#FFFFFF\",\n    fontSize: theme.typography.pxToRem(16),\n  },\n  iconMobile: {\n    display: \"none\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"block\",\n    },\n  },\n\n  titleIcon: {\n    fontSize: theme.typography.pxToRem(14),\n    color: \"#FFFFFF\",\n  },\n}));\n\nexport { useStyles };\n","import React, { useState } from \"react\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport {\n  List,\n  AppBar,\n  ListItem,\n  Container,\n  Typography,\n} from \"@material-ui/core\";\n\nimport NavigationMobile from \"./NavigationMobile\";\n\nimport { useStyles } from \"./styles\";\n\nfunction NavigationKlubi({ faqRef, bestRef, partnersRef, allPlansRef }) {\n  const [open, setOpen] = useState(false);\n\n  const classes = useStyles();\n\n  const handleChangeDrawer = () => setOpen(!open);\n\n  function handleBackClick(elementRef) {\n    elementRef.current.scrollIntoView({ behavior: \"smooth\" });\n  }\n\n  return (\n    <AppBar position=\"sticky\" component=\"header\" className={classes.content}>\n      <Container maxWidth=\"xl\" component=\"nav\" className={classes.navigation}>\n        <IconButton\n          edge=\"start\"\n          className={classes.iconMobile}\n          color=\"inherit\"\n          aria-label=\"menu\"\n          onClick={handleChangeDrawer}\n        >\n          <MenuIcon />{\" \"}\n          <Typography className={classes.titleIcon}>Menu</Typography>\n        </IconButton>\n\n        <List className={classes.listLinks}>\n          {/* <ListItem\n            className={classes.links}\n            onClick={() => handleBackClick(bestRef)}\n          >\n            Melhor plano\n          </ListItem> */}\n\n          <ListItem\n            className={classes.links}\n            onClick={() => handleBackClick(allPlansRef)}\n          >\n            Todos os planos\n          </ListItem>\n\n          <ListItem\n            className={classes.links}\n            onClick={() => handleBackClick(faqRef)}\n          >\n            Perguntas frequentes\n          </ListItem>\n\n          {/* <ListItem\n            className={classes.links}\n            onClick={() => handleBackClick(partnersRef)}\n          >\n            Parceria\n          </ListItem> */}\n        </List>\n      </Container>\n\n      <NavigationMobile\n        open={open}\n        faqRef={faqRef}\n        bestRef={bestRef}\n        partnersRef={partnersRef}\n        allPlansRef={allPlansRef}\n        handleBackClick={handleBackClick}\n        handleChangeDrawer={handleChangeDrawer}\n      />\n    </AppBar>\n  );\n}\n\nexport default NavigationKlubi;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"100%\",\n    backgroundImage: \"linear-gradient(#1a1a1a, #1e1e1e, #292929)\",\n    padding: \"1.68rem 4rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      height: \"100%\",\n      padding: \"2rem 0\",\n    },\n  },\n  container: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    height: \"100%\",\n    [theme.breakpoints.down(\"md\")]: {\n      flexDirection: \"column\",\n    },\n  },\n  contentLeft: {\n    width: \"60%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-start\",\n    margin: \"0 2rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      width: \"100%\",\n      padding: \"0 2rem\",\n    },\n  },\n  contentInfo: {\n    width: \"80%\",\n    [theme.breakpoints.down(\"md\")]: {\n      width: \"100%\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      alignItems: \"center\",\n    },\n  },\n  infoTitle: {\n    fontSize: theme.typography.pxToRem(27),\n    fontWeight: \"bold\",\n    color: \"#FEF080\",\n    textTransform: \"uppercase\",\n    [theme.breakpoints.down(\"md\")]: {\n      textAlign: \"center\",\n    },\n  },\n  description: {\n    fontSize: theme.typography.pxToRem(20),\n    color: \"#FFFFFF\",\n    margin: \"2rem 0\",\n    [theme.breakpoints.down(\"sm\")]: {\n      textAlign: \"center\",\n    },\n  },\n  cta: {\n    backgroundColor: \"#FFFFFF\",\n    fontSize: theme.typography.pxToRem(17),\n  },\n  contentRight: {\n    width: \"48%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    [theme.breakpoints.down(\"md\")]: {\n      width: \"100%\",\n    },\n  },\n  heroThumbnail: {\n    width: \"300px\",\n\n    [theme.breakpoints.down(\"sm\")]: {\n      display: \"none\",\n    },\n  },\n}));\n\nexport { useStyles };\n","/* eslint-disable jsx-a11y/accessible-emoji */\nimport React from \"react\";\nimport { Box, Button, Container, Typography } from \"@material-ui/core\";\n\nimport HeroImage from \"assets/images/hero-klubi.png\";\n\nimport { useStyles } from \"./styles\";\n\nfunction HeroSectionKlubi({ allPlansRef }) {\n  const classes = useStyles();\n\n  function handleBackClick() {\n    allPlansRef.current.scrollIntoView({ behavior: \"smooth\" });\n  }\n\n  return (\n    <Box className={classes.content} component=\"section\">\n      <Container maxWidth=\"lg\" className={classes.container}>\n        <Box className={classes.contentLeft} component=\"div\">\n          <Box className={classes.contentInfo} component=\"div\">\n            <Typography variant=\"h1\" className={classes.infoTitle}>\n              A gente faz o que ninguém viu: benefícios e\n              descontos... Num só lugar!\n            </Typography>\n            <Typography variant=\"body1\" className={classes.description}>\n              Seja um apoiador da Kultivi e nos ajude a continuar produzindo ainda mais!\n            </Typography>\n            <Button\n              className={classes.cta}\n              variant=\"contained\"\n              onClick={handleBackClick}\n            >\n              Quero apoiar a Kultivi 🚀\n            </Button>\n          </Box>\n        </Box>\n\n        <Box className={classes.contentRight} component=\"div\">\n          <img src={HeroImage} className={classes.heroThumbnail} alt=\"\" />\n        </Box>\n      </Container>\n    </Box>\n  );\n}\n\nexport default HeroSectionKlubi;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n  },\n  description: {\n    width: \"50%\",\n    textAlign: \"center\",\n    padding: \"5rem 0\",\n    color: \"#0F5B7A\",\n    fontSize: \"1.3rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      width: \"65%\",\n      padding: \"5rem 0.5rem\",\n    },\n    [theme.breakpoints.down(\"sm\")]: {\n      width: \"100%\",\n    },\n  },\n}));\n\nexport { useStyles };\n","/* eslint-disable jsx-a11y/accessible-emoji */\nimport React from \"react\";\nimport { Box, Typography } from \"@material-ui/core\";\n\nimport { useStyles } from \"./styles\";\n\nfunction InfoSectionKlubi() {\n  const classes = useStyles();\n\n  return (\n    <Box className={classes.content} component=\"section\">\n      <Typography className={classes.description}>\n        Sua participação nos planos pagos da Kultivi promove{\" \"}\n        <strong>a democratização do ensino gratuito de qualidade,</strong> que\n        vem mudando a vida de <strong>mais de 3 milhões de pessoas</strong> desde\n        2017!\n      </Typography>\n    </Box>\n  );\n}\n\nexport default InfoSectionKlubi;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"290px\",\n    height: \"auto\",\n    padding: \"2rem\",\n    margin: \"0 auto\",\n\n    backgroundColor: theme.palette.grey[700],\n    borderRadius: \"2rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      width: \"60%\",\n      height: \"100%\",\n      marginBottom: theme.spacing(4),\n    },\n    [theme.breakpoints.down(\"sm\")]: {\n      width: \"100%\",\n    },\n  },\n  green: {\n    color: theme.palette.primary.main,\n  },\n  yellow: {\n    color: \"#FEF080\",\n  },\n  orange: {\n    color: \"#F68E60\",\n  },\n  contentImage: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n  },\n  thumbnail: {\n    margin: \"0 auto\",\n  },\n  title: {\n    fontSize: theme.typography.pxToRem(14),\n    fontWeight: \"bold\",\n    textAlign: \"center\",\n    fontFamily: \"Raleway, sans-serif\",\n  },\n  greenText: {\n    color: theme.palette.primary.main,\n  },\n  yellowText: {\n    color: \"#FEF080\",\n  },\n  orangeText: {\n    color: \"#F68E60\",\n  },\n  prices: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: \"bolder\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"1rem 0\",\n  },\n  previousPrice: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(18),\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"-0.5rem 0 1rem\",\n    textDecoration: \"line-through\",\n  },\n  button: {\n    width: \"100%\",\n    fontFamily: \"Nunito Sans, sans-serif\",\n  },\n  buttonGreen: {\n    backgroundColor: theme.palette.primary.main,\n    color: \"#FFFFFF\",\n    \"&:hover\": {\n      backgroundColor: \"#26A69A\",\n    },\n  },\n  buttonYellow: {\n    backgroundColor: \"#FEF080\",\n    color: theme.palette.grey[700],\n    \"&:hover\": {\n      backgroundColor: \"#FFEB4F\",\n    },\n  },\n  buttonOrange: {\n    backgroundColor: \"#F68E60\",\n    color: \"#FFFFFF\",\n    \"&:hover\": {\n      backgroundColor: \"#F46425\",\n    },\n  },\n\n  contentNext: {\n    padding: \"1rem\",\n    backgroundColor: \"#FFFFFF\",\n    color: theme.palette.grey[800],\n    width: \"20%\",\n    position: \"relative\",\n    [theme.breakpoints.down(\"sm\")]: {\n      width: \"90%\",\n      marginLeft: \"10px\",\n    },\n  },\n  close: {\n    cursor: \"pointer\",\n    position: \"absolute\",\n    top: \"5px\",\n    right: \"5px\",\n    width: \"12px\",\n    heigth: \"12px\",\n  },\n}));\n\nexport { useStyles };\n","import React, { useEffect, useState } from \"react\";\nimport { Box, Button, Typography } from \"@material-ui/core\";\n\nimport { useStyles } from \"./styles\";\n\nfunction CardPlan({ plan }) {\n  const classes = useStyles();\n\n  const plus = plan.title.includes(\"+\") && classes.green;\n  const pos = plan.title.includes(\"Pós\") && classes.yellow;\n  const academic = plan.title.includes(\"Concursos\") && classes.orange;\n  const posButton = plan.title.includes(\"Pós\") && classes.buttonYellow;\n  const freeButton = plan.title.includes(\"+\") && classes.buttonGreen;\n  const academicButton =\n    plan.title.includes(\"Concursos\") && classes.buttonOrange;\n  const [token, setToken] = useState(null);\n\n  const handleRedirectToCheckout = (path) => {\n    window.open(`${path}?token=${token}`, `_blank`);\n  };\n\n  useEffect(() => {\n    const responseStorage = localStorage.getItem(\"@Kultivi:token\");\n\n    if (responseStorage) {\n      setToken(responseStorage);\n    }\n  }, [token]);\n\n  return (\n    <Box className={classes.content} component=\"div\">\n      <Box component=\"div\" className={classes.contentImage}>\n        <Typography className={[classes.title, plus, pos, academic]}>\n          {plan.title}\n        </Typography>\n      </Box>\n\n      {plan.path.month && plan.path.yearly && (\n        <>\n          <Typography variant=\"body1\" className={classes.prices}>\n            {plan.priceOne}\n          </Typography>\n\n          <Button\n            variant=\"contained\"\n            onClick={() => handleRedirectToCheckout(plan.path.month)}\n            className={[classes.button, freeButton]}\n          >\n            Assinar Kultivi+ mensal\n          </Button>\n\n          <Typography variant=\"body1\" className={classes.prices}>\n            {plan.priceTwo}\n          </Typography>\n          <Typography variant=\"body1\" className={classes.previousPrice}>\n            {plan.priceThree}\n          </Typography>\n\n          <Button\n            variant=\"contained\"\n            onClick={() => handleRedirectToCheckout(plan.path.yearly)}\n            className={[classes.button, freeButton]}\n          >\n            Assinar Kultivi+ anual\n          </Button>\n        </>\n      )}\n      <>\n        {!plan.path.yearly && (\n          <>\n            <Typography variant=\"body1\" className={classes.prices}>\n              {plan.priceOne} <Typography variant=\"body2\">ou</Typography>{\" \"}\n              {plan.priceTwo}\n            </Typography>\n            <Button\n              variant=\"contained\"\n              id={plan.id}\n              className={[\n                classes.button,\n                posButton,\n                freeButton,\n                academicButton,\n              ]}\n              onClick={() => handleRedirectToCheckout(plan.path.month)}\n            >\n              {plan.cta}\n            </Button>\n          </>\n        )}\n      </>\n    </Box>\n  );\n}\n\nexport default CardPlan;\n","import plusTitle from \"assets/images/title-plus.png\";\nimport posTitle from \"assets/images/title-pos.png\";\nimport academicTitle from \"assets/images/title-academic.png\";\n\nconst plans = [\n  {\n    title: \"Pacote Kultivi+\",\n    thumbnail: plusTitle,\n    priceOne: \"R$47/ano\",\n    priceTwo: \"R$9.70/mês\",\n    priceThree: \"Antes: R$89,00\",\n    id: \"kultivi_mais_2\",\n    cta: \"Assinar Plano Kultivi+\",\n    path: {\n      month: `${process.env.REACT_APP_CHECKOUT_URL}/${process.env.REACT_APP_IUGU_PRODUCT_MONTHLY}`,\n    },\n  },\n  {\n    title: \"Pacote Kultivi Concursos\",\n    priceOne: \"R$99,90/ano\",\n    priceTwo: \"R$29.90/mês\",\n    thumbnail: academicTitle,\n    id: \"kultivi_academia_2\",\n    cta: \"Assinar Plano Kultivi Concursos\",\n    path: {\n      month: `${process.env.REACT_APP_CHECKOUT_URL}/${process.env.REACT_APP_IUGU_PRODUCT_CONCURSOS}`,\n    },\n  },\n];\n\nexport default plans;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"100%\",\n    padding: \"2rem 0\",\n    backgroundColor: \"#292929\",\n  },\n\n  title: {\n    fontSize: theme.typography.pxToRem(28),\n    color: \"#FFFFFF\",\n    textAlign: \"center\",\n    fontWeight: \"bold\",\n  },\n  contentPlans: {\n    paddingBottom: \"3rem\",\n    margin: \"2rem auto 0 auto\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    flexWrap: \"wrap\",\n    marginTop: \"3rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      flexDirection: \"column\",\n    },\n  },\n}));\n\nexport { useStyles };\n","/* eslint-disable jsx-a11y/accessible-emoji */\nimport React from \"react\";\nimport { Box, Container, Typography } from \"@material-ui/core\";\n\nimport CardPlan from \"./CardPlan\";\n\nimport plans from \"./data\";\nimport { useStyles } from \"./styles\";\n\nfunction PlansSectionKlubi({ bestRef }) {\n  const classes = useStyles();\n\n  return (\n    <Box component=\"section\" className={classes.content} ref={bestRef}>\n      <Container>\n        <div>\n          <Typography variant=\"h4\" className={classes.title}>\n            Tem um plano perfeito para a sua vida e para o seu bolso!\n          </Typography>\n          <Typography variant=\"h4\" className={classes.title}>\n            Qual você vai escolher?\n          </Typography>\n\n          <Box component=\"div\" className={classes.contentPlans}>\n            {plans.map((plan, index) => (\n              <CardPlan\n                key={`${plan.title}-${index}`}\n                plan={plan}\n                index={index}\n              />\n            ))}\n          </Box>\n        </div>\n      </Container>\n    </Box>\n  );\n}\n\nexport default PlansSectionKlubi;\n","const dataAccordion = [\n  {\n    panel: \"panel1\",\n    controls: \"panel1bh-content\",\n    id: \"panel1bh-header\",\n    title: \"O que é o Clube de Benefícios?\",\n    content:\n      \"O Clube de Benefícios é um plano de sua escolha que libera acesso a ebooks, apostilas, plano de estudos, simulados personalizados, anotações nas vídeo aulas e descontos em lojas parceiras. Além de ajudar a Kultivi a continuar produzindo cursos de qualidade gratuitamente! \",\n  },\n  {\n    panel: \"panel2\",\n    controls: \"panel2bh-content\",\n    id: \"panel2bh-header\",\n    title: \"Para que serve o Clube de Benefícios?\",\n    content:\n      \"Serve para auxiliar e complementar os estudos dos cursos gratuitos que disponibilizamos na plataforma. Oferece ferramentas e materiais exclusivos para os assinantes.\",\n  },\n  {\n    panel: \"panel3\",\n    controls: \"panel3bh-content\",\n    id: \"panel3bh-header\",\n    title: \"O Clube de Benefícios é cobrado todo mês?\",\n    content:\n      \"Temos diversos planos de assinatura. \\\"Kultivi+\\\" e \\\"Concursos\\\" é cobrado mensalmente ou anual.\",\n  },\n  {\n    panel: \"panel5\",\n    controls: \"panel5bh-content\",\n    id: \"panel5bh-header\",\n    title: \"Posso realizar os cursos sem assinar algum plano? \",\n    content:\n      \"Pode! Todos os cursos que oferecemos na plataforma são totalmente gratuitos, sem pegadinhas! Você pode fazer um ou vários ao mesmo tempo. A assinatura dos planos é opcional, caso queira dar um up nos seus estudos.\",\n  },\n  {\n    panel: \"panel6\",\n    controls: \"panel6bh-content\",\n    id: \"panel6bh-header\",\n    title:\n      \"Para receber os certificados dos cursos gratuitos, preciso assinar algum plano?\",\n    content:\n      \"Não precisa! Os certificados são digitais e totalmente gratuitos. Para ter acesso, basta finalizar o curso ou cursos que estiver fazendo e acessar o menu do aluno para download.\",\n  },\n\n  {\n    panel: \"panel8\",\n    controls: \"panel8bh-content\",\n    id: \"panel8bh-header\",\n    title:\n      \"Assinarei o plano anual do Clube de Benefícios. Até quando terei acesso?\",\n    content:\n      \"Você terá acesso por 12 meses, até o dia do pagamento no próximo ano. Por exemplo: Assinatura realizada em 20 de junho de 2022 terá acesso até 20 de junho de 2023.\",\n  },\n  {\n    panel: \"panel9\",\n    controls: \"panel9bh-content\",\n    id: \"panel9bh-header\",\n    title: \"Quais as formas de pagamento?\",\n    content: \"Boleto ou parcelado em até 12x no cartão de crédito.\",\n  },\n  {\n    panel: \"panel10\",\n    controls: \"panel10bh-content\",\n    id: \"panel10bh-header\",\n    title: \"Quanto tempo após o pagamento para liberar meu acesso?\",\n    content:\n      \"Até 72 horas após o pagamento seu acesso aos benefícios será liberado.\",\n  },\n  {\n    panel: \"panel11\",\n    controls: \"panel11bh-content\",\n    id: \"panel11bh-header\",\n    title: \"Qual a diferença entre os planos?\",\n    content:\n      \"O plano Kultivi+ oferece: Tudo que é gratuito, Contribuição com a educação, Material de apoio, Ferramenta de simulados, Biblioteca Kultivi, Caderno virtual e Clube de Benefícios.\",\n    contentSecondary:\n      \"O plano Kultivi Concursos oferece: Beneficios do Plano Kultivi+ e acesso ilimitado as apostilas preparatórias para concurso público.\",\n  },\n];\n\nexport default dataAccordion;\n","import { makeStyles, withStyles } from \"@material-ui/core/styles\";\nimport MuiAccordion from \"@material-ui/core/Accordion\";\nimport MuiAccordionDetails from \"@material-ui/core/AccordionDetails\";\nimport MuiAccordionSummary from \"@material-ui/core/AccordionSummary\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"100%\",\n    backgroundColor: \" #292929\",\n    padding: \"5rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      padding: \"2rem 1rem\",\n    },\n  },\n  title: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(27),\n    fontWeight: \"bold\",\n    marginBottom: \"3rem\",\n    textTransform: \"uppercase\",\n    color: \"#FEF080\",\n    fontFamily: \"Raleway, sans-serif\",\n  },\n  accordion: {\n    marginBottom: \"0.1rem\",\n  },\n  active: {\n    color: theme.palette.primary.main,\n    fontSize: theme.typography.pxToRem(20),\n  },\n  heading: {\n    color: theme.palette.grey[800],\n    fontSize: theme.typography.pxToRem(20),\n  },\n  accordionSummary: {\n    borderRadius: \"0.5rem\",\n    \"&$expanded\": {\n      margin: \"12px 0\",\n    },\n  },\n  accordionDetails: {\n    flexDirection: \"column\",\n\n    \"&:expanded\": {\n      backgroundColor: \"red\",\n    },\n  },\n\n  text: {\n    fontSize: theme.typography.pxToRem(18),\n    margin: \"0.5rem\",\n  },\n  step: {\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n  },\n  contentStep: {\n    marginBottom: \"2rem\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n  },\n  contentTitle: {\n    fontWeight: \"bold\",\n    fontSize: theme.typography.pxToRem(18),\n    color: theme.palette.grey[800],\n  },\n  image: {\n    width: \"65%\",\n    [theme.breakpoints.down(\"sm\")]: {\n      width: \"100%\",\n    },\n  },\n  listPaths: {\n    marginTop: \"1rem\",\n  },\n  listItem: {\n    display: \"flex\",\n  },\n  titleItem: {\n    fontWeight: \"bold\",\n    marginRight: \"0.5rem\",\n  },\n}));\n\nconst Accordion = withStyles({\n  root: {\n    border: \"1px solid rgba(0, 0, 0, .125)\",\n    boxShadow: \"none\",\n    borderRadius: \"0.5rem\",\n    \"&:not(:last-child)\": {\n      borderBottom: 0,\n    },\n    \"&:before\": {\n      display: \"none\",\n    },\n    \"&$expanded\": {\n      margin: \"auto\",\n    },\n  },\n  expanded: {},\n})(MuiAccordion);\n\nconst AccordionSummary = withStyles({\n  root: {\n    backgroundColor: \"rgba(0, 0, 0, .03)\",\n    borderBottom: \"1px solid rgba(0, 0, 0, .125)\",\n    marginBottom: -1,\n    minHeight: 56,\n    \"&$expanded\": {\n      minHeight: 56,\n    },\n  },\n  content: {\n    \"&$expanded\": {\n      margin: \"12px 0\",\n    },\n  },\n})(MuiAccordionSummary);\n\nconst AccordionDetails = withStyles((theme) => ({\n  root: {\n    padding: theme.spacing(2),\n  },\n  content: {\n    \"&$expanded\": {\n      margin: \"12px 0\",\n    },\n  },\n}))(MuiAccordionDetails);\n\nexport { useStyles, AccordionSummary, Accordion, AccordionDetails };\n","/* eslint-disable jsx-a11y/accessible-emoji */\nimport React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Box, Container, Typography } from \"@material-ui/core\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\n\nimport dataAccordion from \"./data\";\n\nimport {\n  useStyles,\n  Accordion,\n  AccordionSummary,\n  AccordionDetails,\n} from \"./styles\";\n\nfunction AccordionSectionKlubi({ faqRef }) {\n  const [expanded, setExpanded] = useState(false);\n\n  const classes = useStyles();\n\n  const handleChange = (panel) => (event, isExpanded) => {\n    setExpanded(isExpanded ? panel : false);\n  };\n\n  return (\n    <Box className={classes.content} component=\"section\" ref={faqRef}>\n      <Typography variant=\"h4\" className={classes.title}>\n        Perguntas Frequentes\n      </Typography>\n\n      <Container>\n        {dataAccordion.map((accordion, index) => {\n          const isActive =\n            expanded === accordion.panel ? classes.active : classes.heading;\n\n          return (\n            <Accordion\n              expanded={expanded === accordion.panel}\n              onChange={handleChange(accordion.panel)}\n              className={[classes.accordionSummary, classes.accordion]}\n              key={`${accordion.id}-${index}`}\n            >\n              <AccordionSummary\n                expandIcon={<ExpandMoreIcon />}\n                aria-controls={accordion.controls}\n                id={accordion.id}\n                className={classes.accordionSummary}\n              >\n                <Typography className={isActive}>{accordion.title}</Typography>\n              </AccordionSummary>\n              <AccordionDetails className={classes.accordionDetails}>\n                <Typography className={classes.text}>\n                  {accordion.content}\n                </Typography>\n\n                {accordion.contentSecondary && (\n                  <Typography className={classes.text}>\n                    {accordion.contentSecondary}\n                  </Typography>\n                )}\n                {accordion.contentTertiary && (\n                  <Typography className={classes.text}>\n                    {accordion.contentTertiary}\n                  </Typography>\n                )}\n\n                {accordion.steps && (\n                  <Box className={classes.step}>\n                    {accordion.steps?.map((step, index) => (\n                      <Box\n                        key={`${step.title}-${index}`}\n                        className={classes.contentStep}\n                      >\n                        <Typography className={classes.contentTitle}>\n                          {step.title}\n                        </Typography>\n                        <img\n                          className={classes.image}\n                          src={step.thumbnail}\n                          alt={`${index}`}\n                        />\n                      </Box>\n                    ))}\n                  </Box>\n                )}\n\n                {accordion.list && (\n                  <Box className={classes.listPaths}>\n                    {accordion.list.map((itemList) => (\n                      <Box className={classes.listItem}>\n                        <Typography className={classes.titleItem}>\n                          {itemList.title}\n                        </Typography>\n                        <Link to={itemList.path}>{itemList.path}</Link>\n                      </Box>\n                    ))}\n                  </Box>\n                )}\n              </AccordionDetails>\n            </Accordion>\n          );\n        })}\n      </Container>\n    </Box>\n  );\n}\n\nexport default AccordionSectionKlubi;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  container: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"auto\",\n  },\n  headTitles: {\n    marginBottom: \"0.5rem\",\n    [theme.breakpoints.down(\"sm\")]: {\n      marginTop: \"-1rem\",\n    },\n  },\n  title: {\n    fontWeight: \"bold\",\n    textTransform: \"uppercase\",\n    fontFamily: \"Raleway, sans-serif\",\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(16),\n  },\n  recommendedTitle: {\n    color: \"#FFFFFF\",\n    fontSize: theme.typography.pxToRem(14),\n    fontWeight: 700,\n    textAlign: \"center\",\n    width: \"60%\",\n    margin: \"0 auto\",\n    textTransform: \"uppercase\",\n    fontFamily: \"Nunito Sans, sans-serif\",\n  },\n  headingPlan: {\n    marginTop: \"-1rem\",\n    backgroundColor: \"#26A678\",\n    padding: \"0.2rem\",\n    borderTopLeftRadius: \"1rem\",\n    borderTopRightRadius: \"1rem\",\n  },\n  content: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"100%\",\n    padding: \"1rem \",\n  },\n\n  recommended: {\n    width: \"100%\",\n    padding: \"1rem\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    backgroundColor: theme.palette.grey[500],\n    borderRight: \"2px dashed #FEF080\",\n    borderLeft: \"2px dashed #FEF080\",\n\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"flex\",\n      width: \"100%\",\n      borderBottom: \"2px dashed #FEF080\",\n      borderBottomRightRadius: \"1rem\",\n      borderBottomLeftRadius: \"1rem\",\n    },\n  },\n  icon: {\n    \"&:first-child\": {\n      marginTop: \"0.4rem\",\n    },\n    margin: \"0.812rem\",\n  },\n\n  iconGreen: {\n    \"&:first-child\": {\n      marginTop: \"0.4rem\",\n    },\n    margin: \"0.812rem\",\n  },\n\n  iconYellow: {\n    \"&:first-child\": {\n      marginTop: \"0.4rem\",\n    },\n    margin: \"0.812rem\",\n  },\n\n  iconOrange: {\n    \"&:first-child\": {\n      marginTop: \"0.45rem\",\n    },\n    margin: \"0.812rem\",\n    \"&:last-child\": {},\n  },\n\n  containerRecommended: {\n    marginTop: \"-2rem\",\n    width: \"250px\",\n  },\n  purple: {\n    color: theme.palette.secondary.main,\n  },\n  green: {\n    color: theme.palette.primary.main,\n  },\n  yellow: {\n    color: \"#FEF080\",\n  },\n  orange: {\n    color: \"#F68E60\",\n  },\n  iconsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n  },\n  footerPlan: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"1rem 1rem 4rem 1rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"none\",\n    },\n  },\n  remove: {\n    margin: \"0.59rem\",\n  },\n  greenRemove: {\n    margin: \"0.59rem\",\n    \"&:last-child\": {},\n  },\n  yellowRemove: {\n    margin: \"0.59rem\",\n  },\n  prices: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: \"bolder\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"1rem 0\",\n  },\n  previousPrice: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(18),\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"-0.5rem 0 1rem\",\n    textDecoration: \"line-through\",\n  },\n  footerRecommended: {\n    backgroundColor: theme.palette.grey[500],\n    borderBottomLeftRadius: \"1rem\",\n    borderBottomRightRadius: \"1rem\",\n    borderRight: \"2px dashed #FEF080\",\n    borderBottom: \"2px dashed #FEF080\",\n    borderLeft: \"2px dashed #FEF080\",\n  },\n  button: {\n    fontFamily: \"Nunito Sans, sans-serif\",\n  },\n  buttonGreen: {\n    backgroundColor: theme.palette.primary.main,\n    minHeight: \"3.5rem\",\n    width: \"13rem\",\n    marginBottom: \"2rem\",\n    color: \"#FFFFFF\",\n    \"&:hover\": {\n      backgroundColor: \"#26A69A\",\n    },\n  },\n  buttonYellow: {\n    width: \"13rem\",\n\n    backgroundColor: \"#FEF080\",\n    color: theme.palette.grey[700],\n    \"&:hover\": {\n      backgroundColor: \"#FFEB4F\",\n    },\n  },\n  buttonOrange: {\n    width: \"14rem\",\n    backgroundColor: \"#F68E60\",\n    color: \"#FFFFFF\",\n    \"&:hover\": {\n      backgroundColor: \"#F46425\",\n    },\n  },\n}));\n\nexport { useStyles };\n","import elo from \"assets/images/elo-v2.svg\";\nimport visa from \"assets/images/visa-v2.svg\";\nimport boleto from \"assets/images/boleto.png\";\nimport america from \"assets/images/amex-v2.svg\";\nimport mastercard from \"assets/images/mastercard-v2.svg\";\n\nconst dataPlans = [\n  {\n    title: \"Kultivi\",\n    content: [\n      {\n        title: \"• Cursos online 100% gratuitos\",\n        description:\n          \"Acesso ilimitado a cursos completos, de qualidade, nas áreas de Idiomas, Carreira e Negócios, Enem, Concursos, Oab, saúde.\",\n      },\n      {\n        title: \"• Material de apoio\",\n        description:\n          \"Download do material utilizado pelo professor durante as aulas, para criar suas próprias anotações e acompanhar o conteúdo.\",\n      },\n      {\n        title: \"• Certificados de conclusão\",\n        description:\n          \"Certificado digital para impressão disponível após finalizar qualquer curso: para dar aquele up no currículo e deixar o LinkedIn mais atrativo.\",\n      },\n      {\n        title: \"• Lives\",\n        description:\n          \"Assista todas as lives e aulas ao vivo dos melhores professores, com conteúdo excepcional.\",\n      },\n      {\n        title: \"• Blog\",\n        description:\n          \"Navegue pelo conteúdo de todas as áreas, artigos com dicas, modelos para baixar e muito mais para você evoluir nos estudos.\",\n      },\n    ],\n  },\n\n  {\n    title: \"Kultivi+\",\n    priceOne: \"R$47/ano\",\n    priceTwo: \"R$9.70/mês\",\n    priceThree: \"Antes: R$89,00\",\n    id: \"kultivi_mais_1\",\n    cta: \"Assinar Plano Kultivi+\",\n    path: {\n      month: `${process.env.REACT_APP_CHECKOUT_URL}/${process.env.REACT_APP_IUGU_PRODUCT_MONTHLY}`,\n    },\n    content: [\n      {\n        title: \"• Cursos online 100% gratuitos\",\n        description:\n          \"Acesso ilimitado a cursos completos, de qualidade, nas áreas de Idiomas, Carreira e Negócios, Enem, Concursos, Oab, saúde.\",\n      },\n      {\n        title: \"• Material de apoio\",\n        description:\n          \"Download do material utilizado pelo professor durante as aulas, para criar suas próprias anotações e acompanhar o conteúdo.\",\n      },\n      {\n        title: \"• Certificados de conclusão\",\n        description:\n          \"Certificado digital para impressão disponível após finalizar qualquer curso: para dar aquele up no currículo e deixar o LinkedIn mais atrativo.\",\n      },\n      {\n        title: \"• Lives\",\n        description:\n          \"Assista todas as lives e aulas ao vivo dos melhores professores, com conteúdo excepcional.\",\n      },\n      {\n        title: \"• Blog\",\n        description:\n          \"Navegue pelo conteúdo de todas as áreas, artigos com dicas, modelos para baixar e muito mais para você evoluir nos estudos.\",\n      },\n      {\n        title: \"• Klubi (Clube de descontos)\",\n        description:\n          \"Acesso a descontos em mais de 300 lojas físicas e virtuais em beleza, entretenimento, gastronomia, eletrônicos, moda e muito mais!\",\n        link: \"http://klubi.kultivi.com/\",\n      },\n      {\n        title: \"• Contribui com a educação\",\n        description:\n          \"Nós vamos continuar mudando o mundo através da educação. E você está participando desse movimento conosco: contribuindo para o crescimento da Kultivi e para novos cursos no site e aplicativo!.\",\n      },\n      {\n        title: \"• Ferramenta de simulados\",\n        description:\n          \"Exclusiva para criar e responder simulados. Ideal para quem quer testar os conhecimentos, se preparar para as provas e acompanhar seu progresso!\",\n      },\n      {\n        title: \"• Biblioteca Kultivi\",\n        description:\n          \"Exclusivo para assinantes que querem acessar materiais complementares como planos de estudos, e-books de vocabulário, dicas, apostilas de Direito e muitos outros recursos.\",\n      },\n      {\n        title: \"• Caderno virtual\",\n        description:\n          \"Anote tudo o que for importante durante a aula, com a marcação dos minutos do vídeo!\",\n      }\n    ],\n  },\n\n  {\n    title: \"Kultivi Concursos\",\n    priceOne: \"R$99.90/ano\",\n    priceTwo: \"R$29.90/mês\",\n    id: \"kultivi_concursos_1\",\n    cta: \"Assinar Plano Kultivi Concursos\",\n    path: {\n      month: `${process.env.REACT_APP_CHECKOUT_URL}/${process.env.REACT_APP_IUGU_PRODUCT_CONCURSOS}`,\n    },\n    content: [\n      {\n        title: \"• Cursos online 100% gratuitos\",\n        info: {\n          title: \"Cursos online 100% gratuitos\",\n          description:\n            \"Acesso ilimitado a cursos completos, de qualidade, nas áreas de Idiomas, Carreira e Negócios, Enem, Concursos, Oab, saúde.\",\n        },\n      },\n      {\n        title: \"• Material de apoio\",\n        info: {\n          title: \"Material de apoio\",\n          description:\n            \"Download do material utilizado pelo professor durante as aulas, para criar suas próprias anotações e acompanhar o conteúdo.\",\n        },\n      },\n      {\n        title: \"• Certificados de conclusão\",\n        info: {\n          title: \"Certificados de Conclusão\",\n          description:\n            \"Certificado digital para impressão disponível após finalizar qualquer curso: para dar aquele up no currículo e deixar o LinkedIn mais atrativo.\",\n        },\n      },\n      {\n        title: \"• Lives\",\n        info: {\n          title: \"Lives\",\n          description:\n            \"Assista todas as lives e aulas ao vivo dos melhores professores, com conteúdo excepcional.\",\n        },\n      },\n      {\n        title: \"• Blog\",\n        info: {\n          title: \"Blog\",\n          description:\n            \"Navegue pelo conteúdo de todas as áreas, artigos com dicas, modelos para baixar e muito mais para você evoluir nos estudos.\",\n        },\n      },\n      {\n        title: \"• Klubi (Clube de descontos)\",\n        description:\n          \"Acesso a descontos em mais de 300 lojas físicas e virtuais em beleza, entretenimento, gastronomia, eletrônicos, moda e muito mais!\",\n        link: \"http://klubi.kultivi.com/\",\n      },\n      {\n        title: \"• Contribui com a educação\",\n        info: {\n          title: \"Contribui com a educação\",\n          description:\n            \"Nós vamos continuar mudando o mundo através da educação. E você está participando desse movimento conosco: contribuindo para o crescimento da Kultivi e para novos cursos no site e aplicativo!.\",\n        },\n      },\n      {\n        title: \"• Ferramenta de simulados\",\n        info: {\n          title: \"Ferramenta de simulados\",\n          description:\n            \"Exclusiva para criar e responder simulados. Ideal para quem quer testar os conhecimentos, se preparar para as provas e acompanhar seu progresso!\",\n        },\n      },\n      {\n        title: \"• Biblioteca Kultivi\",\n        info: {\n          title: \"Biblioteca Kultivi\",\n          description:\n            \"Exclusivo para assinantes que querem acessar materiais complementares como planos de estudos, e-books de vocabulário, dicas, apostilas de Direito e muitos outros recursos.\",\n        },\n      },\n      {\n        title: \"• Caderno virtual\",\n        info: {\n          title: \"Caderno virtual\",\n          description:\n            \"Anote tudo o que for importante durante a aula, com a marcação dos minutos do vídeo!\",\n        },\n      },\n      {\n        title: \"• Apostilas preparatórias para concursos públicos\",\n        description:\n          \"Materiais de estudo, dirigidos e atualizados, para aqueles que buscam aprovação nos principais concursos públicos do país\",\n        link: \"https://www.aprovare.com/\",\n      },\n    ],\n  }\n];\n\nconst listOptionsPlans = [\n  {\n    title: \"• Cursos online 100% gratuitos\",\n    description:\n      \"Acesso ilimitado a cursos completos, de qualidade, nas áreas de Idiomas, Carreira e Negócios, Enem, Concursos, Oab, saúde.\",\n  },\n  {\n    title: \"• Material de apoio\",\n    description:\n      \"Download do material utilizado pelo professor durante as aulas, para criar suas próprias anotações e acompanhar o conteúdo.\",\n  },\n  {\n    title: \"• Certificados de conclusão\",\n    description:\n      \"Certificado digital para impressão disponível após finalizar qualquer curso: para dar aquele up no currículo e deixar o LinkedIn mais atrativo.\",\n  },\n  {\n    title: \"• Lives\",\n    description:\n      \"Assista todas as lives e aulas ao vivo dos melhores professores, com conteúdo excepcional.\",\n  },\n  {\n    title: \"• Blog\",\n    description:\n      \"Navegue pelo conteúdo de todas as áreas, artigos com dicas, modelos para baixar e muito mais para você evoluir nos estudos.\",\n  },\n  {\n    title: \"• Contribui com a educação\",\n    description:\n      \"Nós vamos continuar mudando o mundo através da educação. E você está participando desse movimento conosco: contribuindo para o crescimento da Kultivi e para novos cursos no site e aplicativo!.\",\n  },\n  {\n    title: \"• Klubi (Clube de descontos)\",\n    description:\n      \"Acesso a descontos em mais de 300 lojas físicas e virtuais em beleza, entretenimento, gastronomia, eletrônicos, moda e muito mais!\",\n    // link: \"http://klubi.kultivi.com/\",\n  },\n  {\n    title: \"• Ferramenta de simulados\",\n    description:\n      \"Exclusiva para criar e responder simulados. Ideal para quem quer testar os conhecimentos, se preparar para as provas e acompanhar seu progresso!\",\n  },\n  {\n    title: \"• Biblioteca Kultivi\",\n    description:\n      \"Exclusivo para assinantes que querem acessar materiais complementares como planos de estudos, e-books de vocabulário, dicas, apostilas de Direito e muitos outros recursos.\",\n  },\n  {\n    title: \"• Caderno virtual\",\n    description:\n      \"Anote tudo o que for importante durante a aula, com a marcação dos minutos do vídeo!\",\n  },\n  {\n    title: \"• Apostilas preparatórias para concursos públicos\",\n    description:\n      \"Materiais de estudo, dirigidos e atualizados, para aqueles que buscam aprovação nos principais concursos públicos do país\",\n    link: \"https://www.aprovare.com/\",\n  },\n];\n\nconst paymentsImages = [mastercard, visa, elo, america, boleto];\n\nexport { dataPlans, listOptionsPlans, paymentsImages };\n","import React, { useState } from \"react\";\nimport { Box, Button, Typography } from \"@material-ui/core\";\n\nimport green from \"assets/images/verify-green.svg\";\nimport purple from \"assets/images/verify-purple.svg\";\nimport orange from \"assets/images/verify-orange.svg\";\nimport remove from \"assets/images/Remove.svg\";\n\nimport { useStyles } from \"./styles\";\nimport { useEffect } from \"react\";\nimport { listOptionsPlans } from \"../data\";\n\nfunction Plan({ plan }) {\n  const [token, setToken] = useState(null);\n\n  const handleRedirectToCheckout = (path) => {\n    window.open(`${path}?token=${token}`, `_blank`);\n  };\n\n  const classes = useStyles();\n\n  const plus = plan.title.includes(\"+\") && classes.green;\n  const buttonGreen = plan.title.includes(\"+\") && classes.buttonGreen;\n  const pos = plan.title.includes(\"Pós\") && classes.yellow;\n  const buttonYellow = plan.title.includes(\"Pós\") && classes.buttonYellow;\n  const free = plan.title === \"Kultivi\" && classes.purple;\n  // const academic = plan.title.includes(\"Academia\") && classes.orange;\n  // const buttonOrange = plan.title.includes(\"Academia\") && classes.buttonOrange;\n\n  const academic = plan.title.includes(\"Concursos\") && classes.orange;\n  const buttonOrange = plan.title.includes(\"Concursos\") && classes.buttonOrange;\n\n  useEffect(() => {\n    const responseStorage = localStorage.getItem(\"@Kultivi:token\");\n\n    if (responseStorage) {\n      setToken(responseStorage);\n    }\n  }, [token]);\n\n  return (\n    <Box\n      component=\"div\"\n      className={\n        plan.recommended ? classes.containerRecommended : classes.container\n      }\n    >\n      {plan.recommended && (\n        <Box className={classes.headingPlan}>\n          <Typography variant=\"body1\" className={classes.recommendedTitle}>\n            {plan.recommended}\n          </Typography>\n        </Box>\n      )}\n      <Box\n        component=\"div\"\n        className={plan.recommended ? classes.recommended : classes.content}\n      >\n        <Box className={classes.headTitles}>\n          <Typography className={[classes.title, free, plus, pos, academic]}>\n            Apoio\n          </Typography>\n          <Typography className={[classes.title, free, plus, pos, academic]}>\n            {plan.title}\n          </Typography>\n        </Box>\n\n        <Box component=\"div\" className={classes.iconsContainer}>\n          {listOptionsPlans.map((option) => {\n            const newOptionWithPlan = plan.content.filter((uniqPlan) => {\n              return uniqPlan.title === option.title;\n            });\n\n            return (\n              <>\n                {plan.title === \"Kultivi\" && newOptionWithPlan[0] ? (\n                  <img\n                    className={classes.icon}\n                    src={purple}\n                    alt=\"Icone de verificação colorido\"\n                  />\n                ) : (\n                  plan.title === \"Kultivi\" && (\n                    <img\n                      className={classes.remove}\n                      src={remove}\n                      alt=\"Icone simbolizando que não tem\"\n                    />\n                  )\n                )}\n\n                {plan.title.includes(\"+\") && newOptionWithPlan[0] ? (\n                  <img\n                    className={classes.iconGreen}\n                    src={green}\n                    alt=\"Icone de verificação colorido\"\n                  />\n                ) : (\n                  plan.title.includes(\"+\") && (\n                    <img\n                      className={classes.greenRemove}\n                      src={remove}\n                      alt=\"Icone simbolizando que não tem\"\n                    />\n                  )\n                )}\n\n                {plan.title.includes(\"Concursos\") && newOptionWithPlan[0] ? (\n                  <img\n                    className={classes.iconOrange}\n                    src={orange}\n                    alt=\"Icone de verificação colorido\"\n                  />\n                ) : (\n                  plan.title.includes(\"Concursos\") && (\n                    <img\n                      className={classes.yellowRemove}\n                      src={remove}\n                      alt=\"Icone simbolizando que não tem\"\n                    />\n                  )\n                )}\n              </>\n            );\n          })}\n        </Box>\n      </Box>\n\n      <Box\n        component=\"div\"\n        className={[\n          classes.footerPlan,\n          plan.recommended && classes.footerRecommended,\n        ]}\n      >\n        {plan.priceOne && plan.priceTwo && plan.cta && (\n          <>\n            {!plan.path.yearly && (\n              <>\n                <Typography variant=\"body1\" className={classes.prices}>\n                  {plan.priceOne} <Typography variant=\"body2\">ou</Typography>{\" \"}\n                  {plan.priceTwo}\n                </Typography>{\" \"}\n                <Button\n                  id={plan.id}\n                  variant=\"contained\"\n                  onClick={() => handleRedirectToCheckout(plan.path.month)}\n                  className={[\n                    classes.button,\n                    buttonGreen,\n                    buttonYellow,\n                    buttonOrange,\n                  ]}\n                >\n                  {plan.cta}\n                </Button>\n              </>\n            )}\n\n            {plan.path.month && plan.path.yearly && (\n              <>\n                <Typography variant=\"body1\" className={classes.prices}>\n                  {plan.priceOne}\n                </Typography>\n                <Button\n                  variant=\"contained\"\n                  onClick={() => handleRedirectToCheckout(plan.path.month)}\n                  className={[\n                    classes.button,\n                    buttonGreen,\n                    buttonYellow,\n                    buttonOrange,\n                  ]}\n                >\n                  Assinar Kultivi+ mensal\n                </Button>\n                <Typography variant=\"body1\" className={classes.prices}>\n                  {plan.priceTwo}\n                </Typography>{\" \"}\n                <Typography variant=\"body1\" className={classes.previousPrice}>\n                  {plan.priceThree}\n                </Typography>\n                <Button\n                  variant=\"contained\"\n                  onClick={() => handleRedirectToCheckout(plan.path.yearly)}\n                  className={[\n                    classes.button,\n                    buttonGreen,\n                    buttonYellow,\n                    buttonOrange,\n                  ]}\n                >\n                  Assinar Kultivi+ anual\n                </Button>\n              </>\n            )}\n          </>\n        )}\n      </Box>\n    </Box>\n  );\n}\n\nexport default Plan;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    display: \"none\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"flex\",\n      flexDirection: \"column\",\n      backgroundColor: theme.palette.grey[700],\n      width: \"60%\",\n      height: \"100%\",\n      borderRadius: \"2rem\",\n      padding: \"1rem 0\",\n      marginBottom: \"2rem\",\n      justifyContent: \"center\",\n      alignItems: \"center\",\n      position: \"relative\",\n    },\n    [theme.breakpoints.down(\"sm\")]: {\n      width: \"100%\",\n    },\n  },\n  title: {\n    fontWeight: \"bold\",\n    textTransform: \"uppercase\",\n    fontFamily: \"Raleway, sans-serif\",\n    textAlign: \"center\",\n    width: \"100%\",\n    fontSize: theme.typography.pxToRem(20),\n    margin: \"2rem 0\",\n  },\n  purple: {\n    color: theme.palette.secondary.main,\n  },\n  green: {\n    color: theme.palette.primary.main,\n  },\n  yellow: {\n    color: \"#FEF080\",\n    paddingTop: \"1rem\",\n  },\n  orange: {\n    color: \"#F68E60\",\n  },\n  button: {\n    fontFamily: \"Nunito Sans, sans-serif\",\n    height: \"4rem\",\n  },\n  prices: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(18),\n    fontWeight: \"bolder\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"1rem 0\",\n  },\n  previousPrice: {\n    textAlign: \"center\",\n    fontSize: theme.typography.pxToRem(18),\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"-0.5rem 0 1rem\",\n    textDecoration: \"line-through\",\n  },\n  buttonGreen: {\n    marginBottom: \"1.7rem\",\n\n    backgroundColor: theme.palette.primary.main,\n    color: \"#FFFFFF\",\n  },\n  buttonYellow: {\n    backgroundColor: \"#FEF080\",\n    color: theme.palette.grey[700],\n  },\n  buttonOrange: {\n    backgroundColor: \"#F68E60\",\n    color: \"#FFFFFF\",\n  },\n  footerPlan: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"1rem\",\n    position: \"relative\",\n  },\n  listItem: {\n    fontFamily: \"Raleway, sans-serif\",\n    margin: \"1rem 0\",\n    color: \"#FFFFFF\",\n    fontSize: theme.typography.pxToRem(14),\n  },\n  titleKultivi: {\n    fontFamily: \"Raleway, sans-serif\",\n    listStyleType: \"none\",\n    margin: \"1rem 0\",\n    color: \"#FFFFFF\",\n    fontSize: theme.typography.pxToRem(17),\n  },\n  plus: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n  },\n  icon: {\n    width: \"3rem\",\n  },\n  headerRecommended: {\n    backgroundColor: \"#26A678\",\n    position: \"absolute\",\n    top: \"0\",\n    left: \"0\",\n    right: \"0\",\n    borderTopLeftRadius: \"2rem\",\n    borderTopRightRadius: \"2rem\",\n    height: \"3rem\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  },\n  titleHeading: {\n    textAlign: \"center\",\n    color: \"#FFFFFF\",\n    textTransform: \"uppercase\",\n  },\n  option: {\n    marginBottom: \"0.5rem\",\n    color: \"#FFFFFF\",\n    position: \"relative\",\n    display: \"flex\",\n    alignItems: \"center\",\n  },\n  question: {\n    cursor: \"pointer\",\n    marginLeft: \"0.5rem\",\n    width: \"0.8rem\",\n  },\n  contentOption: {\n    position: \"absolute\",\n    top: \"-60px\",\n    left: \"center\",\n    right: \"center\",\n    padding: \"1rem\",\n    color: theme.palette.grey[800],\n    backgroundColor: \"#ffffFF\",\n    width: \"18rem\",\n    flexWrap: \"wrap\",\n    borderRadius: \"1rem\",\n    zIndex: \"9999\",\n  },\n  close: {\n    position: \"absolute\",\n    right: \"10px\",\n    width: \"12px\",\n    cursor: \"pointer\",\n  },\n  titleOption: {\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(12),\n    fontFamily: \"Nunito Sans, sans-serif\",\n    fontWeight: \"bold\",\n    marginBottom: \"0.5rem\",\n  },\n  descriptionOption: {\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(14),\n    fontFamily: \"Nunito Sans, sans-serif\",\n  },\n}));\n\nexport { useStyles };\n","import React, { useEffect, useState } from \"react\";\nimport { Box, Button, Link, Typography } from \"@material-ui/core\";\n\nimport close from \"assets/images/close.svg\";\nimport question from \"assets/images/questionPlan.svg\";\n\nimport { useStyles } from \"./styles\";\n\nfunction MobileFirstPlansSection({ plan }) {\n  const [content, setContent] = useState({\n    title: \"\",\n    description: \"\",\n  });\n\n  const handleOpenQuestion = (option) => {\n    setContent({\n      title: option.title,\n      description: option.description,\n      linkPos: option.link,\n    });\n  };\n\n  const classes = useStyles();\n\n  const plus = plan.title.includes(\"+\") && classes.green;\n  const buttonGreen = plan.title.includes(\"+\") && classes.buttonGreen;\n  const pos = plan.title.includes(\"Pós\") && classes.yellow;\n  const buttonYellow = plan.title.includes(\"Pós\") && classes.buttonYellow;\n  const free = plan.title === \"Kultivi\" && classes.purple;\n  const academic = plan.title.includes(\"Academia\") && classes.orange;\n  const buttonOrange = plan.title.includes(\"Academia\") && classes.buttonOrange;\n  const [token, setToken] = useState(null);\n\n  const handleRedirectToCheckout = (path) => {\n    window.open(`${path}?token=${token}`, `_blank`);\n  };\n\n  useEffect(() => {\n    const responseStorage = localStorage.getItem(\"@Kultivi:token\");\n\n    if (responseStorage) {\n      setToken(responseStorage);\n    }\n  }, [token]);\n\n  return (\n    <Box component=\"div\" className={classes.content}>\n      {plan.title.includes(\"Pós\") && (\n        <Box component=\"div\" className={classes.headerRecommended}>\n          <Typography className={classes.titleHeading}>\n            Mais recomendado\n          </Typography>\n        </Box>\n      )}\n      <Typography\n        variant=\"h4\"\n        className={[classes.title, plus, pos, free, academic]}\n      >\n        Plano {plan.title}\n      </Typography>\n\n      <Box component=\"div\">\n        {plan.content.map((option, index) => {\n          return (\n            <Box className={classes.option} key={index}>\n              <Typography variant=\"body2\" className={classes.listItem}>\n                {option.title}\n              </Typography>\n              <Box className={classes.plus}>\n                <Typography className={classes.titleKultivi}>\n                  {option.titleKultivi}{\" \"}\n                </Typography>\n                {option.icon && (\n                  <img\n                    src={option.icon}\n                    alt=\"sinal de mais\"\n                    className={classes.icon}\n                  />\n                )}\n              </Box>\n\n              {option.title && (\n                <img\n                  src={question}\n                  alt=\"Circulo com ponto de interrogação\"\n                  className={classes.question}\n                  onClick={() => handleOpenQuestion(option)}\n                />\n              )}\n              {content.title === option.title && (\n                <Box className={classes.contentOption}>\n                  <img\n                    src={close}\n                    className={classes.close}\n                    alt=\"Icone de um X\"\n                    onClick={() =>\n                      setContent({\n                        title: \"\",\n                        option: \"\",\n                      })\n                    }\n                  />\n                  <Typography className={classes.titleOption}>\n                    {content.title}\n                  </Typography>\n                  <Typography className={classes.descriptionOption}>\n                    {content.description}\n                    <Link\n                      className={classes.descriptionOption}\n                      href={content.linkPos}\n                      target=\"_blank\"\n                    >\n                      {\" \"}\n                      {content.linkPos}\n                    </Link>\n                  </Typography>\n                </Box>\n              )}\n            </Box>\n          );\n        })}\n      </Box>\n\n      <Box component=\"div\" className={classes.footerPlan}>\n        {plan.priceOne && plan.priceTwo && plan.cta && (\n          <>\n            {!plan.path.yearly && (\n              <>\n                <Typography variant=\"body1\" className={classes.prices}>\n                  {plan.priceOne} <Typography variant=\"body2\">ou</Typography>{\" \"}\n                  {plan.priceTwo}\n                </Typography>\n\n                <Button\n                  id={plan.id}\n                  variant=\"contained\"\n                  onClick={() => handleRedirectToCheckout(plan.path.month)}\n                  className={[\n                    classes.button,\n                    buttonGreen,\n                    buttonYellow,\n                    buttonOrange,\n                  ]}\n                >\n                  {plan.cta}\n                </Button>\n              </>\n            )}\n\n            {plan.path.month && plan.path.yearly && (\n              <>\n                <Typography variant=\"body1\" className={classes.prices}>\n                  {plan.priceOne}\n                </Typography>\n\n                <Button\n                  variant=\"contained\"\n                  onClick={() => handleRedirectToCheckout(plan.path.month)}\n                  className={[\n                    classes.button,\n                    buttonGreen,\n                    buttonYellow,\n                    buttonOrange,\n                  ]}\n                >\n                  Assinar Kultivi+ mensal\n                </Button>\n\n                <Typography variant=\"body1\" className={classes.prices}>\n                  {plan.priceTwo}\n                </Typography>\n                <Typography variant=\"body1\" className={classes.previousPrice}>\n                  {plan.priceThree}\n                </Typography>\n                <Button\n                  variant=\"contained\"\n                  onClick={() => handleRedirectToCheckout(plan.path.yearly)}\n                  className={[\n                    classes.button,\n                    buttonGreen,\n                    buttonYellow,\n                    buttonOrange,\n                  ]}\n                >\n                  Assinar Kultivi+ anual\n                </Button>\n              </>\n            )}\n          </>\n        )}\n      </Box>\n    </Box>\n  );\n}\n\nexport default MobileFirstPlansSection;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  content: {\n    width: \"100%\",\n    padding: \"5rem 2rem\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    backgroundColor: \"#292929\",\n    alignItems: \"center\",\n  },\n  title: {\n    color: \"#FFFFFF\",\n    fontWeight: \"bold\",\n    textTransform: \"uppercase\",\n    fontFamily: \"Raleway, sans-serif\",\n    fontSize: theme.typography.pxToRem(27),\n    marginBottom: \"1.5rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      textAlign: \"center\",\n    },\n  },\n  titleBankNext: {\n    color: \"#FFFFFF\",\n    fontFamily: \"Raleway, sans-serif\",\n    fontSize: theme.typography.pxToRem(18),\n    textDecoration: \"underline\",\n    marginBottom: \"2rem\",\n    [theme.breakpoints.down(\"md\")]: {\n      textAlign: \"center\",\n    },\n  },\n  container: {\n    paddingTop: \"6rem\",\n    borderRadius: \"2rem\",\n    backgroundColor: theme.palette.grey[700],\n    display: \"flex\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"none\",\n    },\n  },\n  listOption: {\n    marginTop: \"4.7rem\",\n    width: \"47%\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"none\",\n    },\n  },\n  option: {\n    display: \"flex\",\n    marginBottom: \"19px\",\n    color: \"#FFFFFF\",\n    position: \"relative\",\n  },\n  question: {\n    marginLeft: \"0.7rem\",\n    width: \"0.8rem\",\n    cursor: \"pointer\",\n  },\n  list: {\n    display: \"flex\",\n    justifyContent: \"space-around\",\n    height: \"100%\",\n    width: \"100%\",\n    [theme.breakpoints.down(\"md\")]: {\n      display: \"none\",\n    },\n  },\n  contentOption: {\n    position: \"absolute\",\n\n    left: \"13rem\",\n    padding: \"1rem\",\n    color: theme.palette.grey[800],\n    backgroundColor: \"#ffffFF\",\n    width: \"80%\",\n\n    borderRadius: \"1rem\",\n    zIndex: \"10\",\n  },\n  close: {\n    position: \"absolute\",\n    right: \"8px\",\n    width: \"12px\",\n    cursor: \"pointer\",\n  },\n  titleOption: {\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(12),\n    fontFamily: \"Nunito Sans, sans-serif\",\n    fontWeight: \"bold\",\n    marginBottom: \"0.5rem\",\n  },\n  descriptionOption: {\n    color: theme.palette.grey[700],\n    fontSize: theme.typography.pxToRem(11),\n    fontFamily: \"Nunito Sans, sans-serif\",\n  },\n  icons: {\n    width: \"60px\",\n    margin: \"1rem 1rem 0 1rem\",\n  },\n  titleFooterPlans: {\n    color: theme.palette.grey[500],\n    fontSize: theme.typography.pxToRem(18),\n    fontFamily: \"Raleway, sans-serif\",\n    textAlign: \"center\",\n  },\n  titleNext: {\n    color: \"#fff\",\n    fontSize: theme.typography.pxToRem(17),\n    fontFamily: \"Raleway, sans-serif\",\n    textAlign: \"center\",\n    marginTop: \"3rem\",\n    fontWeight: \"400\",\n  },\n  subTitleNext: {\n    color: \"#fff\",\n    fontSize: theme.typography.pxToRem(18),\n    fontFamily: \"Raleway, sans-serif\",\n    textAlign: \"center\",\n    fontWeight: \"700\",\n  },\n  ButtonNext: {\n    width: \"15rem\",\n    height: \"3.5rem\",\n    color: \"#4F5B61\",\n    backgroundColor: \"#FFF\",\n    margin: \"2rem 0\",\n  },\n  footerPlans: {\n    margin: \"2rem 0 1rem \",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n  },\n  listPayments: {\n    display: \"flex\",\n    [theme.breakpoints.down(\"md\")]: {\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      flexWrap: \"wrap\",\n    },\n  },\n}));\n\nexport { useStyles };\n","import KultiviPlus from \"assets/images/icon-kultivi-plus.svg\";\nimport KultiviPos from \"assets/images/icon-Kultivi-pos.svg\";\nimport KultiviAcademy from \"assets/images/icon-Kultivi-academia.svg\";\n\nconst mobileDataPlans = [\n  {\n    title: \"Kultivi\",\n    content: [\n      {\n        title: \"• Cursos online 100% gratuitos\",\n        description:\n          \"Acesso ilimitado a cursos completos, de qualidade, nas áreas de Idiomas, Carreira e Negócios, Enem, Concursos, Oab, saúde.\",\n      },\n      {\n        title: \"• Material de apoio\",\n        description:\n          \"Download do material utilizado pelo professor durante as aulas, para criar suas próprias anotações e acompanhar o conteúdo.\",\n      },\n      {\n        title: \"• Certificados de conclusão\",\n        description:\n          \"Certificado digital para impressão disponível após finalizar qualquer curso: para dar aquele up no currículo e deixar o LinkedIn mais atrativo.\",\n      },\n      {\n        title: \"• Lives\",\n        description:\n          \"Assista todas as lives e aulas ao vivo dos melhores professores, com conteúdo excepcional.\",\n      },\n      {\n        title: \"• Blog\",\n        description:\n          \"Navegue pelo conteúdo de todas as áreas, artigos com dicas, modelos para baixar e muito mais para você evoluir nos estudos.\",\n      },\n    ],\n  },\n\n  {\n    title: \"Kultivi+\",\n    priceOne: \"R$47/ano\",\n    priceTwo: \"R$9.70/mês\",\n    priceThree: \"Antes: R$89,00\",\n    id: \"kultivi_mais_1\",\n    cta: \"Assinar Plano Kultivi+\",\n    path: {\n      month: `${process.env.REACT_APP_CHECKOUT_URL}/${process.env.REACT_APP_IUGU_PRODUCT_MONTHLY}`,\n    },\n    content: [\n      {\n        titleKultivi: \"Todos os benefícios do Plano Kultivi\",\n        icon: KultiviPlus,\n      },\n      {\n        title: \"• Contribui com a educação\",\n        description:\n          \"Nós vamos continuar mudando o mundo através da educação. E você está participando desse movimento conosco: contribuindo para o crescimento da Kultivi e para novos cursos no site e aplicativo!.\",\n      },\n      // {\n      //   title: \"• Livre de anúncios\",\n      //   description:\n      //     \"Os anúncios ajudam a manter o projeto Kultivi. Qualquer assinante que estiver logado, não será incomodado por propagandas. Veja seus cursos sem anúncios!\",\n      // },\n      {\n        title: \"• Ferramenta de simulados\",\n        description:\n          \"Exclusiva para criar e responder simulados. Ideal para quem quer testar os conhecimentos, se preparar para as provas e acompanhar seu progresso!\",\n      },\n      {\n        title: \"• Biblioteca Kultivi\",\n        description:\n          \"Exclusivo para assinantes que querem acessar materiais complementares como planos de estudos, e-books de vocabulário, dicas, apostilas de Direito e muitos outros recursos.\",\n      },\n      {\n        title: \"• Caderno virtual\",\n        description:\n          \"Anote tudo o que for importante durante a aula, com a marcação dos minutos do vídeo!\",\n      },\n      {\n        title: \"• Klubi (Clube de descontos)\",\n        description:\n          \"Acesso a descontos em mais de 300 lojas físicas e virtuais em beleza, entretenimento, gastronomia, eletrônicos, moda e muito mais!\",\n        link: \"http://klubi.kultivi.com/\",\n      },\n    ],\n  },\n\n  {\n    title: \"Kultivi Concursos\",\n    priceOne: \"R$99.90/ano\",\n    priceTwo: \"R$29.90/mês\",\n    id: \"kultivi_concursos_1\",\n    cta: \"Assinar Plano Kultivi Concursos\",\n    path: {\n      month: `${process.env.REACT_APP_CHECKOUT_URL}/${process.env.REACT_APP_IUGU_PRODUCT_CONCURSOS}`,\n    },\n    content: [\n      {\n        titleKultivi: \"Todos os benefícios do Plano Kultivi\",\n        icon: KultiviAcademy,\n      },\n      {\n        title: \"• Contribui com a educação\",\n        description:\n          \"Nós vamos continuar mudando o mundo através da educação. E você está participando desse movimento conosco: contribuindo para o crescimento da Kultivi e para novos cursos no site e aplicativo!.\",\n      },\n      {\n        title: \"• Ferramenta de simulados\",\n        description:\n          \"Exclusiva para criar e responder simulados. Ideal para quem quer testar os conhecimentos, se preparar para as provas e acompanhar seu progresso!\",\n      },\n      {\n        title: \"• Biblioteca Kultivi\",\n        description:\n          \"Exclusivo para assinantes que querem acessar materiais complementares como planos de estudos, e-books de vocabulário, dicas, apostilas de Direito e muitos outros recursos.\",\n      },\n      {\n        title: \"• Caderno virtual\",\n        description:\n          \"Anote tudo o que for importante durante a aula, com a marcação dos minutos do vídeo!\",\n      },\n      {\n        title: \"• Klubi (Clube de descontos)\",\n        description:\n          \"Acesso a descontos em mais de 300 lojas físicas e virtuais em beleza, entretenimento, gastronomia, eletrônicos, moda e muito mais!\",\n        link: \"http://klubi.kultivi.com/\",\n      },\n      {\n        title: \"• Apostilas preparatórias para concursos públicos\",\n        description:\n          \"Materiais de estudo, dirigidos e atualizados, para aqueles que buscam aprovação nos principais concursos públicos do país\",\n        link: \"https://www.aprovare.com/\",\n      },\n    ],\n  },\n];\n\nexport { mobileDataPlans };\n","import React, { useState } from \"react\";\nimport { Box, Container, Link, Typography } from \"@material-ui/core\";\n\nimport Plan from \"./Plan\";\nimport MobileFirstPlansSection from \"./Mobile\";\n\nimport close from \"assets/images/close.svg\";\nimport question from \"assets/images/questionPlan.svg\";\n\nimport { useStyles } from \"./styles\";\nimport { dataPlans, paymentsImages, listOptionsPlans } from \"./data\";\nimport { mobileDataPlans } from \"./Mobile/data\";\n\nfunction FirstPlansSectionKlubi({ allPlansRef }) {\n  const [content, setContent] = useState({\n    title: \"\",\n    description: \"\",\n  });\n  const classes = useStyles();\n\n  const handleOpenQuestion = (option) => {\n    setContent({\n      title: option.title,\n      description: option.description,\n      linkPos: option.link,\n    });\n  };\n  const handleRedirectToNext = () => {\n    window.open(`${process.env.REACT_APP_PRODUCT_NEXT}`, `_blank`);\n  };\n  return (\n    <Box component=\"section\" className={classes.content} ref={allPlansRef}>\n      <Typography variant=\"h4\" className={classes.title}>\n        Conheça nossos planos de assinatura!!\n      </Typography>\n      <Container maxWidth=\"lg\" className={classes.container}>\n        <Box className={classes.listOption}>\n          {listOptionsPlans.map((option, index) => {\n            return (\n              <Box className={classes.option} key={index}>\n                <Typography>{option.title}</Typography>\n                <img\n                  src={question}\n                  alt=\"Circulo com ponto de interrogação\"\n                  className={classes.question}\n                  onClick={() => handleOpenQuestion(option)}\n                />\n\n                {content.title === option.title && (\n                  <Box className={classes.contentOption}>\n                    <img\n                      src={close}\n                      className={classes.close}\n                      alt=\"Icone de um X\"\n                      onClick={() =>\n                        setContent({\n                          title: \"\",\n                          description: \"\",\n                        })\n                      }\n                    />\n                    <Typography className={classes.titleOption}>\n                      {content.title}\n                    </Typography>\n                    <Typography className={classes.descriptionOption}>\n                      {content.description}{\" \"}\n                      <Link\n                        className={classes.descriptionOption}\n                        href={content.linkPos}\n                        target=\"_blank\"\n                      >\n                        {\" \"}\n                        {content.linkPos}\n                      </Link>\n                    </Typography>\n                  </Box>\n                )}\n              </Box>\n            );\n          })}\n        </Box>\n\n        <Box component=\"div\" className={classes.list}>\n          {dataPlans.map((plan, index) => {\n            return <Plan key={`${plan.title}-${index}`} plan={plan} />;\n          })}\n        </Box>\n      </Container>\n\n      {mobileDataPlans.map((plan, index) => (\n        <MobileFirstPlansSection key={`${plan.title}-${index}`} plan={plan} />\n      ))}\n      <Box component=\"div\" className={classes.footerPlans}>\n        <Typography variant=\"body1\" className={classes.titleFooterPlans}>\n          Aceitamos as seguintes formas de pagamento\n        </Typography>\n\n        <Box component=\"div\" className={classes.listPayments}>\n          {paymentsImages.map((payment, index) => (\n            <img\n              src={payment}\n              key={index}\n              alt={`Pagamento-${index}`}\n              className={classes.icons}\n            />\n          ))}\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n\nexport default FirstPlansSectionKlubi;\n","import React, { useRef } from \"react\";\n\nimport Footer from \"app/components/Footer\";\nimport NavigationKlubi from \"app/components/navs/klubi\";\nimport HeroSectionKlubi from \"app/components/sections/HeroKlubi\";\nimport InfoSectionKlubi from \"app/components/sections/InfoKlubi\";\nimport PlansSectionKlubi from \"app/components/sections/PlansKlubi\";\nimport AccordionSectionKlubi from \"app/components/sections/AccordionKlubi\";\nimport FirstPlansSectionKlubi from \"app/components/sections/FirstPlansKlubi\";\n\nexport default () => {\n  const faqRef = useRef(null);\n  const bestRef = useRef(null);\n  const partnersRef = useRef(null);\n  const allPlansRef = useRef(null);\n\n  return (\n    <React.Fragment>\n      <NavigationKlubi\n        faqRef={faqRef}\n        bestRef={bestRef}\n        allPlansRef={allPlansRef}\n        partnersRef={partnersRef}\n      />\n      <HeroSectionKlubi allPlansRef={allPlansRef} />\n      <FirstPlansSectionKlubi allPlansRef={allPlansRef} />\n      <InfoSectionKlubi />\n      <AccordionSectionKlubi faqRef={faqRef} />\n      <PlansSectionKlubi bestRef={bestRef} />\n      {/* <PartnersSectionKlubi partnersRef={partnersRef} /> */}\n      <Footer />\n    </React.Fragment>\n  );\n};\n","import React from \"react\";\n\nimport KlubiLayout from \"app/components/layouts/KultiviPlus/v2\";\n\nexport default (props) => {\n  return (\n    <React.Fragment>\n      <KlubiLayout />\n    </React.Fragment>\n  );\n};\n","import styled, { keyframes } from 'styled-components'\n\nimport { makeStyles } from '@material-ui/core/styles'\n\nimport BackgroundImg from 'assets/images/signin_bg.png';\n\nconst useStyles = makeStyles((theme) => ({\n  ...contentStyles(theme),\n  ...headerStyles(theme),\n  ...formStyles(theme),\n  ...bottomStyles(theme)\n}))\n\nconst contentStyles = (theme) => ({\n  leftContent: {\n    backgroundColor: \"#FFF\",\n    [theme.breakpoints.down('md')]: {\n      padding: theme.spacing(4)\n    }\n  },\n  content: {\n    maxWidth: \"70%\",\n    minHeight: \"100vh\",\n    paddingTop: theme.spacing(5),\n    [theme.breakpoints.down('md')]: {\n      maxWidth: \"80%\",\n      paddingTop: theme.spacing(3),\n    },\n    [theme.breakpoints.down('sm')]: {\n      maxWidth: \"100%\",\n      paddingTop: theme.spacing(1),\n    },\n  },\n  rightContent: {\n    background: `url(${BackgroundImg})`,\n    backgroundRepeat: \"no-repeat\",\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center\",\n    backgroundColor: theme.palette.primary['main'],\n    [theme.breakpoints.down('sm')]: {\n      display: 'none',\n    },\n  },\n})\nconst headerStyles = (theme) => ({\n  header: {\n    marginBottom: theme.spacing(1),\n    [theme.breakpoints.up('sm')]: {\n      marginBottom: theme.spacing(4),\n    },\n  },\n  logoContainer: {\n    [theme.breakpoints.down('xs')]: {\n      textAlign: \"center\",\n      marginBottom: theme.spacing(1)\n    },\n  },\n  logo: {\n    width: 130,\n    maxWidth: 130,\n    [theme.breakpoints.only('xs')]: {\n        width: \"100%\",\n        maxWidth: 154\n    },\n  }\n})\nconst formStyles = (theme) => ({\n  formBlock: {\n    maxWidth: \"100%\",\n    [theme.breakpoints.up('sm')]: {\n      maxWidth: \"70%\",\n    },\n    [theme.breakpoints.up('md')]: {\n      maxWidth: \"60%\",\n    },\n  },\n  resendMail: {\n    cursor: 'pointer'\n  }\n})\n\nconst bottomStyles = (theme) => ({\n  bottomContent: {\n    fontSize: 12\n  },\n  signOut: {\n    cursor: 'pointer'\n  },\n})\n\nexport { useStyles }\n\n// Use Styled Components\nconst apearFromLeft = keyframes`\n  from {\n    opacity: 0;\n    transform: translateX(-50px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n`;\nexport const AnimationContainer = styled.div `\n  animation: ${apearFromLeft} 1s\n`;\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  input: {\n    '& input[type=number]': {\n        '-moz-appearance': 'textfield'\n    },\n    '& input[type=number]::-webkit-outer-spin-button': {\n        '-webkit-appearance': 'none',\n        margin: 0\n    },\n    '& input[type=number]::-webkit-inner-spin-button': {\n        '-webkit-appearance': 'none',\n        margin: 0\n    }\n  },\n}))\n\nexport { useStyles }\n","import React, {useState} from 'react'\n\nimport { useStyles } from './styles'\nimport { useFormik } from 'formik'\nimport { useHistory } from 'react-router-dom'\n\nimport {\n  TextField,\n  CircularProgress,\n} from '@material-ui/core'\n\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\nimport accountApi from 'app/services/account-api';\nimport { confirmAccountByCodeValidator } from 'app/validators/auth'\n\n\nconst ConfirmAccount = (props) => {\n\n  const { setSnackValues } = useSnackbar();\n  const classes = useStyles()\n  const [code, setCode] = useState('');\n  const [sending, setSending] = useState(false);\n  const [errors, setErrors] = useState([]);\n\n  const {\n    setAccountConfirmed,\n    setAttemps\n  } = props\n\n\n  const handleOnInput = async (e) => {\n    setErrors([])\n    const target = e.target\n    const number = target.value.replace(/[^0-9]/g, '')\n    setCode(number)\n    try {\n      const { code } = await confirmAccountByCodeValidator.validate({code: number})\n      setSending(true)\n      accountApi.post('/me/confirm', {token: code})\n      .then((result) => {\n        setAccountConfirmed(true)\n      })\n      .catch((err) => {\n        setAttemps((value) => value + 1)\n        setAccountConfirmed(false)\n        const { response } = err\n          setSnackValues({\n            message: response?.data?.errors?.at(0) || 'Código inválido. Tente novamente',\n            open: true,\n          });\n          setCode('')\n      })\n      .finally(() => setSending(false))\n\n    } catch (error) {\n      setErrors(error.errors)\n    }\n  }\n\n\n  return (\n    <>\n      {\n        sending ?\n          <CircularProgress /> :\n          <form name=\"form-confirm-account\">\n              <TextField\n                autoFocus={true}\n                label=\"Digite seu código de ativação\"\n                id=\"code\"\n                name=\"code\"\n                type=\"text\"\n                variant=\"outlined\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={code}\n                onInput={handleOnInput}\n                className={classes.input}\n                disabled={sending}\n                error={errors.length > 0}\n                helperText={errors.join(', ')}\n                inputProps={{\n                  maxLength: 4\n                }}\n              />\n          </form>\n      }\n    </>\n  )\n\n}\n\nexport default ConfirmAccount\n","import React, {useState} from 'react'\n\nimport {\n  TextField,\n  CircularProgress,\n  Box,\n  Button,\n} from '@material-ui/core'\n\nimport { useFormik } from \"formik\";\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\nimport { useAuth } from \"app/contexts/AuthContext\";\nimport accountApi from 'app/services/account-api';\nimport { changeUsernameValidator } from 'app/validators/auth'\n\n\nconst FormChangeUsername = (props) => {\n\n  const { refreshUserInfo } = useAuth();\n  const { setSnackValues } = useSnackbar();\n  const [sending, setSending] = useState(false);\n\n  const {\n    setChanged,\n  } = props\n\n  const formik = useFormik({\n    initialValues: {\n      email: \"\",\n      emailConfirmation: \"\",\n      password: \"\",\n    },\n    validationSchema: changeUsernameValidator,\n    enableReinitialize: true,\n    validateOnMount: true,\n    onSubmit: (values, actions) => {\n      actions.setSubmitting(true);\n      accountApi.patch('me/change-username', {\n        email: values.email,\n        password: values.password\n      })\n      .then((result) => {\n        setSnackValues({\n          message: `Acesso alterado com sucesso!`,\n          open: true,\n        });\n        refreshUserInfo({email: formik.values.email})\n        setChanged(true)\n      })\n      .catch((error) => {\n        const { response } = error;\n        if (response && response.data) {\n          const {\n            data: { errors },\n          } = response;\n          setSnackValues({\n            message: `${errors.at(0)}`,\n            open: true,\n          });\n        }\n      })\n      .finally( () => actions.setSubmitting(false))\n    },\n  });\n\n  const handleCopy = (event) => {\n    event.preventDefault();\n  }\n\n  const handlePaste = (event) => {\n    event.preventDefault();\n  }\n\n\n  return (\n    <>\n      {\n        sending ?\n          <CircularProgress /> :\n          <form name=\"form-change-username\" onSubmit={formik.handleSubmit}>\n            <Box mb={2}>\n              <TextField\n                autoFocus={true}\n                label=\"Seu novo e-mail\"\n                id=\"email\"\n                name=\"email\"\n                variant=\"outlined\"\n                type=\"email\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.email}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                disabled={formik.isSubmitting}\n                onCopy={handleCopy}\n                onPaste={handlePaste}\n                error={\n                  formik.touched.email &&\n                  Boolean(formik.errors.email)\n                }\n                helperText={\n                  formik.touched.email &&\n                  formik.errors.email\n                }\n              />\n            </Box>\n            <Box mb={2}>\n              <TextField\n                label=\"Confirmar e-mail\"\n                id=\"emailConfirmation\"\n                name=\"emailConfirmation\"\n                variant=\"outlined\"\n                type=\"email\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.emailConfirmation}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                disabled={formik.isSubmitting}\n                onCopy={handleCopy}\n                onPaste={handlePaste}\n                error={\n                  formik.touched.emailConfirmation &&\n                  Boolean(formik.errors.emailConfirmation)\n                }\n                helperText={\n                  formik.touched.emailConfirmation &&\n                  formik.errors.emailConfirmation\n                }\n              />\n            </Box>\n            <Box mb={2}>\n              <TextField\n                label=\"Digite sua senha\"\n                id=\"password\"\n                name=\"password\"\n                variant=\"outlined\"\n                type=\"password\"\n                fullWidth={true}\n                required={true}\n                autoComplete=\"off\"\n                value={formik.values.password}\n                onChange={formik.handleChange}\n                onBlur={formik.handleBlur}\n                disabled={formik.isSubmitting}\n                onCopy={handleCopy}\n                onPaste={handlePaste}\n                error={\n                  formik.touched.password &&\n                  Boolean(formik.errors.password)\n                }\n                helperText={\n                  formik.touched.password &&\n                  formik.errors.password\n                }\n              />\n            </Box>\n            <Box component=\"div\" textAlign=\"right\" mb={2}>\n              <Button\n                color=\"primary\"\n                type=\"submit\"\n                disabled={formik.isSubmitting || !formik.isValid}>\n                { formik.isSubmitting ? (\n                  <CircularProgress size={30} color=\"inherit\" />\n                ) : 'Enviar' }\n              </Button>\n            </Box>\n          </form>\n      }\n    </>\n  )\n\n}\n\nexport default FormChangeUsername\n","import { makeStyles } from '@material-ui/core/styles'\n\nconst useStyles = makeStyles((theme) => ({\n  title: {\n    fontWeight: 800,\n    fontSize: theme.typography.pxToRem(18)\n  },\n  copy: {\n    marginBottom: theme.spacing(3),\n    color: theme.palette.grey[600]\n  }\n}))\n\nexport { useStyles }\n","import React, { useState } from 'react'\nimport {\n  Dialog,\n  DialogContent,\n  DialogContentText,\n  DialogTitle,\n  Box,\n  IconButton,\n} from '@material-ui/core'\n\nimport CloseIcon from '@material-ui/icons/Close';\n\n// Forms\nimport FormChangeUsername from 'app/components/forms/ChangeUsername'\nimport { useStyles } from './styles'\n\nexport default (props) => {\n\n  const classes  = useStyles()\n  const {open, toggleDialog, email} = props;\n\n  const [changed, setChanged] = useState(false);\n\n  return (\n    <Dialog\n      aria-labelledby=\"form-dialog-title\"\n      open={open}\n      fullWidth={true}\n    >\n      <DialogTitle id=\"form-dialog-title\" className={classes.title} disableTypography>\n        <Box component=\"div\" display=\"flex\" justifyContent=\"flex-end\">\n          <IconButton aria-label=\"close\" className={classes.closeButton} onClick={toggleDialog(false)}>\n            <CloseIcon />\n          </IconButton>\n        </Box>\n        {!changed && \"Alterar usuário!\"}\n      </DialogTitle>\n      {changed ? (\n        <DialogContent>\n          <DialogContentText classes={{root:classes.copy}}>\n            <Box mb={2}>Em alguns instantes você receberá no email <strong>{email}</strong> o seu novo código de confirmação!</Box>\n            <small>Ah ... não esqueça de verificar também sua caixa de spam ;)</small>\n          </DialogContentText>\n        </DialogContent>\n      ) : (\n        <DialogContent>\n          <DialogContentText classes={{root:classes.copy}}>\n            <span role=\"img\">⚠️</span> Seu novo e-mail de cadastro será também o seu novo usuário.\n          </DialogContentText>\n          <FormChangeUsername setChanged={setChanged} />\n        </DialogContent>\n      )}\n    </Dialog>\n  )\n}\n","export const getUtcTimestamp = (dateTime = null) => {\n  const now = dateTime ? new Date(dateTime) : new Date();\n  const localOffset = now.getTimezoneOffset() * 60000;\n  const utcTimestamp = now.getTime() + localOffset;\n  return utcTimestamp\n}\n","import React, { useEffect, useState, useCallback } from 'react'\n\n// Material UI Imports\nimport {\n  Box,\n  CssBaseline,\n  Typography,\n  Grid,\n  Link,\n  CircularProgress,\n} from '@material-ui/core'\n\n// Assets import\nimport Logo from 'assets/images/kultivi.png'\n\n// Styles files\nimport { useStyles, AnimationContainer } from './styles'\nimport { useAuth } from 'app/contexts/AuthContext'\nimport { useSnackbar } from \"app/contexts/SnackbarContext\";\n\nimport ConfirmAccount from \"app/components/forms/ConfirmAccount\";\nimport DialogChangeUsername from \"app/components/Modals/Auth/ChangeUsername\";\n\nimport accountApi from \"app/services/account-api\";\nimport { getUtcTimestamp } from \"helpers/date\";\n\nimport Lottie from 'react-lottie';\nimport animationData from 'lotties/check'\n\nconst LIMIT = 90;\n\nexport default (props) => {\n\n  const classes = useStyles()\n  const { user, signOut, refreshUserInfo } = useAuth()\n  const { setSnackValues } = useSnackbar();\n\n  const [countdown, setCountdown] = useState(90);\n  const [canResendMail, setCanResendMail] = useState(false);\n  const [sending, setSending] = useState(false);\n  const [mailSent, setMailSent] = useState(false);\n  const [accountConfirmed, setAccountConfirmed] = useState(false);\n  const [attemps, setAttemps] = useState(0);\n  const [email, setEmail] = useState(null)\n\n  const [openChangeUsernameDialog, setOpenChangeUsernameDialog] =\n  useState(false);\nconst handleChangeUsernameDialog = (open) => (event) => {\n  setOpenChangeUsernameDialog(open);\n};\n\n  useEffect(() => {\n    if(!user.email_confirmation_sent_at) {\n      setCanResendMail(true)\n      return;\n    }\n    const utcTimestamp = getUtcTimestamp();\n    const sentAt = getUtcTimestamp(user.email_confirmation_sent_at);\n    const diff = Math.floor((utcTimestamp - sentAt) / 1000);\n    if(diff > LIMIT) {\n      setCanResendMail(true)\n      return;\n    }\n    setCountdown(LIMIT - diff)\n\n    const interval = setInterval(() => {\n      setCountdown(prevCountdown => prevCountdown - 1);\n    }, 1000);\n\n    return () => {\n      clearInterval(interval);\n    };\n  }, [mailSent, user]);\n\n  useEffect(() => {\n    if (countdown === 0 && !canResendMail) {\n      setCanResendMail(true)\n    }\n  }, [countdown, canResendMail]);\n\n  useEffect(() => {\n    if(accountConfirmed) {\n      setTimeout(() => {\n        refreshUserInfo({is_confirmed: true})\n      }, 1500)\n    }\n  }, [accountConfirmed, refreshUserInfo])\n\n  const handleSignout = useCallback(async () => {\n    await signOut();\n  }, [signOut]);\n\n  const handleResendMail = useCallback(async () => {\n    setSending(true);\n    accountApi.post('/me/resend-email-confirmation')\n    .then((result) => {\n      refreshUserInfo({email_confirmation_sent_at: new Date(new Date().toUTCString())})\n      setCanResendMail(false)\n      setMailSent(true)\n      setSnackValues({\n        message: \"E-mail encaminhado com sucesso!\",\n        open: true,\n      });\n    })\n    .catch((err) => {\n      const {response} = err\n      setMailSent(false)\n      setCanResendMail(true)\n      setSnackValues({\n        message: response?.data?.errors?.at(0) || \"Ops! Falha ao reenviar e-mail. Tente novamente.\",\n        open: true,\n      });\n    })\n    .finally(() => {\n      setSending(false)\n    })\n  }, [refreshUserInfo, setSnackValues]);\n\n  function Header() {\n    return (\n      <Box className={classes.header}>\n        <Box\n          component=\"div\"\n          display=\"flex\"\n          flexDirection=\"row\"\n          justifyContent=\"space-around\"\n          flexWrap=\"wrap\"\n          alignItems=\"center\"\n          width=\"100%\"\n          mb={2}\n        >\n          <Box component=\"div\" flexGrow={1} className={classes.logoContainer}>\n            <img src={Logo} className={classes.logo} alt=\"Logo Kultivi\" />\n          </Box>\n        </Box>\n      </Box>\n    )\n  }\n\n  function Bottom() {\n    return (\n      <Box className={classes.bottomContent}>\n        <Box mb={3}>\n          <Typography component=\"p\" style={{fontSize: '13px'}}>\n            Agradecemos sua paciência e colaboração. Se você tiver alguma dúvida ou precisar de ajuda adicional, estamos aqui para te auxiliar. Não hesite em entrar em contato através do e-mail: suporte@kultivi.com\n          </Typography>\n        </Box>\n        <Box><Typography>Para sair,  <Link onClick={handleSignout} className={classes.signOut}>clique aqui!</Link></Typography></Box>\n      </Box>\n    )\n  }\n\n  return (\n    <>\n      <Grid container>\n        <Grid item xs={12} md={6} className={classes.leftContent}>\n          <CssBaseline>\n            <AnimationContainer>\n              <Box component=\"div\" display=\"flex\" flexDirection=\"column\" mx=\"auto\" className={classes.content}>\n                <Header />\n                {\n                  accountConfirmed ?\n                    (\n                      <>\n                        <Lottie\n                          style={{\n                            maxWidth: 400,\n                            padding: 0,\n                            margin: 0,\n                          }}\n                          options={{\n                            loop: true,\n                            autoplay: true,\n                            animationData: animationData,\n                            rendererSettings: {\n                              preserveAspectRatio: \"xMidYMid slice\"\n                            }\n                          }}\n                        />\n                      </>\n                    ) : (\n                      <>\n                        <Box mb={3}>\n                          <Box mb={2}>\n                            <Typography component=\"p\">Olá, {user.firstname}! <span role=\"img\" aria-label=''>👋</span> </Typography>\n                          </Box>\n                          <Box mb={3}>\n                            <Typography component=\"p\">\n                              Enviamos um código <u>ultrassecreto</u> para o email <strong>{user.email}</strong>. Você precisa digitá-lo apenas uma vez <span role=\"img\">😊</span>\n                            </Typography>\n                          </Box>\n                          <Box mx=\"auto\" textAlign='center' className={classes.formBlock}>\n                            {sending ? <CircularProgress /> : <ConfirmAccount setAccountConfirmed={setAccountConfirmed} setAttemps={setAttemps} />}\n                          </Box>\n                        </Box>\n                        <Box mb={2}>\n                          {\n                            !sending &&\n                            <Box mb={2}>\n                              <Typography component=\"div\" style={{fontSize: 14}}>\n                                {\">\"} Caso não o tenha recebido, verifique na sua caixa de spam ou{\" \"}\n                                <Typography component=\"span\" style={{fontSize: 14}}>\n                                  {\n                                    !canResendMail && countdown > 0 ?\n                                      <>aguarde {countdown} segundos para solicitar novamente.</> :\n                                      <>\n                                        <Link\n                                          underline='always'\n                                          color='secondary'\n                                          onClick={handleResendMail}\n                                          className={classes.resendMail}\n                                        >clique aqui</Link> que faremos o reenvio para você.\n                                      </>\n                                  }\n                                </Typography>\n                              </Typography>\n                            </Box>\n                          }\n                        </Box>\n                        <Box mb={6}>\n                          <Typography component=\"div\" style={{fontSize: 14}}>\n                            {\">\"} Caso o seu e-mail esteja incorreto,{\" \"}\n                            <Typography component=\"span\" style={{fontSize: 14}}>\n                              <Link\n                                underline='always'\n                                color='secondary'\n                                onClick={handleChangeUsernameDialog(true)}\n                                className={classes.resendMail}\n                              >clique aqui</Link>\n                            </Typography>\n                          </Typography>\n                        </Box>\n                        <Bottom />\n                      </>\n                    )\n                }\n              </Box>\n            </AnimationContainer>\n          </CssBaseline>\n        </Grid>\n        <Grid item xs={12} md={6} className={classes.rightContent}></Grid>\n      </Grid>\n      <DialogChangeUsername\n        open={openChangeUsernameDialog}\n        toggleDialog={handleChangeUsernameDialog}\n        email={user.email}\n      />\n    </>\n  )\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex',\n    justifyContent: 'center',\n    alignItems: 'center',\n    height: '100vh',\n  },\n}));\n\nexport default (props) => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <CircularProgress />\n    </div>\n  );\n};\n","import React from 'react'\nimport { Route as ReactDOMRoute, Redirect } from 'react-router-dom'\n\nconst PrivateRoute = ({\n  component: Component,\n  isAuthenticated = false,\n  isConfirmed  = false,\n  ...rest\n}) => {\n  return (\n    <ReactDOMRoute\n      {...rest}\n      render={({ location }) => {\n\n        if(isAuthenticated && isConfirmed)\n          return <Component {...rest} />\n\n        const redirectTo = !isAuthenticated ? '/' : '/confirm-account'\n\n        return <Redirect\n            to={{\n              pathname: redirectTo,\n              state: { from: location }\n            }}\n          />\n      }}\n    />\n  )\n}\n\nexport default PrivateRoute;\n","import React from 'react'\nimport { Route as ReactDOMRoute, Redirect } from 'react-router-dom'\n\nimport { useAuth } from 'app/contexts/AuthContext'\nimport { useSubscription } from 'app/contexts/SubscriptionContext'\n\nconst CheckoutRoute = ({\n  component: Component,\n  isAuthenticated = false,\n  isConfirmed = false,\n  hasSubscribed = false,\n  suspendCheckoutGuardVerification = false,\n  ...rest\n}) => {\n\n  return (\n    <ReactDOMRoute\n      {...rest}\n      render={({ location }) => {\n        let redirectTo;\n\n        if( (isAuthenticated && !hasSubscribed) || suspendCheckoutGuardVerification )\n          return <Component {...rest} />\n\n        if(!isAuthenticated)\n          redirectTo = '/'\n        else if(!isConfirmed)\n          redirectTo = '/confirm-account'\n        else\n          redirectTo = '/dashboard'\n\n        return <Redirect\n            to={{\n              pathname: redirectTo,\n              state: { from: location }\n            }}\n          />\n      }}\n    />\n  )\n}\n\nexport default CheckoutRoute;\n","import React from 'react'\nimport { Route as ReactDOMRoute, Redirect } from 'react-router-dom'\n\nconst WaitingConfirmationRoute = ({\n  component: Component,\n  isAuthenticated = false,\n  isConfirmed  = false,\n  ...rest\n}) => {\n  return (\n    <ReactDOMRoute\n      {...rest}\n      render={({ location }) => {\n\n        if(isAuthenticated && !isConfirmed)\n          return <Component {...rest} />\n\n        const redirectTo = !isAuthenticated ? '/' : '/dashboard'\n\n        return <Redirect\n            to={{\n              pathname: redirectTo,\n              state: { from: location }\n            }}\n          />\n      }}\n    />\n  )\n}\n\nexport default WaitingConfirmationRoute;\n","import React from 'react'\nimport { Route as ReactDOMRoute, Redirect } from 'react-router-dom'\n\n\nconst PublicRoute = ({\n  component: Component,\n  isAuthenticated = false,\n  isConfirmed = false,\n  ...rest\n}) => {\n\n  return (\n    <ReactDOMRoute\n      {...rest}\n      render={({ location }) => {\n\n        if(!isAuthenticated)\n          return <Component {...rest} />\n\n        const redirectTo = isConfirmed ? '/dashboard' : '/confirm-account'\n\n        return <Redirect\n            to={{\n              pathname: redirectTo,\n              state: { from: location }\n            }}\n          />\n      }}\n    />\n  )\n}\n\nexport default PublicRoute;\n","import React from \"react\";\nimport { Switch } from \"react-router-dom\";\n\nimport Maintenance from \"app/pages/Maintenance\";\n\nimport Dashboard from \"app/components/layouts/Dashboard\";\nimport Lesson from \"app/components/layouts/Lesson\";\nimport InternalServerError from \"app/components/layouts/500\";\nimport NotFound from \"app/components/layouts/404\";\n\nimport SignIn from \"app/pages/SignIn\";\nimport SignUp from \"app/pages/SignUp\";\nimport RecoveryPassword from \"app/pages/RecoveryPassword\";\nimport KultiviPlus from \"app/pages/KultiviPlus\";\nimport AccountCodeConfirmation from \"app/pages/AccountCodeConfirmation\";\nimport LoaderPage from \"app/pages/Loader\";\n\nimport PrivateRoute from \"./guards/PrivateRoute\";\nimport CheckoutRoute from \"./guards/CheckoutRoute\";\nimport WaitingConfirmationRoute from \"./guards/WaitingConfirmationRoute\";\nimport PublicRoute from \"./guards/PublicRoute\";\n\nimport { useAuth } from 'app/contexts/AuthContext'\n\nexport default () => {\n  const { isSigned, user, isLoadingStorage } = useAuth()\n\n  return process.env.REACT_APP_MAINTENANCE === \"true\" ? (\n    <Maintenance />\n  ) : (\n    isLoadingStorage ? <LoaderPage /> :\n    (\n      <Switch>\n        <PublicRoute isAuthenticated={isSigned} isConfirmed={user?.is_confirmed} path=\"/\" exact component={SignIn} />\n        <PublicRoute isAuthenticated={isSigned} isConfirmed={user?.is_confirmed} path=\"/signup\" exact component={SignUp} />\n        <PublicRoute isAuthenticated={isSigned} isConfirmed={user?.is_confirmed} path=\"/reset-password/:token\" component={RecoveryPassword} />\n\n        <WaitingConfirmationRoute\n          isAuthenticated={isSigned}\n          isConfirmed={user?.is_confirmed}\n          path=\"/confirm-account\"\n          exact\n          component={AccountCodeConfirmation}\n        />\n        <CheckoutRoute\n          isAuthenticated={isSigned}\n          isConfirmed={user?.is_confirmed}\n          hasSubscribed={user?.subscription}\n          path=\"/dashboard/planos\"\n          exact\n          component={KultiviPlus}\n        />\n        <PrivateRoute\n          isAuthenticated={isSigned}\n          isConfirmed={user?.is_confirmed}\n          path=\"/dashboard/course/:courseSlug/lesson/:lessonSlug\"\n          component={Lesson}\n        />\n        <PrivateRoute\n          isAuthenticated={isSigned}\n          isConfirmed={user?.is_confirmed}\n          path=\"/dashboard\"\n          component={Dashboard}\n        />\n        <PublicRoute path=\"/error\" component={InternalServerError} />\n        <PublicRoute path=\"*\" component={NotFound} />\n      </Switch>\n    )\n  );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { sendPulsePopUp } from 'scripts/send-pulse'\nimport useQuery from './useQuery';\n\nexport default function UseLocationChange () {\n  const query = useQuery();\n  const location = useLocation();\n\n  useEffect(() => {\n    if (query.has(\"ref\")) {\n      localStorage.setItem(\"@Kultivi:ref\", query.get(\"ref\"));\n    }\n  },[location]);\n\n\n  useEffect(() => {\n    let scopes = [];\n    let mtc = {};\n\n    try {\n      const user = JSON.parse(localStorage.getItem(\"@Kultivi:user\"));\n      scopes = user?.scopes || [];\n      mtc = {uuid: user.uuid, firstname: user.firstname, lastname: user.surname, email: user.email}\n      window.mt('send', 'pageview', mtc,{onload: function(res) { console.log(res); }});\n    } catch (error) {\n      //\n    }\n\n    if(!scopes.includes(\"student_no_ads_display\")) {\n      const popUp = sendPulsePopUp();\n      document.getElementsByTagName(\"head\")[0].appendChild(popUp);\n      return () => {\n        document.getElementsByTagName(\"head\")[0].removeChild(popUp);\n      }\n    }\n\n  }, [location])\n\n  return null;\n}\n","import { useLocation } from 'react-router-dom';\nimport { useMemo } from 'react';\n\nexport default function useQuery() {\n  const { search } = useLocation();\n  return useMemo(() => new URLSearchParams(search), [search]);\n}\n","export const sendPulsePopUp = () => {\n  const script = document.createElement('script');\n  script.setAttribute(\"data-chats-widget-id\",'11ac2a1e-fbef-44da-b8e5-eda41539a2c5');\n  script.src = 'https://pop-ups.sendpulse.com/assets/loader.js';\n  script.async = true;\n  return script;\n}\n\nexport const sendPulseWebPush = () => {\n  const script = document.createElement('script');\n  script.async = true;\n  script.src = 'https://web.webpushs.com/js/push/6fc0ba4dd7ff1750dae4c1f425cdf985_1.js';\n  return script;\n}\n","import React from \"react\";\n\nimport { AuthProvider } from \"app/contexts/AuthContext\";\nimport { SubscriptionProvider } from \"app/contexts/SubscriptionContext\";\nimport { ScopesProvider } from \"app/contexts/ScopesContext\";\nimport { SnarckbarProvider } from \"app/contexts/SnackbarContext\";\nimport UseLocationChange from \"hooks/useLocationChange\";\n\nconst AppProvider = ({ children }) => {\n\n  return (\n    <>\n      <UseLocationChange />\n      <SnarckbarProvider>\n        <AuthProvider>\n          <SubscriptionProvider>\n            <ScopesProvider>{children}</ScopesProvider>\n          </SubscriptionProvider>\n        </AuthProvider>\n      </SnarckbarProvider>\n    </>\n  );\n};\nexport default AppProvider;\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport default function ScrollToTop() {\n  const { pathname } = useLocation();\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, [pathname]);\n\n  return null;\n}","import React from \"react\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport Routes from \"./app/routes\";\n\nimport AppProvider from \"app/providers/AppProvider\";\nimport ScrollToTop from \"hooks/ScrollToTop\";\n\nfunction App() {\n  return (\n    <>\n      <Router>\n        <AppProvider>\n          <ScrollToTop />\n          <Routes />\n        </AppProvider>\n      </Router>\n    </>\n  );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { ThemeProvider } from '@material-ui/core/styles'\n\nimport kultiviThemeLight from 'core/themes/theme1/Light'\n\nimport App from './App'\n\nimport TagManager from 'react-gtm-module'\nimport ReactPixel from 'react-facebook-pixel';\n\nconst tagManagerArgs = {\n  gtmId: process.env.REACT_APP_GTM_TAG\n}\n\nTagManager.initialize(tagManagerArgs)\nReactPixel.init(process.env.REACT_APP_FB_PIXEL);\nReactPixel.pageView();\n\n\nconst root = document.getElementById('root')\nReactDOM.render(\n  <React.StrictMode>\n    <ThemeProvider theme={kultiviThemeLight}>\n      <CssBaseline />\n      <App />\n    </ThemeProvider>\n  </React.StrictMode>,\n  root\n);\n","module.exports = \"data:image/png;base64,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\"","var _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nObject.defineProperty(exports, \"purple\", {\n  enumerable: true,\n  get: function get() {\n    return _purple.default;\n  }\n});\n\nObject.defineProperty(exports, \"green\", {\n  enumerable: true,\n  get: function get() {\n    return _green.default;\n  }\n});\n\nObject.defineProperty(exports, \"grey\", {\n  enumerable: true,\n  get: function get() {\n    return _grey.default;\n  }\n});\n\nvar _purple = _interopRequireDefault(require(\"./purple\"));\nvar _green = _interopRequireDefault(require(\"./green\"));\nvar _grey = _interopRequireDefault(require(\"./grey\"));"],"sourceRoot":""}