{"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,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\"","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":""}